@igo2/integration 21.0.0-next.5 → 21.0.0-next.7

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectorRef, model, Input, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule, Injectable, input, ChangeDetectionStrategy, signal, viewChild, Directive, ElementRef, DestroyRef } from '@angular/core';
2
+ import { inject, ChangeDetectorRef, input, model, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule, Injectable, ChangeDetectionStrategy, signal, DestroyRef, viewChild, Directive, ElementRef, linkedSignal, effect } from '@angular/core';
3
3
  import { __decorate, __metadata } from 'tslib';
4
4
  import { HttpClient } from '@angular/common/http';
5
5
  import * as i1 from '@angular/material/button';
@@ -14,20 +14,20 @@ import { AuthService, UserService } from '@igo2/auth';
14
14
  import { CustomHtmlComponent, SanitizeHtmlPipe } from '@igo2/common/custom-html';
15
15
  import { ToolComponent, ToolService } from '@igo2/common/tool';
16
16
  import { ConfigService, version } from '@igo2/core/config';
17
- import { LanguageService, IgoLanguageModule } from '@igo2/core/language';
18
- import { of, BehaviorSubject, combineLatest, forkJoin, map as map$1, merge, Subject, ReplaySubject, interval } from 'rxjs';
17
+ import { IgoLanguageModule, LanguageService } from '@igo2/core/language';
19
18
  import * as i3$1 from '@ngx-translate/core';
20
19
  import { TranslateModule } from '@ngx-translate/core';
21
20
  import * as i3$2 from '@angular/common';
22
21
  import { AsyncPipe, formatDate, CommonModule, DecimalPipe, NgTemplateOutlet } from '@angular/common';
23
22
  import { EntityStore, EntityStoreFilterCustomFuncStrategy, EntityStoreFilterSelectionStrategy, EntityTableComponent, getEntityTitle } from '@igo2/common/entity';
24
23
  import * as i1$1 from '@igo2/geo';
25
- import { MapService, ProjectionService, IgoMap, CatalogService, CatalogBrowserComponent, generateIdFromSourceOptions, isLayerItemOptions, CatalogItemType, CatalogLibraryComponent, StopsStore, StopsFeatureStore, RoutesFeatureStore, StepsFeatureStore, IgoDirectionsModule, FeatureStore, DrawComponent, isLayerItem, OgcFilterableItemComponent, TimeFilterItemComponent, OgcFilterableListComponent, OgcFilterableListBindingDirective, FeatureStoreSelectionStrategy, FeatureMotion, mapExtentStrategyActiveToolTip, noElementSelected, OgcFilterWidget, InteractiveSelectionFormWidget, WfsWorkspace, FeatureWorkspace, EditionWorkspace, SpatialFilterService, LayerService, SpatialFilterItemType, MeasureLengthUnit, SpatialFilterType, createOverlayMarkerStyle, featureToOl, moveToOlFeatures, RADIUS_NAME, SpatialFilterTypeComponent, SpatialFilterItemComponent, FeatureDetailsComponent, TimeFilterListComponent, TimeFilterListBindingDirective, isBaseLayer, ImportExportComponent, formatScale, zoneMtm, zoneUtm, computeProjectionsConstraints, SearchSourceService, LayerListControlsEnum, sourceCanSearch, LayerViewerComponent, ExportButtonComponent, OgcFilterButtonComponent, TimeFilterButtonComponent, TrackFeatureButtonComponent, MetadataButtonComponent, LayerLegendListComponent, LayerLegendListBindingDirective, roundCoordTo, featureFromOl, measureOlGeometryLength, FEATURE, VectorLayer, StyleModalLayerButtonComponent, MeasurerComponent, PrintComponent, SearchBarComponent, SearchResultsComponent, getCommonVectorStyle, computeOlFeaturesExtent, featuresAreOutOfView, featuresAreTooDeepInView, getCommonVectorSelectedStyle, SearchResultAddButtonComponent, isLayerGroup, PropertyTypeDetectorService, CapabilitiesService, GeoPropertiesStrategy } from '@igo2/geo';
24
+ import { MapService, ProjectionService, IgoMap, CatalogService, CatalogBrowserComponent, generateIdFromSourceOptions, isLayerItemOptions, CatalogItemType, CatalogLibraryComponent, StopsStore, StopsFeatureStore, RoutesFeatureStore, StepsFeatureStore, IgoDirectionsModule, FeatureStore, DrawComponent, isLayerItem, OgcFilterableItemComponent, TimeFilterItemComponent, OgcFilterableListComponent, OgcFilterableListBindingDirective, FeatureStoreSelectionStrategy, FeatureMotion, mapExtentStrategyActiveToolTip, noElementSelected, OgcFilterWidget, InteractiveSelectionFormWidget, WfsWorkspace, FeatureWorkspace, EditionWorkspace, SpatialFilterService, LayerService, SpatialFilterItemType, MeasureLengthUnit, SpatialFilterType, markerOlStyle, featureToOl, moveToOlFeatures, RADIUS_NAME, SpatialFilterTypeComponent, SpatialFilterItemComponent, FeatureDetailsComponent, TimeFilterListComponent, TimeFilterListBindingDirective, isBaseLayer, ImportExportComponent, formatScale, zoneMtm, zoneUtm, computeProjectionsConstraints, SearchSourceService, LayerListControlsEnum, sourceCanSearch, LayerViewerComponent, ExportButtonComponent, OgcFilterButtonComponent, TimeFilterButtonComponent, TrackFeatureButtonComponent, MetadataButtonComponent, LayerLegendListComponent, LayerLegendListBindingDirective, roundCoordTo, featureFromOl, measureOlGeometryLength, FEATURE, VectorLayer, VectorTileLayer, isOlFlatStyleLike, StyleModalLayerButtonComponent, MeasurerComponent, PrintComponent, SearchBarComponent, SearchResultsComponent, Overlay, styleVariant, computeOlFeaturesExtent, featuresAreOutOfView, SearchResultAddButtonComponent, isLayerGroup, PropertyTypeDetectorService, CapabilitiesService, GeoPropertiesStrategy } from '@igo2/geo';
25
+ import { BehaviorSubject, combineLatest, forkJoin, map as map$1, of, merge, Subject, ReplaySubject, interval } from 'rxjs';
26
26
  import { take, switchMap, concatAll, map, toArray, skipWhile, distinctUntilChanged, takeUntil, tap, debounceTime, skip } from 'rxjs/operators';
27
27
  import { StorageService, StorageScope, StorageServiceEventEnum } from '@igo2/core/storage';
28
28
  import { ContextService, ContextEditComponent, ContextListComponent, ContextPermissionsComponent, ShareMapComponent, ContextImportExportComponent } from '@igo2/context';
29
29
  import { createExcelWorkBook, addExcelSheetToWorkBook, writeExcelFile, ObjectUtils, uuid, NumberUtils } from '@igo2/utils';
30
- import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
30
+ import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
31
31
  import { MediaService, Media } from '@igo2/core/media';
32
32
  import { MessageService, IgoMessageModule } from '@igo2/core/message';
33
33
  import { trigger, state, style, transition, animate } from '@angular/animations';
@@ -68,8 +68,6 @@ import * as i4$2 from '@angular/material/badge';
68
68
  import { MatBadgeModule } from '@angular/material/badge';
69
69
  import { FlexibleComponent } from '@igo2/common/flexible';
70
70
  import { PanelComponent } from '@igo2/common/panel';
71
- import olFeature from 'ol/Feature';
72
- import olPoint from 'ol/geom/Point';
73
71
  import pointOnFeature from '@turf/point-on-feature';
74
72
  import { AnalyticsService } from '@igo2/core/analytics';
75
73
 
@@ -78,47 +76,25 @@ let AboutToolComponent = class AboutToolComponent {
78
76
  auth = inject(AuthService);
79
77
  http = inject(HttpClient);
80
78
  cdRef = inject(ChangeDetectorRef);
81
- languageService = inject(LanguageService);
82
79
  userService = inject(UserService, {
83
80
  optional: true
84
81
  });
85
82
  configOptions;
86
- get headerHtml() {
87
- return this._headerHtml;
88
- }
89
- set headerHtml(value) {
90
- this._headerHtml = Array.isArray(value) ? value.join('\n') : value;
91
- }
92
- get html() {
93
- return this._html;
94
- }
95
- set html(value) {
96
- this._html = Array.isArray(value) ? value.join('\n') : value;
97
- }
98
- _discoverTitleInLocale = 'IGO';
99
- discoverTitleInLocale$ = of(this._discoverTitleInLocale);
100
- get discoverTitleInLocale() {
101
- return this._discoverTitleInLocale;
102
- }
103
- set discoverTitleInLocale(value) {
104
- this._discoverTitleInLocale = value;
105
- this.discoverTitleInLocale$ = of(value);
106
- }
107
- trainingGuideURLs = model(undefined, ...(ngDevMode ? [{ debugName: "trainingGuideURLs" }] : /* istanbul ignore next */ []));
83
+ headerHtml = input('', { ...(ngDevMode ? { debugName: "headerHtml" } : /* istanbul ignore next */ {}), transform: (value) => (Array.isArray(value) ? value.join('\n') : value) });
84
+ html = input('igo.integration.aboutTool.html', { ...(ngDevMode ? { debugName: "html" } : /* istanbul ignore next */ {}), transform: (value) => (Array.isArray(value) ? value.join('\n') : value) });
85
+ trainingGuideURLs = model(...(ngDevMode ? [undefined, { debugName: "trainingGuideURLs" }] : /* istanbul ignore next */ []));
108
86
  effectiveVersion;
109
- _html = 'igo.integration.aboutTool.html';
110
- _headerHtml;
111
87
  baseUrlGuide;
112
88
  loading = false;
113
89
  constructor() {
114
- this.headerHtml = this.languageService.translate.instant('igo.integration.aboutTool.headerHtml');
115
90
  this.configOptions = this.configService.getConfigs();
116
91
  const configVersion = this.configOptions.version;
117
92
  this.effectiveVersion = configVersion?.app ?? version.app;
118
- this.baseUrlGuide =
119
- this.configOptions.depot?.url +
120
- // todo validate this property
121
- this.configOptions.depot?.guideUrl;
93
+ const depot = this.configOptions.depot;
94
+ if (depot) {
95
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
+ this.baseUrlGuide = depot.url + depot.guideUrl;
97
+ }
122
98
  }
123
99
  ngOnInit() {
124
100
  if (this.auth.authenticated) {
@@ -138,7 +114,7 @@ let AboutToolComponent = class AboutToolComponent {
138
114
  openGuide(guide) {
139
115
  const url = guide
140
116
  ? this.baseUrlGuide + guide
141
- : this.baseUrlGuide + this.trainingGuideURLs()[0];
117
+ : this.baseUrlGuide + (this.trainingGuideURLs()?.[0] ?? '');
142
118
  this.loading = true;
143
119
  this.http
144
120
  .get(url, {
@@ -162,8 +138,8 @@ let AboutToolComponent = class AboutToolComponent {
162
138
  name = name.slice(0, index);
163
139
  return name;
164
140
  }
165
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AboutToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
166
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AboutToolComponent, isStandalone: true, selector: "igo-about-tool", inputs: { headerHtml: { classPropertyName: "headerHtml", publicName: "headerHtml", isSignal: false, isRequired: false, transformFunction: null }, html: { classPropertyName: "html", publicName: "html", isSignal: false, isRequired: false, transformFunction: null }, discoverTitleInLocale: { classPropertyName: "discoverTitleInLocale", publicName: "discoverTitleInLocale", isSignal: false, isRequired: false, transformFunction: null }, trainingGuideURLs: { classPropertyName: "trainingGuideURLs", publicName: "trainingGuideURLs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trainingGuideURLs: "trainingGuideURLsChange" }, ngImport: i0, template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml !== '') {\n <igo-custom-html [html]=\"headerHtml | translate\" />\n}\n\n<igo-custom-html [html]=\"html | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CustomHtmlComponent, selector: "igo-custom-html", inputs: ["html"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
141
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AboutToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: AboutToolComponent, isStandalone: true, selector: "igo-about-tool", inputs: { headerHtml: { classPropertyName: "headerHtml", publicName: "headerHtml", isSignal: true, isRequired: false, transformFunction: null }, html: { classPropertyName: "html", publicName: "html", isSignal: true, isRequired: false, transformFunction: null }, trainingGuideURLs: { classPropertyName: "trainingGuideURLs", publicName: "trainingGuideURLs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trainingGuideURLs: "trainingGuideURLsChange" }, ngImport: i0, template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml() !== '') {\n <igo-custom-html [html]=\"headerHtml() | translate\" />\n}\n\n<igo-custom-html [html]=\"html() | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CustomHtmlComponent, selector: "igo-custom-html", inputs: ["html"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
167
143
  };
168
144
  AboutToolComponent = __decorate([
169
145
  ToolComponent({
@@ -173,7 +149,7 @@ AboutToolComponent = __decorate([
173
149
  }),
174
150
  __metadata("design:paramtypes", [])
175
151
  ], AboutToolComponent);
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AboutToolComponent, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AboutToolComponent, decorators: [{
177
153
  type: Component,
178
154
  args: [{ selector: 'igo-about-tool', imports: [
179
155
  MatButtonModule,
@@ -182,14 +158,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
182
158
  MatMenuModule,
183
159
  CustomHtmlComponent,
184
160
  IgoLanguageModule
185
- ], template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml !== '') {\n <igo-custom-html [html]=\"headerHtml | translate\" />\n}\n\n<igo-custom-html [html]=\"html | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"] }]
186
- }], ctorParameters: () => [], propDecorators: { headerHtml: [{
187
- type: Input
188
- }], html: [{
189
- type: Input
190
- }], discoverTitleInLocale: [{
191
- type: Input
192
- }], trainingGuideURLs: [{ type: i0.Input, args: [{ isSignal: true, alias: "trainingGuideURLs", required: false }] }, { type: i0.Output, args: ["trainingGuideURLsChange"] }] } });
161
+ ], template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml() !== '') {\n <igo-custom-html [html]=\"headerHtml() | translate\" />\n}\n\n<igo-custom-html [html]=\"html() | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"] }]
162
+ }], ctorParameters: () => [], propDecorators: { headerHtml: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerHtml", required: false }] }], html: [{ type: i0.Input, args: [{ isSignal: true, alias: "html", required: false }] }], trainingGuideURLs: [{ type: i0.Input, args: [{ isSignal: true, alias: "trainingGuideURLs", required: false }] }, { type: i0.Output, args: ["trainingGuideURLsChange"] }] } });
193
163
 
194
164
  /**
195
165
  * @deprecated import the AboutToolComponent directly
@@ -201,11 +171,11 @@ class IgoAppAboutModule {
201
171
  providers: []
202
172
  };
203
173
  }
204
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppAboutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
205
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppAboutModule, imports: [AboutToolComponent], exports: [AboutToolComponent] });
206
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppAboutModule, imports: [AboutToolComponent] });
174
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppAboutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
175
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppAboutModule, imports: [AboutToolComponent], exports: [AboutToolComponent] });
176
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppAboutModule, imports: [AboutToolComponent] });
207
177
  }
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppAboutModule, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppAboutModule, decorators: [{
209
179
  type: NgModule,
210
180
  args: [{
211
181
  imports: [AboutToolComponent],
@@ -247,10 +217,10 @@ class MapState {
247
217
  }, this.storageService, this.configService);
248
218
  this.mapService.setMap(this.map);
249
219
  }
250
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
251
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapState, providedIn: 'root' });
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapState, providedIn: 'root' });
252
222
  }
253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapState, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapState, decorators: [{
254
224
  type: Injectable,
255
225
  args: [{
256
226
  providedIn: 'root'
@@ -301,10 +271,10 @@ class CatalogState {
301
271
  clearCatalogItemsStores() {
302
272
  this.catalogItemsStores.clear();
303
273
  }
304
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
305
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogState, providedIn: 'root' });
274
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
275
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogState, providedIn: 'root' });
306
276
  }
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogState, decorators: [{
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogState, decorators: [{
308
278
  type: Injectable,
309
279
  args: [{
310
280
  providedIn: 'root'
@@ -384,8 +354,8 @@ let CatalogBrowserToolComponent = class CatalogBrowserToolComponent {
384
354
  this.store$.next(store);
385
355
  });
386
356
  }
387
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogBrowserToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
388
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: CatalogBrowserToolComponent, isStandalone: true, selector: "igo-catalog-browser-tool", inputs: { toggleCollapsedGroup: { classPropertyName: "toggleCollapsedGroup", publicName: "toggleCollapsedGroup", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (store$ | async; as store) {\n <igo-catalog-browser\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup()\"\n />\n}\n", dependencies: [{ kind: "component", type: CatalogBrowserComponent, selector: "igo-catalog-browser", inputs: ["catalogAllowLegend", "catalog", "store", "map", "toggleCollapsedGroup"], outputs: ["catalogAllowLegendChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
357
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogBrowserToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
358
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: CatalogBrowserToolComponent, isStandalone: true, selector: "igo-catalog-browser-tool", inputs: { toggleCollapsedGroup: { classPropertyName: "toggleCollapsedGroup", publicName: "toggleCollapsedGroup", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (store$ | async; as store) {\n <igo-catalog-browser\n [catalog]=\"catalog!\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup()\"\n />\n}\n", dependencies: [{ kind: "component", type: CatalogBrowserComponent, selector: "igo-catalog-browser", inputs: ["catalogAllowLegend", "catalog", "store", "map", "toggleCollapsedGroup"], outputs: ["catalogAllowLegendChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
389
359
  };
390
360
  CatalogBrowserToolComponent = __decorate([
391
361
  ToolComponent({
@@ -394,20 +364,20 @@ CatalogBrowserToolComponent = __decorate([
394
364
  parent: 'catalog'
395
365
  })
396
366
  ], CatalogBrowserToolComponent);
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogBrowserToolComponent, decorators: [{
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogBrowserToolComponent, decorators: [{
398
368
  type: Component,
399
- args: [{ selector: 'igo-catalog-browser-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CatalogBrowserComponent, AsyncPipe], template: "@if (store$ | async; as store) {\n <igo-catalog-browser\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup()\"\n />\n}\n" }]
369
+ args: [{ selector: 'igo-catalog-browser-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CatalogBrowserComponent, AsyncPipe], template: "@if (store$ | async; as store) {\n <igo-catalog-browser\n [catalog]=\"catalog!\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup()\"\n />\n}\n" }]
400
370
  }], propDecorators: { toggleCollapsedGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleCollapsedGroup", required: false }] }] } });
401
371
 
402
372
  /**
403
373
  * @deprecated import the CatalogBrowserToolComponent directly
404
374
  */
405
375
  class IgoAppCatalogBrowserToolModule {
406
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogBrowserToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
407
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogBrowserToolModule, imports: [CatalogBrowserToolComponent], exports: [CatalogBrowserToolComponent] });
408
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogBrowserToolModule, imports: [CatalogBrowserToolComponent] });
376
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogBrowserToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
377
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogBrowserToolModule, imports: [CatalogBrowserToolComponent], exports: [CatalogBrowserToolComponent] });
378
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogBrowserToolModule, imports: [CatalogBrowserToolComponent] });
409
379
  }
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogBrowserToolModule, decorators: [{
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogBrowserToolModule, decorators: [{
411
381
  type: NgModule,
412
382
  args: [{
413
383
  imports: [CatalogBrowserToolComponent],
@@ -441,10 +411,10 @@ class ImportExportState {
441
411
  setsExportOptions(exportOptions) {
442
412
  this.exportOptions$.next(exportOptions);
443
413
  }
444
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ImportExportState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
445
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ImportExportState, providedIn: 'root' });
414
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ImportExportState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
415
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ImportExportState, providedIn: 'root' });
446
416
  }
447
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ImportExportState, decorators: [{
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ImportExportState, decorators: [{
448
418
  type: Injectable,
449
419
  args: [{
450
420
  providedIn: 'root'
@@ -486,10 +456,10 @@ class ToolState {
486
456
  this.openSidenav$.next(true);
487
457
  }
488
458
  }
489
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ToolState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
490
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ToolState, providedIn: 'root' });
459
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToolState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
460
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToolState, providedIn: 'root' });
491
461
  }
492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ToolState, decorators: [{
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToolState, decorators: [{
493
463
  type: Injectable,
494
464
  args: [{
495
465
  providedIn: 'root'
@@ -675,19 +645,19 @@ let CatalogLibraryToolComponent = class CatalogLibraryToolComponent {
675
645
  * Get the item abstract for getCatalogList
676
646
  */
677
647
  getMetadataAbstract(item) {
678
- return item.options.metadata.abstract?.replaceAll('\n', '') ?? '';
648
+ return item.options.metadata?.abstract?.replaceAll('\n', '') ?? '';
679
649
  }
680
650
  /**
681
651
  * Get the item url metadata for getCatalogList
682
652
  */
683
653
  getMetadataUrl(item) {
684
- return item.options.metadata.url;
654
+ return item.options.metadata?.url;
685
655
  }
686
656
  layersInfoFromContexts() {
687
657
  return this.contextService.getLocalContexts().pipe(switchMap((contextsList) => forkJoin(contextsList.ours.map((context) => this.contextService.getLocalContext(context.uri)))), concatAll(), map((detailedContext) => {
688
- return detailedContext.layers
658
+ return (detailedContext.layers ?? [])
689
659
  .filter((layer) => isLayerItemOptions(layer))
690
- .map((layer) => getInfoFromSourceOptions(layer.sourceOptions, detailedContext.title ?? detailedContext.uri));
660
+ .map((layer) => getInfoFromSourceOptions(layer.sourceOptions, detailedContext.title ?? detailedContext.uri ?? ''));
691
661
  }), concatAll(), toArray());
692
662
  }
693
663
  listExportFromCatalogs() {
@@ -702,7 +672,8 @@ let CatalogLibraryToolComponent = class CatalogLibraryToolComponent {
702
672
  const catalogListExports = loadedCatalogItems.reduce((catalogListExports, item) => {
703
673
  if (item.type === CatalogItemType.Group) {
704
674
  const group = item;
705
- group.items.forEach((layer) => {
675
+ group.items?.forEach((item) => {
676
+ const layer = item;
706
677
  catalogListExports.push(this.formatLayer(layer, rank, group.title, catalog.title));
707
678
  rank++;
708
679
  });
@@ -728,23 +699,26 @@ let CatalogLibraryToolComponent = class CatalogLibraryToolComponent {
728
699
  this.exportExcel(listExport);
729
700
  });
730
701
  }
731
- formatLayer(layer, rank, groupTitle, catalogTitle) {
732
- const infos = getInfoFromSourceOptions(layer.options.sourceOptions, layer.id);
702
+ formatLayer(catalogItem, rank, groupTitle, catalogTitle) {
703
+ const sourceOptions = catalogItem.options.sourceOptions;
704
+ const infos = sourceOptions
705
+ ? getInfoFromSourceOptions(sourceOptions, catalogItem.id)
706
+ : undefined;
733
707
  const t = this.languageService.translate;
734
708
  return {
735
- id: infos.id,
709
+ id: infos?.id ?? catalogItem.options.id,
736
710
  rank: rank.toString(),
737
- layerTitle: layer.title,
711
+ layerTitle: catalogItem.title,
738
712
  layerGroup: groupTitle,
739
713
  catalog: catalogTitle,
740
- provider: layer.externalProvider
714
+ provider: catalogItem.externalProvider
741
715
  ? t.instant('igo.integration.catalog.listExport.external')
742
716
  : t.instant('igo.integration.catalog.listExport.internal'),
743
- url: infos.url,
744
- layerName: infos.layerName,
717
+ url: infos?.url,
718
+ layerName: infos?.layerName,
745
719
  context: '',
746
- metadataAbstract: this.getMetadataAbstract(layer),
747
- metadataUrl: this.getMetadataUrl(layer)
720
+ metadataAbstract: this.getMetadataAbstract(catalogItem),
721
+ metadataUrl: this.getMetadataUrl(catalogItem)
748
722
  };
749
723
  }
750
724
  /**
@@ -794,8 +768,8 @@ let CatalogLibraryToolComponent = class CatalogLibraryToolComponent {
794
768
  const documentName = this.languageService.translate.instant('igo.integration.catalog.listExport.documentName', { value: formatDate(Date.now(), 'YYYY-MM-dd-H_mm', 'en-US') });
795
769
  writeExcelFile(workBook, documentName, { compression: true });
796
770
  }
797
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogLibraryToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
798
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: CatalogLibraryToolComponent, isStandalone: true, selector: "igo-catalog-library-tool", inputs: { addCatalogAllowed: { classPropertyName: "addCatalogAllowed", publicName: "addCatalogAllowed", isSignal: true, isRequired: false, transformFunction: null }, exportButton: { classPropertyName: "exportButton", publicName: "exportButton", isSignal: true, isRequired: false, transformFunction: null }, predefinedCatalogs: { classPropertyName: "predefinedCatalogs", publicName: "predefinedCatalogs", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<igo-catalog-library\n [predefinedCatalogs]=\"predefinedCatalogs()\"\n [addCatalogAllowed]=\"addCatalogAllowed()\"\n [store]=\"store\"\n (catalogSelectChange)=\"onCatalogSelectChange($event)\"\n/>\n@if (exportButton()) {\n <div class=\"get-catalog-list-button\">\n <button\n matButton=\"elevated\"\n [matTooltip]=\"\n 'igo.integration.catalog.library.getCatalogList' | translate\n \"\n matTooltipPosition=\"above\"\n color=\"primary\"\n (click)=\"getCatalogList()\"\n >\n {{ 'igo.integration.catalog.library.getCatalogList' | translate }}\n </button>\n </div>\n}\n", styles: [".get-catalog-list-button{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: CatalogLibraryComponent, selector: "igo-catalog-library", inputs: ["store", "addCatalogAllowed", "predefinedCatalogs"], outputs: ["predefinedCatalogsChange", "catalogSelectChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
771
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogLibraryToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
772
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: CatalogLibraryToolComponent, isStandalone: true, selector: "igo-catalog-library-tool", inputs: { addCatalogAllowed: { classPropertyName: "addCatalogAllowed", publicName: "addCatalogAllowed", isSignal: true, isRequired: false, transformFunction: null }, exportButton: { classPropertyName: "exportButton", publicName: "exportButton", isSignal: true, isRequired: false, transformFunction: null }, predefinedCatalogs: { classPropertyName: "predefinedCatalogs", publicName: "predefinedCatalogs", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<igo-catalog-library\n [predefinedCatalogs]=\"predefinedCatalogs()\"\n [addCatalogAllowed]=\"addCatalogAllowed()\"\n [store]=\"store\"\n (catalogSelectChange)=\"onCatalogSelectChange($event)\"\n/>\n@if (exportButton()) {\n <div class=\"get-catalog-list-button\">\n <button\n matButton=\"elevated\"\n [matTooltip]=\"\n 'igo.integration.catalog.library.getCatalogList' | translate\n \"\n matTooltipPosition=\"above\"\n color=\"primary\"\n (click)=\"getCatalogList()\"\n >\n {{ 'igo.integration.catalog.library.getCatalogList' | translate }}\n </button>\n </div>\n}\n", styles: [".get-catalog-list-button{display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "component", type: CatalogLibraryComponent, selector: "igo-catalog-library", inputs: ["store", "addCatalogAllowed", "predefinedCatalogs"], outputs: ["predefinedCatalogsChange", "catalogSelectChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
799
773
  };
800
774
  CatalogLibraryToolComponent = __decorate([
801
775
  ToolComponent({
@@ -804,7 +778,7 @@ CatalogLibraryToolComponent = __decorate([
804
778
  icon: 'library_add'
805
779
  })
806
780
  ], CatalogLibraryToolComponent);
807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CatalogLibraryToolComponent, decorators: [{
781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CatalogLibraryToolComponent, decorators: [{
808
782
  type: Component,
809
783
  args: [{ selector: 'igo-catalog-library-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
810
784
  CatalogLibraryComponent,
@@ -818,11 +792,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
818
792
  * @deprecated import the CatalogLibraryToolComponent directly
819
793
  */
820
794
  class IgoAppCatalogLibraryToolModule {
821
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogLibraryToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
822
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogLibraryToolModule, imports: [CatalogLibraryToolComponent], exports: [CatalogLibraryToolComponent] });
823
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogLibraryToolModule, imports: [CatalogLibraryToolComponent] });
795
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogLibraryToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
796
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogLibraryToolModule, imports: [CatalogLibraryToolComponent], exports: [CatalogLibraryToolComponent] });
797
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogLibraryToolModule, imports: [CatalogLibraryToolComponent] });
824
798
  }
825
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogLibraryToolModule, decorators: [{
799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogLibraryToolModule, decorators: [{
826
800
  type: NgModule,
827
801
  args: [{
828
802
  imports: [CatalogLibraryToolComponent],
@@ -834,11 +808,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
834
808
  * @deprecated import the components directly
835
809
  */
836
810
  class IgoAppCatalogModule {
837
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
838
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogModule, exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule] });
839
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogModule, imports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule] });
811
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
812
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogModule, exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule] });
813
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogModule, imports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule] });
840
814
  }
841
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppCatalogModule, decorators: [{
815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppCatalogModule, decorators: [{
842
816
  type: NgModule,
843
817
  args: [{
844
818
  exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule]
@@ -850,8 +824,8 @@ let ContextEditorToolComponent = class ContextEditorToolComponent {
850
824
  submitSuccessed() {
851
825
  this.toolState.toolbox.activatePreviousTool();
852
826
  }
853
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextEditorToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
854
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: ContextEditorToolComponent, isStandalone: true, selector: "igo-context-editor-tool", ngImport: i0, template: "<igo-context-edit (submitSuccessed)=\"submitSuccessed()\" />\n", dependencies: [{ kind: "component", type: ContextEditComponent, selector: "igo-context-edit", outputs: ["submitSuccessed"] }] });
827
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextEditorToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
828
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: ContextEditorToolComponent, isStandalone: true, selector: "igo-context-editor-tool", ngImport: i0, template: "<igo-context-edit (submitSuccessed)=\"submitSuccessed()\" />\n", dependencies: [{ kind: "component", type: ContextEditComponent, selector: "igo-context-edit", outputs: ["submitSuccessed"] }] });
855
829
  };
856
830
  ContextEditorToolComponent = __decorate([
857
831
  ToolComponent({
@@ -861,7 +835,7 @@ ContextEditorToolComponent = __decorate([
861
835
  parent: 'contextManager'
862
836
  })
863
837
  ], ContextEditorToolComponent);
864
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextEditorToolComponent, decorators: [{
838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextEditorToolComponent, decorators: [{
865
839
  type: Component,
866
840
  args: [{ selector: 'igo-context-editor-tool', imports: [ContextEditComponent], template: "<igo-context-edit (submitSuccessed)=\"submitSuccessed()\" />\n" }]
867
841
  }] });
@@ -881,8 +855,8 @@ let ContextManagerToolComponent = class ContextManagerToolComponent {
881
855
  managePermissions() {
882
856
  this.toolState.toolbox.activateTool('contextPermissionManager');
883
857
  }
884
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
885
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.10", type: ContextManagerToolComponent, isStandalone: true, selector: "igo-context-manager-tool", inputs: { toolToOpenOnContextChange: { classPropertyName: "toolToOpenOnContextChange", publicName: "toolToOpenOnContextChange", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<igo-context-list\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n [isDesktop]=\"isDesktop()\"\n/>\n", dependencies: [{ kind: "component", type: ContextListComponent, selector: "igo-context-list", inputs: ["isDesktop", "contexts", "selectedContext", "map", "defaultContextId", "term"], outputs: ["selectedContextChange", "select", "unselect", "edit", "delete", "save", "clone", "create", "hide", "show", "showHiddenContexts", "favorite", "managePermissions", "manageTools", "filterPermissionsChanged"] }] });
858
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
859
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.14", type: ContextManagerToolComponent, isStandalone: true, selector: "igo-context-manager-tool", inputs: { toolToOpenOnContextChange: { classPropertyName: "toolToOpenOnContextChange", publicName: "toolToOpenOnContextChange", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<igo-context-list\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n [isDesktop]=\"isDesktop()\"\n/>\n", dependencies: [{ kind: "component", type: ContextListComponent, selector: "igo-context-list", inputs: ["isDesktop", "contexts", "selectedContext", "map", "defaultContextId", "term"], outputs: ["selectedContextChange", "select", "unselect", "edit", "delete", "save", "clone", "create", "hide", "show", "showHiddenContexts", "favorite", "managePermissions", "manageTools", "filterPermissionsChanged"] }] });
886
860
  };
887
861
  ContextManagerToolComponent = __decorate([
888
862
  ToolComponent({
@@ -891,14 +865,14 @@ ContextManagerToolComponent = __decorate([
891
865
  icon: 'star'
892
866
  })
893
867
  ], ContextManagerToolComponent);
894
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextManagerToolComponent, decorators: [{
868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextManagerToolComponent, decorators: [{
895
869
  type: Component,
896
870
  args: [{ selector: 'igo-context-manager-tool', imports: [ContextListComponent], template: "<igo-context-list\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n [isDesktop]=\"isDesktop()\"\n/>\n" }]
897
871
  }], propDecorators: { toolToOpenOnContextChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolToOpenOnContextChange", required: false }] }] } });
898
872
 
899
873
  let ContextPermissionManagerToolComponent = class ContextPermissionManagerToolComponent {
900
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextPermissionManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
901
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: ContextPermissionManagerToolComponent, isStandalone: true, selector: "igo-context-permission-manager-tool", ngImport: i0, template: "<igo-context-permissions />\n", dependencies: [{ kind: "component", type: ContextPermissionsComponent, selector: "igo-context-permissions", inputs: ["context", "permissions"], outputs: ["contextChange", "permissionsChange"] }] });
874
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextPermissionManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
875
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: ContextPermissionManagerToolComponent, isStandalone: true, selector: "igo-context-permission-manager-tool", ngImport: i0, template: "<igo-context-permissions />\n", dependencies: [{ kind: "component", type: ContextPermissionsComponent, selector: "igo-context-permissions", inputs: ["context", "permissions"], outputs: ["contextChange", "permissionsChange"] }] });
902
876
  };
903
877
  ContextPermissionManagerToolComponent = __decorate([
904
878
  ToolComponent({
@@ -908,7 +882,7 @@ ContextPermissionManagerToolComponent = __decorate([
908
882
  parent: 'contextManager'
909
883
  })
910
884
  ], ContextPermissionManagerToolComponent);
911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextPermissionManagerToolComponent, decorators: [{
885
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextPermissionManagerToolComponent, decorators: [{
912
886
  type: Component,
913
887
  args: [{ selector: 'igo-context-permission-manager-tool', imports: [ContextPermissionsComponent], template: "<igo-context-permissions />\n" }]
914
888
  }] });
@@ -940,10 +914,10 @@ class LayerListToolState {
940
914
  sortAlpha: this.sortAlpha$.value
941
915
  };
942
916
  }
943
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: LayerListToolState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
944
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: LayerListToolState, providedIn: 'root' });
917
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayerListToolState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
918
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayerListToolState, providedIn: 'root' });
945
919
  }
946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: LayerListToolState, decorators: [{
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LayerListToolState, decorators: [{
947
921
  type: Injectable,
948
922
  args: [{
949
923
  providedIn: 'root'
@@ -959,8 +933,8 @@ let ContextShareToolComponent = class ContextShareToolComponent {
959
933
  get layerListControls() {
960
934
  return this.layerListToolState.getLayerListControls();
961
935
  }
962
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextShareToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
963
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: ContextShareToolComponent, isStandalone: true, selector: "igo-context-share-tool", ngImport: i0, template: "<igo-share-map [map]=\"map\" />\n", dependencies: [{ kind: "component", type: ShareMapComponent, selector: "igo-share-map", inputs: ["map"] }] });
936
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextShareToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
937
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: ContextShareToolComponent, isStandalone: true, selector: "igo-context-share-tool", ngImport: i0, template: "<igo-share-map [map]=\"map\" />\n", dependencies: [{ kind: "component", type: ShareMapComponent, selector: "igo-share-map", inputs: ["map"] }] });
964
938
  };
965
939
  ContextShareToolComponent = __decorate([
966
940
  ToolComponent({
@@ -969,7 +943,7 @@ ContextShareToolComponent = __decorate([
969
943
  icon: 'share'
970
944
  })
971
945
  ], ContextShareToolComponent);
972
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextShareToolComponent, decorators: [{
946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextShareToolComponent, decorators: [{
973
947
  type: Component,
974
948
  args: [{ selector: 'igo-context-share-tool', imports: [ShareMapComponent], template: "<igo-share-map [map]=\"map\" />\n" }]
975
949
  }] });
@@ -985,11 +959,11 @@ const INTEGRATION_CONTEXT_DIRECTIVES = [
985
959
  * @deprecated import the components/directive directly or INTEGRATION_CONTEXT_DIRECTIVES for the set
986
960
  */
987
961
  class IgoAppContextModule {
988
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppContextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
989
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppContextModule, imports: [ContextEditorToolComponent, ContextManagerToolComponent, ContextPermissionManagerToolComponent, ContextShareToolComponent], exports: [ContextEditorToolComponent, ContextManagerToolComponent, ContextPermissionManagerToolComponent, ContextShareToolComponent] });
990
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppContextModule, imports: [INTEGRATION_CONTEXT_DIRECTIVES] });
962
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppContextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
963
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppContextModule, imports: [ContextEditorToolComponent, ContextManagerToolComponent, ContextPermissionManagerToolComponent, ContextShareToolComponent], exports: [ContextEditorToolComponent, ContextManagerToolComponent, ContextPermissionManagerToolComponent, ContextShareToolComponent] });
964
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppContextModule, imports: [INTEGRATION_CONTEXT_DIRECTIVES] });
991
965
  }
992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppContextModule, decorators: [{
966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppContextModule, decorators: [{
993
967
  type: NgModule,
994
968
  args: [{
995
969
  imports: [...INTEGRATION_CONTEXT_DIRECTIVES],
@@ -1013,7 +987,9 @@ class ContextState {
1013
987
  this.onContextChange(context);
1014
988
  });
1015
989
  this.contextService.toolsChanged$.subscribe((context) => {
1016
- this.updateTools(context);
990
+ if (context) {
991
+ this.updateTools(context);
992
+ }
1017
993
  });
1018
994
  }
1019
995
  /**
@@ -1057,7 +1033,7 @@ class ContextState {
1057
1033
  toolbox.setToolbar(context.toolbar || []);
1058
1034
  // TODO: This is a patch so the context service can work without
1059
1035
  // injecting the ToolState or without being completely refactored
1060
- this.contextService.setTools([].concat(tools));
1036
+ this.contextService.setTools([...tools]);
1061
1037
  this.contextService.setToolbar(context.toolbar || []);
1062
1038
  }
1063
1039
  /**
@@ -1070,10 +1046,10 @@ class ContextState {
1070
1046
  }
1071
1047
  this.setContext(context);
1072
1048
  }
1073
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1074
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextState, providedIn: 'root' });
1049
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1050
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextState, providedIn: 'root' });
1075
1051
  }
1076
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ContextState, decorators: [{
1052
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ContextState, decorators: [{
1077
1053
  type: Injectable,
1078
1054
  args: [{
1079
1055
  providedIn: 'root'
@@ -1120,10 +1096,10 @@ class DirectionState {
1120
1096
  }
1121
1097
  });
1122
1098
  }
1123
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DirectionState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1124
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DirectionState, providedIn: 'root' });
1099
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DirectionState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DirectionState, providedIn: 'root' });
1125
1101
  }
1126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DirectionState, decorators: [{
1102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DirectionState, decorators: [{
1127
1103
  type: Injectable,
1128
1104
  args: [{
1129
1105
  providedIn: 'root'
@@ -1185,13 +1161,13 @@ let DirectionsToolComponent = class DirectionsToolComponent {
1185
1161
  this.storageService.set('direction.warning.shown', true, StorageScope.SESSION);
1186
1162
  }
1187
1163
  this.contextState.context$.subscribe((c) => {
1188
- if (!this.authService.authenticated) {
1164
+ if (!this.authService.authenticated && c) {
1189
1165
  this.currentContextUri = c.uri;
1190
1166
  }
1191
1167
  });
1192
1168
  }
1193
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DirectionsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1194
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: DirectionsToolComponent, isStandalone: true, selector: "igo-directions-tool", ngImport: i0, template: "<igo-directions\n [contextUri]=\"currentContextUri\"\n [debounce]=\"debounceTime\"\n [stopsStore]=\"stopsStore\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stepsFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [zoomToActiveRoute]=\"zoomToActiveRoute\"\n [authenticated$]=\"authenticated$\"\n/>\n", dependencies: [{ kind: "ngmodule", type: IgoDirectionsModule }, { kind: "component", type: i1$1.DirectionsComponent, selector: "igo-directions", inputs: ["contextUri", "stopsStore", "stopsFeatureStore", "routesFeatureStore", "stepsFeatureStore", "debounce", "length", "coordRoundedDecimals", "zoomToActiveRoute", "authenticated$"] }] });
1169
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DirectionsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: DirectionsToolComponent, isStandalone: true, selector: "igo-directions-tool", ngImport: i0, template: "<igo-directions\n [contextUri]=\"currentContextUri\"\n [debounce]=\"debounceTime\"\n [stopsStore]=\"stopsStore\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stepsFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [zoomToActiveRoute]=\"zoomToActiveRoute\"\n [authenticated$]=\"authenticated$\"\n/>\n", dependencies: [{ kind: "ngmodule", type: IgoDirectionsModule }, { kind: "component", type: i1$1.DirectionsComponent, selector: "igo-directions", inputs: ["contextUri", "stopsStore", "stopsFeatureStore", "routesFeatureStore", "stepsFeatureStore", "debounce", "length", "coordRoundedDecimals", "zoomToActiveRoute", "authenticated$"] }] });
1195
1171
  };
1196
1172
  DirectionsToolComponent = __decorate([
1197
1173
  ToolComponent({
@@ -1200,7 +1176,7 @@ DirectionsToolComponent = __decorate([
1200
1176
  icon: 'directions'
1201
1177
  })
1202
1178
  ], DirectionsToolComponent);
1203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DirectionsToolComponent, decorators: [{
1179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DirectionsToolComponent, decorators: [{
1204
1180
  type: Component,
1205
1181
  args: [{ selector: 'igo-directions-tool', imports: [IgoDirectionsModule], template: "<igo-directions\n [contextUri]=\"currentContextUri\"\n [debounce]=\"debounceTime\"\n [stopsStore]=\"stopsStore\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stepsFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [zoomToActiveRoute]=\"zoomToActiveRoute\"\n [authenticated$]=\"authenticated$\"\n/>\n" }]
1206
1182
  }] });
@@ -1215,11 +1191,11 @@ class IgoAppDirectionsModule {
1215
1191
  providers: []
1216
1192
  };
1217
1193
  }
1218
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDirectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1219
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDirectionsModule, imports: [DirectionsToolComponent], exports: [DirectionsToolComponent] });
1220
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDirectionsModule, imports: [DirectionsToolComponent] });
1194
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDirectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1195
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDirectionsModule, imports: [DirectionsToolComponent], exports: [DirectionsToolComponent] });
1196
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDirectionsModule, imports: [DirectionsToolComponent] });
1221
1197
  }
1222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDirectionsModule, decorators: [{
1198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDirectionsModule, decorators: [{
1223
1199
  type: NgModule,
1224
1200
  args: [{
1225
1201
  imports: [DirectionsToolComponent],
@@ -1256,10 +1232,10 @@ class DrawState {
1256
1232
  store = new FeatureStore([], { map: this.mapState.map });
1257
1233
  }
1258
1234
  }
1259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1260
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawState, providedIn: 'root' });
1235
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DrawState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1236
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DrawState, providedIn: 'root' });
1261
1237
  }
1262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawState, decorators: [{
1238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DrawState, decorators: [{
1263
1239
  type: Injectable,
1264
1240
  args: [{
1265
1241
  providedIn: 'root'
@@ -1307,8 +1283,8 @@ let DrawingToolComponent = class DrawingToolComponent {
1307
1283
  addDrawControls(dc) {
1308
1284
  this.drawControls = dc;
1309
1285
  }
1310
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawingToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1311
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: DrawingToolComponent, isStandalone: true, selector: "igo-drawing-tool", ngImport: i0, template: "<igo-draw\n [stores]=\"stores\"\n [map]=\"map\"\n (layersIDEvent)=\"addLayersID($event)\"\n [activeDrawingLayer]=\"activeDrawingLayer\"\n [drawControls]=\"drawControls\"\n (drawControlsEvent)=\"addDrawControls($event)\"\n (activeLayerChange)=\"activeDrawingLayer = $event\"\n/>\n", dependencies: [{ kind: "component", type: DrawComponent, selector: "igo-draw", inputs: ["map", "stores", "drawControls", "activeDrawingLayer"], outputs: ["storesChange", "drawControlsChange", "activeDrawingLayerChange", "activeLayerChange", "drawControlsEvent", "layersIDEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1286
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DrawingToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1287
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: DrawingToolComponent, isStandalone: true, selector: "igo-drawing-tool", ngImport: i0, template: "<igo-draw\n [stores]=\"stores\"\n [map]=\"map\"\n (layersIDEvent)=\"addLayersID($event)\"\n [activeDrawingLayer]=\"activeDrawingLayer\"\n [drawControls]=\"drawControls\"\n (drawControlsEvent)=\"addDrawControls($event)\"\n (activeLayerChange)=\"activeDrawingLayer = $event\"\n/>\n", dependencies: [{ kind: "component", type: DrawComponent, selector: "igo-draw", inputs: ["map", "stores", "drawControls", "activeDrawingLayer"], outputs: ["storesChange", "drawControlsChange", "activeDrawingLayerChange", "activeLayerChange", "drawControlsEvent", "layersIDEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1312
1288
  };
1313
1289
  DrawingToolComponent = __decorate([
1314
1290
  ToolComponent({
@@ -1317,7 +1293,7 @@ DrawingToolComponent = __decorate([
1317
1293
  icon: 'stylus_note'
1318
1294
  })
1319
1295
  ], DrawingToolComponent);
1320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawingToolComponent, decorators: [{
1296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DrawingToolComponent, decorators: [{
1321
1297
  type: Component,
1322
1298
  args: [{ selector: 'igo-drawing-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [DrawComponent], template: "<igo-draw\n [stores]=\"stores\"\n [map]=\"map\"\n (layersIDEvent)=\"addLayersID($event)\"\n [activeDrawingLayer]=\"activeDrawingLayer\"\n [drawControls]=\"drawControls\"\n (drawControlsEvent)=\"addDrawControls($event)\"\n (activeLayerChange)=\"activeDrawingLayer = $event\"\n/>\n" }]
1323
1299
  }] });
@@ -1326,11 +1302,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
1326
1302
  * @deprecated import the DrawingToolComponent directly
1327
1303
  */
1328
1304
  class IgoAppDrawingToolModule {
1329
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawingToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1330
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawingToolModule, imports: [DrawingToolComponent], exports: [DrawingToolComponent] });
1331
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawingToolModule, imports: [DrawingToolComponent] });
1305
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawingToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1306
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawingToolModule, imports: [DrawingToolComponent], exports: [DrawingToolComponent] });
1307
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawingToolModule, imports: [DrawingToolComponent] });
1332
1308
  }
1333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawingToolModule, decorators: [{
1309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawingToolModule, decorators: [{
1334
1310
  type: NgModule,
1335
1311
  args: [{
1336
1312
  imports: [DrawingToolComponent],
@@ -1342,11 +1318,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
1342
1318
  * @deprecated import the DrawingToolComponent directly
1343
1319
  */
1344
1320
  class IgoAppDrawModule {
1345
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1346
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawModule, exports: [IgoAppDrawingToolModule] });
1347
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawModule, imports: [IgoAppDrawingToolModule] });
1321
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1322
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawModule, exports: [IgoAppDrawingToolModule] });
1323
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawModule, imports: [IgoAppDrawingToolModule] });
1348
1324
  }
1349
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppDrawModule, decorators: [{
1325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppDrawModule, decorators: [{
1350
1326
  type: NgModule,
1351
1327
  args: [{
1352
1328
  exports: [IgoAppDrawingToolModule]
@@ -1376,8 +1352,8 @@ let ActiveOgcFilterToolComponent = class ActiveOgcFilterToolComponent {
1376
1352
  return;
1377
1353
  }
1378
1354
  animate = 'enter';
1379
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ActiveOgcFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1380
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: ActiveOgcFilterToolComponent, isStandalone: true, selector: "igo-active-ogc-filter-tool", ngImport: i0, template: "<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n", dependencies: [{ kind: "component", type: OgcFilterableItemComponent, selector: "igo-ogc-filterable-item", inputs: ["layer", "map", "header"] }], animations: [toolSlideInOut$1()] });
1355
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ActiveOgcFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1356
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: ActiveOgcFilterToolComponent, isStandalone: true, selector: "igo-active-ogc-filter-tool", ngImport: i0, template: "<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n", dependencies: [{ kind: "component", type: OgcFilterableItemComponent, selector: "igo-ogc-filterable-item", inputs: ["layer", "map", "header"] }], animations: [toolSlideInOut$1()] });
1381
1357
  };
1382
1358
  ActiveOgcFilterToolComponent = __decorate([
1383
1359
  ToolComponent({
@@ -1387,7 +1363,7 @@ ActiveOgcFilterToolComponent = __decorate([
1387
1363
  parent: 'mapTools'
1388
1364
  })
1389
1365
  ], ActiveOgcFilterToolComponent);
1390
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ActiveOgcFilterToolComponent, decorators: [{
1366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ActiveOgcFilterToolComponent, decorators: [{
1391
1367
  type: Component,
1392
1368
  args: [{ selector: 'igo-active-ogc-filter-tool', animations: [toolSlideInOut$1()], imports: [OgcFilterableItemComponent], template: "<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n" }]
1393
1369
  }] });
@@ -1415,8 +1391,8 @@ let ActiveTimeFilterToolComponent = class ActiveTimeFilterToolComponent {
1415
1391
  return;
1416
1392
  }
1417
1393
  animate = 'enter';
1418
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ActiveTimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1419
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: ActiveTimeFilterToolComponent, isStandalone: true, selector: "igo-active-time-filter-tool", ngImport: i0, template: "<igo-time-filter-item\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n", dependencies: [{ kind: "component", type: TimeFilterItemComponent, selector: "igo-time-filter-item", inputs: ["header", "layer"] }], animations: [toolSlideInOut()] });
1394
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ActiveTimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: ActiveTimeFilterToolComponent, isStandalone: true, selector: "igo-active-time-filter-tool", ngImport: i0, template: "<igo-time-filter-item\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n", dependencies: [{ kind: "component", type: TimeFilterItemComponent, selector: "igo-time-filter-item", inputs: ["header", "layer"] }], animations: [toolSlideInOut()] });
1420
1396
  };
1421
1397
  ActiveTimeFilterToolComponent = __decorate([
1422
1398
  ToolComponent({
@@ -1426,14 +1402,14 @@ ActiveTimeFilterToolComponent = __decorate([
1426
1402
  parent: 'mapTools'
1427
1403
  })
1428
1404
  ], ActiveTimeFilterToolComponent);
1429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ActiveTimeFilterToolComponent, decorators: [{
1405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ActiveTimeFilterToolComponent, decorators: [{
1430
1406
  type: Component,
1431
1407
  args: [{ selector: 'igo-active-time-filter-tool', animations: [toolSlideInOut()], imports: [TimeFilterItemComponent], template: "<igo-time-filter-item\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n" }]
1432
1408
  }] });
1433
1409
 
1434
1410
  let OgcFilterToolComponent = class OgcFilterToolComponent {
1435
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: OgcFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1436
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: OgcFilterToolComponent, isStandalone: true, selector: "igo-ogc-filter-tool", ngImport: i0, template: "<igo-ogc-filterable-list igoOgcFilterableListBinding [layers]=\"[]\" />\n", dependencies: [{ kind: "component", type: OgcFilterableListComponent, selector: "igo-ogc-filterable-list", inputs: ["layers"], outputs: ["layersChange"] }, { kind: "directive", type: OgcFilterableListBindingDirective, selector: "[igoOgcFilterableListBinding]" }] });
1411
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: OgcFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1412
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: OgcFilterToolComponent, isStandalone: true, selector: "igo-ogc-filter-tool", ngImport: i0, template: "<igo-ogc-filterable-list igoOgcFilterableListBinding [layers]=\"[]\" />\n", dependencies: [{ kind: "component", type: OgcFilterableListComponent, selector: "igo-ogc-filterable-list", inputs: ["layers"], outputs: ["layersChange"] }, { kind: "directive", type: OgcFilterableListBindingDirective, selector: "[igoOgcFilterableListBinding]" }] });
1437
1413
  };
1438
1414
  OgcFilterToolComponent = __decorate([
1439
1415
  ToolComponent({
@@ -1442,7 +1418,7 @@ OgcFilterToolComponent = __decorate([
1442
1418
  icon: 'filter'
1443
1419
  })
1444
1420
  ], OgcFilterToolComponent);
1445
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: OgcFilterToolComponent, decorators: [{
1421
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: OgcFilterToolComponent, decorators: [{
1446
1422
  type: Component,
1447
1423
  args: [{ selector: 'igo-ogc-filter-tool', imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective], template: "<igo-ogc-filterable-list igoOgcFilterableListBinding [layers]=\"[]\" />\n" }]
1448
1424
  }] });
@@ -1455,10 +1431,10 @@ class StorageState {
1455
1431
  get storageService() {
1456
1432
  return this.igoStorageService;
1457
1433
  }
1458
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: StorageState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1459
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: StorageState, providedIn: 'root' });
1434
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: StorageState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1435
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: StorageState, providedIn: 'root' });
1460
1436
  }
1461
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: StorageState, decorators: [{
1437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: StorageState, decorators: [{
1462
1438
  type: Injectable,
1463
1439
  args: [{
1464
1440
  providedIn: 'root'
@@ -1519,17 +1495,17 @@ function getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOn
1519
1495
  title: 'igo.integration.workspace.download.title',
1520
1496
  tooltip: 'igo.integration.workspace.download.tooltip',
1521
1497
  handler: (ws) => {
1522
- const filterStrategy = ws.entityStore.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
1523
- const filterSelectionStrategy = ws.entityStore.getStrategyOfType(EntityStoreFilterSelectionStrategy);
1524
- const layersWithSelection = filterSelectionStrategy.active
1498
+ const filterStrategy = ws.entityStore?.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
1499
+ const filterSelectionStrategy = ws.entityStore?.getStrategyOfType(EntityStoreFilterSelectionStrategy);
1500
+ const layersWithSelection = filterSelectionStrategy?.active
1525
1501
  ? [ws.layer.id]
1526
1502
  : [];
1527
1503
  toolState.toolToActivateFromOptions({
1528
1504
  tool: 'importExport',
1529
1505
  options: {
1530
1506
  layers: [ws.layer.id],
1531
- featureInMapExtent: filterStrategy.active,
1532
- layersWithSelection
1507
+ featureInMapExtent: filterStrategy?.active,
1508
+ layersWithSelection: layersWithSelection.filter((id) => id !== undefined)
1533
1509
  }
1534
1510
  });
1535
1511
  },
@@ -1548,7 +1524,7 @@ function getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOn
1548
1524
  },
1549
1525
  args: [ogcFilterWidget, workspace],
1550
1526
  availability: (widget, ws) => of(ws.layer.options.sourceOptions
1551
- ?.ogcFilters?.enabled)
1527
+ ?.ogcFilters?.enabled ?? false)
1552
1528
  },
1553
1529
  {
1554
1530
  id: 'interactiveSelect',
@@ -1628,7 +1604,7 @@ function getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOn
1628
1604
  args: [workspace]
1629
1605
  }
1630
1606
  ];
1631
- const returnActions = workspace.layer.options.workspace.printable !== false
1607
+ const returnActions = workspace.layer.options.workspace?.printable !== false
1632
1608
  ? actions
1633
1609
  : actions.filter((action) => action.id !== 'print');
1634
1610
  return returnActions;
@@ -1675,10 +1651,10 @@ class EditionActionsService {
1675
1651
  });
1676
1652
  return getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOnlyCheckCondition$, this.ogcFilterWidget, this.zoomAuto$, this.maximize$, this.storageService, this.languageService, this.mediaService, this.toolState);
1677
1653
  }
1678
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: EditionActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1679
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: EditionActionsService, providedIn: 'root' });
1654
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditionActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1655
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditionActionsService, providedIn: 'root' });
1680
1656
  }
1681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: EditionActionsService, decorators: [{
1657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EditionActionsService, decorators: [{
1682
1658
  type: Injectable,
1683
1659
  args: [{
1684
1660
  providedIn: 'root'
@@ -1721,12 +1697,12 @@ class FeatureActionsService {
1721
1697
  this.zoomAuto$.next(this.zoomAuto);
1722
1698
  handleZoomAuto(workspace, this.storageService);
1723
1699
  });
1724
- return getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOnlyCheckCondition$, undefined, this.zoomAuto$, this.maximize$, this.storageService, this.languageService, this.mediaService, this.toolState, this.interactiveSelectionFormWidget);
1700
+ return getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOnlyCheckCondition$, undefined, this.zoomAuto$, this.maximize$, this.storageService, this.languageService, this.mediaService, this.toolState, this.interactiveSelectionFormWidget ?? undefined);
1725
1701
  }
1726
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: FeatureActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1727
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: FeatureActionsService, providedIn: 'root' });
1702
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FeatureActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1703
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FeatureActionsService, providedIn: 'root' });
1728
1704
  }
1729
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: FeatureActionsService, decorators: [{
1705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FeatureActionsService, decorators: [{
1730
1706
  type: Injectable,
1731
1707
  args: [{
1732
1708
  providedIn: 'root'
@@ -1772,12 +1748,12 @@ class WfsActionsService {
1772
1748
  this.zoomAuto$.next(this.zoomAuto);
1773
1749
  handleZoomAuto(workspace, this.storageService);
1774
1750
  });
1775
- return getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOnlyCheckCondition$, this.ogcFilterWidget, this.zoomAuto$, this.maximize$, this.storageService, this.languageService, this.mediaService, this.toolState, this.interactiveSelectionFormWidget);
1751
+ return getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOnlyCheckCondition$, this.ogcFilterWidget, this.zoomAuto$, this.maximize$, this.storageService, this.languageService, this.mediaService, this.toolState, this.interactiveSelectionFormWidget ?? undefined);
1776
1752
  }
1777
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WfsActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1778
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WfsActionsService, providedIn: 'root' });
1753
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WfsActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1754
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WfsActionsService, providedIn: 'root' });
1779
1755
  }
1780
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WfsActionsService, decorators: [{
1756
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WfsActionsService, decorators: [{
1781
1757
  type: Injectable,
1782
1758
  args: [{
1783
1759
  providedIn: 'root'
@@ -1819,7 +1795,7 @@ class WorkspaceState {
1819
1795
  _store;
1820
1796
  get workspaceSelection() {
1821
1797
  if (this.workspace$.value) {
1822
- return this.workspace$.value?.entityStore.stateView.manyBy((r) => r.state.selected === true);
1798
+ return this.workspace$.value?.entityStore?.stateView.manyBy((r) => r.state.selected === true);
1823
1799
  }
1824
1800
  else {
1825
1801
  return [];
@@ -1827,7 +1803,7 @@ class WorkspaceState {
1827
1803
  }
1828
1804
  get workspaceSelection$() {
1829
1805
  if (this.workspace$.value) {
1830
- return this.workspace$.value?.entityStore?.stateView.manyBy$((r) => r.state.selected === true);
1806
+ return (this.workspace$.value?.entityStore?.stateView.manyBy$((r) => r.state.selected === true) ?? of([]));
1831
1807
  }
1832
1808
  else {
1833
1809
  return of([]);
@@ -1850,11 +1826,9 @@ class WorkspaceState {
1850
1826
  const workspace = record ? record.entity : undefined;
1851
1827
  this.workspace$.next(workspace);
1852
1828
  });
1853
- this._store.stateView
1854
- .all$()
1855
- .subscribe((workspaces) => {
1829
+ this._store.stateView.all$().subscribe((workspaces) => {
1856
1830
  workspaces.map((wks) => {
1857
- if (wks.entity.actionStore.empty) {
1831
+ if (wks.entity.actionStore?.empty) {
1858
1832
  if (wks.entity instanceof WfsWorkspace) {
1859
1833
  this.wfsActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
1860
1834
  }
@@ -1884,8 +1858,8 @@ class WorkspaceState {
1884
1858
  this.rowsInMapExtentCheckCondition$$ =
1885
1859
  this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {
1886
1860
  this._store.stateView.all().map((wks) => {
1887
- if (!wks.entity.actionStore.empty) {
1888
- const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
1861
+ if (!wks.entity.actionStore?.empty) {
1862
+ const filterStrategy = wks.entity.entityStore?.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
1889
1863
  if (filterStrategy) {
1890
1864
  if (rowsInMapExtent) {
1891
1865
  filterStrategy.activate();
@@ -1899,8 +1873,8 @@ class WorkspaceState {
1899
1873
  });
1900
1874
  this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe((selectOnly) => {
1901
1875
  this._store.stateView.all().map((wks) => {
1902
- if (!wks.entity.actionStore.empty) {
1903
- const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterSelectionStrategy);
1876
+ if (!wks.entity.actionStore?.empty) {
1877
+ const filterStrategy = wks.entity.entityStore?.getStrategyOfType(EntityStoreFilterSelectionStrategy);
1904
1878
  if (filterStrategy) {
1905
1879
  if (selectOnly) {
1906
1880
  filterStrategy.activate();
@@ -1957,10 +1931,10 @@ class WorkspaceState {
1957
1931
  this.activeWorkspace$$.unsubscribe();
1958
1932
  }
1959
1933
  }
1960
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WorkspaceState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1961
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WorkspaceState, providedIn: 'root' });
1934
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WorkspaceState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1935
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WorkspaceState, providedIn: 'root' });
1962
1936
  }
1963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WorkspaceState, decorators: [{
1937
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WorkspaceState, decorators: [{
1964
1938
  type: Injectable,
1965
1939
  args: [{
1966
1940
  providedIn: 'root'
@@ -1983,9 +1957,9 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
1983
1957
  get map() {
1984
1958
  return this.mapState.map;
1985
1959
  }
1986
- type = model(undefined, ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
1960
+ type = model(...(ngDevMode ? [undefined, { debugName: "type" }] : /* istanbul ignore next */ []));
1987
1961
  itemType = model(SpatialFilterItemType.Thematics, ...(ngDevMode ? [{ debugName: "itemType" }] : /* istanbul ignore next */ []));
1988
- freehandDrawIsActive = model(undefined, ...(ngDevMode ? [{ debugName: "freehandDrawIsActive" }] : /* istanbul ignore next */ []));
1962
+ freehandDrawIsActive = model(...(ngDevMode ? [undefined, { debugName: "freehandDrawIsActive" }] : /* istanbul ignore next */ []));
1989
1963
  layers = [];
1990
1964
  activeLayers = [];
1991
1965
  queryType;
@@ -2034,7 +2008,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2034
2008
  const ids = [];
2035
2009
  const re = new RegExp('^Zone \\d+');
2036
2010
  for (const layer of this.layers) {
2037
- if (!layer.title.match(re)) {
2011
+ if (!layer.title?.match(re)) {
2038
2012
  ids.push(layer.id);
2039
2013
  }
2040
2014
  }
@@ -2054,7 +2028,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2054
2028
  this.thematics) {
2055
2029
  for (const thematic of this.thematics) {
2056
2030
  if (!thematic.zeroResults) {
2057
- layerToOpenWks = this.activeLayers.find((layer) => layer.title.includes(thematic.name + ' ' + this.iterator.toString()));
2031
+ layerToOpenWks = this.activeLayers.find((layer) => layer.title?.includes(thematic.name + ' ' + this.iterator.toString()));
2058
2032
  break;
2059
2033
  }
2060
2034
  }
@@ -2062,7 +2036,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2062
2036
  else {
2063
2037
  const title = 'Adresses ' + this.iterator.toString();
2064
2038
  this.activeLayers.forEach((layer) => {
2065
- if (layer.title.includes(title)) {
2039
+ if (layer.title?.includes(title)) {
2066
2040
  layerToOpenWks = layer;
2067
2041
  }
2068
2042
  });
@@ -2084,10 +2058,12 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2084
2058
  }
2085
2059
  selectWorkspaceEntity(record) {
2086
2060
  this.workspaceState.store.all().forEach((workspace) => {
2087
- workspace.entityStore.state.updateAll({ selected: false });
2088
- if (workspace.title.includes(record.added[0].meta.title)) {
2061
+ workspace.entityStore?.state.updateAll({ selected: false });
2062
+ if (
2063
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2064
+ workspace.title.includes(record['added'][0]?.meta?.title)) {
2089
2065
  this.workspaceState.setActiveWorkspaceById(workspace.id);
2090
- workspace.entityStore.state.updateMany(record.added, {
2066
+ workspace.entityStore?.state.updateMany(record['added'], {
2091
2067
  selected: true
2092
2068
  });
2093
2069
  }
@@ -2144,7 +2120,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2144
2120
  thematics = [theme];
2145
2121
  }
2146
2122
  else {
2147
- thematics = this.thematics;
2123
+ thematics = this.thematics ?? [];
2148
2124
  }
2149
2125
  if (this.measureUnit === MeasureLengthUnit.Kilometers &&
2150
2126
  type !== SpatialFilterType.Point) {
@@ -2166,10 +2142,10 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2166
2142
  const grouped = this.getFeatureByType(features);
2167
2143
  grouped.forEach(({ points, lines }) => {
2168
2144
  if (points.length > 0) {
2169
- this.tryAddPointToMap(points, points[0].meta.id);
2145
+ this.tryAddPointToMap(points, points[0].meta?.id);
2170
2146
  }
2171
2147
  if (lines.length > 0) {
2172
- this.tryAddLayerToMap(lines, lines[0].meta.id);
2148
+ this.tryAddLayerToMap(lines, lines[0].meta?.id);
2173
2149
  }
2174
2150
  });
2175
2151
  thematics.forEach((thematic) => {
@@ -2206,7 +2182,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2206
2182
  group = { points: [], lines: [] };
2207
2183
  grouped.set(typeKey, group);
2208
2184
  }
2209
- if (feature.geometry.type === 'Point') {
2185
+ if (feature.geometry?.type === 'Point') {
2210
2186
  feature.properties.longitude = feature.geometry.coordinates[0];
2211
2187
  feature.properties.latitude = feature.geometry.coordinates[1];
2212
2188
  group.points.push(feature);
@@ -2233,15 +2209,15 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2233
2209
  zoneIndex = parseInt(match[1], 10);
2234
2210
  }
2235
2211
  }
2236
- const titleFeature = features[0].meta.title;
2212
+ const titleFeature = features[0].meta?.title;
2237
2213
  // Count how many layers with the same meta.title already exist
2238
2214
  let i = 1;
2239
2215
  for (const layer of this.layers) {
2240
- if (layer.title?.startsWith(titleFeature)) {
2216
+ if (layer.title?.startsWith(titleFeature ?? '')) {
2241
2217
  i++;
2242
2218
  }
2243
2219
  }
2244
- const style = createOverlayMarkerStyle();
2220
+ const style = markerOlStyle({});
2245
2221
  // 🔑 Use zoneIndex to sync layer naming
2246
2222
  const filterLabel = this.languageService.translate.instant('igo.geo.spatialFilter.spatialFilter');
2247
2223
  const options = {
@@ -2263,12 +2239,15 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2263
2239
  .createAsyncLayer(options)
2264
2240
  .pipe(take(1))
2265
2241
  .subscribe((layer) => {
2242
+ if (!layer)
2243
+ return;
2244
+ const vectorLayer = layer;
2266
2245
  const featuresOl = features.map((feature) => {
2267
2246
  return featureToOl(feature, this.map.projection);
2268
2247
  });
2269
- const ol = layer.dataSource.ol;
2248
+ const ol = vectorLayer.dataSource.ol;
2270
2249
  ol.getSource().addFeatures(featuresOl);
2271
- const previousLayer = this.layers.find((prevLayer) => prevLayer.id === layer.id);
2250
+ const previousLayer = this.layers.find((prevLayer) => prevLayer.id === vectorLayer.id);
2272
2251
  if (previousLayer) {
2273
2252
  this.map.layerController.remove(previousLayer);
2274
2253
  this.layers = this.layers.filter((l) => l.id !== layer.id);
@@ -2292,13 +2271,13 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2292
2271
  return;
2293
2272
  }
2294
2273
  for (const layer of this.layers) {
2295
- if (layer.title?.startsWith(features[0].meta.title)) {
2274
+ if (layer.title?.startsWith(features[0].meta?.title ?? '')) {
2296
2275
  i++;
2297
2276
  }
2298
2277
  }
2299
2278
  const options = {
2300
2279
  isIgoInternalLayer: true,
2301
- title: (features[0].meta.title +
2280
+ title: ((features[0].meta?.title ?? '') +
2302
2281
  ' ' +
2303
2282
  i +
2304
2283
  ' - ' +
@@ -2314,16 +2293,19 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2314
2293
  .createAsyncLayer(options)
2315
2294
  .pipe(take(1))
2316
2295
  .subscribe((layer) => {
2296
+ if (!layer)
2297
+ return;
2298
+ const vectorLayer = layer;
2317
2299
  const featuresOl = features.map((feature) => {
2318
2300
  return featureToOl(feature, this.map.projection);
2319
2301
  });
2320
- const ol = layer.dataSource.ol;
2302
+ const ol = vectorLayer.dataSource.ol;
2321
2303
  ol.addFeatures(featuresOl);
2322
- const previousLayer = this.layers.find((prevLayer) => prevLayer.id === layer.id);
2304
+ const previousLayer = this.layers.find((prevLayer) => prevLayer.id === vectorLayer.id);
2323
2305
  if (previousLayer) {
2324
2306
  this.map.layerController.remove(previousLayer);
2325
2307
  i = i - 1;
2326
- layer.title = (features[0].meta.title +
2308
+ layer.title = ((features[0].meta?.title ?? '') +
2327
2309
  ' ' +
2328
2310
  i +
2329
2311
  ' - ' +
@@ -2368,7 +2350,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2368
2350
  });
2369
2351
  if (toRemove.length) {
2370
2352
  toRemove.forEach((f) => olSource.removeFeature(f));
2371
- this.zones = this.zones.filter((z) => z.meta.id !== feature.meta.id);
2353
+ this.zones = this.zones.filter((z) => z.meta?.id !== feature.meta?.id);
2372
2354
  }
2373
2355
  if (olSource.getFeatures().length === 0) {
2374
2356
  this.map.layerController.remove(zoneLayer);
@@ -2391,8 +2373,11 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2391
2373
  if (!zoneLayer) {
2392
2374
  this.defaultStyle = this.createZoneStyle(features[0]);
2393
2375
  this.createZoneLayer(lastZoneIndex + 1, features).subscribe((layer) => {
2394
- this.setActiveZoneLayer(layer);
2395
- this.addFeaturesToLayer(layer, features);
2376
+ if (!layer)
2377
+ return;
2378
+ const vectorLayer = layer;
2379
+ this.setActiveZoneLayer(vectorLayer);
2380
+ this.addFeaturesToLayer(vectorLayer, features);
2396
2381
  this.cdRef.detectChanges();
2397
2382
  });
2398
2383
  }
@@ -2404,11 +2389,11 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2404
2389
  if (this.type() !== SpatialFilterType.Predefined)
2405
2390
  return false;
2406
2391
  return this.layers
2407
- .filter((l) => l.title.includes('Zone'))
2392
+ .filter((l) => l.title?.includes('Zone'))
2408
2393
  .some((layer) => {
2409
- const olSource = layer.dataSource.ol;
2394
+ const olSource = layer.dataSource?.ol;
2410
2395
  const layerFeatures = olSource.getFeatures();
2411
- return this.zones.every((zone) => layerFeatures.some((feature) => feature.getId() === zone.meta.id));
2396
+ return this.zones.every((zone) => layerFeatures.some((feature) => feature.getId() === zone.meta?.id));
2412
2397
  });
2413
2398
  }
2414
2399
  findLastZoneIndex() {
@@ -2435,7 +2420,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2435
2420
  ? this.buffer /
2436
2421
  Math.cos((Math.PI / 180) * coordinates[1]) /
2437
2422
  resolution
2438
- : undefined,
2423
+ : 0,
2439
2424
  fill: new olstyle.Fill({ color: 'rgba(200, 200, 20, 0.2)' }),
2440
2425
  stroke: new olstyle.Stroke({ width: 1, color: 'orange' })
2441
2426
  }),
@@ -2503,6 +2488,8 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2503
2488
  }
2504
2489
  setPointProps(featureOl, projectionCode, radius) {
2505
2490
  const olGeometry = featureOl.getGeometry();
2491
+ if (!olGeometry)
2492
+ return;
2506
2493
  const [longitude, latitude] = transform(olGeometry.getFlatCoordinates(), projectionCode, 'EPSG:4326');
2507
2494
  const props = {
2508
2495
  [RADIUS_NAME]: radius,
@@ -2512,8 +2499,8 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2512
2499
  };
2513
2500
  Object.entries(props).forEach(([key, value]) => featureOl.set(key, value, true));
2514
2501
  }
2515
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SpatialFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2516
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: SpatialFilterToolComponent, isStandalone: true, selector: "igo-spatial-filter-tool", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, itemType: { classPropertyName: "itemType", publicName: "itemType", isSignal: true, isRequired: false, transformFunction: null }, freehandDrawIsActive: { classPropertyName: "freehandDrawIsActive", publicName: "freehandDrawIsActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { type: "typeChange", itemType: "itemTypeChange", freehandDrawIsActive: "freehandDrawIsActiveChange" }, ngImport: i0, template: "<igo-spatial-filter-type\n [store]=\"spatialListStore\"\n [selectedQueryType]=\"queryType\"\n [layers]=\"activeLayers\"\n (eventType)=\"getOutputType($event)\"\n (eventQueryType)=\"getOutputQueryType($event)\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (bufferChange)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n [zones]=\"zones\"\n (addZone)=\"onAddZone($event)\"\n (removeZone)=\"onRemovedZone($event)\"\n/>\n\n<igo-spatial-filter-item\n [type]=\"type()\"\n [queryType]=\"queryType\"\n [map]=\"map\"\n [zones]=\"zones\"\n [loading]=\"loading\"\n [store]=\"store\"\n [layers]=\"activeLayers\"\n [allLayers]=\"layers\"\n [thematicLength]=\"thematicLength\"\n (radiusEvent)=\"buffer = $event\"\n (bufferEvent)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n (freehandControl)=\"freehandDrawIsActive.set($event)\"\n (drawZoneEvent)=\"this.zones = [$event]\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (itemTypeChange)=\"itemType.set($event)\"\n (thematicChange)=\"thematics = $event\"\n (toggleSearch)=\"getOutputToggleSearch()\"\n (clearButtonEvent)=\"clearMap()\"\n (clearSearchEvent)=\"getOutputClearSearch()\"\n (export)=\"activateExportTool()\"\n (openWorkspace)=\"activateWorkspace()\"\n (entityChange)=\"activateWorkspace($event)\"\n/>\n@if (selectedFeature$ | async; as feature) {\n <igo-feature-details [feature]=\"feature\" />\n}\n", styles: [":host igo-spatial-filter-item{display:block;padding:0 12px}:host ::ng-deep .mat-mdc-tab-body-wrapper{margin-top:12px;padding:0 12px}\n"], dependencies: [{ kind: "component", type: SpatialFilterTypeComponent, selector: "igo-spatial-filter-type", inputs: ["store", "selectedQueryType", "zones", "layers"], outputs: ["selectedQueryTypeChange", "eventType", "eventQueryType", "bufferChange", "measureUnitChange", "addZone", "removeZone", "zonesWithBufferChange"] }, { kind: "component", type: SpatialFilterItemComponent, selector: "igo-spatial-filter-item", inputs: ["map", "type", "queryType", "zones", "loading", "store", "layers", "allLayers", "thematicLength"], outputs: ["loadingChange", "toggleSearch", "itemTypeChange", "thematicChange", "drawZoneEvent", "bufferEvent", "zonesWithBufferChange", "measureUnitChange", "radiusEvent", "freehandControl", "predefinedRadius", "clearButtonEvent", "clearSearchEvent", "export", "openWorkspace", "entityChange"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2502
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SpatialFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2503
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: SpatialFilterToolComponent, isStandalone: true, selector: "igo-spatial-filter-tool", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, itemType: { classPropertyName: "itemType", publicName: "itemType", isSignal: true, isRequired: false, transformFunction: null }, freehandDrawIsActive: { classPropertyName: "freehandDrawIsActive", publicName: "freehandDrawIsActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { type: "typeChange", itemType: "itemTypeChange", freehandDrawIsActive: "freehandDrawIsActiveChange" }, ngImport: i0, template: "<igo-spatial-filter-type\n [store]=\"spatialListStore\"\n [selectedQueryType]=\"queryType\"\n [layers]=\"activeLayers\"\n (eventType)=\"getOutputType($event)\"\n (eventQueryType)=\"getOutputQueryType($event)\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (bufferChange)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n [zones]=\"zones\"\n (addZone)=\"onAddZone($event)\"\n (removeZone)=\"onRemovedZone($event)\"\n/>\n\n<igo-spatial-filter-item\n [type]=\"type()!\"\n [queryType]=\"queryType\"\n [map]=\"map\"\n [zones]=\"zones\"\n [loading]=\"loading\"\n [store]=\"store\"\n [layers]=\"activeLayers\"\n [allLayers]=\"layers\"\n [thematicLength]=\"thematicLength\"\n (radiusEvent)=\"buffer = $event\"\n (bufferEvent)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n (freehandControl)=\"freehandDrawIsActive.set($event)\"\n (drawZoneEvent)=\"this.zones = [$event]\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (itemTypeChange)=\"itemType.set($event)\"\n (thematicChange)=\"thematics = $event\"\n (toggleSearch)=\"getOutputToggleSearch()\"\n (clearButtonEvent)=\"clearMap()\"\n (clearSearchEvent)=\"getOutputClearSearch()\"\n (export)=\"activateExportTool()\"\n (openWorkspace)=\"activateWorkspace()\"\n (entityChange)=\"activateWorkspace($event)\"\n/>\n@if (selectedFeature$ | async; as feature) {\n <igo-feature-details [feature]=\"feature\" />\n}\n", styles: [":host igo-spatial-filter-item{display:block;padding:0 12px}:host ::ng-deep .mat-mdc-tab-body-wrapper{margin-top:12px;padding:0 12px}\n"], dependencies: [{ kind: "component", type: SpatialFilterTypeComponent, selector: "igo-spatial-filter-type", inputs: ["store", "selectedQueryType", "zones", "layers"], outputs: ["selectedQueryTypeChange", "eventType", "eventQueryType", "bufferChange", "measureUnitChange", "addZone", "removeZone", "zonesWithBufferChange"] }, { kind: "component", type: SpatialFilterItemComponent, selector: "igo-spatial-filter-item", inputs: ["map", "type", "queryType", "zones", "loading", "store", "layers", "allLayers", "thematicLength"], outputs: ["loadingChange", "toggleSearch", "itemTypeChange", "thematicChange", "drawZoneEvent", "bufferEvent", "zonesWithBufferChange", "measureUnitChange", "radiusEvent", "freehandControl", "predefinedRadius", "clearButtonEvent", "clearSearchEvent", "export", "openWorkspace", "entityChange"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2517
2504
  };
2518
2505
  SpatialFilterToolComponent = __decorate([
2519
2506
  ToolComponent({
@@ -2525,19 +2512,19 @@ SpatialFilterToolComponent = __decorate([
2525
2512
  * Spatial Filter Type
2526
2513
  */
2527
2514
  ], SpatialFilterToolComponent);
2528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SpatialFilterToolComponent, decorators: [{
2515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SpatialFilterToolComponent, decorators: [{
2529
2516
  type: Component,
2530
2517
  args: [{ selector: 'igo-spatial-filter-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2531
2518
  SpatialFilterTypeComponent,
2532
2519
  SpatialFilterItemComponent,
2533
2520
  FeatureDetailsComponent,
2534
2521
  AsyncPipe
2535
- ], template: "<igo-spatial-filter-type\n [store]=\"spatialListStore\"\n [selectedQueryType]=\"queryType\"\n [layers]=\"activeLayers\"\n (eventType)=\"getOutputType($event)\"\n (eventQueryType)=\"getOutputQueryType($event)\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (bufferChange)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n [zones]=\"zones\"\n (addZone)=\"onAddZone($event)\"\n (removeZone)=\"onRemovedZone($event)\"\n/>\n\n<igo-spatial-filter-item\n [type]=\"type()\"\n [queryType]=\"queryType\"\n [map]=\"map\"\n [zones]=\"zones\"\n [loading]=\"loading\"\n [store]=\"store\"\n [layers]=\"activeLayers\"\n [allLayers]=\"layers\"\n [thematicLength]=\"thematicLength\"\n (radiusEvent)=\"buffer = $event\"\n (bufferEvent)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n (freehandControl)=\"freehandDrawIsActive.set($event)\"\n (drawZoneEvent)=\"this.zones = [$event]\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (itemTypeChange)=\"itemType.set($event)\"\n (thematicChange)=\"thematics = $event\"\n (toggleSearch)=\"getOutputToggleSearch()\"\n (clearButtonEvent)=\"clearMap()\"\n (clearSearchEvent)=\"getOutputClearSearch()\"\n (export)=\"activateExportTool()\"\n (openWorkspace)=\"activateWorkspace()\"\n (entityChange)=\"activateWorkspace($event)\"\n/>\n@if (selectedFeature$ | async; as feature) {\n <igo-feature-details [feature]=\"feature\" />\n}\n", styles: [":host igo-spatial-filter-item{display:block;padding:0 12px}:host ::ng-deep .mat-mdc-tab-body-wrapper{margin-top:12px;padding:0 12px}\n"] }]
2522
+ ], template: "<igo-spatial-filter-type\n [store]=\"spatialListStore\"\n [selectedQueryType]=\"queryType\"\n [layers]=\"activeLayers\"\n (eventType)=\"getOutputType($event)\"\n (eventQueryType)=\"getOutputQueryType($event)\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (bufferChange)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n [zones]=\"zones\"\n (addZone)=\"onAddZone($event)\"\n (removeZone)=\"onRemovedZone($event)\"\n/>\n\n<igo-spatial-filter-item\n [type]=\"type()!\"\n [queryType]=\"queryType\"\n [map]=\"map\"\n [zones]=\"zones\"\n [loading]=\"loading\"\n [store]=\"store\"\n [layers]=\"activeLayers\"\n [allLayers]=\"layers\"\n [thematicLength]=\"thematicLength\"\n (radiusEvent)=\"buffer = $event\"\n (bufferEvent)=\"buffer = $event\"\n (measureUnitChange)=\"measureUnit = $event\"\n (freehandControl)=\"freehandDrawIsActive.set($event)\"\n (drawZoneEvent)=\"this.zones = [$event]\"\n (zonesWithBufferChange)=\"onAddZoneWithBuffer($event)\"\n (itemTypeChange)=\"itemType.set($event)\"\n (thematicChange)=\"thematics = $event\"\n (toggleSearch)=\"getOutputToggleSearch()\"\n (clearButtonEvent)=\"clearMap()\"\n (clearSearchEvent)=\"getOutputClearSearch()\"\n (export)=\"activateExportTool()\"\n (openWorkspace)=\"activateWorkspace()\"\n (entityChange)=\"activateWorkspace($event)\"\n/>\n@if (selectedFeature$ | async; as feature) {\n <igo-feature-details [feature]=\"feature\" />\n}\n", styles: [":host igo-spatial-filter-item{display:block;padding:0 12px}:host ::ng-deep .mat-mdc-tab-body-wrapper{margin-top:12px;padding:0 12px}\n"] }]
2536
2523
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }, { type: i0.Output, args: ["typeChange"] }], itemType: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemType", required: false }] }, { type: i0.Output, args: ["itemTypeChange"] }], freehandDrawIsActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "freehandDrawIsActive", required: false }] }, { type: i0.Output, args: ["freehandDrawIsActiveChange"] }] } });
2537
2524
 
2538
2525
  let TimeFilterToolComponent = class TimeFilterToolComponent {
2539
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: TimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2540
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: TimeFilterToolComponent, isStandalone: true, selector: "igo-time-filter-tool", ngImport: i0, template: "<igo-time-filter-list igoTimeFilterListBinding />\n", dependencies: [{ kind: "component", type: TimeFilterListComponent, selector: "igo-time-filter-list", inputs: ["layers"], outputs: ["layersChange"] }, { kind: "directive", type: TimeFilterListBindingDirective, selector: "[igoTimeFilterListBinding]" }] });
2526
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2527
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: TimeFilterToolComponent, isStandalone: true, selector: "igo-time-filter-tool", ngImport: i0, template: "<igo-time-filter-list igoTimeFilterListBinding />\n", dependencies: [{ kind: "component", type: TimeFilterListComponent, selector: "igo-time-filter-list", inputs: ["layers"], outputs: ["layersChange"] }, { kind: "directive", type: TimeFilterListBindingDirective, selector: "[igoTimeFilterListBinding]" }] });
2541
2528
  };
2542
2529
  TimeFilterToolComponent = __decorate([
2543
2530
  ToolComponent({
@@ -2546,7 +2533,7 @@ TimeFilterToolComponent = __decorate([
2546
2533
  icon: 'history'
2547
2534
  })
2548
2535
  ], TimeFilterToolComponent);
2549
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: TimeFilterToolComponent, decorators: [{
2536
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TimeFilterToolComponent, decorators: [{
2550
2537
  type: Component,
2551
2538
  args: [{ selector: 'igo-time-filter-tool', imports: [TimeFilterListComponent, TimeFilterListBindingDirective], template: "<igo-time-filter-list igoTimeFilterListBinding />\n" }]
2552
2539
  }] });
@@ -2561,8 +2548,8 @@ class IgoAppFilterModule {
2561
2548
  providers: []
2562
2549
  };
2563
2550
  }
2564
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2565
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppFilterModule, imports: [OgcFilterToolComponent,
2551
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2552
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppFilterModule, imports: [OgcFilterToolComponent,
2566
2553
  ActiveOgcFilterToolComponent,
2567
2554
  TimeFilterToolComponent,
2568
2555
  ActiveTimeFilterToolComponent,
@@ -2571,13 +2558,13 @@ class IgoAppFilterModule {
2571
2558
  TimeFilterToolComponent,
2572
2559
  ActiveTimeFilterToolComponent,
2573
2560
  SpatialFilterToolComponent] });
2574
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppFilterModule, imports: [OgcFilterToolComponent,
2561
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppFilterModule, imports: [OgcFilterToolComponent,
2575
2562
  ActiveOgcFilterToolComponent,
2576
2563
  TimeFilterToolComponent,
2577
2564
  ActiveTimeFilterToolComponent,
2578
2565
  SpatialFilterToolComponent] });
2579
2566
  }
2580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppFilterModule, decorators: [{
2567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppFilterModule, decorators: [{
2581
2568
  type: NgModule,
2582
2569
  args: [{
2583
2570
  imports: [
@@ -2606,7 +2593,7 @@ let DataIssueReporterToolComponent = class DataIssueReporterToolComponent {
2606
2593
  /**
2607
2594
  * Url to report the data issue. Use the Post protocol to send the form.
2608
2595
  */
2609
- url = input(undefined, ...(ngDevMode ? [{ debugName: "url" }] : /* istanbul ignore next */ []));
2596
+ url = input(...(ngDevMode ? [undefined, { debugName: "url" }] : /* istanbul ignore next */ []));
2610
2597
  /**
2611
2598
  * Map to link to the form
2612
2599
  * @internal
@@ -2714,10 +2701,10 @@ let DataIssueReporterToolComponent = class DataIssueReporterToolComponent {
2714
2701
  });
2715
2702
  }
2716
2703
  ngOnDestroy() {
2717
- this.valueChanges$$.unsubscribe();
2704
+ this.valueChanges$$?.unsubscribe();
2718
2705
  }
2719
2706
  clearForm() {
2720
- this.form$.value.control.reset();
2707
+ this.form$.value?.control.reset();
2721
2708
  }
2722
2709
  onSubmit(data) {
2723
2710
  const submitTitle = 'igo.integration.dataIssueReporterTool.submit.title';
@@ -2733,8 +2720,8 @@ let DataIssueReporterToolComponent = class DataIssueReporterToolComponent {
2733
2720
  this.clearForm();
2734
2721
  }
2735
2722
  }
2736
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DataIssueReporterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2737
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: DataIssueReporterToolComponent, isStandalone: false, selector: "igo-issue-reporter-tool", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (form$ | async; as form) {\n <igo-form\n [form]=\"form\"\n [formData]=\"data$ | async\"\n (submitForm)=\"onSubmit($any($event))\"\n >\n @if (form.fields.length) {\n <div class=\"form-container\">\n @for (field of form.fields; track field) {\n <igo-form-field [field]=\"field\" />\n }\n </div>\n }\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n matButton=\"filled\"\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n </igo-form>\n}\n", styles: [":host .actions-container{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$1.FormFieldComponent, selector: "igo-form-field", inputs: ["field"] }, { kind: "component", type: i2$1.FormComponent, selector: "igo-form", inputs: ["form", "formData", "autocomplete"], outputs: ["submitForm"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
2723
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DataIssueReporterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2724
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DataIssueReporterToolComponent, isStandalone: false, selector: "igo-issue-reporter-tool", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (form$ | async; as form) {\n <igo-form\n [form]=\"form\"\n [formData]=\"(data$ | async)!\"\n (submitForm)=\"onSubmit($any($event))\"\n >\n @if (form.fields.length) {\n <div class=\"form-container\">\n @for (field of form.fields; track field) {\n <igo-form-field [field]=\"field\" />\n }\n </div>\n }\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n matButton=\"filled\"\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n </igo-form>\n}\n", styles: [":host .actions-container{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$1.FormFieldComponent, selector: "igo-form-field", inputs: ["field"] }, { kind: "component", type: i2$1.FormComponent, selector: "igo-form", inputs: ["form", "formData", "autocomplete"], outputs: ["submitForm"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
2738
2725
  };
2739
2726
  DataIssueReporterToolComponent = __decorate([
2740
2727
  ToolComponent({
@@ -2743,25 +2730,25 @@ DataIssueReporterToolComponent = __decorate([
2743
2730
  icon: 'feedback'
2744
2731
  })
2745
2732
  ], DataIssueReporterToolComponent);
2746
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DataIssueReporterToolComponent, decorators: [{
2733
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DataIssueReporterToolComponent, decorators: [{
2747
2734
  type: Component,
2748
- args: [{ selector: 'igo-issue-reporter-tool', standalone: false, template: "@if (form$ | async; as form) {\n <igo-form\n [form]=\"form\"\n [formData]=\"data$ | async\"\n (submitForm)=\"onSubmit($any($event))\"\n >\n @if (form.fields.length) {\n <div class=\"form-container\">\n @for (field of form.fields; track field) {\n <igo-form-field [field]=\"field\" />\n }\n </div>\n }\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n matButton=\"filled\"\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n </igo-form>\n}\n", styles: [":host .actions-container{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"] }]
2735
+ args: [{ selector: 'igo-issue-reporter-tool', standalone: false, template: "@if (form$ | async; as form) {\n <igo-form\n [form]=\"form\"\n [formData]=\"(data$ | async)!\"\n (submitForm)=\"onSubmit($any($event))\"\n >\n @if (form.fields.length) {\n <div class=\"form-container\">\n @for (field of form.fields; track field) {\n <igo-form-field [field]=\"field\" />\n }\n </div>\n }\n <div formButtons class=\"actions-container\">\n <button\n mat-stroked-button\n type=\"button\"\n color=\"primary\"\n (click)=\"clearForm()\"\n >\n {{ 'igo.integration.dataIssueReporterTool.reset.button' | translate }}\n </button>\n <button\n matButton=\"filled\"\n type=\"submit\"\n color=\"primary\"\n [disabled]=\"submitDisabled\"\n >\n {{ 'igo.integration.dataIssueReporterTool.submit.button' | translate }}\n </button>\n </div>\n </igo-form>\n}\n", styles: [":host .actions-container{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center}:host .form-container{width:100%;padding:10px}:host .form-container igo-form-field{display:block;height:auto}\n"] }]
2749
2736
  }], propDecorators: { url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }] } });
2750
2737
 
2751
2738
  class IgoAppGeometryFormModule {
2752
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppGeometryFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2753
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppGeometryFormModule, declarations: [DataIssueReporterToolComponent], imports: [CommonModule,
2739
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppGeometryFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2740
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppGeometryFormModule, declarations: [DataIssueReporterToolComponent], imports: [CommonModule,
2754
2741
  MatButtonModule,
2755
2742
  IgoLanguageModule,
2756
2743
  IgoFormModule,
2757
2744
  IgoMessageModule], exports: [DataIssueReporterToolComponent] });
2758
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppGeometryFormModule, imports: [CommonModule,
2745
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppGeometryFormModule, imports: [CommonModule,
2759
2746
  MatButtonModule,
2760
2747
  IgoLanguageModule,
2761
2748
  IgoFormModule,
2762
2749
  IgoMessageModule] });
2763
2750
  }
2764
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppGeometryFormModule, decorators: [{
2751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppGeometryFormModule, decorators: [{
2765
2752
  type: NgModule,
2766
2753
  args: [{
2767
2754
  imports: [
@@ -2782,7 +2769,7 @@ let ImportExportToolComponent = class ImportExportToolComponent {
2782
2769
  importExportState = inject(ImportExportState);
2783
2770
  workspaceState = inject(WorkspaceState);
2784
2771
  contextState = inject(ContextState);
2785
- projectionsLimitations = input(undefined, ...(ngDevMode ? [{ debugName: "projectionsLimitations" }] : /* istanbul ignore next */ []));
2772
+ projectionsLimitations = input(...(ngDevMode ? [undefined, { debugName: "projectionsLimitations" }] : /* istanbul ignore next */ []));
2786
2773
  selectFirstProj = input(false, ...(ngDevMode ? [{ debugName: "selectFirstProj" }] : /* istanbul ignore next */ []));
2787
2774
  /**
2788
2775
  * Map to measure on
@@ -2831,8 +2818,8 @@ let ImportExportToolComponent = class ImportExportToolComponent {
2831
2818
  importExportTypeChange(event) {
2832
2819
  this.importExportType.set(event.value);
2833
2820
  }
2834
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ImportExportToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2835
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: ImportExportToolComponent, isStandalone: true, selector: "igo-import-export-tool", inputs: { projectionsLimitations: { classPropertyName: "projectionsLimitations", publicName: "projectionsLimitations", isSignal: true, isRequired: false, transformFunction: null }, selectFirstProj: { classPropertyName: "selectFirstProj", publicName: "selectFirstProj", isSignal: true, isRequired: false, transformFunction: null }, importExportType: { classPropertyName: "importExportType", publicName: "importExportType", isSignal: true, isRequired: false, transformFunction: null }, importExportShowBothType: { classPropertyName: "importExportShowBothType", publicName: "importExportShowBothType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { importExportType: "importExportTypeChange" }, ngImport: i0, template: "@if (importExportShowBothType()) {\n <mat-tab-group>\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\n >\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [selectFirstProj]=\"selectFirstProj()\"\n [projectionsLimitations]=\"projectionsLimitations()\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n </mat-tab>\n <mat-tab\n [label]=\"\n 'igo.integration.importExportTool.importExportContext' | translate\n \"\n >\n <igo-context-import-export [map]=\"map\" />\n </mat-tab>\n </mat-tab-group>\n}\n\n@if (!importExportShowBothType() && importExportType() === 'layer') {\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n}\n\n@if (!importExportShowBothType() && importExportType() === 'context') {\n <igo-context-import-export [map]=\"map\" />\n}\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: ImportExportComponent, selector: "igo-import-export", inputs: ["selectFirstProj", "map", "contextUri", "projectionsLimitations", "store", "selectedMode", "exportOptions$"], outputs: ["selectedModeChange", "selectMode", "exportOptionsChange"] }, { kind: "component", type: ContextImportExportComponent, selector: "igo-context-import-export", inputs: ["map"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2821
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ImportExportToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2822
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ImportExportToolComponent, isStandalone: true, selector: "igo-import-export-tool", inputs: { projectionsLimitations: { classPropertyName: "projectionsLimitations", publicName: "projectionsLimitations", isSignal: true, isRequired: false, transformFunction: null }, selectFirstProj: { classPropertyName: "selectFirstProj", publicName: "selectFirstProj", isSignal: true, isRequired: false, transformFunction: null }, importExportType: { classPropertyName: "importExportType", publicName: "importExportType", isSignal: true, isRequired: false, transformFunction: null }, importExportShowBothType: { classPropertyName: "importExportShowBothType", publicName: "importExportShowBothType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { importExportType: "importExportTypeChange" }, ngImport: i0, template: "@if (importExportShowBothType()) {\n <mat-tab-group>\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\n >\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async)?.uri\"\n [map]=\"map\"\n [selectFirstProj]=\"selectFirstProj()\"\n [projectionsLimitations]=\"projectionsLimitations()\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"(importExportState.selectedMode$ | async)!\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n </mat-tab>\n <mat-tab\n [label]=\"\n 'igo.integration.importExportTool.importExportContext' | translate\n \"\n >\n <igo-context-import-export [map]=\"map\" />\n </mat-tab>\n </mat-tab-group>\n}\n\n@if (!importExportShowBothType() && importExportType() === 'layer') {\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async)?.uri\"\n [map]=\"map\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"(importExportState.selectedMode$ | async)!\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n}\n\n@if (!importExportShowBothType() && importExportType() === 'context') {\n <igo-context-import-export [map]=\"map\" />\n}\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: ImportExportComponent, selector: "igo-import-export", inputs: ["selectFirstProj", "map", "contextUri", "projectionsLimitations", "store", "selectedMode", "exportOptions$"], outputs: ["selectedModeChange", "selectMode", "exportOptionsChange"] }, { kind: "component", type: ContextImportExportComponent, selector: "igo-context-import-export", inputs: ["map"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2836
2823
  };
2837
2824
  ImportExportToolComponent = __decorate([
2838
2825
  ToolComponent({
@@ -2841,7 +2828,7 @@ ImportExportToolComponent = __decorate([
2841
2828
  icon: 'file_save'
2842
2829
  })
2843
2830
  ], ImportExportToolComponent);
2844
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ImportExportToolComponent, decorators: [{
2831
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ImportExportToolComponent, decorators: [{
2845
2832
  type: Component,
2846
2833
  args: [{ selector: 'igo-import-export-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2847
2834
  MatTabsModule,
@@ -2849,7 +2836,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
2849
2836
  ContextImportExportComponent,
2850
2837
  AsyncPipe,
2851
2838
  IgoLanguageModule
2852
- ], template: "@if (importExportShowBothType()) {\n <mat-tab-group>\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\n >\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [selectFirstProj]=\"selectFirstProj()\"\n [projectionsLimitations]=\"projectionsLimitations()\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n </mat-tab>\n <mat-tab\n [label]=\"\n 'igo.integration.importExportTool.importExportContext' | translate\n \"\n >\n <igo-context-import-export [map]=\"map\" />\n </mat-tab>\n </mat-tab-group>\n}\n\n@if (!importExportShowBothType() && importExportType() === 'layer') {\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async).uri\"\n [map]=\"map\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"importExportState.selectedMode$ | async\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n}\n\n@if (!importExportShowBothType() && importExportType() === 'context') {\n <igo-context-import-export [map]=\"map\" />\n}\n", styles: ["mat-form-field{width:100%}\n"] }]
2839
+ ], template: "@if (importExportShowBothType()) {\n <mat-tab-group>\n <mat-tab\n [label]=\"'igo.integration.importExportTool.importExportData' | translate\"\n >\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async)?.uri\"\n [map]=\"map\"\n [selectFirstProj]=\"selectFirstProj()\"\n [projectionsLimitations]=\"projectionsLimitations()\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"(importExportState.selectedMode$ | async)!\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n </mat-tab>\n <mat-tab\n [label]=\"\n 'igo.integration.importExportTool.importExportContext' | translate\n \"\n >\n <igo-context-import-export [map]=\"map\" />\n </mat-tab>\n </mat-tab-group>\n}\n\n@if (!importExportShowBothType() && importExportType() === 'layer') {\n <igo-import-export\n [contextUri]=\"(contextState.context$ | async)?.uri\"\n [map]=\"map\"\n [store]=\"workspaceStore\"\n [selectedMode]=\"(importExportState.selectedMode$ | async)!\"\n (selectMode)=\"modeChanged($any($event))\"\n [exportOptions$]=\"importExportState.exportOptions$\"\n (exportOptionsChange)=\"exportOptionsChange($event)\"\n />\n}\n\n@if (!importExportShowBothType() && importExportType() === 'context') {\n <igo-context-import-export [map]=\"map\" />\n}\n", styles: ["mat-form-field{width:100%}\n"] }]
2853
2840
  }], propDecorators: { projectionsLimitations: [{ type: i0.Input, args: [{ isSignal: true, alias: "projectionsLimitations", required: false }] }], selectFirstProj: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectFirstProj", required: false }] }], importExportType: [{ type: i0.Input, args: [{ isSignal: true, alias: "importExportType", required: false }] }, { type: i0.Output, args: ["importExportTypeChange"] }], importExportShowBothType: [{ type: i0.Input, args: [{ isSignal: true, alias: "importExportShowBothType", required: false }] }] } });
2854
2841
 
2855
2842
  /**
@@ -2862,11 +2849,11 @@ class IgoAppImportExportModule {
2862
2849
  providers: []
2863
2850
  };
2864
2851
  }
2865
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppImportExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2866
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppImportExportModule, imports: [ImportExportToolComponent], exports: [ImportExportToolComponent] });
2867
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppImportExportModule, imports: [ImportExportToolComponent] });
2852
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppImportExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2853
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppImportExportModule, imports: [ImportExportToolComponent], exports: [ImportExportToolComponent] });
2854
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppImportExportModule, imports: [ImportExportToolComponent] });
2868
2855
  }
2869
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppImportExportModule, decorators: [{
2856
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppImportExportModule, decorators: [{
2870
2857
  type: NgModule,
2871
2858
  args: [{
2872
2859
  imports: [ImportExportToolComponent],
@@ -2895,10 +2882,13 @@ class AdvancedCoordinatesComponent {
2895
2882
  inLambert2 = { 32198: true, 3798: true };
2896
2883
  mapState$$;
2897
2884
  formStatus$$;
2898
- _projectionsLimitations = {};
2899
- projectionsConstraints;
2885
+ projectionsLimitations = input({}, { ...(ngDevMode ? { debugName: "projectionsLimitations" } : /* istanbul ignore next */ {}), transform: (value) => value ?? {} });
2900
2886
  defaultProj;
2901
- currentZones = { utm: undefined, mtm: undefined };
2887
+ currentZones = {
2888
+ utm: undefined,
2889
+ mtm: undefined
2890
+ };
2891
+ projectionsConstraints;
2902
2892
  units = true;
2903
2893
  get map() {
2904
2894
  return this.mapState.map;
@@ -2909,12 +2899,6 @@ class AdvancedCoordinatesComponent {
2909
2899
  set inputProj(value) {
2910
2900
  this.form.patchValue({ inputProj: value });
2911
2901
  }
2912
- get projectionsLimitations() {
2913
- return this._projectionsLimitations || {};
2914
- }
2915
- set projectionsLimitations(value) {
2916
- this._projectionsLimitations = value;
2917
- }
2918
2902
  constructor() {
2919
2903
  this.defaultProj = {
2920
2904
  translatedValue: this.languageService.translate.instant('igo.geo.importExportForm.projections.wgs84', { code: 'EPSG:4326' }),
@@ -3068,7 +3052,7 @@ class AdvancedCoordinatesComponent {
3068
3052
  * Create a list of currents projections
3069
3053
  */
3070
3054
  computeProjections() {
3071
- this.projectionsConstraints = computeProjectionsConstraints(this.projectionsLimitations);
3055
+ this.projectionsConstraints = computeProjectionsConstraints(this.projectionsLimitations());
3072
3056
  const projections = [];
3073
3057
  if (!this.currentCenterDefaultProj) {
3074
3058
  this.currentCenterDefaultProj = this.map.viewController.getCenter(this.defaultProj.code);
@@ -3153,7 +3137,7 @@ class AdvancedCoordinatesComponent {
3153
3137
  * @param projections Array of the InputProjections
3154
3138
  */
3155
3139
  pushMtm(projections) {
3156
- if (this.projectionsConstraints.mtm) {
3140
+ if (this.projectionsConstraints?.mtm) {
3157
3141
  const zone = zoneMtm(this.currentCenterDefaultProj[0]);
3158
3142
  const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;
3159
3143
  projections.splice(3, 0, {
@@ -3230,13 +3214,15 @@ class AdvancedCoordinatesComponent {
3230
3214
  lambertProjections.forEach((projection) => {
3231
3215
  let modifiedProj = this.projections$.value;
3232
3216
  const extent = projection.extent;
3233
- const code = projection.code.match(/\d+/);
3217
+ const codeMatch = projection.code.match(/\d+/);
3218
+ const code = codeMatch?.[0];
3234
3219
  const currentExtentWGS = olProj.transformExtent(extent, projection.code, this.defaultProj.code);
3235
3220
  if (coordinates[0] < currentExtentWGS[0] ||
3236
3221
  coordinates[0] > currentExtentWGS[2] ||
3237
3222
  coordinates[1] < currentExtentWGS[1] ||
3238
3223
  coordinates[1] > currentExtentWGS[3]) {
3239
- this.inLambert2[code] = false;
3224
+ if (code)
3225
+ this.inLambert2[code] = false;
3240
3226
  if (this.inputProj.alias === projection.alias) {
3241
3227
  this.inputProj = this.projections$.value[0];
3242
3228
  }
@@ -3244,17 +3230,17 @@ class AdvancedCoordinatesComponent {
3244
3230
  this.projections$.next(modifiedProj);
3245
3231
  }
3246
3232
  else {
3247
- if (!this.inLambert2[code]) {
3233
+ if (code && !this.inLambert2[code]) {
3248
3234
  this.projections$.next(modifiedProj.concat(projection));
3249
3235
  this.inLambert2[code] = true;
3250
3236
  }
3251
3237
  }
3252
3238
  });
3253
3239
  }
3254
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedCoordinatesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3255
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AdvancedCoordinatesComponent, isStandalone: true, selector: "igo-advanced-coordinates", inputs: { projectionsLimitations: "projectionsLimitations" }, ngImport: i0, template: "<div class=\"advanced-coordinates__coordinates-container\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n @if (units) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n } @else {\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.est'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n }\n\n @if (units) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n } @else {\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.nord'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n }\n <button\n mat-icon-button\n [attr.aria-label]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.copy'\n | translate\n \"\n class=\"igo-form-button-group advanced-coordinates__copy-coordinates\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <form class=\"igo-form advanced-coordinates__form\" [formGroup]=\"form\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field class=\"igo-input-container\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordSystem'\n | translate\n }}</mat-label>\n <mat-select [(value)]=\"inputProj\">\n @for (projection of projections$ | async; track projection) {\n <mat-option\n matTooltipShowDelay=\"500\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ projection.translatedValue || projection.alias }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-slide-toggle\n class=\"center-toggle\"\n [checked]=\"center\"\n [labelPosition]=\"'before'\"\n (change)=\"displayCenter($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.center'\n | translate\n }}\n </mat-slide-toggle>\n </div>\n </form>\n\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.zoom' | translate\n }}\n {{ map.viewController.getZoom() }}\n </p>\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.scale' | translate\n }}\n {{ formattedScale$ | async }}\n </p>\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.resolution'\n | translate\n }}\n {{ map.viewController.getResolution() | number: '1.0-0' }}\n </p>\n</div>\n", styles: [":host{padding:12px 0}textarea{resize:none}.advanced-coordinates__coordinates-container{width:100%;display:flex;flex-direction:column;padding:12px 0}.advanced-coordinates__coordinates-container__inner{display:flex;align-items:center;margin-bottom:16px}.advanced-coordinates__coordinates-container__inner mat-form-field{flex:1}.advanced-coordinates__coordinates-container__inner mat-form-field:not(:first-child),.advanced-coordinates__coordinates-container__inner button:not(:first-child){margin-left:8px}.advanced-coordinates__form{display:flex;flex-direction:column}.advanced-coordinates__form mat-slide-toggle{flex:1}.advanced-coordinates__form mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}.advanced-coordinates__form mat-slide-toggle ::ng-deep .mdc-label{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3240
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdvancedCoordinatesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3241
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: AdvancedCoordinatesComponent, isStandalone: true, selector: "igo-advanced-coordinates", inputs: { projectionsLimitations: { classPropertyName: "projectionsLimitations", publicName: "projectionsLimitations", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"advanced-coordinates__coordinates-container\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n @if (units) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n } @else {\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.est'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n }\n\n @if (units) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n } @else {\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.nord'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n }\n <button\n mat-icon-button\n [attr.aria-label]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.copy'\n | translate\n \"\n class=\"igo-form-button-group advanced-coordinates__copy-coordinates\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <form class=\"igo-form advanced-coordinates__form\" [formGroup]=\"form\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field class=\"igo-input-container\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordSystem'\n | translate\n }}</mat-label>\n <mat-select [(value)]=\"inputProj\">\n @for (projection of projections$ | async; track projection) {\n <mat-option\n matTooltipShowDelay=\"500\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ projection.translatedValue || projection.alias }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-slide-toggle\n class=\"center-toggle\"\n [checked]=\"center\"\n [labelPosition]=\"'before'\"\n (change)=\"displayCenter($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.center'\n | translate\n }}\n </mat-slide-toggle>\n </div>\n </form>\n\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.zoom' | translate\n }}\n {{ map.viewController.getZoom() }}\n </p>\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.scale' | translate\n }}\n {{ formattedScale$ | async }}\n </p>\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.resolution'\n | translate\n }}\n {{ map.viewController.getResolution() | number: '1.0-0' }}\n </p>\n</div>\n", styles: [":host{padding:12px 0}textarea{resize:none}.advanced-coordinates__coordinates-container{width:100%;display:flex;flex-direction:column;padding:12px 0}.advanced-coordinates__coordinates-container__inner{display:flex;align-items:center;margin-bottom:16px}.advanced-coordinates__coordinates-container__inner mat-form-field{flex:1}.advanced-coordinates__coordinates-container__inner mat-form-field:not(:first-child),.advanced-coordinates__coordinates-container__inner button:not(:first-child){margin-left:8px}.advanced-coordinates__form{display:flex;flex-direction:column}.advanced-coordinates__form mat-slide-toggle{flex:1}.advanced-coordinates__form mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}.advanced-coordinates__form mat-slide-toggle ::ng-deep .mdc-label{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3256
3242
  }
3257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedCoordinatesComponent, decorators: [{
3243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdvancedCoordinatesComponent, decorators: [{
3258
3244
  type: Component,
3259
3245
  args: [{ selector: 'igo-advanced-coordinates', imports: [
3260
3246
  MatFormFieldModule,
@@ -3270,9 +3256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3270
3256
  DecimalPipe,
3271
3257
  IgoLanguageModule
3272
3258
  ], template: "<div class=\"advanced-coordinates__coordinates-container\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n @if (units) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lon'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n } @else {\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.est'\n | translate\n \"\n [value]=\"coordinates[0]\"\n ></textarea>\n </mat-form-field>\n }\n\n @if (units) {\n <mat-form-field subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n }}</mat-label>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.lat'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n } @else {\n <mat-form-field subscriptSizing=\"dynamic\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.nord'\n | translate\n \"\n [value]=\"coordinates[1]\"\n ></textarea>\n </mat-form-field>\n }\n <button\n mat-icon-button\n [attr.aria-label]=\"\n 'igo.integration.advanced-map-tool.advanced-coordinates.copy'\n | translate\n \"\n class=\"igo-form-button-group advanced-coordinates__copy-coordinates\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <form class=\"igo-form advanced-coordinates__form\" [formGroup]=\"form\">\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-form-field class=\"igo-input-container\" subscriptSizing=\"dynamic\">\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordSystem'\n | translate\n }}</mat-label>\n <mat-select [(value)]=\"inputProj\">\n @for (projection of projections$ | async; track projection) {\n <mat-option\n matTooltipShowDelay=\"500\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ projection.translatedValue || projection.alias }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"advanced-coordinates__coordinates-container__inner\">\n <mat-slide-toggle\n class=\"center-toggle\"\n [checked]=\"center\"\n [labelPosition]=\"'before'\"\n (change)=\"displayCenter($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.center'\n | translate\n }}\n </mat-slide-toggle>\n </div>\n </form>\n\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.zoom' | translate\n }}\n {{ map.viewController.getZoom() }}\n </p>\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.scale' | translate\n }}\n {{ formattedScale$ | async }}\n </p>\n <p class=\"igo-zoom\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.resolution'\n | translate\n }}\n {{ map.viewController.getResolution() | number: '1.0-0' }}\n </p>\n</div>\n", styles: [":host{padding:12px 0}textarea{resize:none}.advanced-coordinates__coordinates-container{width:100%;display:flex;flex-direction:column;padding:12px 0}.advanced-coordinates__coordinates-container__inner{display:flex;align-items:center;margin-bottom:16px}.advanced-coordinates__coordinates-container__inner mat-form-field{flex:1}.advanced-coordinates__coordinates-container__inner mat-form-field:not(:first-child),.advanced-coordinates__coordinates-container__inner button:not(:first-child){margin-left:8px}.advanced-coordinates__form{display:flex;flex-direction:column}.advanced-coordinates__form mat-slide-toggle{flex:1}.advanced-coordinates__form mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}.advanced-coordinates__form mat-slide-toggle ::ng-deep .mdc-label{flex:1}\n"] }]
3273
- }], ctorParameters: () => [], propDecorators: { projectionsLimitations: [{
3274
- type: Input
3275
- }] } });
3259
+ }], ctorParameters: () => [], propDecorators: { projectionsLimitations: [{ type: i0.Input, args: [{ isSignal: true, alias: "projectionsLimitations", required: false }] }] } });
3276
3260
 
3277
3261
  class AdvancedSwipeComponent {
3278
3262
  mapState = inject(MapState);
@@ -3338,22 +3322,22 @@ class AdvancedSwipeComponent {
3338
3322
  applyNewLayers(e) {
3339
3323
  this.startSwipe(false); // l'approche KISS
3340
3324
  this.startSwipe(true);
3341
- if (e._selected) {
3342
- e._selected = false;
3325
+ if (e.selected) {
3326
+ e.select(false);
3343
3327
  }
3344
3328
  const allLayers = this.userControlledLayerList?.length;
3345
3329
  const selectedLayers = this.form.controls.layers.value.length;
3346
3330
  if (selectedLayers === allLayers) {
3347
- e._selected = true;
3331
+ e.select(true);
3348
3332
  }
3349
3333
  }
3350
3334
  /**
3351
3335
  * Select all list of layers and restart a tool
3352
3336
  */
3353
3337
  selectAll(e) {
3354
- if (e._selected) {
3338
+ if (e.selected) {
3355
3339
  this.form.controls.layers.setValue(this.userControlledLayerList);
3356
- e._selected = true;
3340
+ e.select(true);
3357
3341
  }
3358
3342
  else {
3359
3343
  this.form.controls.layers.setValue([]);
@@ -3379,10 +3363,10 @@ class AdvancedSwipeComponent {
3379
3363
  contextEmit() {
3380
3364
  this.toolState.toolbox.activateTool('contextManager');
3381
3365
  }
3382
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedSwipeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3383
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AdvancedSwipeComponent, isStandalone: true, selector: "igo-advanced-swipe", ngImport: i0, template: "@if (userControlledLayerList?.length) {\n <div class=\"igo-swipe-select-container\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-select'\n | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.selectAll'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\" (click)=\"applyNewLayers(e)\">{{\n layer.title\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n class=\"swipe-toggle\"\n [checked]=\"swipe\"\n [labelPosition]=\"'before'\"\n (change)=\"startSwipe($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe' | translate\n }}\n </mat-slide-toggle>\n </form>\n </div>\n} @else {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.empty' | translate }}\n </p>\n <p class=\"map-empty\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.customize' | translate\n }}\n </p>\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.search-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.catalog-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.context-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n </mat-list>\n}\n", styles: [":host{padding:12px 0}:host .igo-swipe-select-container{padding:12px 0}:host .igo-swipe-select-container mat-form-field{width:100%}:host .igo-form{display:flex;flex-direction:column;width:100%}:host mat-slide-toggle{flex:1}:host mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}:host mat-slide-toggle ::ng-deep .mdc-label{flex:1}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host .advanced-tool-line{height:2px;background-color:gray}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3366
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdvancedSwipeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3367
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: AdvancedSwipeComponent, isStandalone: true, selector: "igo-advanced-swipe", ngImport: i0, template: "@if (userControlledLayerList.length) {\n <div class=\"igo-swipe-select-container\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-select'\n | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.selectAll'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\" (click)=\"applyNewLayers(e)\">{{\n layer.title\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n class=\"swipe-toggle\"\n [checked]=\"swipe\"\n [labelPosition]=\"'before'\"\n (change)=\"startSwipe($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe' | translate\n }}\n </mat-slide-toggle>\n </form>\n </div>\n} @else {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.empty' | translate }}\n </p>\n <p class=\"map-empty\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.customize' | translate\n }}\n </p>\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.search-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.catalog-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.context-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n </mat-list>\n}\n", styles: [":host{padding:12px 0}:host .igo-swipe-select-container{padding:12px 0}:host .igo-swipe-select-container mat-form-field{width:100%}:host .igo-form{display:flex;flex-direction:column;width:100%}:host mat-slide-toggle{flex:1}:host mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}:host mat-slide-toggle ::ng-deep .mdc-label{flex:1}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host .advanced-tool-line{height:2px;background-color:gray}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3384
3368
  }
3385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedSwipeComponent, decorators: [{
3369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdvancedSwipeComponent, decorators: [{
3386
3370
  type: Component,
3387
3371
  args: [{ selector: 'igo-advanced-swipe', imports: [
3388
3372
  FormsModule,
@@ -3395,7 +3379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3395
3379
  MatListModule,
3396
3380
  MatIconModule,
3397
3381
  IgoLanguageModule
3398
- ], template: "@if (userControlledLayerList?.length) {\n <div class=\"igo-swipe-select-container\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-select'\n | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.selectAll'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\" (click)=\"applyNewLayers(e)\">{{\n layer.title\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n class=\"swipe-toggle\"\n [checked]=\"swipe\"\n [labelPosition]=\"'before'\"\n (change)=\"startSwipe($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe' | translate\n }}\n </mat-slide-toggle>\n </form>\n </div>\n} @else {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.empty' | translate }}\n </p>\n <p class=\"map-empty\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.customize' | translate\n }}\n </p>\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.search-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.catalog-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.context-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n </mat-list>\n}\n", styles: [":host{padding:12px 0}:host .igo-swipe-select-container{padding:12px 0}:host .igo-swipe-select-container mat-form-field{width:100%}:host .igo-form{display:flex;flex-direction:column;width:100%}:host mat-slide-toggle{flex:1}:host mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}:host mat-slide-toggle ::ng-deep .mdc-label{flex:1}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host .advanced-tool-line{height:2px;background-color:gray}\n"] }]
3382
+ ], template: "@if (userControlledLayerList.length) {\n <div class=\"igo-swipe-select-container\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-select'\n | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.selectAll'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\" (click)=\"applyNewLayers(e)\">{{\n layer.title\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n class=\"swipe-toggle\"\n [checked]=\"swipe\"\n [labelPosition]=\"'before'\"\n (change)=\"startSwipe($event.checked)\"\n >\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe' | translate\n }}\n </mat-slide-toggle>\n </form>\n </div>\n} @else {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.advanced-map-tool.advanced-swipe.empty' | translate }}\n </p>\n <p class=\"map-empty\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.customize' | translate\n }}\n </p>\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.search-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.catalog-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.context-tool'\n | translate\n }}\n </span>\n </mat-list-item>\n </mat-list>\n}\n", styles: [":host{padding:12px 0}:host .igo-swipe-select-container{padding:12px 0}:host .igo-swipe-select-container mat-form-field{width:100%}:host .igo-form{display:flex;flex-direction:column;width:100%}:host mat-slide-toggle{flex:1}:host mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}:host mat-slide-toggle ::ng-deep .mdc-label{flex:1}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host .advanced-tool-line{height:2px;background-color:gray}\n"] }]
3399
3383
  }], ctorParameters: () => [] });
3400
3384
 
3401
3385
  let AdvancedMapToolComponent = class AdvancedMapToolComponent {
@@ -3418,8 +3402,8 @@ let AdvancedMapToolComponent = class AdvancedMapToolComponent {
3418
3402
  }
3419
3403
  this.mapState.map.geolocationController.followPosition = value;
3420
3404
  }
3421
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedMapToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3422
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: AdvancedMapToolComponent, isStandalone: true, selector: "igo-advanced-map-tool", ngImport: i0, template: "<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-tool' | translate\n }}\n</h4>\n<igo-advanced-swipe />\n<mat-divider class=\"advanced-tool-line\" />\n<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordinates'\n | translate\n }}\n</h4>\n<igo-advanced-coordinates />\n<mat-divider class=\"advanced-tool-line\" />\n\n<h4 class=\"nameOfTool\">\n {{ 'igo.integration.advanced-map-tool.geolocation.title' | translate }}\n</h4>\n\n<div class=\"igo-input-container\">\n <div class=\"geolocation-slide-toggle-container\">\n <mat-slide-toggle\n class=\"geolocation-option\"\n [checked]=\"tracking$ | async\"\n [labelPosition]=\"'before'\"\n (change)=\"toggleTracking($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.tracking' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"geolocation-option\"\n [disabled]=\"(tracking$ | async) !== true\"\n [labelPosition]=\"'before'\"\n [checked]=\"followPosition$ | async\"\n (change)=\"toggleFollow($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.follow' | translate }}\n </mat-slide-toggle>\n </div>\n</div>\n", styles: [":host{display:block;padding:0 16px 12px}.nameOfTool{text-align:center;margin:12px 0 8px}.advanced-tool-line{height:2px;background-color:gray}.geolocation-slide-toggle-container{display:flex;flex-direction:column;padding:12px 0}.geolocation-slide-toggle-container mat-slide-toggle{flex:1}.geolocation-slide-toggle-container mat-slide-toggle:not(:last-child){margin-bottom:16px}.geolocation-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}.geolocation-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-label{flex:1}mat-divider{margin:0 -16px}\n"], dependencies: [{ kind: "component", type: AdvancedSwipeComponent, selector: "igo-advanced-swipe" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: AdvancedCoordinatesComponent, selector: "igo-advanced-coordinates", inputs: ["projectionsLimitations"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3405
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdvancedMapToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3406
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: AdvancedMapToolComponent, isStandalone: true, selector: "igo-advanced-map-tool", ngImport: i0, template: "<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-swipe.swipe-tool' | translate\n }}\n</h4>\n<igo-advanced-swipe />\n<mat-divider class=\"advanced-tool-line\" />\n<h4 class=\"nameOfTool\">\n {{\n 'igo.integration.advanced-map-tool.advanced-coordinates.coordinates'\n | translate\n }}\n</h4>\n<igo-advanced-coordinates />\n<mat-divider class=\"advanced-tool-line\" />\n\n<h4 class=\"nameOfTool\">\n {{ 'igo.integration.advanced-map-tool.geolocation.title' | translate }}\n</h4>\n\n<div class=\"igo-input-container\">\n <div class=\"geolocation-slide-toggle-container\">\n <mat-slide-toggle\n class=\"geolocation-option\"\n [checked]=\"tracking$ | async\"\n [labelPosition]=\"'before'\"\n (change)=\"toggleTracking($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.tracking' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"geolocation-option\"\n [disabled]=\"(tracking$ | async) !== true\"\n [labelPosition]=\"'before'\"\n [checked]=\"followPosition$ | async\"\n (change)=\"toggleFollow($event.checked)\"\n >\n {{ 'igo.integration.advanced-map-tool.geolocation.follow' | translate }}\n </mat-slide-toggle>\n </div>\n</div>\n", styles: [":host{display:block;padding:0 16px 12px}.nameOfTool{text-align:center;margin:12px 0 8px}.advanced-tool-line{height:2px;background-color:gray}.geolocation-slide-toggle-container{display:flex;flex-direction:column;padding:12px 0}.geolocation-slide-toggle-container mat-slide-toggle{flex:1}.geolocation-slide-toggle-container mat-slide-toggle:not(:last-child){margin-bottom:16px}.geolocation-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-form-field{display:flex;justify-content:space-between}.geolocation-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-label{flex:1}mat-divider{margin:0 -16px}\n"], dependencies: [{ kind: "component", type: AdvancedSwipeComponent, selector: "igo-advanced-swipe" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: AdvancedCoordinatesComponent, selector: "igo-advanced-coordinates", inputs: ["projectionsLimitations"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3423
3407
  };
3424
3408
  AdvancedMapToolComponent = __decorate([
3425
3409
  ToolComponent({
@@ -3431,7 +3415,7 @@ AdvancedMapToolComponent = __decorate([
3431
3415
  * Tool to handle the advanced map tools
3432
3416
  */
3433
3417
  ], AdvancedMapToolComponent);
3434
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedMapToolComponent, decorators: [{
3418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AdvancedMapToolComponent, decorators: [{
3435
3419
  type: Component,
3436
3420
  args: [{ selector: 'igo-advanced-map-tool', imports: [
3437
3421
  AdvancedSwipeComponent,
@@ -3445,54 +3429,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3445
3429
 
3446
3430
  class WorkspaceButtonComponent {
3447
3431
  workspaceState = inject(WorkspaceState);
3448
- hasWorkspace$ = new BehaviorSubject(false);
3449
- hasWorkspace$$;
3450
- layer$ = new BehaviorSubject(undefined);
3451
- set layer(value) {
3452
- this._layer = value;
3453
- this.layer$.next(this._layer);
3454
- }
3455
- get layer() {
3456
- return this._layer;
3457
- }
3458
- _layer;
3432
+ destroyRef = inject(DestroyRef);
3433
+ hasWorkspace = signal(false, ...(ngDevMode ? [{ debugName: "hasWorkspace" }] : /* istanbul ignore next */ []));
3434
+ layer = input(...(ngDevMode ? [undefined, { debugName: "layer" }] : /* istanbul ignore next */ []));
3459
3435
  color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
3460
3436
  ngOnInit() {
3461
- this.hasWorkspace$$ = combineLatest([
3437
+ combineLatest([
3462
3438
  this.workspaceState.workspaceEnabled$,
3463
- this.layer$
3464
- ]).subscribe(([enabled, layer]) => this.hasWorkspace$.next(enabled && isLayerItem(layer) && layer.options.workspace?.enabled));
3465
- }
3466
- ngOnDestroy() {
3467
- this.hasWorkspace$$.unsubscribe();
3439
+ toObservable(this.layer)
3440
+ ])
3441
+ .pipe(takeUntilDestroyed(this.destroyRef))
3442
+ .subscribe(([enabled, layer]) => {
3443
+ const withWorkspace = enabled &&
3444
+ !!layer &&
3445
+ isLayerItem(layer) &&
3446
+ (layer.options.workspace?.enabled ?? false);
3447
+ this.hasWorkspace.set(withWorkspace);
3448
+ });
3468
3449
  }
3469
3450
  activateWorkspace() {
3451
+ const layer = this.layer();
3470
3452
  if (this.workspaceState.workspace$.value &&
3471
- this.workspaceState.workspace$.value.layer.id ===
3472
- this.layer.id &&
3453
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3454
+ this.workspaceState.workspace$.value.layer.id === layer?.id &&
3473
3455
  this.workspaceState.expanded()) {
3474
3456
  this.workspaceState.expanded.set(false);
3475
3457
  }
3476
3458
  else {
3477
3459
  this.workspaceState.expanded.set(true);
3478
- this.workspaceState.setActiveWorkspaceById(this.layer.id);
3460
+ if (layer?.id) {
3461
+ this.workspaceState.setActiveWorkspaceById(layer.id);
3462
+ }
3479
3463
  }
3480
3464
  }
3481
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WorkspaceButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3482
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: WorkspaceButtonComponent, isStandalone: true, selector: "igo-workspace-button", inputs: { layer: { classPropertyName: "layer", publicName: "layer", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasWorkspace$ | async) {\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color()\"\n (click)=\"activateWorkspace()\"\n >\n <mat-icon>table</mat-icon>\n </button>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3465
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WorkspaceButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3466
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: WorkspaceButtonComponent, isStandalone: true, selector: "igo-workspace-button", inputs: { layer: { classPropertyName: "layer", publicName: "layer", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasWorkspace()) {\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color()\"\n (click)=\"activateWorkspace()\"\n >\n <mat-icon>table</mat-icon>\n </button>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3483
3467
  }
3484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WorkspaceButtonComponent, decorators: [{
3468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WorkspaceButtonComponent, decorators: [{
3485
3469
  type: Component,
3486
- args: [{ selector: 'igo-workspace-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
3487
- MatButtonModule,
3488
- MatTooltipModule,
3489
- MatIconModule,
3490
- AsyncPipe,
3491
- IgoLanguageModule
3492
- ], template: "@if (hasWorkspace$ | async) {\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color()\"\n (click)=\"activateWorkspace()\"\n >\n <mat-icon>table</mat-icon>\n </button>\n}\n" }]
3493
- }], propDecorators: { layer: [{
3494
- type: Input
3495
- }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
3470
+ args: [{ selector: 'igo-workspace-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatTooltipModule, MatIconModule, IgoLanguageModule], template: "@if (hasWorkspace()) {\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color()\"\n (click)=\"activateWorkspace()\"\n >\n <mat-icon>table</mat-icon>\n </button>\n}\n" }]
3471
+ }], propDecorators: { layer: [{ type: i0.Input, args: [{ isSignal: true, alias: "layer", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
3496
3472
 
3497
3473
  let MapDetailsToolComponent = class MapDetailsToolComponent {
3498
3474
  mapState = inject(MapState);
@@ -3502,7 +3478,7 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
3502
3478
  configService = inject(ConfigService);
3503
3479
  mediaService = inject(MediaService);
3504
3480
  cdr = inject(ChangeDetectorRef);
3505
- isDesktop;
3481
+ isDesktop = false;
3506
3482
  delayedShowEmptyMapContent = false;
3507
3483
  toggleLegendOnVisibilityChange = input(false, ...(ngDevMode ? [{ debugName: "toggleLegendOnVisibilityChange" }] : /* istanbul ignore next */ []));
3508
3484
  expandLegendOfVisibleLayers = input(false, ...(ngDevMode ? [{ debugName: "expandLegendOfVisibleLayers" }] : /* istanbul ignore next */ []));
@@ -3601,8 +3577,8 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
3601
3577
  this.cdr.detectChanges();
3602
3578
  });
3603
3579
  }
3604
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapDetailsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3605
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: MapDetailsToolComponent, isStandalone: true, selector: "igo-map-details-tool", inputs: { toggleLegendOnVisibilityChange: { classPropertyName: "toggleLegendOnVisibilityChange", publicName: "toggleLegendOnVisibilityChange", isSignal: true, isRequired: false, transformFunction: null }, expandLegendOfVisibleLayers: { classPropertyName: "expandLegendOfVisibleLayers", publicName: "expandLegendOfVisibleLayers", isSignal: true, isRequired: false, transformFunction: null }, updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, ogcButton: { classPropertyName: "ogcButton", publicName: "ogcButton", isSignal: true, isRequired: false, transformFunction: null }, timeButton: { classPropertyName: "timeButton", publicName: "timeButton", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null }, queryBadge: { classPropertyName: "queryBadge", publicName: "queryBadge", isSignal: true, isRequired: false, transformFunction: null }, layerAdditionAllowed: { classPropertyName: "layerAdditionAllowed", publicName: "layerAdditionAllowed", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if ((layers$ | async)?.length) {\n <igo-layer-viewer\n class=\"mapDetailsList\"\n [map]=\"map\"\n [options]=\"layerViewerOptions\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n <igo-workspace-button [layer]=\"layer\" />\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n <igo-ogc-filter-button [header]=\"ogcButton()\" [layer]=\"layer\" />\n <igo-time-filter-button [header]=\"timeButton()\" [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n <igo-metadata-button [layer]=\"layer\" />\n </ng-template>\n </igo-layer-viewer>\n} @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n}\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}:host .mapDetailsList{overflow:hidden}\n"], dependencies: [{ kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"], outputs: ["trackFeatureChange"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3580
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapDetailsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3581
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: MapDetailsToolComponent, isStandalone: true, selector: "igo-map-details-tool", inputs: { toggleLegendOnVisibilityChange: { classPropertyName: "toggleLegendOnVisibilityChange", publicName: "toggleLegendOnVisibilityChange", isSignal: true, isRequired: false, transformFunction: null }, expandLegendOfVisibleLayers: { classPropertyName: "expandLegendOfVisibleLayers", publicName: "expandLegendOfVisibleLayers", isSignal: true, isRequired: false, transformFunction: null }, updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, ogcButton: { classPropertyName: "ogcButton", publicName: "ogcButton", isSignal: true, isRequired: false, transformFunction: null }, timeButton: { classPropertyName: "timeButton", publicName: "timeButton", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null }, queryBadge: { classPropertyName: "queryBadge", publicName: "queryBadge", isSignal: true, isRequired: false, transformFunction: null }, layerAdditionAllowed: { classPropertyName: "layerAdditionAllowed", publicName: "layerAdditionAllowed", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if ((layers$ | async)?.length) {\n <igo-layer-viewer\n class=\"mapDetailsList\"\n [map]=\"map\"\n [options]=\"layerViewerOptions\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n <igo-workspace-button [layer]=\"layer\" />\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n <igo-ogc-filter-button [header]=\"ogcButton()\" [layer]=\"layer\" />\n <igo-time-filter-button [header]=\"timeButton()\" [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n <igo-metadata-button [layer]=\"layer\" />\n </ng-template>\n </igo-layer-viewer>\n} @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n}\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}:host .mapDetailsList{overflow:hidden}\n"], dependencies: [{ kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"], outputs: ["trackFeatureChange"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3606
3582
  };
3607
3583
  MapDetailsToolComponent = __decorate([
3608
3584
  ToolComponent({
@@ -3612,7 +3588,7 @@ MapDetailsToolComponent = __decorate([
3612
3588
  }),
3613
3589
  __metadata("design:paramtypes", [])
3614
3590
  ], MapDetailsToolComponent);
3615
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapDetailsToolComponent, decorators: [{
3591
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapDetailsToolComponent, decorators: [{
3616
3592
  type: Component,
3617
3593
  args: [{ selector: 'igo-map-details-tool', imports: [
3618
3594
  LayerViewerComponent,
@@ -3717,10 +3693,8 @@ let MapLegendToolComponent = class MapLegendToolComponent {
3717
3693
  return true;
3718
3694
  }
3719
3695
  ngOnDestroy() {
3720
- this.resolution$$.unsubscribe();
3721
- if (this.visibleOrInRangeLayers$$) {
3722
- this.visibleOrInRangeLayers$$.unsubscribe();
3723
- }
3696
+ this.resolution$$?.unsubscribe();
3697
+ this.visibleOrInRangeLayers$$?.unsubscribe();
3724
3698
  }
3725
3699
  searchEmit() {
3726
3700
  this.toolState.toolbox.activateTool('searchResults');
@@ -3731,8 +3705,8 @@ let MapLegendToolComponent = class MapLegendToolComponent {
3731
3705
  contextEmit() {
3732
3706
  this.toolState.toolbox.activateTool('contextManager');
3733
3707
  }
3734
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapLegendToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3735
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: MapLegendToolComponent, isStandalone: true, selector: "igo-map-legend-tool", inputs: { updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, layerAdditionAllowed: { classPropertyName: "layerAdditionAllowed", publicName: "layerAdditionAllowed", isSignal: true, isRequired: false, transformFunction: null }, allowShowAllLegends: { classPropertyName: "allowShowAllLegends", publicName: "allowShowAllLegends", isSignal: true, isRequired: false, transformFunction: null }, showAllLegendsValue: { classPropertyName: "showAllLegendsValue", publicName: "showAllLegendsValue", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n />\n}\n@if ((layers$ | async).length !== 0) {\n} @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n}\n\n@if (\n !allowShowAllLegends() &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n}\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["layersChange", "showAllLegendsValueChange", "allLegendsShown"] }, { kind: "directive", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3708
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapLegendToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3709
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: MapLegendToolComponent, isStandalone: true, selector: "igo-map-legend-tool", inputs: { updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, layerAdditionAllowed: { classPropertyName: "layerAdditionAllowed", publicName: "layerAdditionAllowed", isSignal: true, isRequired: false, transformFunction: null }, allowShowAllLegends: { classPropertyName: "allowShowAllLegends", publicName: "allowShowAllLegends", isSignal: true, isRequired: false, transformFunction: null }, showAllLegendsValue: { classPropertyName: "showAllLegendsValue", publicName: "showAllLegendsValue", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n [showAllLegendsValue]=\"(showAllLegendsValue$ | async)!\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n />\n}\n@if ((layers$ | async)?.length !== 0) {\n} @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n}\n\n@if (\n !allowShowAllLegends() &&\n (layers$ | async)?.length !== 0 &&\n (visibleOrInRangeLayers$ | async)?.length === 0\n) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async)?.length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n}\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["layersChange", "showAllLegendsValueChange", "allLegendsShown"] }, { kind: "directive", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3736
3710
  };
3737
3711
  MapLegendToolComponent = __decorate([
3738
3712
  ToolComponent({
@@ -3741,7 +3715,7 @@ MapLegendToolComponent = __decorate([
3741
3715
  icon: 'format_list_bulleted'
3742
3716
  })
3743
3717
  ], MapLegendToolComponent);
3744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapLegendToolComponent, decorators: [{
3718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapLegendToolComponent, decorators: [{
3745
3719
  type: Component,
3746
3720
  args: [{ selector: 'igo-map-legend-tool', imports: [
3747
3721
  LayerLegendListComponent,
@@ -3750,7 +3724,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3750
3724
  MatIconModule,
3751
3725
  AsyncPipe,
3752
3726
  IgoLanguageModule
3753
- ], template: "@if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n />\n}\n@if ((layers$ | async).length !== 0) {\n} @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n}\n\n@if (\n !allowShowAllLegends() &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n}\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
3727
+ ], template: "@if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n [showAllLegendsValue]=\"(showAllLegendsValue$ | async)!\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n />\n}\n@if ((layers$ | async)?.length !== 0) {\n} @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n}\n\n@if (\n !allowShowAllLegends() &&\n (layers$ | async)?.length !== 0 &&\n (visibleOrInRangeLayers$ | async)?.length === 0\n) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async)?.length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n}\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
3754
3728
  }], propDecorators: { updateLegendOnResolutionChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "updateLegendOnResolutionChange", required: false }] }], layerAdditionAllowed: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerAdditionAllowed", required: false }] }], allowShowAllLegends: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowShowAllLegends", required: false }] }], showAllLegendsValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAllLegendsValue", required: false }] }], layerListControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerListControls", required: false }] }] } });
3755
3729
 
3756
3730
  /**
@@ -3836,6 +3810,8 @@ class MapProximityState {
3836
3810
  const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
3837
3811
  if (closestOlFeature) {
3838
3812
  const closestOlGeom = closestOlFeature.getGeometry();
3813
+ if (!closestOlGeom)
3814
+ return;
3839
3815
  const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
3840
3816
  const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
3841
3817
  const linebetween = new olLineString([
@@ -3843,7 +3819,8 @@ class MapProximityState {
3843
3819
  geometryClosestPoint
3844
3820
  ]);
3845
3821
  const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
3846
- if (lineLength <= proximityRadiusValue) {
3822
+ if (lineLength !== undefined &&
3823
+ lineLength <= proximityRadiusValue) {
3847
3824
  const title = this.getQueryTitle(closestFeature, layerToMonitor);
3848
3825
  // todo handle imported layers without querytitle? prompt title or detect first column?
3849
3826
  this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
@@ -3897,8 +3874,8 @@ class MapProximityState {
3897
3874
  getLabelMatch(feature, labelMatch) {
3898
3875
  let label = labelMatch;
3899
3876
  const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
3900
- labelToGet.forEach((v) => {
3901
- label = label.replace(v[0], feature.properties[v[1]]);
3877
+ labelToGet.forEach((entry) => {
3878
+ label = label.replace(entry[0], feature.properties[entry[1]]);
3902
3879
  });
3903
3880
  // Nothing done? check feature's attribute
3904
3881
  if (labelToGet.length === 0 && label === labelMatch) {
@@ -3906,10 +3883,10 @@ class MapProximityState {
3906
3883
  }
3907
3884
  return label;
3908
3885
  }
3909
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3910
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityState, providedIn: 'root' });
3886
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapProximityState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3887
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapProximityState, providedIn: 'root' });
3911
3888
  }
3912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityState, decorators: [{
3889
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapProximityState, decorators: [{
3913
3890
  type: Injectable,
3914
3891
  args: [{
3915
3892
  providedIn: 'root'
@@ -3933,8 +3910,8 @@ let MapProximityToolComponent = class MapProximityToolComponent {
3933
3910
  get map() {
3934
3911
  return this.mapState.map;
3935
3912
  }
3936
- userDefinedMapCenter;
3937
- userDefinedFollowPosition;
3913
+ userDefinedMapCenter = false;
3914
+ userDefinedFollowPosition = false;
3938
3915
  /**
3939
3916
  * Table template
3940
3917
  * @internal
@@ -3951,14 +3928,16 @@ let MapProximityToolComponent = class MapProximityToolComponent {
3951
3928
  name: 'element',
3952
3929
  title: this.languageService.translate.instant('igo.integration.map-proximity-tool.feature'),
3953
3930
  valueAccessor: (localFeature) => {
3954
- return localFeature.properties.element;
3931
+ const feature = localFeature;
3932
+ return feature.properties.element;
3955
3933
  }
3956
3934
  },
3957
3935
  {
3958
3936
  name: 'distance',
3959
3937
  title: this.languageService.translate.instant('igo.integration.map-proximity-tool.distance'),
3960
3938
  valueAccessor: (localFeature) => {
3961
- return `${NumberUtils.roundToNDecimal(localFeature.properties.distance, 1)}m`;
3939
+ const feature = localFeature;
3940
+ return `${NumberUtils.roundToNDecimal(feature.properties.distance, 1)}m`;
3962
3941
  }
3963
3942
  }
3964
3943
  ]
@@ -3993,13 +3972,13 @@ let MapProximityToolComponent = class MapProximityToolComponent {
3993
3972
  * Copy the coordinates to a clipboard
3994
3973
  */
3995
3974
  copyTextToClipboard() {
3996
- const successful = this.clipboard.copy(this.mapProximityState.currentPositionCoordinate$?.value.toString());
3975
+ const successful = this.clipboard.copy(this.mapProximityState.currentPositionCoordinate$?.value?.toString() ?? '');
3997
3976
  if (successful) {
3998
3977
  this.messageService.success('igo.integration.map-proximity-tool.copyMsg', 'igo.integration.map-proximity-tool.copyTitle');
3999
3978
  }
4000
3979
  }
4001
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4002
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: MapProximityToolComponent, isStandalone: true, selector: "igo-map-proximity-tool", viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, isSignal: true }], ngImport: i0, template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n/>\n<br />\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord) {\n <mat-form-field class=\"coordinates\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n </mat-form-field>\n}\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord2) {\n <mat-form-field class=\"coordinates2\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n </mat-form-field>\n}\n\n@if (\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n) {\n <button mat-icon-button (click)=\"copyTextToClipboard()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n}\n<div class=\"title-container\">\n <mat-label class=\"title\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"], dependencies: [{ kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
3980
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapProximityToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3981
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: MapProximityToolComponent, isStandalone: true, selector: "igo-map-proximity-tool", viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, isSignal: true }], ngImport: i0, template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"$any(mapProximityState.proximityFeatureStore)\"\n [template]=\"tableTemplate\"\n/>\n<br />\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord) {\n <mat-form-field class=\"coordinates\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n </mat-form-field>\n}\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord2) {\n <mat-form-field class=\"coordinates2\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n </mat-form-field>\n}\n\n@if ((mapProximityState.currentPositionCoordinate$ | async)?.length) {\n <button mat-icon-button (click)=\"copyTextToClipboard()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n}\n<div class=\"title-container\">\n <mat-label class=\"title\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"], dependencies: [{ kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
4003
3982
  };
4004
3983
  MapProximityToolComponent = __decorate([
4005
3984
  ToolComponent({
@@ -4013,7 +3992,7 @@ MapProximityToolComponent = __decorate([
4013
3992
  ,
4014
3993
  __metadata("design:paramtypes", [])
4015
3994
  ], MapProximityToolComponent);
4016
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityToolComponent, decorators: [{
3995
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapProximityToolComponent, decorators: [{
4017
3996
  type: Component,
4018
3997
  args: [{ selector: 'igo-map-proximity-tool', imports: [
4019
3998
  EntityTableComponent,
@@ -4025,7 +4004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4025
4004
  FormsModule,
4026
4005
  AsyncPipe,
4027
4006
  IgoLanguageModule
4028
- ], template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n/>\n<br />\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord) {\n <mat-form-field class=\"coordinates\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n </mat-form-field>\n}\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord2) {\n <mat-form-field class=\"coordinates2\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n </mat-form-field>\n}\n\n@if (\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n) {\n <button mat-icon-button (click)=\"copyTextToClipboard()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n}\n<div class=\"title-container\">\n <mat-label class=\"title\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"] }]
4007
+ ], template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"$any(mapProximityState.proximityFeatureStore)\"\n [template]=\"tableTemplate\"\n/>\n<br />\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord) {\n <mat-form-field class=\"coordinates\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n </mat-form-field>\n}\n@if (mapProximityState.currentPositionCoordinate$ | async; as coord2) {\n <mat-form-field class=\"coordinates2\">\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n </mat-form-field>\n}\n\n@if ((mapProximityState.currentPositionCoordinate$ | async)?.length) {\n <button mat-icon-button (click)=\"copyTextToClipboard()\">\n <mat-icon>content_copy</mat-icon>\n </button>\n}\n<div class=\"title-container\">\n <mat-label class=\"title\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"] }]
4029
4008
  }], ctorParameters: () => [], propDecorators: { table: [{ type: i0.ViewChild, args: ['table', { isSignal: true }] }] } });
4030
4009
 
4031
4010
  /**
@@ -4105,8 +4084,8 @@ let MapToolComponent = class MapToolComponent {
4105
4084
  this.cdr.detectChanges();
4106
4085
  });
4107
4086
  }
4108
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4109
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.10", type: MapToolComponent, isStandalone: true, selector: "igo-map-tool", inputs: { toggleLegendOnVisibilityChange: { classPropertyName: "toggleLegendOnVisibilityChange", publicName: "toggleLegendOnVisibilityChange", isSignal: true, isRequired: false, transformFunction: null }, expandLegendOfVisibleLayers: { classPropertyName: "expandLegendOfVisibleLayers", publicName: "expandLegendOfVisibleLayers", isSignal: true, isRequired: false, transformFunction: null }, updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, ogcButton: { classPropertyName: "ogcButton", publicName: "ogcButton", isSignal: true, isRequired: false, transformFunction: null }, timeButton: { classPropertyName: "timeButton", publicName: "timeButton", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null }, queryBadge: { classPropertyName: "queryBadge", publicName: "queryBadge", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-tab-group>\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\n <igo-layer-viewer\n [map]=\"map\"\n [options]=\"layerViewerOptions\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n <igo-workspace-button [layer]=\"layer\" />\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n <igo-ogc-filter-button [header]=\"ogcButton()\" [layer]=\"layer\" />\n <igo-time-filter-button [header]=\"timeButton()\" [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n <igo-metadata-button [layer]=\"layer\" />\n </ng-template>\n </igo-layer-viewer>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\n <igo-context-list igoContextListBinding />\n </mat-tab>\n</mat-tab-group>\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"], outputs: ["trackFeatureChange"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: ContextListComponent, selector: "igo-context-list", inputs: ["isDesktop", "contexts", "selectedContext", "map", "defaultContextId", "term"], outputs: ["selectedContextChange", "select", "unselect", "edit", "delete", "save", "clone", "create", "hide", "show", "showHiddenContexts", "favorite", "managePermissions", "manageTools", "filterPermissionsChanged"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4087
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4088
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.14", type: MapToolComponent, isStandalone: true, selector: "igo-map-tool", inputs: { toggleLegendOnVisibilityChange: { classPropertyName: "toggleLegendOnVisibilityChange", publicName: "toggleLegendOnVisibilityChange", isSignal: true, isRequired: false, transformFunction: null }, expandLegendOfVisibleLayers: { classPropertyName: "expandLegendOfVisibleLayers", publicName: "expandLegendOfVisibleLayers", isSignal: true, isRequired: false, transformFunction: null }, updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, ogcButton: { classPropertyName: "ogcButton", publicName: "ogcButton", isSignal: true, isRequired: false, transformFunction: null }, timeButton: { classPropertyName: "timeButton", publicName: "timeButton", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null }, queryBadge: { classPropertyName: "queryBadge", publicName: "queryBadge", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-tab-group>\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\n <igo-layer-viewer\n [map]=\"map\"\n [options]=\"layerViewerOptions\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n <igo-workspace-button [layer]=\"layer\" />\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n <igo-ogc-filter-button [header]=\"ogcButton()\" [layer]=\"layer\" />\n <igo-time-filter-button [header]=\"timeButton()\" [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n <igo-metadata-button [layer]=\"layer\" />\n </ng-template>\n </igo-layer-viewer>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\n <igo-context-list igoContextListBinding />\n </mat-tab>\n</mat-tab-group>\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"], outputs: ["trackFeatureChange"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: ContextListComponent, selector: "igo-context-list", inputs: ["isDesktop", "contexts", "selectedContext", "map", "defaultContextId", "term"], outputs: ["selectedContextChange", "select", "unselect", "edit", "delete", "save", "clone", "create", "hide", "show", "showHiddenContexts", "favorite", "managePermissions", "manageTools", "filterPermissionsChanged"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4110
4089
  };
4111
4090
  MapToolComponent = __decorate([
4112
4091
  ToolComponent({
@@ -4116,7 +4095,7 @@ MapToolComponent = __decorate([
4116
4095
  }),
4117
4096
  __metadata("design:paramtypes", [])
4118
4097
  ], MapToolComponent);
4119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapToolComponent, decorators: [{
4098
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapToolComponent, decorators: [{
4120
4099
  type: Component,
4121
4100
  args: [{ selector: 'igo-map-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4122
4101
  MatTabsModule,
@@ -4144,40 +4123,21 @@ let MapToolsComponent = class MapToolsComponent {
4144
4123
  configService = inject(ConfigService);
4145
4124
  mediaService = inject(MediaService);
4146
4125
  cdr = inject(ChangeDetectorRef);
4147
- isDesktop;
4126
+ isDesktop = false;
4148
4127
  layers$ = new BehaviorSubject([]);
4149
4128
  showAllLegendsValue$ = new BehaviorSubject(false);
4150
4129
  resolution$$;
4151
4130
  visibleOrInRangeLayers$$;
4152
- delayedShowEmptyMapContent = false;
4153
4131
  allowShowAllLegends = input(false, ...(ngDevMode ? [{ debugName: "allowShowAllLegends" }] : /* istanbul ignore next */ []));
4154
4132
  showAllLegendsValue = input(false, ...(ngDevMode ? [{ debugName: "showAllLegendsValue" }] : /* istanbul ignore next */ []));
4155
4133
  toggleLegendOnVisibilityChange = input(false, ...(ngDevMode ? [{ debugName: "toggleLegendOnVisibilityChange" }] : /* istanbul ignore next */ []));
4156
4134
  expandLegendOfVisibleLayers = input(false, ...(ngDevMode ? [{ debugName: "expandLegendOfVisibleLayers" }] : /* istanbul ignore next */ []));
4157
4135
  updateLegendOnResolutionChange = input(false, ...(ngDevMode ? [{ debugName: "updateLegendOnResolutionChange" }] : /* istanbul ignore next */ []));
4158
- selectedTabAtOpening = input(undefined, ...(ngDevMode ? [{ debugName: "selectedTabAtOpening" }] : /* istanbul ignore next */ []));
4136
+ selectedTabAtOpening = input(...(ngDevMode ? [undefined, { debugName: "selectedTabAtOpening" }] : /* istanbul ignore next */ []));
4159
4137
  ogcButton = input(true, ...(ngDevMode ? [{ debugName: "ogcButton" }] : /* istanbul ignore next */ []));
4160
4138
  timeButton = input(true, ...(ngDevMode ? [{ debugName: "timeButton" }] : /* istanbul ignore next */ []));
4161
4139
  layerAdditionAllowed = input(true, ...(ngDevMode ? [{ debugName: "layerAdditionAllowed" }] : /* istanbul ignore next */ []));
4162
- get layerListControls() {
4163
- return this._layerListControls;
4164
- }
4165
- set layerListControls(value) {
4166
- const stateOptions = this.layerListToolState.getLayerListControls();
4167
- const stateKeyword = stateOptions.keyword;
4168
- const stateOnlyVisible = stateOptions.onlyVisible;
4169
- const stateSortAlpha = stateOptions.sortAlpha;
4170
- value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
4171
- value.onlyVisible =
4172
- stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
4173
- value.sortAlpha =
4174
- stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
4175
- value.onlyVisible =
4176
- value.onlyVisible === undefined ? false : value.onlyVisible;
4177
- value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
4178
- this._layerListControls = value;
4179
- }
4180
- _layerListControls = {};
4140
+ layerListControls = input({}, { ...(ngDevMode ? { debugName: "layerListControls" } : /* istanbul ignore next */ {}), transform: this.transformLayerListControls });
4181
4141
  get map() {
4182
4142
  return this.mapState.map;
4183
4143
  }
@@ -4189,13 +4149,13 @@ let MapToolsComponent = class MapToolsComponent {
4189
4149
  return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible)));
4190
4150
  }
4191
4151
  get excludeBaseLayers() {
4192
- return this.layerListControls.excludeBaseLayers || false;
4152
+ return this.layerListControls().excludeBaseLayers || false;
4193
4153
  }
4194
4154
  get layerFilterAndSortOptions() {
4195
4155
  const filterSortOptions = Object.assign({
4196
4156
  showToolbar: LayerListControlsEnum.default
4197
- }, this.layerListControls);
4198
- switch (this.layerListControls.showToolbar) {
4157
+ }, this.layerListControls());
4158
+ switch (this.layerListControls().showToolbar) {
4199
4159
  case LayerListControlsEnum.always:
4200
4160
  filterSortOptions.showToolbar = LayerListControlsEnum.always;
4201
4161
  break;
@@ -4258,14 +4218,10 @@ let MapToolsComponent = class MapToolsComponent {
4258
4218
  else {
4259
4219
  this.showAllLegendsValue$.next(false);
4260
4220
  }
4261
- // prevent message to be shown too quickly. Waiting for layers
4262
- setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
4263
4221
  }
4264
4222
  ngOnDestroy() {
4265
- this.resolution$$.unsubscribe();
4266
- if (this.visibleOrInRangeLayers$$) {
4267
- this.visibleOrInRangeLayers$$.unsubscribe();
4268
- }
4223
+ this.resolution$$?.unsubscribe();
4224
+ this.visibleOrInRangeLayers$$?.unsubscribe();
4269
4225
  }
4270
4226
  onShowAllLegends(event) {
4271
4227
  this.mapState.showAllLegendsValue = event;
@@ -4290,7 +4246,9 @@ let MapToolsComponent = class MapToolsComponent {
4290
4246
  this.layers$.next(this.map.layerController.all);
4291
4247
  }
4292
4248
  onLayerListChange(appliedFilters) {
4293
- this.layerListToolState.setKeyword(appliedFilters.keyword);
4249
+ if (appliedFilters.keyword !== undefined) {
4250
+ this.layerListToolState.setKeyword(appliedFilters.keyword);
4251
+ }
4294
4252
  this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
4295
4253
  this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
4296
4254
  }
@@ -4338,10 +4296,16 @@ let MapToolsComponent = class MapToolsComponent {
4338
4296
  this.toolState.toolbox.activateTool('contextManager');
4339
4297
  }
4340
4298
  isTimeFilterButton(layer) {
4299
+ if (!layer.dataSource)
4300
+ return false;
4301
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4341
4302
  const options = layer.dataSource.options;
4342
4303
  return this.timeButton() && options.timeFilterable && options.timeFilter;
4343
4304
  }
4344
4305
  isOGCFilterButton(layer) {
4306
+ if (!layer.dataSource)
4307
+ return false;
4308
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4345
4309
  const options = layer.dataSource.options;
4346
4310
  return (this.ogcButton() &&
4347
4311
  options.ogcFilters &&
@@ -4364,10 +4328,8 @@ let MapToolsComponent = class MapToolsComponent {
4364
4328
  return false;
4365
4329
  }
4366
4330
  isStyleEditButton(layer) {
4367
- if (layer instanceof VectorLayer) {
4368
- if (layer.options?.igoStyle?.editable) {
4369
- return true;
4370
- }
4331
+ if (layer instanceof VectorLayer || layer instanceof VectorTileLayer) {
4332
+ return layer.visible && isOlFlatStyleLike(layer.style);
4371
4333
  }
4372
4334
  return false;
4373
4335
  }
@@ -4377,8 +4339,26 @@ let MapToolsComponent = class MapToolsComponent {
4377
4339
  this.cdr.detectChanges();
4378
4340
  });
4379
4341
  }
4380
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapToolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4381
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: MapToolsComponent, isStandalone: true, selector: "igo-map-tools", inputs: { allowShowAllLegends: { classPropertyName: "allowShowAllLegends", publicName: "allowShowAllLegends", isSignal: true, isRequired: false, transformFunction: null }, showAllLegendsValue: { classPropertyName: "showAllLegendsValue", publicName: "showAllLegendsValue", isSignal: true, isRequired: false, transformFunction: null }, toggleLegendOnVisibilityChange: { classPropertyName: "toggleLegendOnVisibilityChange", publicName: "toggleLegendOnVisibilityChange", isSignal: true, isRequired: false, transformFunction: null }, expandLegendOfVisibleLayers: { classPropertyName: "expandLegendOfVisibleLayers", publicName: "expandLegendOfVisibleLayers", isSignal: true, isRequired: false, transformFunction: null }, updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, selectedTabAtOpening: { classPropertyName: "selectedTabAtOpening", publicName: "selectedTabAtOpening", isSignal: true, isRequired: false, transformFunction: null }, ogcButton: { classPropertyName: "ogcButton", publicName: "ogcButton", isSignal: true, isRequired: false, transformFunction: null }, timeButton: { classPropertyName: "timeButton", publicName: "timeButton", isSignal: true, isRequired: false, transformFunction: null }, layerAdditionAllowed: { classPropertyName: "layerAdditionAllowed", publicName: "layerAdditionAllowed", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: false, isRequired: false, transformFunction: null }, queryBadge: { classPropertyName: "queryBadge", publicName: "queryBadge", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\"\n>\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\n <igo-layer-viewer\n [options]=\"layerViewerOptions\"\n [map]=\"map\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n @if (isStyleEditButton(layer)) {\n <igo-style-modal-layer-button [layer]=\"layer\" />\n }\n <igo-metadata-button [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n @if (isTimeFilterButton(layer)) {\n <igo-time-filter-button\n [header]=\"timeButton()\"\n [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"\n />\n }\n @if (isOGCFilterButton(layer)) {\n <igo-ogc-filter-button\n [header]=\"ogcButton()\"\n [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"\n />\n }\n @if (isExportButton(layer)) {\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n }\n <igo-workspace-button [layer]=\"layer\" />\n </ng-template>\n\n <ng-container ngProjectAs=\"[emptyList]\">\n <ng-template [ngTemplateOutlet]=\"emptyLayers\" />\n </ng-container>\n </igo-layer-viewer>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.legend' | translate\">\n @if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n />\n }\n @if ((layers$ | async).length !== 0) {\n } @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar ||\n catalogToolInToolbar ||\n contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n }\n\n @if (\n !allowShowAllLegends() &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n ) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n }\n </mat-tab>\n\n <ng-template #emptyLayers>\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n </ng-template>\n</mat-tab-group>\n", styles: [":host mat-tab-group{height:100%}:host ::ng-deep .mat-mdc-tab-body-wrapper{flex:1}:host ::ng-deep .mat-tab-body{margin-top:8px}:host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}:host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: StyleModalLayerButtonComponent, selector: "igo-style-modal-layer-button", inputs: ["layer"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"], outputs: ["trackFeatureChange"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "color", "header"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["layersChange", "showAllLegendsValueChange", "allLegendsShown"] }, { kind: "directive", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4342
+ transformLayerListControls(value) {
4343
+ if (!value) {
4344
+ return {};
4345
+ }
4346
+ const stateOptions = this.layerListToolState.getLayerListControls();
4347
+ const stateKeyword = stateOptions.keyword;
4348
+ const stateOnlyVisible = stateOptions.onlyVisible;
4349
+ const stateSortAlpha = stateOptions.sortAlpha;
4350
+ value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
4351
+ value.onlyVisible =
4352
+ stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
4353
+ value.sortAlpha =
4354
+ stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
4355
+ value.onlyVisible =
4356
+ value.onlyVisible === undefined ? false : value.onlyVisible;
4357
+ value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
4358
+ return value;
4359
+ }
4360
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapToolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4361
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: MapToolsComponent, isStandalone: true, selector: "igo-map-tools", inputs: { allowShowAllLegends: { classPropertyName: "allowShowAllLegends", publicName: "allowShowAllLegends", isSignal: true, isRequired: false, transformFunction: null }, showAllLegendsValue: { classPropertyName: "showAllLegendsValue", publicName: "showAllLegendsValue", isSignal: true, isRequired: false, transformFunction: null }, toggleLegendOnVisibilityChange: { classPropertyName: "toggleLegendOnVisibilityChange", publicName: "toggleLegendOnVisibilityChange", isSignal: true, isRequired: false, transformFunction: null }, expandLegendOfVisibleLayers: { classPropertyName: "expandLegendOfVisibleLayers", publicName: "expandLegendOfVisibleLayers", isSignal: true, isRequired: false, transformFunction: null }, updateLegendOnResolutionChange: { classPropertyName: "updateLegendOnResolutionChange", publicName: "updateLegendOnResolutionChange", isSignal: true, isRequired: false, transformFunction: null }, selectedTabAtOpening: { classPropertyName: "selectedTabAtOpening", publicName: "selectedTabAtOpening", isSignal: true, isRequired: false, transformFunction: null }, ogcButton: { classPropertyName: "ogcButton", publicName: "ogcButton", isSignal: true, isRequired: false, transformFunction: null }, timeButton: { classPropertyName: "timeButton", publicName: "timeButton", isSignal: true, isRequired: false, transformFunction: null }, layerAdditionAllowed: { classPropertyName: "layerAdditionAllowed", publicName: "layerAdditionAllowed", isSignal: true, isRequired: false, transformFunction: null }, layerListControls: { classPropertyName: "layerListControls", publicName: "layerListControls", isSignal: true, isRequired: false, transformFunction: null }, queryBadge: { classPropertyName: "queryBadge", publicName: "queryBadge", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\"\n>\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\n <igo-layer-viewer\n [options]=\"layerViewerOptions\"\n [map]=\"map\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n @if (isStyleEditButton(layer)) {\n <igo-style-modal-layer-button [layer]=\"layer\" />\n }\n <igo-metadata-button [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n @if (isTimeFilterButton(layer)) {\n <igo-time-filter-button\n [header]=\"timeButton()\"\n [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"\n />\n }\n @if (isOGCFilterButton(layer)) {\n <igo-ogc-filter-button\n [header]=\"ogcButton()\"\n [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"\n />\n }\n @if (isExportButton(layer)) {\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n }\n <igo-workspace-button [layer]=\"layer\" />\n </ng-template>\n\n <ng-container ngProjectAs=\"[emptyList]\">\n <ng-template [ngTemplateOutlet]=\"emptyLayers\" />\n </ng-container>\n </igo-layer-viewer>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.legend' | translate\">\n @if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [showAllLegendsValue]=\"!!(showAllLegendsValue$ | async)\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n />\n }\n @if ((layers$ | async)?.length !== 0) {\n } @else {\n <mat-list>\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n\n @if (\n !allowShowAllLegends() &&\n (layers$ | async)?.length !== 0 &&\n (visibleOrInRangeLayers$ | async)?.length === 0\n ) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async)?.length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n }\n </mat-tab>\n\n <ng-template #emptyLayers>\n <mat-list>\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n </ng-template>\n</mat-tab-group>\n", styles: [":host mat-tab-group{height:100%}:host ::ng-deep .mat-mdc-tab-body-wrapper{flex:1}:host ::ng-deep .mat-tab-body{margin-top:8px}:host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}:host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: StyleModalLayerButtonComponent, selector: "igo-style-modal-layer-button", inputs: ["layer"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"], outputs: ["trackFeatureChange"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "color", "header"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["layersChange", "showAllLegendsValueChange", "allLegendsShown"] }, { kind: "directive", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1$5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i1$5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1$5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1$5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4382
4362
  };
4383
4363
  MapToolsComponent = __decorate([
4384
4364
  ToolComponent({
@@ -4388,7 +4368,7 @@ MapToolsComponent = __decorate([
4388
4368
  }),
4389
4369
  __metadata("design:paramtypes", [])
4390
4370
  ], MapToolsComponent);
4391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapToolsComponent, decorators: [{
4371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MapToolsComponent, decorators: [{
4392
4372
  type: Component,
4393
4373
  args: [{ selector: 'igo-map-tools', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4394
4374
  MatTabsModule,
@@ -4407,10 +4387,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4407
4387
  MatIconModule,
4408
4388
  AsyncPipe,
4409
4389
  IgoLanguageModule
4410
- ], template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\"\n>\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\n <igo-layer-viewer\n [options]=\"layerViewerOptions\"\n [map]=\"map\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n @if (isStyleEditButton(layer)) {\n <igo-style-modal-layer-button [layer]=\"layer\" />\n }\n <igo-metadata-button [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n @if (isTimeFilterButton(layer)) {\n <igo-time-filter-button\n [header]=\"timeButton()\"\n [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"\n />\n }\n @if (isOGCFilterButton(layer)) {\n <igo-ogc-filter-button\n [header]=\"ogcButton()\"\n [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"\n />\n }\n @if (isExportButton(layer)) {\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n }\n <igo-workspace-button [layer]=\"layer\" />\n </ng-template>\n\n <ng-container ngProjectAs=\"[emptyList]\">\n <ng-template [ngTemplateOutlet]=\"emptyLayers\" />\n </ng-container>\n </igo-layer-viewer>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.legend' | translate\">\n @if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n />\n }\n @if ((layers$ | async).length !== 0) {\n } @else {\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar ||\n catalogToolInToolbar ||\n contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n }\n\n @if (\n !allowShowAllLegends() &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n ) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n }\n </mat-tab>\n\n <ng-template #emptyLayers>\n @if (delayedShowEmptyMapContent) {\n <mat-list>\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n </ng-template>\n</mat-tab-group>\n", styles: [":host mat-tab-group{height:100%}:host ::ng-deep .mat-mdc-tab-body-wrapper{flex:1}:host ::ng-deep .mat-tab-body{margin-top:8px}:host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}:host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
4411
- }], ctorParameters: () => [], propDecorators: { allowShowAllLegends: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowShowAllLegends", required: false }] }], showAllLegendsValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAllLegendsValue", required: false }] }], toggleLegendOnVisibilityChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleLegendOnVisibilityChange", required: false }] }], expandLegendOfVisibleLayers: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandLegendOfVisibleLayers", required: false }] }], updateLegendOnResolutionChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "updateLegendOnResolutionChange", required: false }] }], selectedTabAtOpening: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTabAtOpening", required: false }] }], ogcButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "ogcButton", required: false }] }], timeButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeButton", required: false }] }], layerAdditionAllowed: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerAdditionAllowed", required: false }] }], layerListControls: [{
4412
- type: Input
4413
- }], queryBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryBadge", required: false }] }], tabGroup: [{ type: i0.ViewChild, args: ['tabGroup', { isSignal: true }] }] } });
4390
+ ], template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\"\n>\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\n <igo-layer-viewer\n [options]=\"layerViewerOptions\"\n [map]=\"map\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\n >\n <ng-template #customBottomActions let-layer=\"layer\">\n @if (isStyleEditButton(layer)) {\n <igo-style-modal-layer-button [layer]=\"layer\" />\n }\n <igo-metadata-button [layer]=\"layer\" />\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\" />\n @if (isTimeFilterButton(layer)) {\n <igo-time-filter-button\n [header]=\"timeButton()\"\n [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"\n />\n }\n @if (isOGCFilterButton(layer)) {\n <igo-ogc-filter-button\n [header]=\"ogcButton()\"\n [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"\n />\n }\n @if (isExportButton(layer)) {\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\" />\n }\n <igo-workspace-button [layer]=\"layer\" />\n </ng-template>\n\n <ng-container ngProjectAs=\"[emptyList]\">\n <ng-template [ngTemplateOutlet]=\"emptyLayers\" />\n </ng-container>\n </igo-layer-viewer>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.legend' | translate\">\n @if (showAllLegend()) {\n <igo-layer-legend-list\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends()\"\n [showAllLegendsValue]=\"!!(showAllLegendsValue$ | async)\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange()\"\n />\n }\n @if ((layers$ | async)?.length !== 0) {\n } @else {\n <mat-list>\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n }\n\n @if (\n !allowShowAllLegends() &&\n (layers$ | async)?.length !== 0 &&\n (visibleOrInRangeLayers$ | async)?.length === 0\n ) {\n <p class=\"map-empty\">\n {{\n (visibleLayers$ | async)?.length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n </p>\n }\n </mat-tab>\n\n <ng-template #emptyLayers>\n <mat-list>\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n @if (\n layerAdditionAllowed() &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n ) {\n <p class=\"map-empty\">\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n }\n\n @if (layerAdditionAllowed() && searchToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>search</mat-icon>\n <span matListItemTitle class=\"search-tool\" (click)=\"searchEmit()\">\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && catalogToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span matListItemTitle class=\"catalog-tool\" (click)=\"catalogEmit()\">\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n }\n @if (layerAdditionAllowed() && contextToolInToolbar) {\n <mat-list-item>\n <mat-icon matListItemIcon>star</mat-icon>\n <span matListItemTitle class=\"context-tool\" (click)=\"contextEmit()\">\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n }\n </mat-list>\n </ng-template>\n</mat-tab-group>\n", styles: [":host mat-tab-group{height:100%}:host ::ng-deep .mat-mdc-tab-body-wrapper{flex:1}:host ::ng-deep .mat-tab-body{margin-top:8px}:host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}:host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
4391
+ }], ctorParameters: () => [], propDecorators: { allowShowAllLegends: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowShowAllLegends", required: false }] }], showAllLegendsValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAllLegendsValue", required: false }] }], toggleLegendOnVisibilityChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleLegendOnVisibilityChange", required: false }] }], expandLegendOfVisibleLayers: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandLegendOfVisibleLayers", required: false }] }], updateLegendOnResolutionChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "updateLegendOnResolutionChange", required: false }] }], selectedTabAtOpening: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTabAtOpening", required: false }] }], ogcButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "ogcButton", required: false }] }], timeButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeButton", required: false }] }], layerAdditionAllowed: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerAdditionAllowed", required: false }] }], layerListControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerListControls", required: false }] }], queryBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryBadge", required: false }] }], tabGroup: [{ type: i0.ViewChild, args: ['tabGroup', { isSignal: true }] }] } });
4414
4392
 
4415
4393
  /**
4416
4394
  * @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set
@@ -4422,8 +4400,8 @@ class IgoAppMapModule {
4422
4400
  providers: []
4423
4401
  };
4424
4402
  }
4425
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4426
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4403
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4404
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4427
4405
  MapProximityToolComponent,
4428
4406
  MapToolComponent,
4429
4407
  MapToolsComponent,
@@ -4434,14 +4412,14 @@ class IgoAppMapModule {
4434
4412
  MapToolsComponent,
4435
4413
  MapDetailsToolComponent,
4436
4414
  MapLegendToolComponent] });
4437
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4415
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4438
4416
  MapProximityToolComponent,
4439
4417
  MapToolComponent,
4440
4418
  MapToolsComponent,
4441
4419
  MapDetailsToolComponent,
4442
4420
  MapLegendToolComponent] });
4443
4421
  }
4444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMapModule, decorators: [{
4422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMapModule, decorators: [{
4445
4423
  type: NgModule,
4446
4424
  args: [{
4447
4425
  imports: [
@@ -4488,10 +4466,10 @@ class MeasureState {
4488
4466
  }
4489
4467
  });
4490
4468
  }
4491
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasureState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4492
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasureState, providedIn: 'root' });
4469
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MeasureState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4470
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MeasureState, providedIn: 'root' });
4493
4471
  }
4494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasureState, decorators: [{
4472
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MeasureState, decorators: [{
4495
4473
  type: Injectable,
4496
4474
  args: [{
4497
4475
  providedIn: 'root'
@@ -4518,8 +4496,8 @@ let MeasurerToolComponent = class MeasurerToolComponent {
4518
4496
  get map() {
4519
4497
  return this.mapState.map;
4520
4498
  }
4521
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasurerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4522
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: MeasurerToolComponent, isStandalone: true, selector: "igo-measurer-tool", ngImport: i0, template: "<igo-measurer [store]=\"store\" [map]=\"map\" />\n", dependencies: [{ kind: "component", type: MeasurerComponent, selector: "igo-measurer", inputs: ["map", "store", "activeMeasureType", "minSegmentLength"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4499
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MeasurerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4500
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: MeasurerToolComponent, isStandalone: true, selector: "igo-measurer-tool", ngImport: i0, template: "<igo-measurer [store]=\"store\" [map]=\"map\" />\n", dependencies: [{ kind: "component", type: MeasurerComponent, selector: "igo-measurer", inputs: ["map", "store", "activeMeasureType", "minSegmentLength"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4523
4501
  };
4524
4502
  MeasurerToolComponent = __decorate([
4525
4503
  ToolComponent({
@@ -4528,7 +4506,7 @@ MeasurerToolComponent = __decorate([
4528
4506
  icon: 'square_foot'
4529
4507
  })
4530
4508
  ], MeasurerToolComponent);
4531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasurerToolComponent, decorators: [{
4509
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MeasurerToolComponent, decorators: [{
4532
4510
  type: Component,
4533
4511
  args: [{ selector: 'igo-measurer-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MeasurerComponent], template: "<igo-measurer [store]=\"store\" [map]=\"map\" />\n" }]
4534
4512
  }] });
@@ -4537,11 +4515,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4537
4515
  * @deprecated import the MeasurerToolComponent directly
4538
4516
  */
4539
4517
  class IgoAppMeasurerToolModule {
4540
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasurerToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4541
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasurerToolModule, imports: [MeasurerToolComponent], exports: [MeasurerToolComponent] });
4542
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasurerToolModule, imports: [MeasurerToolComponent] });
4518
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasurerToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4519
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasurerToolModule, imports: [MeasurerToolComponent], exports: [MeasurerToolComponent] });
4520
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasurerToolModule, imports: [MeasurerToolComponent] });
4543
4521
  }
4544
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasurerToolModule, decorators: [{
4522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasurerToolModule, decorators: [{
4545
4523
  type: NgModule,
4546
4524
  args: [{
4547
4525
  imports: [MeasurerToolComponent],
@@ -4553,11 +4531,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4553
4531
  * @deprecated import the MeasurerToolComponent directly
4554
4532
  */
4555
4533
  class IgoAppMeasureModule {
4556
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4557
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasureModule, exports: [IgoAppMeasurerToolModule] });
4558
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasureModule, imports: [IgoAppMeasurerToolModule] });
4534
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4535
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasureModule, exports: [IgoAppMeasurerToolModule] });
4536
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasureModule, imports: [IgoAppMeasurerToolModule] });
4559
4537
  }
4560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasureModule, decorators: [{
4538
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppMeasureModule, decorators: [{
4561
4539
  type: NgModule,
4562
4540
  args: [{
4563
4541
  exports: [IgoAppMeasurerToolModule]
@@ -4569,8 +4547,8 @@ let PrintToolComponent = class PrintToolComponent {
4569
4547
  get map() {
4570
4548
  return this.mapState.map;
4571
4549
  }
4572
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PrintToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4573
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.10", type: PrintToolComponent, isStandalone: true, selector: "igo-print-tool", ngImport: i0, template: "<igo-print [map]=\"map\" />\n", dependencies: [{ kind: "component", type: PrintComponent, selector: "igo-print", inputs: ["map", "outputFormat", "paperFormat", "orientation", "imageFormat", "legendPosition", "resolution"] }] });
4550
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PrintToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4551
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: PrintToolComponent, isStandalone: true, selector: "igo-print-tool", ngImport: i0, template: "<igo-print [map]=\"map\" />\n", dependencies: [{ kind: "component", type: PrintComponent, selector: "igo-print", inputs: ["map", "outputFormat", "paperFormat", "orientation", "imageFormat", "legendPosition", "resolution"] }] });
4574
4552
  };
4575
4553
  PrintToolComponent = __decorate([
4576
4554
  ToolComponent({
@@ -4579,7 +4557,7 @@ PrintToolComponent = __decorate([
4579
4557
  icon: 'print'
4580
4558
  })
4581
4559
  ], PrintToolComponent);
4582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PrintToolComponent, decorators: [{
4560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PrintToolComponent, decorators: [{
4583
4561
  type: Component,
4584
4562
  args: [{ selector: 'igo-print-tool', imports: [PrintComponent], template: "<igo-print [map]=\"map\" />\n" }]
4585
4563
  }] });
@@ -4594,11 +4572,11 @@ class IgoAppPrintModule {
4594
4572
  providers: []
4595
4573
  };
4596
4574
  }
4597
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppPrintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4598
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppPrintModule, imports: [PrintToolComponent], exports: [PrintToolComponent] });
4599
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppPrintModule, imports: [PrintToolComponent] });
4575
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppPrintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4576
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppPrintModule, imports: [PrintToolComponent], exports: [PrintToolComponent] });
4577
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppPrintModule, imports: [PrintToolComponent] });
4600
4578
  }
4601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppPrintModule, decorators: [{
4579
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppPrintModule, decorators: [{
4602
4580
  type: NgModule,
4603
4581
  args: [{
4604
4582
  imports: [PrintToolComponent],
@@ -4625,9 +4603,6 @@ class SearchState {
4625
4603
  configService = inject(ConfigService);
4626
4604
  mapState = inject(MapState);
4627
4605
  searchLayerStores = [];
4628
- searchOverlayStyle = {};
4629
- searchOverlayStyleSelection = {};
4630
- searchOverlayStyleFocus = {};
4631
4606
  focusedOrResolution$$;
4632
4607
  selectedOrResolution$$;
4633
4608
  /**
@@ -4650,6 +4625,7 @@ class SearchState {
4650
4625
  * Store that holds the search results
4651
4626
  */
4652
4627
  store = new EntityStore([]);
4628
+ searchOverlayStyle = {};
4653
4629
  /**
4654
4630
  * Search types currently enabled in the search source service
4655
4631
  */
@@ -4659,12 +4635,7 @@ class SearchState {
4659
4635
  .map((source) => source.constructor.type);
4660
4636
  }
4661
4637
  constructor() {
4662
- const searchOverlayStyle = this.configService.getConfig('searchOverlayStyle');
4663
- if (searchOverlayStyle) {
4664
- this.searchOverlayStyle = searchOverlayStyle.base;
4665
- this.searchOverlayStyleSelection = searchOverlayStyle.selection;
4666
- this.searchOverlayStyleFocus = searchOverlayStyle.focus;
4667
- }
4638
+ this.searchOverlayStyle = this.configService.getConfig('searchOverlayStyle', {});
4668
4639
  const searchResultsGeometryEnabled = this.storageService.get('searchResultsGeometryEnabled');
4669
4640
  if (searchResultsGeometryEnabled) {
4670
4641
  this.searchResultsGeometryEnabled$.next(searchResultsGeometryEnabled);
@@ -4676,7 +4647,7 @@ class SearchState {
4676
4647
  if (wksSource) {
4677
4648
  this.workspaceState.store.entities$.subscribe((e) => {
4678
4649
  const searchableWks = e.filter((fw) => fw instanceof FeatureWorkspace &&
4679
- fw.layer.options.workspace.searchIndexEnabled);
4650
+ fw.layer.options.workspace?.searchIndexEnabled);
4680
4651
  this.searchSourceService.setWorkspaces(wksSource, searchableWks);
4681
4652
  });
4682
4653
  }
@@ -4731,7 +4702,9 @@ class SearchState {
4731
4702
  this.searchTerm$.next(searchTerm);
4732
4703
  }
4733
4704
  setSearchType(searchType) {
4734
- this.searchSourceService.enableSourcesByType(searchType);
4705
+ if (searchType) {
4706
+ this.searchSourceService.enableSourcesByType(searchType);
4707
+ }
4735
4708
  this.searchType$.next(searchType);
4736
4709
  }
4737
4710
  setSearchSettingsChange() {
@@ -4744,10 +4717,10 @@ class SearchState {
4744
4717
  this.storageService.set('searchResultsGeometryEnabled', value);
4745
4718
  this.searchResultsGeometryEnabled$.next(value);
4746
4719
  }
4747
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4748
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchState });
4720
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4721
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchState });
4749
4722
  }
4750
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchState, decorators: [{
4723
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchState, decorators: [{
4751
4724
  type: Injectable
4752
4725
  }], ctorParameters: () => [] });
4753
4726
 
@@ -4793,10 +4766,10 @@ class SearchBarBindingDirective {
4793
4766
  this.searchState.setSearchType(searchType);
4794
4767
  }
4795
4768
  }
4796
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchBarBindingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4797
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: SearchBarBindingDirective, isStandalone: true, selector: "[igoSearchBarBinding]", host: { listeners: { "searchTermChange": "onSearchTermChange($any($event))", "searchTypeChange": "onSearchTypeChange($any($event))" } }, ngImport: i0 });
4769
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchBarBindingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4770
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: SearchBarBindingDirective, isStandalone: true, selector: "[igoSearchBarBinding]", host: { listeners: { "searchTermChange": "onSearchTermChange($any($event))", "searchTypeChange": "onSearchTypeChange($any($event))" } }, ngImport: i0 });
4798
4771
  }
4799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchBarBindingDirective, decorators: [{
4772
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchBarBindingDirective, decorators: [{
4800
4773
  type: Directive,
4801
4774
  args: [{
4802
4775
  selector: '[igoSearchBarBinding]',
@@ -4824,17 +4797,14 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4824
4797
  * Determine the top panel default state
4825
4798
  */
4826
4799
  topPanelStateDefault = input('expanded', ...(ngDevMode ? [{ debugName: "topPanelStateDefault" }] : /* istanbul ignore next */ []));
4827
- hasFeatureEmphasisOnSelection = false;
4800
+ searchResultsOverlayAll$$;
4828
4801
  saveSearchResultInLayer = false;
4829
- showResultsGeometries$$;
4802
+ searchResultsOverlayFocused;
4803
+ searchResultsOverlaySelected;
4804
+ searchResultsOverlayAll;
4830
4805
  getRoute$$;
4831
- shownResultsGeometries = [];
4832
- shownResultsEmphasisGeometries = [];
4833
- focusedResult$ = new BehaviorSubject(undefined);
4834
4806
  isSelectedResultOutOfView$ = new BehaviorSubject(false);
4835
4807
  isSelectedResultOutOfView$$;
4836
- abstractFocusedResult;
4837
- abstractSelectedResult;
4838
4808
  destroyRef = inject(DestroyRef);
4839
4809
  debouncedEmpty = signal(true, ...(ngDevMode ? [{ debugName: "debouncedEmpty" }] : /* istanbul ignore next */ []));
4840
4810
  searchResult = viewChild(SearchResultsComponent, ...(ngDevMode ? [{ debugName: "searchResult" }] : /* istanbul ignore next */ []));
@@ -4858,14 +4828,9 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4858
4828
  feature = signal(undefined, ...(ngDevMode ? [{ debugName: "feature" }] : /* istanbul ignore next */ []));
4859
4829
  term = '';
4860
4830
  searchTerm$$;
4861
- topPanelState$ = new BehaviorSubject('initial');
4862
- topPanelState$$;
4863
- set topPanelState(value) {
4864
- this.topPanelState$.next(value);
4865
- }
4866
- get topPanelState() {
4867
- return this.topPanelState$.value;
4868
- }
4831
+ topPanelState = input(...(ngDevMode ? [undefined, { debugName: "topPanelState" }] : /* istanbul ignore next */ []));
4832
+ topPanelStateValue = linkedSignal({ ...(ngDevMode ? { debugName: "topPanelStateValue" } : /* istanbul ignore next */ {}), source: this.topPanelState,
4833
+ computation: (v, previous) => v ?? previous?.value ?? 'initial' });
4869
4834
  get termSplitter() {
4870
4835
  return this.searchState.searchTermSplitter$.value;
4871
4836
  }
@@ -4875,10 +4840,29 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4875
4840
  }
4876
4841
  constructor() {
4877
4842
  const configService = inject(ConfigService);
4878
- this.hasFeatureEmphasisOnSelection = configService.getConfig('hasFeatureEmphasisOnSelection');
4879
4843
  this.saveSearchResultInLayer = configService.getConfig('saveSearchResultInLayer');
4844
+ this.handleShowAllResults();
4845
+ effect(() => {
4846
+ this.topPanelStateValue(); // re-run on state change
4847
+ const igoList = this.computeElementRef()[0];
4848
+ const selected = this.computeElementRef()[1];
4849
+ if (selected) {
4850
+ setTimeout(() => {
4851
+ // To be sure the flexible component has been displayed yet
4852
+ if (!this.isScrolledIntoView(igoList, selected)) {
4853
+ this.adjustTopPanel(igoList, selected);
4854
+ }
4855
+ }, FlexibleComponent.transitionTime + 50);
4856
+ }
4857
+ });
4880
4858
  }
4881
4859
  ngOnInit() {
4860
+ this.searchResultsOverlayFocused = new Overlay(this.mapState.map, this.searchState.searchOverlayStyle?.focus ??
4861
+ styleVariant(this.mapState.map.viewController, 'focus'));
4862
+ this.searchResultsOverlaySelected = new Overlay(this.mapState.map, this.searchState.searchOverlayStyle?.selection ??
4863
+ styleVariant(this.mapState.map.viewController, 'selection'));
4864
+ this.searchResultsOverlayAll = new Overlay(this.mapState.map, this.searchState.searchOverlayStyle?.base ??
4865
+ styleVariant(this.mapState.map.viewController));
4882
4866
  this.searchTerm$$ = this.searchState.searchTerm$.subscribe((searchTerm) => {
4883
4867
  if (searchTerm !== undefined &&
4884
4868
  searchTerm !== null &&
@@ -4892,70 +4876,13 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4892
4876
  });
4893
4877
  for (const res of this.store.stateView.all$().value) {
4894
4878
  if (this.store.state.get(res.entity).selected === true) {
4895
- this.topPanelState = 'expanded';
4879
+ this.topPanelStateValue.set('expanded');
4896
4880
  }
4897
4881
  }
4898
4882
  this.searchState.searchSettingsChange$.subscribe(() => {
4899
4883
  this.searchResult()?.resetPage();
4900
4884
  });
4901
- this.topPanelState$$ = this.topPanelState$.subscribe(() => {
4902
- const igoList = this.computeElementRef()[0];
4903
- const selected = this.computeElementRef()[1];
4904
- if (selected) {
4905
- setTimeout(() => {
4906
- // To be sure the flexible component has been displayed yet
4907
- if (!this.isScrolledIntoView(igoList, selected)) {
4908
- this.adjustTopPanel(igoList, selected);
4909
- }
4910
- }, FlexibleComponent.transitionTime + 50);
4911
- }
4912
- });
4913
- if (this.hasFeatureEmphasisOnSelection) {
4914
- if (!this.searchState.focusedOrResolution$$) {
4915
- this.searchState.focusedOrResolution$$ = combineLatest([
4916
- this.focusedResult$,
4917
- this.map.viewController.resolution$
4918
- ]).subscribe((bunch) => this.buildResultEmphasis(bunch[0], 'focused'));
4919
- }
4920
- if (!this.searchState.selectedOrResolution$$) {
4921
- this.searchState.selectedOrResolution$$ = combineLatest([
4922
- this.searchState.selectedResult$,
4923
- this.map.viewController.resolution$
4924
- ]).subscribe((bunch) => this.buildResultEmphasis(bunch[0], 'selected'));
4925
- }
4926
- }
4927
4885
  this.monitorResultOutOfView();
4928
- this.showResultsGeometries$$ = combineLatest([
4929
- this.searchState.searchResultsGeometryEnabled$,
4930
- this.store.stateView.all$(),
4931
- this.focusedResult$,
4932
- this.searchState.selectedResult$,
4933
- this.searchState.searchTerm$,
4934
- this.map.viewController.resolution$
4935
- ]).subscribe((bunch) => {
4936
- const searchResultsGeometryEnabled = bunch[0];
4937
- const searchResults = bunch[1];
4938
- if (this.hasFeatureEmphasisOnSelection) {
4939
- this.clearFeatureEmphasis('shown');
4940
- }
4941
- this.shownResultsGeometries.map((result) => this.map.queryResultsOverlay.removeFeature(result));
4942
- const featureToHandleGeom = searchResults.filter((result) => result.entity.meta.dataType === FEATURE &&
4943
- result.entity.data.geometry &&
4944
- !result.state.selected &&
4945
- !result.state.focused);
4946
- featureToHandleGeom.map((result) => {
4947
- if (searchResultsGeometryEnabled) {
4948
- result.entity.data.meta.style = getCommonVectorStyle(Object.assign({}, {
4949
- feature: result.entity.data
4950
- }, this.searchState.searchOverlayStyle, result.entity.style?.base ? result.entity.style.base : {}));
4951
- this.shownResultsGeometries.push(result.entity.data);
4952
- this.map.queryResultsOverlay.addFeature(result.entity.data, FeatureMotion.None);
4953
- if (this.hasFeatureEmphasisOnSelection) {
4954
- this.buildResultEmphasis(result.entity, 'shown');
4955
- }
4956
- }
4957
- });
4958
- });
4959
4886
  this.store.stateView.empty$
4960
4887
  .pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef))
4961
4888
  .subscribe((empty) => this.debouncedEmpty.set(empty));
@@ -4967,6 +4894,25 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4967
4894
  this.feature.set(feature);
4968
4895
  });
4969
4896
  }
4897
+ handleShowAllResults() {
4898
+ this.searchResultsOverlayAll$$ = combineLatest([
4899
+ this.store.entities$,
4900
+ this.searchState.searchResultsGeometryEnabled$
4901
+ ]).subscribe((bunch) => {
4902
+ const searchResults = bunch[0];
4903
+ const enabled = bunch[1];
4904
+ const features = searchResults
4905
+ .filter((sr) => sr.meta.dataType === FEATURE)
4906
+ .map((sr) => sr.data);
4907
+ if (enabled && features.length) {
4908
+ this.searchResultsOverlayAll.setFeatures(features, FeatureMotion.None);
4909
+ }
4910
+ else {
4911
+ this.searchResultsOverlayFocused?.clear();
4912
+ this.searchResultsOverlayAll?.clear();
4913
+ }
4914
+ });
4915
+ }
4970
4916
  monitorResultOutOfView() {
4971
4917
  this.isSelectedResultOutOfView$$ = combineLatest([
4972
4918
  this.map.viewController.state$,
@@ -4980,84 +4926,19 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4980
4926
  return;
4981
4927
  }
4982
4928
  if (selectedResult.data.geometry) {
4983
- const selectedOlFeature = featureToOl(selectedResult.data, this.map.projection);
4929
+ const selectedOlFeature = featureToOl(selectedResult.data, this.map.projectionCode);
4984
4930
  const selectedOlFeatureExtent = computeOlFeaturesExtent([selectedOlFeature], this.map.viewController.getOlProjection());
4985
- this.isSelectedResultOutOfView$.next(featuresAreOutOfView(this.map.getExtent(), selectedOlFeatureExtent));
4931
+ this.isSelectedResultOutOfView$.next(featuresAreOutOfView(this.map.viewController.getExtent(), selectedOlFeatureExtent));
4986
4932
  }
4987
4933
  });
4988
4934
  }
4989
- buildResultEmphasis(result, trigger) {
4990
- if (trigger !== 'shown') {
4991
- this.clearFeatureEmphasis(trigger);
4992
- }
4993
- if (!result || !result.data.geometry) {
4994
- return;
4995
- }
4996
- const myOlFeature = featureToOl(result.data, this.map.projection);
4997
- const olGeometry = myOlFeature.getGeometry();
4998
- if (featuresAreTooDeepInView(this.map.viewController, olGeometry.getExtent(), 0.0025)) {
4999
- const extent = olGeometry.getExtent();
5000
- const x = extent[0] + (extent[2] - extent[0]) / 2;
5001
- const y = extent[1] + (extent[3] - extent[1]) / 2;
5002
- const feature1 = new olFeature({
5003
- name: `${trigger}AbstractResult'`,
5004
- geometry: new olPoint([x, y])
5005
- });
5006
- const abstractResult = featureFromOl(feature1, this.map.projection);
5007
- let computedStyle;
5008
- let zIndexOffset = 0;
5009
- switch (trigger) {
5010
- case 'focused':
5011
- computedStyle = getCommonVectorSelectedStyle(Object.assign({}, { feature: abstractResult }, this.searchState.searchOverlayStyleFocus, result.style?.focus ? result.style.focus : {}));
5012
- zIndexOffset = 2;
5013
- break;
5014
- case 'shown':
5015
- computedStyle = getCommonVectorStyle(Object.assign({}, { feature: abstractResult }, this.searchState.searchOverlayStyle, result.style?.base ? result.style.base : {}));
5016
- break;
5017
- case 'selected':
5018
- computedStyle = getCommonVectorSelectedStyle(Object.assign({}, { feature: abstractResult }, this.searchState.searchOverlayStyleSelection, result.style?.selection ? result.style.selection : {}));
5019
- zIndexOffset = 1;
5020
- break;
5021
- }
5022
- abstractResult.meta.style = computedStyle;
5023
- abstractResult.meta.style.setZIndex(2000 + zIndexOffset);
5024
- this.map.searchResultsOverlay.addFeature(abstractResult, this.searchState.featureMotion.focus);
5025
- if (trigger === 'focused') {
5026
- this.abstractFocusedResult = abstractResult;
5027
- }
5028
- if (trigger === 'selected') {
5029
- this.abstractSelectedResult = abstractResult;
5030
- }
5031
- if (trigger === 'shown') {
5032
- this.shownResultsEmphasisGeometries.push(abstractResult);
5033
- }
5034
- }
5035
- else {
5036
- this.clearFeatureEmphasis(trigger);
5037
- }
5038
- }
5039
- clearFeatureEmphasis(trigger) {
5040
- if (trigger === 'focused' && this.abstractFocusedResult) {
5041
- this.map.searchResultsOverlay.removeFeature(this.abstractFocusedResult);
5042
- this.abstractFocusedResult = undefined;
5043
- }
5044
- if (trigger === 'selected' && this.abstractSelectedResult) {
5045
- this.map.searchResultsOverlay.removeFeature(this.abstractSelectedResult);
5046
- this.abstractSelectedResult = undefined;
5047
- }
5048
- if (trigger === 'shown') {
5049
- this.shownResultsEmphasisGeometries.map((shownResult) => this.map.searchResultsOverlay.removeFeature(shownResult));
5050
- this.shownResultsEmphasisGeometries = [];
5051
- }
5052
- }
5053
4935
  ngOnDestroy() {
5054
- this.topPanelState$$.unsubscribe();
5055
4936
  this.searchTerm$$.unsubscribe();
5056
4937
  if (this.isSelectedResultOutOfView$$) {
5057
4938
  this.isSelectedResultOutOfView$$.unsubscribe();
5058
4939
  }
5059
- if (this.showResultsGeometries$$) {
5060
- this.showResultsGeometries$$.unsubscribe();
4940
+ if (this.searchResultsOverlayAll$$) {
4941
+ this.searchResultsOverlayAll$$.unsubscribe();
5061
4942
  }
5062
4943
  if (this.getRoute$$) {
5063
4944
  this.getRoute$$.unsubscribe();
@@ -5069,31 +4950,17 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5069
4950
  * @param result A search result that could be a feature
5070
4951
  */
5071
4952
  onResultFocus(result) {
5072
- this.focusedResult$.next(result);
5073
- if (result.meta.dataType === FEATURE && result.data.geometry) {
5074
- result.data.meta.style = getCommonVectorSelectedStyle(Object.assign({}, { feature: result.data }, this.searchState.searchOverlayStyleFocus, result.style?.focus ? result.style.focus : {}));
5075
- const feature = this.map.searchResultsOverlay.dataSource.ol.getFeatureById(result.meta.id);
5076
- if (feature) {
5077
- feature.setStyle(result.data.meta.style);
5078
- return;
5079
- }
5080
- this.map.searchResultsOverlay.addFeature(result.data, this.searchState.featureMotion.focus);
4953
+ if (this.store.state.get(result).selected) {
4954
+ this.searchResultsOverlayFocused.clear();
4955
+ }
4956
+ else {
4957
+ this.addResultToOverlay(result, this.searchResultsOverlayFocused, this.searchState.featureMotion.focus);
5081
4958
  }
5082
4959
  }
5083
4960
  onResultUnfocus(result) {
5084
- this.focusedResult$.next(undefined);
5085
- if (result.meta.dataType !== FEATURE) {
5086
- return;
5087
- }
5088
- if (this.store.state.get(result).selected === true) {
5089
- const feature = this.map.searchResultsOverlay.dataSource.ol.getFeatureById(result.meta.id);
5090
- if (feature) {
5091
- const style = getCommonVectorSelectedStyle(Object.assign({}, { feature: result.data }, this.searchState.searchOverlayStyleFocus, result.style?.focus ? result.style.focus : {}));
5092
- feature.setStyle(style);
5093
- }
5094
- return;
4961
+ if (!this.store.state.get(result).selected) {
4962
+ this.searchResultsOverlayFocused.clear();
5095
4963
  }
5096
- this.map.searchResultsOverlay.removeFeature(result.data);
5097
4964
  }
5098
4965
  /**
5099
4966
  * Try to add a feature to the map when it's being selected
@@ -5101,18 +4968,19 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5101
4968
  * @param result A search result that could be a feature or some layer options
5102
4969
  */
5103
4970
  onResultSelect(result) {
5104
- this.map.searchResultsOverlay.dataSource.ol.clear();
5105
- this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);
4971
+ this.searchResultsOverlayFocused.clear();
4972
+ this.searchResultsOverlaySelected.clear();
4973
+ this.addResultToOverlay(result, this.searchResultsOverlaySelected, this.searchState.featureMotion.selected);
5106
4974
  this.searchState.setSelectedResult(result);
5107
- if (this.topPanelState === 'initial') {
4975
+ if (this.topPanelStateValue() === 'initial') {
5108
4976
  if (this.topPanelStateDefault() !== 'collapsed') {
5109
- this.topPanelState = 'expanded';
4977
+ this.topPanelStateValue.set('expanded');
5110
4978
  }
5111
4979
  else {
5112
- this.topPanelState = 'collapsed';
4980
+ this.topPanelStateValue.set('collapsed');
5113
4981
  }
5114
4982
  }
5115
- if (this.topPanelState === 'expanded') {
4983
+ if (this.topPanelStateValue() === 'expanded') {
5116
4984
  const igoList = this.computeElementRef()[0];
5117
4985
  const selected = this.computeElementRef()[1];
5118
4986
  if (!this.isScrolledIntoView(igoList, selected)) {
@@ -5174,10 +5042,10 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5174
5042
  }
5175
5043
  adjustTopPanel(elemSource, elem) {
5176
5044
  if (!this.isScrolledIntoView(elemSource, elem)) {
5045
+ const firstChild = elem.children[0];
5046
+ const childHeight = firstChild instanceof HTMLElement ? firstChild.offsetHeight : 0;
5177
5047
  elemSource.scrollTop =
5178
- elem.offsetTop +
5179
- elem.children[0].offsetHeight -
5180
- elemSource.clientHeight;
5048
+ elem.offsetTop + childHeight - elemSource.clientHeight;
5181
5049
  }
5182
5050
  }
5183
5051
  toggleTopPanel(event) {
@@ -5185,11 +5053,11 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5185
5053
  return;
5186
5054
  }
5187
5055
  else {
5188
- if (this.topPanelState === 'expanded') {
5189
- this.topPanelState = 'collapsed';
5056
+ if (this.topPanelStateValue() === 'expanded') {
5057
+ this.topPanelStateValue.set('collapsed');
5190
5058
  }
5191
5059
  else {
5192
- this.topPanelState = 'expanded';
5060
+ this.topPanelStateValue.set('expanded');
5193
5061
  }
5194
5062
  }
5195
5063
  }
@@ -5208,17 +5076,19 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5208
5076
  * @param result A search result that could be a feature
5209
5077
  * @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay
5210
5078
  */
5211
- tryAddFeatureToMap(result, motion = FeatureMotion.Default) {
5079
+ addResultToOverlay(result, overlay, motion = FeatureMotion.Default) {
5212
5080
  if (result.meta.dataType !== FEATURE) {
5213
5081
  return undefined;
5214
5082
  }
5215
5083
  const feature = result.data;
5216
- // Somethimes features have no geometry. It happens with some GetFeatureInfo
5084
+ // Sometimes features have no geometry. It happens with some GetFeatureInfo
5217
5085
  if (!feature.geometry) {
5218
5086
  return;
5219
5087
  }
5220
- feature.meta.style = getCommonVectorSelectedStyle(Object.assign({}, { feature }, this.searchState.searchOverlayStyleSelection, result.style?.selection ? result.style.selection : {}));
5221
- this.map.searchResultsOverlay.addFeature(feature, motion);
5088
+ if (!feature.meta) {
5089
+ return;
5090
+ }
5091
+ overlay.setFeatures([feature], motion);
5222
5092
  }
5223
5093
  isScrolledIntoView(elemSource, elem) {
5224
5094
  const padding = 6;
@@ -5261,9 +5131,11 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5261
5131
  ];
5262
5132
  }
5263
5133
  }
5264
- stop.text = this.featureTitle;
5265
- stop.coordinates = coord;
5266
- this.directionState.stopsStore.update(stop);
5134
+ if (stop) {
5135
+ stop.text = this.featureTitle ?? '';
5136
+ stop.coordinates = coord;
5137
+ this.directionState.stopsStore.update(stop);
5138
+ }
5267
5139
  if (this.map.geolocationController.position$.value) {
5268
5140
  const currentPos = this.map.geolocationController.position$.value;
5269
5141
  const stop = this.directionState.stopsStore
@@ -5271,16 +5143,18 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5271
5143
  .find((e) => e.position === 0);
5272
5144
  const currentCoord = olProj.transform(currentPos.position, currentPos.projection, 'EPSG:4326');
5273
5145
  const coord = roundCoordTo([currentCoord[0], currentCoord[1]], 6);
5274
- stop.text = coord.join(',');
5275
- stop.coordinates = coord;
5276
- this.directionState.stopsStore.update(stop);
5146
+ if (stop) {
5147
+ stop.text = coord.join(',');
5148
+ stop.coordinates = coord;
5149
+ this.directionState.stopsStore.update(stop);
5150
+ }
5277
5151
  }
5278
5152
  }
5279
5153
  });
5280
5154
  }, 250);
5281
5155
  }
5282
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchResultsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5283
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: SearchResultsToolComponent, isStandalone: true, selector: "igo-search-results-tool", inputs: { showIcons: { classPropertyName: "showIcons", publicName: "showIcons", isSignal: true, isRequired: false, transformFunction: null }, topPanelStateDefault: { classPropertyName: "topPanelStateDefault", publicName: "topPanelStateDefault", isSignal: true, isRequired: false, transformFunction: null }, topPanelState: { classPropertyName: "topPanelState", publicName: "topPanelState", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "searchResult", first: true, predicate: SearchResultsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelState : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n (topPanelState$ | async) === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"], dependencies: [{ kind: "component", type: FlexibleComponent, selector: "igo-flexible", inputs: ["initial", "collapsed", "expanded", "initialMobile", "collapsedMobile", "expandedMobile", "direction", "state"] }, { kind: "component", type: SearchResultsComponent, selector: "igo-search-results", inputs: ["map", "store", "showIcons", "mode", "withZoomButton", "tabsMode", "term", "termSplitter"], outputs: ["resultFocus", "resultUnfocus", "resultSelect", "moreResults", "resultMouseenter", "resultMouseleave"] }, { kind: "component", type: SearchResultAddButtonComponent, selector: "igo-search-add-button", inputs: ["layer", "store", "added", "map", "saveSearchResultInLayer", "stores"], outputs: ["addedChange"] }, { kind: "component", type: PanelComponent, selector: "igo-panel", inputs: ["title", "withHeader", "cursorPointer"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i4$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchResultsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5157
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: SearchResultsToolComponent, isStandalone: true, selector: "igo-search-results-tool", inputs: { showIcons: { classPropertyName: "showIcons", publicName: "showIcons", isSignal: true, isRequired: false, transformFunction: null }, topPanelStateDefault: { classPropertyName: "topPanelStateDefault", publicName: "topPanelStateDefault", isSignal: true, isRequired: false, transformFunction: null }, topPanelState: { classPropertyName: "topPanelState", publicName: "topPanelState", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "searchResult", first: true, predicate: SearchResultsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelStateValue() : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n topPanelStateValue() === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"], dependencies: [{ kind: "component", type: FlexibleComponent, selector: "igo-flexible", inputs: ["initial", "collapsed", "expanded", "initialMobile", "collapsedMobile", "expandedMobile", "direction", "state"] }, { kind: "component", type: SearchResultsComponent, selector: "igo-search-results", inputs: ["map", "store", "showIcons", "mode", "withZoomButton", "tabsMode", "term", "termSplitter"], outputs: ["resultFocus", "resultUnfocus", "resultSelect", "moreResults", "resultMouseenter", "resultMouseleave"] }, { kind: "component", type: SearchResultAddButtonComponent, selector: "igo-search-add-button", inputs: ["layer", "store", "added", "map", "saveSearchResultInLayer", "stores"], outputs: ["addedChange"] }, { kind: "component", type: PanelComponent, selector: "igo-panel", inputs: ["title", "withHeader", "cursorPointer"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i4$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5284
5158
  };
5285
5159
  SearchResultsToolComponent = __decorate([
5286
5160
  ToolComponent({
@@ -5290,7 +5164,7 @@ SearchResultsToolComponent = __decorate([
5290
5164
  }),
5291
5165
  __metadata("design:paramtypes", [])
5292
5166
  ], SearchResultsToolComponent);
5293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchResultsToolComponent, decorators: [{
5167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SearchResultsToolComponent, decorators: [{
5294
5168
  type: Component,
5295
5169
  args: [{ selector: 'igo-search-results-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
5296
5170
  FlexibleComponent,
@@ -5305,20 +5179,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5305
5179
  AsyncPipe,
5306
5180
  IgoLanguageModule,
5307
5181
  SanitizeHtmlPipe
5308
- ], template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelState : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n (topPanelState$ | async) === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"] }]
5309
- }], ctorParameters: () => [], propDecorators: { showIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcons", required: false }] }], topPanelStateDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "topPanelStateDefault", required: false }] }], searchResult: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SearchResultsComponent), { isSignal: true }] }], topPanelState: [{
5310
- type: Input
5311
- }] } });
5182
+ ], template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelStateValue() : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n topPanelStateValue() === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"] }]
5183
+ }], ctorParameters: () => [], propDecorators: { showIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcons", required: false }] }], topPanelStateDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "topPanelStateDefault", required: false }] }], searchResult: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SearchResultsComponent), { isSignal: true }] }], topPanelState: [{ type: i0.Input, args: [{ isSignal: true, alias: "topPanelState", required: false }] }] } });
5312
5184
 
5313
5185
  /**
5314
5186
  * @deprecated import the components/directive directly or INTEGRATION_SEARCH_DIRECTIVES for the set
5315
5187
  */
5316
5188
  class IgoAppSearchModule {
5317
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5318
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchModule, imports: [SearchBarBindingDirective, SearchResultsToolComponent], exports: [SearchBarBindingDirective, SearchResultsToolComponent] });
5319
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchModule, imports: [SearchResultsToolComponent] });
5189
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5190
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchModule, imports: [SearchBarBindingDirective, SearchResultsToolComponent], exports: [SearchBarBindingDirective, SearchResultsToolComponent] });
5191
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchModule, imports: [SearchResultsToolComponent] });
5320
5192
  }
5321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchModule, decorators: [{
5193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchModule, decorators: [{
5322
5194
  type: NgModule,
5323
5195
  args: [{
5324
5196
  imports: [SearchBarBindingDirective, SearchResultsToolComponent],
@@ -5330,11 +5202,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5330
5202
  * @deprecated import the WorkspaceButtonComponent directly
5331
5203
  */
5332
5204
  class IgoAppWorkspaceModule {
5333
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppWorkspaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5334
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent], exports: [WorkspaceButtonComponent] });
5335
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent] });
5205
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppWorkspaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5206
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent], exports: [WorkspaceButtonComponent] });
5207
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent] });
5336
5208
  }
5337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppWorkspaceModule, decorators: [{
5209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppWorkspaceModule, decorators: [{
5338
5210
  type: NgModule,
5339
5211
  args: [{
5340
5212
  imports: [WorkspaceButtonComponent],
@@ -5346,8 +5218,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5346
5218
  * @deprecated import the components directly
5347
5219
  */
5348
5220
  class IgoIntegrationModule {
5349
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoIntegrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5350
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoIntegrationModule, exports: [IgoAppContextModule,
5221
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoIntegrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5222
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoIntegrationModule, exports: [IgoAppContextModule,
5351
5223
  IgoAppCatalogModule,
5352
5224
  IgoAppDirectionsModule,
5353
5225
  IgoAppDrawModule,
@@ -5360,7 +5232,7 @@ class IgoIntegrationModule {
5360
5232
  IgoAppFilterModule,
5361
5233
  IgoAppAboutModule,
5362
5234
  IgoAppGeometryFormModule] });
5363
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoIntegrationModule, imports: [IgoAppContextModule,
5235
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoIntegrationModule, imports: [IgoAppContextModule,
5364
5236
  IgoAppCatalogModule,
5365
5237
  IgoAppDirectionsModule,
5366
5238
  IgoAppDrawModule,
@@ -5374,7 +5246,7 @@ class IgoIntegrationModule {
5374
5246
  IgoAppAboutModule,
5375
5247
  IgoAppGeometryFormModule] });
5376
5248
  }
5377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoIntegrationModule, decorators: [{
5249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoIntegrationModule, decorators: [{
5378
5250
  type: NgModule,
5379
5251
  args: [{
5380
5252
  imports: [],
@@ -5428,7 +5300,8 @@ class AnalyticsListenerService {
5428
5300
  listenContext() {
5429
5301
  this.contextState.context$.subscribe((context) => {
5430
5302
  if (context) {
5431
- this.analyticsService.trackEvent('context', 'activateContext', context.id?.toString() || context.uri);
5303
+ const eventName = context.id?.toString() ?? context.uri;
5304
+ this.analyticsService.trackEvent('context', 'activateContext', eventName);
5432
5305
  }
5433
5306
  });
5434
5307
  }
@@ -5498,14 +5371,15 @@ class AnalyticsListenerService {
5498
5371
  break;
5499
5372
  }
5500
5373
  }
5501
- this.analyticsService.trackLayer('layer', 'addLayer', wmsParams || wmtsParams || restParams);
5374
+ const eventName = wmsParams || wmtsParams || restParams;
5375
+ this.analyticsService.trackLayer('layer', 'addLayer', eventName);
5502
5376
  });
5503
5377
  });
5504
5378
  }
5505
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AnalyticsListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5506
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AnalyticsListenerService, providedIn: 'root' });
5379
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5380
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsListenerService, providedIn: 'root' });
5507
5381
  }
5508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AnalyticsListenerService, decorators: [{
5382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsListenerService, decorators: [{
5509
5383
  type: Injectable,
5510
5384
  args: [{
5511
5385
  providedIn: 'root'
@@ -5533,22 +5407,15 @@ class QueryState {
5533
5407
  */
5534
5408
  store = new EntityStore([]);
5535
5409
  queryOverlayStyle = {};
5536
- queryOverlayStyleSelection = {};
5537
- queryOverlayStyleFocus = {};
5538
5410
  constructor() {
5539
- const queryOverlayStyle = this.configService.getConfig('queryOverlayStyle');
5540
- if (queryOverlayStyle) {
5541
- this.queryOverlayStyle = queryOverlayStyle.base;
5542
- this.queryOverlayStyleSelection = queryOverlayStyle.selection;
5543
- this.queryOverlayStyleFocus = queryOverlayStyle.focus;
5544
- }
5411
+ this.queryOverlayStyle = this.configService.getConfig('queryOverlayStyle', {});
5545
5412
  const geoPropertiesStrategy = new GeoPropertiesStrategy({ map: this.mapState.map }, this.propertyTypeDetectorService, this.capabilitiesService);
5546
5413
  this.store.addStrategy(geoPropertiesStrategy, true);
5547
5414
  }
5548
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: QueryState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5549
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: QueryState, providedIn: 'root' });
5415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: QueryState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5416
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: QueryState, providedIn: 'root' });
5550
5417
  }
5551
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: QueryState, decorators: [{
5418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: QueryState, decorators: [{
5552
5419
  type: Injectable,
5553
5420
  args: [{
5554
5421
  providedIn: 'root'
@@ -5559,11 +5426,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5559
5426
  * @deprecated import the SearchResultsToolComponent directly
5560
5427
  */
5561
5428
  class IgoAppSearchResultsToolModule {
5562
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchResultsToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5563
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchResultsToolModule, imports: [SearchResultsToolComponent], exports: [SearchResultsToolComponent] });
5564
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchResultsToolModule, imports: [SearchResultsToolComponent] });
5429
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchResultsToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5430
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchResultsToolModule, imports: [SearchResultsToolComponent], exports: [SearchResultsToolComponent] });
5431
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchResultsToolModule, imports: [SearchResultsToolComponent] });
5565
5432
  }
5566
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchResultsToolModule, decorators: [{
5433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchResultsToolModule, decorators: [{
5567
5434
  type: NgModule,
5568
5435
  args: [{
5569
5436
  imports: [SearchResultsToolComponent],
@@ -5575,11 +5442,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5575
5442
  * @deprecated import the SearchBarBindingDirective directly
5576
5443
  */
5577
5444
  class IgoAppSearchBarModule {
5578
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5579
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchBarModule, imports: [SearchBarBindingDirective], exports: [SearchBarBindingDirective] });
5580
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchBarModule });
5445
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5446
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchBarModule, imports: [SearchBarBindingDirective], exports: [SearchBarBindingDirective] });
5447
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchBarModule });
5581
5448
  }
5582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchBarModule, decorators: [{
5449
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoAppSearchBarModule, decorators: [{
5583
5450
  type: NgModule,
5584
5451
  args: [{
5585
5452
  imports: [SearchBarBindingDirective],