@igo2/integration 21.0.0-next.2 → 21.0.0-next.20

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,22 +14,22 @@ 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, getCommonVectorStyle, computeOlFeaturesExtent, featuresAreOutOfView, featuresAreTooDeepInView, getCommonVectorSelectedStyle, SearchResultsComponent, 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
- import { MessageService, IgoMessageModule } from '@igo2/core/message';
32
+ import { MessageService } from '@igo2/core/message';
33
33
  import { trigger, state, style, transition, animate } from '@angular/animations';
34
34
  import { SELECTION_MARKER_ICON } from '@igo2/common/icon';
35
35
  import * as olProj from 'ol/proj';
@@ -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.19", ngImport: i0, type: AboutToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppAboutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
175
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppAboutModule, imports: [AboutToolComponent], exports: [AboutToolComponent] });
176
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: MapState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: CatalogState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
275
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: CatalogBrowserToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
358
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppCatalogBrowserToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
377
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppCatalogBrowserToolModule, imports: [CatalogBrowserToolComponent], exports: [CatalogBrowserToolComponent] });
378
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ImportExportState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
415
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ToolState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
460
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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", "map", "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.19", ngImport: i0, type: CatalogLibraryToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
772
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppCatalogLibraryToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
796
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppCatalogLibraryToolModule, imports: [CatalogLibraryToolComponent], exports: [CatalogLibraryToolComponent] });
797
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppCatalogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
812
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppCatalogModule, exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule] });
813
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ContextEditorToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
828
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ContextManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
859
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ContextPermissionManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
875
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: LayerListToolState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
918
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ContextShareToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
937
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppContextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
963
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", 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.19", ngImport: i0, type: ContextState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1050
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: DirectionState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: DirectionsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppDirectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1195
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppDirectionsModule, imports: [DirectionsToolComponent], exports: [DirectionsToolComponent] });
1196
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: DrawState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1236
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: DrawingToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1287
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppDrawingToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1306
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppDrawingToolModule, imports: [DrawingToolComponent], exports: [DrawingToolComponent] });
1307
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppDrawModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1322
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppDrawModule, exports: [IgoAppDrawingToolModule] });
1323
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ActiveOgcFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1356
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: ActiveTimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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 />\n", dependencies: [{ kind: "component", type: OgcFilterableListComponent, selector: "igo-ogc-filterable-list", inputs: ["layers", "map"], outputs: ["layersChange"] }, { kind: "directive", type: OgcFilterableListBindingDirective, selector: "[igoOgcFilterableListBinding]" }] });
1411
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: OgcFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1412
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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,9 +1418,9 @@ 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.19", ngImport: i0, type: OgcFilterToolComponent, decorators: [{
1446
1422
  type: Component,
1447
- args: [{ selector: 'igo-ogc-filter-tool', imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective], template: "<igo-ogc-filterable-list igoOgcFilterableListBinding />\n" }]
1423
+ args: [{ selector: 'igo-ogc-filter-tool', imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective], template: "<igo-ogc-filterable-list igoOgcFilterableListBinding [layers]=\"[]\" />\n" }]
1448
1424
  }] });
1449
1425
 
1450
1426
  /**
@@ -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.19", ngImport: i0, type: StorageState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1435
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: EditionActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1655
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: FeatureActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1703
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: WfsActionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1754
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: WorkspaceState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1935
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", 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.19", 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
- return featureToOl(feature, this.map.projection);
2246
+ return featureToOl(feature, this.map.projectionCode);
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
- return featureToOl(feature, this.map.projection);
2300
+ return featureToOl(feature, this.map.projectionCode);
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
  ' - ' +
@@ -2361,14 +2343,14 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2361
2343
  return;
2362
2344
  const olSource = zoneLayer.dataSource.ol;
2363
2345
  // Convert to OL feature (same way as when adding)
2364
- const featureOl = featureToOl(feature, this.map.projection);
2346
+ const featureOl = featureToOl(feature, this.map.projectionCode);
2365
2347
  // Find matching OL feature(s) by id or geometry
2366
2348
  const toRemove = olSource.getFeatures().filter((f) => {
2367
2349
  return f.getId() === featureOl.getId();
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
  }),
@@ -2478,7 +2463,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
2478
2463
  const olSource = layer.dataSource.ol;
2479
2464
  if (buffer)
2480
2465
  olSource.clear();
2481
- const featuresOl = features.map((f) => featureToOl(f, this.map.projection));
2466
+ const featuresOl = features.map((f) => featureToOl(f, this.map.projectionCode));
2482
2467
  const type = this.type();
2483
2468
  if (type !== SpatialFilterType.Predefined) {
2484
2469
  const customType = type === SpatialFilterType.Point ? 'Cercle' : 'Polygone';
@@ -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.19", ngImport: i0, type: SpatialFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2503
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: TimeFilterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2527
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", ngImport: i0, type: IgoAppFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2552
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", 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.19", 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.19", 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.19", ngImport: i0, type: DataIssueReporterToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2724
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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,34 +2730,20 @@ 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.19", 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,
2754
- MatButtonModule,
2755
- IgoLanguageModule,
2756
- IgoFormModule,
2757
- IgoMessageModule], exports: [DataIssueReporterToolComponent] });
2758
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppGeometryFormModule, imports: [CommonModule,
2759
- MatButtonModule,
2760
- IgoLanguageModule,
2761
- IgoFormModule,
2762
- IgoMessageModule] });
2739
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppGeometryFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2740
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppGeometryFormModule, declarations: [DataIssueReporterToolComponent], imports: [CommonModule, MatButtonModule, IgoLanguageModule, IgoFormModule], exports: [DataIssueReporterToolComponent] });
2741
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppGeometryFormModule, imports: [CommonModule, MatButtonModule, IgoLanguageModule, IgoFormModule] });
2763
2742
  }
2764
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppGeometryFormModule, decorators: [{
2743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppGeometryFormModule, decorators: [{
2765
2744
  type: NgModule,
2766
2745
  args: [{
2767
- imports: [
2768
- CommonModule,
2769
- MatButtonModule,
2770
- IgoLanguageModule,
2771
- IgoFormModule,
2772
- IgoMessageModule
2773
- ],
2746
+ imports: [CommonModule, MatButtonModule, IgoLanguageModule, IgoFormModule],
2774
2747
  declarations: [DataIssueReporterToolComponent],
2775
2748
  exports: [DataIssueReporterToolComponent],
2776
2749
  schemas: []
@@ -2782,7 +2755,7 @@ let ImportExportToolComponent = class ImportExportToolComponent {
2782
2755
  importExportState = inject(ImportExportState);
2783
2756
  workspaceState = inject(WorkspaceState);
2784
2757
  contextState = inject(ContextState);
2785
- projectionsLimitations = input(undefined, ...(ngDevMode ? [{ debugName: "projectionsLimitations" }] : /* istanbul ignore next */ []));
2758
+ projectionsLimitations = input(...(ngDevMode ? [undefined, { debugName: "projectionsLimitations" }] : /* istanbul ignore next */ []));
2786
2759
  selectFirstProj = input(false, ...(ngDevMode ? [{ debugName: "selectFirstProj" }] : /* istanbul ignore next */ []));
2787
2760
  /**
2788
2761
  * Map to measure on
@@ -2831,8 +2804,8 @@ let ImportExportToolComponent = class ImportExportToolComponent {
2831
2804
  importExportTypeChange(event) {
2832
2805
  this.importExportType.set(event.value);
2833
2806
  }
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 });
2807
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ImportExportToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2808
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
2809
  };
2837
2810
  ImportExportToolComponent = __decorate([
2838
2811
  ToolComponent({
@@ -2841,7 +2814,7 @@ ImportExportToolComponent = __decorate([
2841
2814
  icon: 'file_save'
2842
2815
  })
2843
2816
  ], ImportExportToolComponent);
2844
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ImportExportToolComponent, decorators: [{
2817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ImportExportToolComponent, decorators: [{
2845
2818
  type: Component,
2846
2819
  args: [{ selector: 'igo-import-export-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2847
2820
  MatTabsModule,
@@ -2849,7 +2822,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
2849
2822
  ContextImportExportComponent,
2850
2823
  AsyncPipe,
2851
2824
  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"] }]
2825
+ ], 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
2826
  }], 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
2827
 
2855
2828
  /**
@@ -2862,11 +2835,11 @@ class IgoAppImportExportModule {
2862
2835
  providers: []
2863
2836
  };
2864
2837
  }
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] });
2838
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppImportExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2839
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppImportExportModule, imports: [ImportExportToolComponent], exports: [ImportExportToolComponent] });
2840
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppImportExportModule, imports: [ImportExportToolComponent] });
2868
2841
  }
2869
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppImportExportModule, decorators: [{
2842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppImportExportModule, decorators: [{
2870
2843
  type: NgModule,
2871
2844
  args: [{
2872
2845
  imports: [ImportExportToolComponent],
@@ -2895,10 +2868,13 @@ class AdvancedCoordinatesComponent {
2895
2868
  inLambert2 = { 32198: true, 3798: true };
2896
2869
  mapState$$;
2897
2870
  formStatus$$;
2898
- _projectionsLimitations = {};
2899
- projectionsConstraints;
2871
+ projectionsLimitations = input({}, { ...(ngDevMode ? { debugName: "projectionsLimitations" } : /* istanbul ignore next */ {}), transform: (value) => value ?? {} });
2900
2872
  defaultProj;
2901
- currentZones = { utm: undefined, mtm: undefined };
2873
+ currentZones = {
2874
+ utm: undefined,
2875
+ mtm: undefined
2876
+ };
2877
+ projectionsConstraints;
2902
2878
  units = true;
2903
2879
  get map() {
2904
2880
  return this.mapState.map;
@@ -2909,12 +2885,6 @@ class AdvancedCoordinatesComponent {
2909
2885
  set inputProj(value) {
2910
2886
  this.form.patchValue({ inputProj: value });
2911
2887
  }
2912
- get projectionsLimitations() {
2913
- return this._projectionsLimitations || {};
2914
- }
2915
- set projectionsLimitations(value) {
2916
- this._projectionsLimitations = value;
2917
- }
2918
2888
  constructor() {
2919
2889
  this.defaultProj = {
2920
2890
  translatedValue: this.languageService.translate.instant('igo.geo.importExportForm.projections.wgs84', { code: 'EPSG:4326' }),
@@ -3068,7 +3038,7 @@ class AdvancedCoordinatesComponent {
3068
3038
  * Create a list of currents projections
3069
3039
  */
3070
3040
  computeProjections() {
3071
- this.projectionsConstraints = computeProjectionsConstraints(this.projectionsLimitations);
3041
+ this.projectionsConstraints = computeProjectionsConstraints(this.projectionsLimitations());
3072
3042
  const projections = [];
3073
3043
  if (!this.currentCenterDefaultProj) {
3074
3044
  this.currentCenterDefaultProj = this.map.viewController.getCenter(this.defaultProj.code);
@@ -3153,7 +3123,7 @@ class AdvancedCoordinatesComponent {
3153
3123
  * @param projections Array of the InputProjections
3154
3124
  */
3155
3125
  pushMtm(projections) {
3156
- if (this.projectionsConstraints.mtm) {
3126
+ if (this.projectionsConstraints?.mtm) {
3157
3127
  const zone = zoneMtm(this.currentCenterDefaultProj[0]);
3158
3128
  const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;
3159
3129
  projections.splice(3, 0, {
@@ -3230,13 +3200,15 @@ class AdvancedCoordinatesComponent {
3230
3200
  lambertProjections.forEach((projection) => {
3231
3201
  let modifiedProj = this.projections$.value;
3232
3202
  const extent = projection.extent;
3233
- const code = projection.code.match(/\d+/);
3203
+ const codeMatch = projection.code.match(/\d+/);
3204
+ const code = codeMatch?.[0];
3234
3205
  const currentExtentWGS = olProj.transformExtent(extent, projection.code, this.defaultProj.code);
3235
3206
  if (coordinates[0] < currentExtentWGS[0] ||
3236
3207
  coordinates[0] > currentExtentWGS[2] ||
3237
3208
  coordinates[1] < currentExtentWGS[1] ||
3238
3209
  coordinates[1] > currentExtentWGS[3]) {
3239
- this.inLambert2[code] = false;
3210
+ if (code)
3211
+ this.inLambert2[code] = false;
3240
3212
  if (this.inputProj.alias === projection.alias) {
3241
3213
  this.inputProj = this.projections$.value[0];
3242
3214
  }
@@ -3244,17 +3216,17 @@ class AdvancedCoordinatesComponent {
3244
3216
  this.projections$.next(modifiedProj);
3245
3217
  }
3246
3218
  else {
3247
- if (!this.inLambert2[code]) {
3219
+ if (code && !this.inLambert2[code]) {
3248
3220
  this.projections$.next(modifiedProj.concat(projection));
3249
3221
  this.inLambert2[code] = true;
3250
3222
  }
3251
3223
  }
3252
3224
  });
3253
3225
  }
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" }] });
3226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AdvancedCoordinatesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3227
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
3228
  }
3257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedCoordinatesComponent, decorators: [{
3229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AdvancedCoordinatesComponent, decorators: [{
3258
3230
  type: Component,
3259
3231
  args: [{ selector: 'igo-advanced-coordinates', imports: [
3260
3232
  MatFormFieldModule,
@@ -3270,9 +3242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3270
3242
  DecimalPipe,
3271
3243
  IgoLanguageModule
3272
3244
  ], 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
- }] } });
3245
+ }], ctorParameters: () => [], propDecorators: { projectionsLimitations: [{ type: i0.Input, args: [{ isSignal: true, alias: "projectionsLimitations", required: false }] }] } });
3276
3246
 
3277
3247
  class AdvancedSwipeComponent {
3278
3248
  mapState = inject(MapState);
@@ -3338,22 +3308,22 @@ class AdvancedSwipeComponent {
3338
3308
  applyNewLayers(e) {
3339
3309
  this.startSwipe(false); // l'approche KISS
3340
3310
  this.startSwipe(true);
3341
- if (e._selected) {
3342
- e._selected = false;
3311
+ if (e.selected) {
3312
+ e.select(false);
3343
3313
  }
3344
3314
  const allLayers = this.userControlledLayerList?.length;
3345
3315
  const selectedLayers = this.form.controls.layers.value.length;
3346
3316
  if (selectedLayers === allLayers) {
3347
- e._selected = true;
3317
+ e.select(true);
3348
3318
  }
3349
3319
  }
3350
3320
  /**
3351
3321
  * Select all list of layers and restart a tool
3352
3322
  */
3353
3323
  selectAll(e) {
3354
- if (e._selected) {
3324
+ if (e.selected) {
3355
3325
  this.form.controls.layers.setValue(this.userControlledLayerList);
3356
- e._selected = true;
3326
+ e.select(true);
3357
3327
  }
3358
3328
  else {
3359
3329
  this.form.controls.layers.setValue([]);
@@ -3379,10 +3349,10 @@ class AdvancedSwipeComponent {
3379
3349
  contextEmit() {
3380
3350
  this.toolState.toolbox.activateTool('contextManager');
3381
3351
  }
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" }] });
3352
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AdvancedSwipeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3353
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
3354
  }
3385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedSwipeComponent, decorators: [{
3355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AdvancedSwipeComponent, decorators: [{
3386
3356
  type: Component,
3387
3357
  args: [{ selector: 'igo-advanced-swipe', imports: [
3388
3358
  FormsModule,
@@ -3395,7 +3365,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3395
3365
  MatListModule,
3396
3366
  MatIconModule,
3397
3367
  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"] }]
3368
+ ], 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
3369
  }], ctorParameters: () => [] });
3400
3370
 
3401
3371
  let AdvancedMapToolComponent = class AdvancedMapToolComponent {
@@ -3418,8 +3388,8 @@ let AdvancedMapToolComponent = class AdvancedMapToolComponent {
3418
3388
  }
3419
3389
  this.mapState.map.geolocationController.followPosition = value;
3420
3390
  }
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" }] });
3391
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AdvancedMapToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3392
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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
3393
  };
3424
3394
  AdvancedMapToolComponent = __decorate([
3425
3395
  ToolComponent({
@@ -3431,7 +3401,7 @@ AdvancedMapToolComponent = __decorate([
3431
3401
  * Tool to handle the advanced map tools
3432
3402
  */
3433
3403
  ], AdvancedMapToolComponent);
3434
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AdvancedMapToolComponent, decorators: [{
3404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AdvancedMapToolComponent, decorators: [{
3435
3405
  type: Component,
3436
3406
  args: [{ selector: 'igo-advanced-map-tool', imports: [
3437
3407
  AdvancedSwipeComponent,
@@ -3445,54 +3415,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3445
3415
 
3446
3416
  class WorkspaceButtonComponent {
3447
3417
  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;
3418
+ destroyRef = inject(DestroyRef);
3419
+ hasWorkspace = signal(false, ...(ngDevMode ? [{ debugName: "hasWorkspace" }] : /* istanbul ignore next */ []));
3420
+ layer = input(...(ngDevMode ? [undefined, { debugName: "layer" }] : /* istanbul ignore next */ []));
3459
3421
  color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
3460
3422
  ngOnInit() {
3461
- this.hasWorkspace$$ = combineLatest([
3423
+ combineLatest([
3462
3424
  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();
3425
+ toObservable(this.layer)
3426
+ ])
3427
+ .pipe(takeUntilDestroyed(this.destroyRef))
3428
+ .subscribe(([enabled, layer]) => {
3429
+ const withWorkspace = enabled &&
3430
+ !!layer &&
3431
+ isLayerItem(layer) &&
3432
+ (layer.options.workspace?.enabled ?? false);
3433
+ this.hasWorkspace.set(withWorkspace);
3434
+ });
3468
3435
  }
3469
3436
  activateWorkspace() {
3437
+ const layer = this.layer();
3470
3438
  if (this.workspaceState.workspace$.value &&
3471
- this.workspaceState.workspace$.value.layer.id ===
3472
- this.layer.id &&
3439
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3440
+ this.workspaceState.workspace$.value.layer.id === layer?.id &&
3473
3441
  this.workspaceState.expanded()) {
3474
3442
  this.workspaceState.expanded.set(false);
3475
3443
  }
3476
3444
  else {
3477
3445
  this.workspaceState.expanded.set(true);
3478
- this.workspaceState.setActiveWorkspaceById(this.layer.id);
3446
+ if (layer?.id) {
3447
+ this.workspaceState.setActiveWorkspaceById(layer.id);
3448
+ }
3479
3449
  }
3480
3450
  }
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 });
3451
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: WorkspaceButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3452
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
3453
  }
3484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: WorkspaceButtonComponent, decorators: [{
3454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: WorkspaceButtonComponent, decorators: [{
3485
3455
  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 }] }] } });
3456
+ 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" }]
3457
+ }], propDecorators: { layer: [{ type: i0.Input, args: [{ isSignal: true, alias: "layer", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
3496
3458
 
3497
3459
  let MapDetailsToolComponent = class MapDetailsToolComponent {
3498
3460
  mapState = inject(MapState);
@@ -3502,7 +3464,7 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
3502
3464
  configService = inject(ConfigService);
3503
3465
  mediaService = inject(MediaService);
3504
3466
  cdr = inject(ChangeDetectorRef);
3505
- isDesktop;
3467
+ isDesktop = false;
3506
3468
  delayedShowEmptyMapContent = false;
3507
3469
  toggleLegendOnVisibilityChange = input(false, ...(ngDevMode ? [{ debugName: "toggleLegendOnVisibilityChange" }] : /* istanbul ignore next */ []));
3508
3470
  expandLegendOfVisibleLayers = input(false, ...(ngDevMode ? [{ debugName: "expandLegendOfVisibleLayers" }] : /* istanbul ignore next */ []));
@@ -3601,8 +3563,8 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
3601
3563
  this.cdr.detectChanges();
3602
3564
  });
3603
3565
  }
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", "map", "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" }] });
3566
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapDetailsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3567
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
3568
  };
3607
3569
  MapDetailsToolComponent = __decorate([
3608
3570
  ToolComponent({
@@ -3612,7 +3574,7 @@ MapDetailsToolComponent = __decorate([
3612
3574
  }),
3613
3575
  __metadata("design:paramtypes", [])
3614
3576
  ], MapDetailsToolComponent);
3615
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapDetailsToolComponent, decorators: [{
3577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapDetailsToolComponent, decorators: [{
3616
3578
  type: Component,
3617
3579
  args: [{ selector: 'igo-map-details-tool', imports: [
3618
3580
  LayerViewerComponent,
@@ -3626,7 +3588,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3626
3588
  MatIconModule,
3627
3589
  AsyncPipe,
3628
3590
  IgoLanguageModule
3629
- ], 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"] }]
3591
+ ], 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"] }]
3630
3592
  }], ctorParameters: () => [], propDecorators: { 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 }] }], ogcButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "ogcButton", required: false }] }], timeButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeButton", required: false }] }], layerListControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerListControls", required: false }] }], queryBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryBadge", required: false }] }], layerAdditionAllowed: [{ type: i0.Input, args: [{ isSignal: true, alias: "layerAdditionAllowed", required: false }] }] } });
3631
3593
 
3632
3594
  let MapLegendToolComponent = class MapLegendToolComponent {
@@ -3717,10 +3679,8 @@ let MapLegendToolComponent = class MapLegendToolComponent {
3717
3679
  return true;
3718
3680
  }
3719
3681
  ngOnDestroy() {
3720
- this.resolution$$.unsubscribe();
3721
- if (this.visibleOrInRangeLayers$$) {
3722
- this.visibleOrInRangeLayers$$.unsubscribe();
3723
- }
3682
+ this.resolution$$?.unsubscribe();
3683
+ this.visibleOrInRangeLayers$$?.unsubscribe();
3724
3684
  }
3725
3685
  searchEmit() {
3726
3686
  this.toolState.toolbox.activateTool('searchResults');
@@ -3731,8 +3691,8 @@ let MapLegendToolComponent = class MapLegendToolComponent {
3731
3691
  contextEmit() {
3732
3692
  this.toolState.toolbox.activateTool('contextManager');
3733
3693
  }
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" }] });
3694
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapLegendToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3695
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
3696
  };
3737
3697
  MapLegendToolComponent = __decorate([
3738
3698
  ToolComponent({
@@ -3741,7 +3701,7 @@ MapLegendToolComponent = __decorate([
3741
3701
  icon: 'format_list_bulleted'
3742
3702
  })
3743
3703
  ], MapLegendToolComponent);
3744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapLegendToolComponent, decorators: [{
3704
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapLegendToolComponent, decorators: [{
3745
3705
  type: Component,
3746
3706
  args: [{ selector: 'igo-map-legend-tool', imports: [
3747
3707
  LayerLegendListComponent,
@@ -3750,7 +3710,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
3750
3710
  MatIconModule,
3751
3711
  AsyncPipe,
3752
3712
  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"] }]
3713
+ ], 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
3714
  }], 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
3715
 
3756
3716
  /**
@@ -3804,14 +3764,14 @@ class MapProximityState {
3804
3764
  if (!currentPos || !currentPos.position) {
3805
3765
  return;
3806
3766
  }
3807
- coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projection);
3767
+ coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projectionCode);
3808
3768
  this.map.mapCenter$.next(false);
3809
3769
  }
3810
3770
  else {
3811
3771
  coord = this.map.viewController.getCenter();
3812
3772
  this.map.mapCenter$.next(true);
3813
3773
  }
3814
- const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
3774
+ const coordLonLat = olProj.transform(coord, this.map.projectionCode, 'EPSG:4269');
3815
3775
  const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
3816
3776
  this.currentPositionCoordinate$.next(roundedCoordLonLat);
3817
3777
  const layersToMonitor = layers.filter((layer) => isLayerItem(layer) &&
@@ -3825,7 +3785,7 @@ class MapProximityState {
3825
3785
  const olFeaturesAtCoordinate = layerSource.getFeaturesAtCoordinate(coord);
3826
3786
  if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {
3827
3787
  olFeaturesAtCoordinate.map((olFeatureAtCoordinate) => {
3828
- const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projection);
3788
+ const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projectionCode);
3829
3789
  const title = this.getQueryTitle(featureAtThisPosition, layerToMonitor);
3830
3790
  // todo handle imported layers without querytitle? prompt title or detect first column?
3831
3791
  this.addFeatureToStore(layerToMonitor, coord, featureAtThisPosition, title, 0);
@@ -3836,14 +3796,17 @@ class MapProximityState {
3836
3796
  const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
3837
3797
  if (closestOlFeature) {
3838
3798
  const closestOlGeom = closestOlFeature.getGeometry();
3839
- const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
3799
+ if (!closestOlGeom)
3800
+ return;
3801
+ const closestFeature = featureFromOl(closestOlFeature, this.map.projectionCode);
3840
3802
  const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
3841
3803
  const linebetween = new olLineString([
3842
3804
  coord,
3843
3805
  geometryClosestPoint
3844
3806
  ]);
3845
3807
  const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
3846
- if (lineLength <= proximityRadiusValue) {
3808
+ if (lineLength !== undefined &&
3809
+ lineLength <= proximityRadiusValue) {
3847
3810
  const title = this.getQueryTitle(closestFeature, layerToMonitor);
3848
3811
  // todo handle imported layers without querytitle? prompt title or detect first column?
3849
3812
  this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
@@ -3897,8 +3860,8 @@ class MapProximityState {
3897
3860
  getLabelMatch(feature, labelMatch) {
3898
3861
  let label = labelMatch;
3899
3862
  const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
3900
- labelToGet.forEach((v) => {
3901
- label = label.replace(v[0], feature.properties[v[1]]);
3863
+ labelToGet.forEach((entry) => {
3864
+ label = label.replace(entry[0], feature.properties[entry[1]]);
3902
3865
  });
3903
3866
  // Nothing done? check feature's attribute
3904
3867
  if (labelToGet.length === 0 && label === labelMatch) {
@@ -3906,10 +3869,10 @@ class MapProximityState {
3906
3869
  }
3907
3870
  return label;
3908
3871
  }
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' });
3872
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapProximityState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3873
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapProximityState, providedIn: 'root' });
3911
3874
  }
3912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityState, decorators: [{
3875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapProximityState, decorators: [{
3913
3876
  type: Injectable,
3914
3877
  args: [{
3915
3878
  providedIn: 'root'
@@ -3933,8 +3896,8 @@ let MapProximityToolComponent = class MapProximityToolComponent {
3933
3896
  get map() {
3934
3897
  return this.mapState.map;
3935
3898
  }
3936
- userDefinedMapCenter;
3937
- userDefinedFollowPosition;
3899
+ userDefinedMapCenter = false;
3900
+ userDefinedFollowPosition = false;
3938
3901
  /**
3939
3902
  * Table template
3940
3903
  * @internal
@@ -3951,14 +3914,16 @@ let MapProximityToolComponent = class MapProximityToolComponent {
3951
3914
  name: 'element',
3952
3915
  title: this.languageService.translate.instant('igo.integration.map-proximity-tool.feature'),
3953
3916
  valueAccessor: (localFeature) => {
3954
- return localFeature.properties.element;
3917
+ const feature = localFeature;
3918
+ return feature.properties.element;
3955
3919
  }
3956
3920
  },
3957
3921
  {
3958
3922
  name: 'distance',
3959
3923
  title: this.languageService.translate.instant('igo.integration.map-proximity-tool.distance'),
3960
3924
  valueAccessor: (localFeature) => {
3961
- return `${NumberUtils.roundToNDecimal(localFeature.properties.distance, 1)}m`;
3925
+ const feature = localFeature;
3926
+ return `${NumberUtils.roundToNDecimal(feature.properties.distance, 1)}m`;
3962
3927
  }
3963
3928
  }
3964
3929
  ]
@@ -3993,13 +3958,13 @@ let MapProximityToolComponent = class MapProximityToolComponent {
3993
3958
  * Copy the coordinates to a clipboard
3994
3959
  */
3995
3960
  copyTextToClipboard() {
3996
- const successful = this.clipboard.copy(this.mapProximityState.currentPositionCoordinate$?.value.toString());
3961
+ const successful = this.clipboard.copy(this.mapProximityState.currentPositionCoordinate$?.value?.toString() ?? '');
3997
3962
  if (successful) {
3998
3963
  this.messageService.success('igo.integration.map-proximity-tool.copyMsg', 'igo.integration.map-proximity-tool.copyTitle');
3999
3964
  }
4000
3965
  }
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" }] });
3966
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapProximityToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3967
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
3968
  };
4004
3969
  MapProximityToolComponent = __decorate([
4005
3970
  ToolComponent({
@@ -4013,7 +3978,7 @@ MapProximityToolComponent = __decorate([
4013
3978
  ,
4014
3979
  __metadata("design:paramtypes", [])
4015
3980
  ], MapProximityToolComponent);
4016
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapProximityToolComponent, decorators: [{
3981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapProximityToolComponent, decorators: [{
4017
3982
  type: Component,
4018
3983
  args: [{ selector: 'igo-map-proximity-tool', imports: [
4019
3984
  EntityTableComponent,
@@ -4025,7 +3990,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4025
3990
  FormsModule,
4026
3991
  AsyncPipe,
4027
3992
  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"] }]
3993
+ ], 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
3994
  }], ctorParameters: () => [], propDecorators: { table: [{ type: i0.ViewChild, args: ['table', { isSignal: true }] }] } });
4030
3995
 
4031
3996
  /**
@@ -4105,8 +4070,8 @@ let MapToolComponent = class MapToolComponent {
4105
4070
  this.cdr.detectChanges();
4106
4071
  });
4107
4072
  }
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", "map", "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 });
4073
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4074
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.19", 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
4075
  };
4111
4076
  MapToolComponent = __decorate([
4112
4077
  ToolComponent({
@@ -4116,7 +4081,7 @@ MapToolComponent = __decorate([
4116
4081
  }),
4117
4082
  __metadata("design:paramtypes", [])
4118
4083
  ], MapToolComponent);
4119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapToolComponent, decorators: [{
4084
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapToolComponent, decorators: [{
4120
4085
  type: Component,
4121
4086
  args: [{ selector: 'igo-map-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4122
4087
  MatTabsModule,
@@ -4144,40 +4109,21 @@ let MapToolsComponent = class MapToolsComponent {
4144
4109
  configService = inject(ConfigService);
4145
4110
  mediaService = inject(MediaService);
4146
4111
  cdr = inject(ChangeDetectorRef);
4147
- isDesktop;
4112
+ isDesktop = false;
4148
4113
  layers$ = new BehaviorSubject([]);
4149
4114
  showAllLegendsValue$ = new BehaviorSubject(false);
4150
4115
  resolution$$;
4151
4116
  visibleOrInRangeLayers$$;
4152
- delayedShowEmptyMapContent = false;
4153
4117
  allowShowAllLegends = input(false, ...(ngDevMode ? [{ debugName: "allowShowAllLegends" }] : /* istanbul ignore next */ []));
4154
4118
  showAllLegendsValue = input(false, ...(ngDevMode ? [{ debugName: "showAllLegendsValue" }] : /* istanbul ignore next */ []));
4155
4119
  toggleLegendOnVisibilityChange = input(false, ...(ngDevMode ? [{ debugName: "toggleLegendOnVisibilityChange" }] : /* istanbul ignore next */ []));
4156
4120
  expandLegendOfVisibleLayers = input(false, ...(ngDevMode ? [{ debugName: "expandLegendOfVisibleLayers" }] : /* istanbul ignore next */ []));
4157
4121
  updateLegendOnResolutionChange = input(false, ...(ngDevMode ? [{ debugName: "updateLegendOnResolutionChange" }] : /* istanbul ignore next */ []));
4158
- selectedTabAtOpening = input(undefined, ...(ngDevMode ? [{ debugName: "selectedTabAtOpening" }] : /* istanbul ignore next */ []));
4122
+ selectedTabAtOpening = input(...(ngDevMode ? [undefined, { debugName: "selectedTabAtOpening" }] : /* istanbul ignore next */ []));
4159
4123
  ogcButton = input(true, ...(ngDevMode ? [{ debugName: "ogcButton" }] : /* istanbul ignore next */ []));
4160
4124
  timeButton = input(true, ...(ngDevMode ? [{ debugName: "timeButton" }] : /* istanbul ignore next */ []));
4161
4125
  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 = {};
4126
+ layerListControls = input({}, { ...(ngDevMode ? { debugName: "layerListControls" } : /* istanbul ignore next */ {}), transform: (value) => this.transformLayerListControls(value) });
4181
4127
  get map() {
4182
4128
  return this.mapState.map;
4183
4129
  }
@@ -4189,13 +4135,13 @@ let MapToolsComponent = class MapToolsComponent {
4189
4135
  return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible)));
4190
4136
  }
4191
4137
  get excludeBaseLayers() {
4192
- return this.layerListControls.excludeBaseLayers || false;
4138
+ return this.layerListControls().excludeBaseLayers || false;
4193
4139
  }
4194
4140
  get layerFilterAndSortOptions() {
4195
4141
  const filterSortOptions = Object.assign({
4196
4142
  showToolbar: LayerListControlsEnum.default
4197
- }, this.layerListControls);
4198
- switch (this.layerListControls.showToolbar) {
4143
+ }, this.layerListControls());
4144
+ switch (this.layerListControls().showToolbar) {
4199
4145
  case LayerListControlsEnum.always:
4200
4146
  filterSortOptions.showToolbar = LayerListControlsEnum.always;
4201
4147
  break;
@@ -4258,14 +4204,10 @@ let MapToolsComponent = class MapToolsComponent {
4258
4204
  else {
4259
4205
  this.showAllLegendsValue$.next(false);
4260
4206
  }
4261
- // prevent message to be shown too quickly. Waiting for layers
4262
- setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
4263
4207
  }
4264
4208
  ngOnDestroy() {
4265
- this.resolution$$.unsubscribe();
4266
- if (this.visibleOrInRangeLayers$$) {
4267
- this.visibleOrInRangeLayers$$.unsubscribe();
4268
- }
4209
+ this.resolution$$?.unsubscribe();
4210
+ this.visibleOrInRangeLayers$$?.unsubscribe();
4269
4211
  }
4270
4212
  onShowAllLegends(event) {
4271
4213
  this.mapState.showAllLegendsValue = event;
@@ -4290,7 +4232,9 @@ let MapToolsComponent = class MapToolsComponent {
4290
4232
  this.layers$.next(this.map.layerController.all);
4291
4233
  }
4292
4234
  onLayerListChange(appliedFilters) {
4293
- this.layerListToolState.setKeyword(appliedFilters.keyword);
4235
+ if (appliedFilters.keyword !== undefined) {
4236
+ this.layerListToolState.setKeyword(appliedFilters.keyword);
4237
+ }
4294
4238
  this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
4295
4239
  this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
4296
4240
  }
@@ -4338,10 +4282,16 @@ let MapToolsComponent = class MapToolsComponent {
4338
4282
  this.toolState.toolbox.activateTool('contextManager');
4339
4283
  }
4340
4284
  isTimeFilterButton(layer) {
4285
+ if (!layer.dataSource)
4286
+ return false;
4287
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4341
4288
  const options = layer.dataSource.options;
4342
4289
  return this.timeButton() && options.timeFilterable && options.timeFilter;
4343
4290
  }
4344
4291
  isOGCFilterButton(layer) {
4292
+ if (!layer.dataSource)
4293
+ return false;
4294
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4345
4295
  const options = layer.dataSource.options;
4346
4296
  return (this.ogcButton() &&
4347
4297
  options.ogcFilters &&
@@ -4364,10 +4314,8 @@ let MapToolsComponent = class MapToolsComponent {
4364
4314
  return false;
4365
4315
  }
4366
4316
  isStyleEditButton(layer) {
4367
- if (layer instanceof VectorLayer) {
4368
- if (layer.options?.igoStyle?.editable) {
4369
- return true;
4370
- }
4317
+ if (layer instanceof VectorLayer || layer instanceof VectorTileLayer) {
4318
+ return layer.visible && isOlFlatStyleLike(layer.style);
4371
4319
  }
4372
4320
  return false;
4373
4321
  }
@@ -4377,8 +4325,26 @@ let MapToolsComponent = class MapToolsComponent {
4377
4325
  this.cdr.detectChanges();
4378
4326
  });
4379
4327
  }
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", "map", "color", "header"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["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 });
4328
+ transformLayerListControls(value) {
4329
+ if (!value) {
4330
+ return {};
4331
+ }
4332
+ const stateOptions = this.layerListToolState.getLayerListControls();
4333
+ const stateKeyword = stateOptions.keyword;
4334
+ const stateOnlyVisible = stateOptions.onlyVisible;
4335
+ const stateSortAlpha = stateOptions.sortAlpha;
4336
+ value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
4337
+ value.onlyVisible =
4338
+ stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
4339
+ value.sortAlpha =
4340
+ stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
4341
+ value.onlyVisible =
4342
+ value.onlyVisible === undefined ? false : value.onlyVisible;
4343
+ value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
4344
+ return value;
4345
+ }
4346
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapToolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4347
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
4348
  };
4383
4349
  MapToolsComponent = __decorate([
4384
4350
  ToolComponent({
@@ -4388,7 +4354,7 @@ MapToolsComponent = __decorate([
4388
4354
  }),
4389
4355
  __metadata("design:paramtypes", [])
4390
4356
  ], MapToolsComponent);
4391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MapToolsComponent, decorators: [{
4357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MapToolsComponent, decorators: [{
4392
4358
  type: Component,
4393
4359
  args: [{ selector: 'igo-map-tools', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4394
4360
  MatTabsModule,
@@ -4407,10 +4373,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4407
4373
  MatIconModule,
4408
4374
  AsyncPipe,
4409
4375
  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 }] }] } });
4376
+ ], 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"] }]
4377
+ }], 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
4378
 
4415
4379
  /**
4416
4380
  * @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set
@@ -4422,8 +4386,8 @@ class IgoAppMapModule {
4422
4386
  providers: []
4423
4387
  };
4424
4388
  }
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,
4389
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4390
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4427
4391
  MapProximityToolComponent,
4428
4392
  MapToolComponent,
4429
4393
  MapToolsComponent,
@@ -4434,14 +4398,14 @@ class IgoAppMapModule {
4434
4398
  MapToolsComponent,
4435
4399
  MapDetailsToolComponent,
4436
4400
  MapLegendToolComponent] });
4437
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4401
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
4438
4402
  MapProximityToolComponent,
4439
4403
  MapToolComponent,
4440
4404
  MapToolsComponent,
4441
4405
  MapDetailsToolComponent,
4442
4406
  MapLegendToolComponent] });
4443
4407
  }
4444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMapModule, decorators: [{
4408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMapModule, decorators: [{
4445
4409
  type: NgModule,
4446
4410
  args: [{
4447
4411
  imports: [
@@ -4488,10 +4452,10 @@ class MeasureState {
4488
4452
  }
4489
4453
  });
4490
4454
  }
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' });
4455
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MeasureState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4456
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MeasureState, providedIn: 'root' });
4493
4457
  }
4494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasureState, decorators: [{
4458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MeasureState, decorators: [{
4495
4459
  type: Injectable,
4496
4460
  args: [{
4497
4461
  providedIn: 'root'
@@ -4518,8 +4482,8 @@ let MeasurerToolComponent = class MeasurerToolComponent {
4518
4482
  get map() {
4519
4483
  return this.mapState.map;
4520
4484
  }
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 });
4485
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MeasurerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4486
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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
4487
  };
4524
4488
  MeasurerToolComponent = __decorate([
4525
4489
  ToolComponent({
@@ -4528,7 +4492,7 @@ MeasurerToolComponent = __decorate([
4528
4492
  icon: 'square_foot'
4529
4493
  })
4530
4494
  ], MeasurerToolComponent);
4531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: MeasurerToolComponent, decorators: [{
4495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: MeasurerToolComponent, decorators: [{
4532
4496
  type: Component,
4533
4497
  args: [{ selector: 'igo-measurer-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MeasurerComponent], template: "<igo-measurer [store]=\"store\" [map]=\"map\" />\n" }]
4534
4498
  }] });
@@ -4537,11 +4501,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4537
4501
  * @deprecated import the MeasurerToolComponent directly
4538
4502
  */
4539
4503
  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] });
4504
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasurerToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4505
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasurerToolModule, imports: [MeasurerToolComponent], exports: [MeasurerToolComponent] });
4506
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasurerToolModule, imports: [MeasurerToolComponent] });
4543
4507
  }
4544
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasurerToolModule, decorators: [{
4508
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasurerToolModule, decorators: [{
4545
4509
  type: NgModule,
4546
4510
  args: [{
4547
4511
  imports: [MeasurerToolComponent],
@@ -4553,11 +4517,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
4553
4517
  * @deprecated import the MeasurerToolComponent directly
4554
4518
  */
4555
4519
  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] });
4520
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4521
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasureModule, exports: [IgoAppMeasurerToolModule] });
4522
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasureModule, imports: [IgoAppMeasurerToolModule] });
4559
4523
  }
4560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppMeasureModule, decorators: [{
4524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppMeasureModule, decorators: [{
4561
4525
  type: NgModule,
4562
4526
  args: [{
4563
4527
  exports: [IgoAppMeasurerToolModule]
@@ -4569,8 +4533,8 @@ let PrintToolComponent = class PrintToolComponent {
4569
4533
  get map() {
4570
4534
  return this.mapState.map;
4571
4535
  }
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"] }] });
4536
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PrintToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4537
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", 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
4538
  };
4575
4539
  PrintToolComponent = __decorate([
4576
4540
  ToolComponent({
@@ -4579,7 +4543,7 @@ PrintToolComponent = __decorate([
4579
4543
  icon: 'print'
4580
4544
  })
4581
4545
  ], PrintToolComponent);
4582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: PrintToolComponent, decorators: [{
4546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PrintToolComponent, decorators: [{
4583
4547
  type: Component,
4584
4548
  args: [{ selector: 'igo-print-tool', imports: [PrintComponent], template: "<igo-print [map]=\"map\" />\n" }]
4585
4549
  }] });
@@ -4594,11 +4558,11 @@ class IgoAppPrintModule {
4594
4558
  providers: []
4595
4559
  };
4596
4560
  }
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] });
4561
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppPrintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4562
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppPrintModule, imports: [PrintToolComponent], exports: [PrintToolComponent] });
4563
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppPrintModule, imports: [PrintToolComponent] });
4600
4564
  }
4601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppPrintModule, decorators: [{
4565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppPrintModule, decorators: [{
4602
4566
  type: NgModule,
4603
4567
  args: [{
4604
4568
  imports: [PrintToolComponent],
@@ -4625,9 +4589,6 @@ class SearchState {
4625
4589
  configService = inject(ConfigService);
4626
4590
  mapState = inject(MapState);
4627
4591
  searchLayerStores = [];
4628
- searchOverlayStyle = {};
4629
- searchOverlayStyleSelection = {};
4630
- searchOverlayStyleFocus = {};
4631
4592
  focusedOrResolution$$;
4632
4593
  selectedOrResolution$$;
4633
4594
  /**
@@ -4650,6 +4611,7 @@ class SearchState {
4650
4611
  * Store that holds the search results
4651
4612
  */
4652
4613
  store = new EntityStore([]);
4614
+ searchOverlayStyle = {};
4653
4615
  /**
4654
4616
  * Search types currently enabled in the search source service
4655
4617
  */
@@ -4659,12 +4621,7 @@ class SearchState {
4659
4621
  .map((source) => source.constructor.type);
4660
4622
  }
4661
4623
  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
- }
4624
+ this.searchOverlayStyle = this.configService.getConfig('searchOverlayStyle', {});
4668
4625
  const searchResultsGeometryEnabled = this.storageService.get('searchResultsGeometryEnabled');
4669
4626
  if (searchResultsGeometryEnabled) {
4670
4627
  this.searchResultsGeometryEnabled$.next(searchResultsGeometryEnabled);
@@ -4676,7 +4633,7 @@ class SearchState {
4676
4633
  if (wksSource) {
4677
4634
  this.workspaceState.store.entities$.subscribe((e) => {
4678
4635
  const searchableWks = e.filter((fw) => fw instanceof FeatureWorkspace &&
4679
- fw.layer.options.workspace.searchIndexEnabled);
4636
+ fw.layer.options.workspace?.searchIndexEnabled);
4680
4637
  this.searchSourceService.setWorkspaces(wksSource, searchableWks);
4681
4638
  });
4682
4639
  }
@@ -4731,7 +4688,9 @@ class SearchState {
4731
4688
  this.searchTerm$.next(searchTerm);
4732
4689
  }
4733
4690
  setSearchType(searchType) {
4734
- this.searchSourceService.enableSourcesByType(searchType);
4691
+ if (searchType) {
4692
+ this.searchSourceService.enableSourcesByType(searchType);
4693
+ }
4735
4694
  this.searchType$.next(searchType);
4736
4695
  }
4737
4696
  setSearchSettingsChange() {
@@ -4744,10 +4703,10 @@ class SearchState {
4744
4703
  this.storageService.set('searchResultsGeometryEnabled', value);
4745
4704
  this.searchResultsGeometryEnabled$.next(value);
4746
4705
  }
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 });
4706
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4707
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchState });
4749
4708
  }
4750
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchState, decorators: [{
4709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchState, decorators: [{
4751
4710
  type: Injectable
4752
4711
  }], ctorParameters: () => [] });
4753
4712
 
@@ -4793,10 +4752,10 @@ class SearchBarBindingDirective {
4793
4752
  this.searchState.setSearchType(searchType);
4794
4753
  }
4795
4754
  }
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 });
4755
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchBarBindingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4756
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.19", type: SearchBarBindingDirective, isStandalone: true, selector: "[igoSearchBarBinding]", host: { listeners: { "searchTermChange": "onSearchTermChange($any($event))", "searchTypeChange": "onSearchTypeChange($any($event))" } }, ngImport: i0 });
4798
4757
  }
4799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchBarBindingDirective, decorators: [{
4758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchBarBindingDirective, decorators: [{
4800
4759
  type: Directive,
4801
4760
  args: [{
4802
4761
  selector: '[igoSearchBarBinding]',
@@ -4824,19 +4783,17 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4824
4783
  * Determine the top panel default state
4825
4784
  */
4826
4785
  topPanelStateDefault = input('expanded', ...(ngDevMode ? [{ debugName: "topPanelStateDefault" }] : /* istanbul ignore next */ []));
4827
- hasFeatureEmphasisOnSelection = false;
4786
+ searchResultsOverlayAll$$;
4828
4787
  saveSearchResultInLayer = false;
4829
- showResultsGeometries$$;
4788
+ searchResultsOverlayFocused;
4789
+ searchResultsOverlaySelected;
4790
+ searchResultsOverlayAll;
4830
4791
  getRoute$$;
4831
- shownResultsGeometries = [];
4832
- shownResultsEmphasisGeometries = [];
4833
- focusedResult$ = new BehaviorSubject(undefined);
4834
4792
  isSelectedResultOutOfView$ = new BehaviorSubject(false);
4835
4793
  isSelectedResultOutOfView$$;
4836
- abstractFocusedResult;
4837
- abstractSelectedResult;
4838
4794
  destroyRef = inject(DestroyRef);
4839
4795
  debouncedEmpty = signal(true, ...(ngDevMode ? [{ debugName: "debouncedEmpty" }] : /* istanbul ignore next */ []));
4796
+ searchResult = viewChild(SearchResultsComponent, ...(ngDevMode ? [{ debugName: "searchResult" }] : /* istanbul ignore next */ []));
4840
4797
  /**
4841
4798
  * Store holding the search results
4842
4799
  * @internal
@@ -4857,15 +4814,9 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4857
4814
  feature = signal(undefined, ...(ngDevMode ? [{ debugName: "feature" }] : /* istanbul ignore next */ []));
4858
4815
  term = '';
4859
4816
  searchTerm$$;
4860
- settingsChange$ = new BehaviorSubject(undefined);
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
- }
4817
+ topPanelState = input(...(ngDevMode ? [undefined, { debugName: "topPanelState" }] : /* istanbul ignore next */ []));
4818
+ topPanelStateValue = linkedSignal({ ...(ngDevMode ? { debugName: "topPanelStateValue" } : /* istanbul ignore next */ {}), source: this.topPanelState,
4819
+ computation: (v, previous) => v ?? previous?.value ?? 'initial' });
4869
4820
  get termSplitter() {
4870
4821
  return this.searchState.searchTermSplitter$.value;
4871
4822
  }
@@ -4875,10 +4826,29 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4875
4826
  }
4876
4827
  constructor() {
4877
4828
  const configService = inject(ConfigService);
4878
- this.hasFeatureEmphasisOnSelection = configService.getConfig('hasFeatureEmphasisOnSelection');
4879
4829
  this.saveSearchResultInLayer = configService.getConfig('saveSearchResultInLayer');
4830
+ this.handleShowAllResults();
4831
+ effect(() => {
4832
+ this.topPanelStateValue(); // re-run on state change
4833
+ const igoList = this.computeElementRef()[0];
4834
+ const selected = this.computeElementRef()[1];
4835
+ if (selected) {
4836
+ setTimeout(() => {
4837
+ // To be sure the flexible component has been displayed yet
4838
+ if (!this.isScrolledIntoView(igoList, selected)) {
4839
+ this.adjustTopPanel(igoList, selected);
4840
+ }
4841
+ }, FlexibleComponent.transitionTime + 50);
4842
+ }
4843
+ });
4880
4844
  }
4881
4845
  ngOnInit() {
4846
+ this.searchResultsOverlayFocused = new Overlay(this.mapState.map, this.searchState.searchOverlayStyle?.focus ??
4847
+ styleVariant(this.mapState.map.viewController, 'focus'));
4848
+ this.searchResultsOverlaySelected = new Overlay(this.mapState.map, this.searchState.searchOverlayStyle?.selection ??
4849
+ styleVariant(this.mapState.map.viewController, 'selection'));
4850
+ this.searchResultsOverlayAll = new Overlay(this.mapState.map, this.searchState.searchOverlayStyle?.base ??
4851
+ styleVariant(this.mapState.map.viewController));
4882
4852
  this.searchTerm$$ = this.searchState.searchTerm$.subscribe((searchTerm) => {
4883
4853
  if (searchTerm !== undefined &&
4884
4854
  searchTerm !== null &&
@@ -4892,70 +4862,13 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4892
4862
  });
4893
4863
  for (const res of this.store.stateView.all$().value) {
4894
4864
  if (this.store.state.get(res.entity).selected === true) {
4895
- this.topPanelState = 'expanded';
4865
+ this.topPanelStateValue.set('expanded');
4896
4866
  }
4897
4867
  }
4898
4868
  this.searchState.searchSettingsChange$.subscribe(() => {
4899
- this.settingsChange$.next(true);
4869
+ this.searchResult()?.resetPage();
4900
4870
  });
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
4871
  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
4872
  this.store.stateView.empty$
4960
4873
  .pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef))
4961
4874
  .subscribe((empty) => this.debouncedEmpty.set(empty));
@@ -4967,6 +4880,25 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4967
4880
  this.feature.set(feature);
4968
4881
  });
4969
4882
  }
4883
+ handleShowAllResults() {
4884
+ this.searchResultsOverlayAll$$ = combineLatest([
4885
+ this.store.entities$,
4886
+ this.searchState.searchResultsGeometryEnabled$
4887
+ ]).subscribe((bunch) => {
4888
+ const searchResults = bunch[0];
4889
+ const enabled = bunch[1];
4890
+ const features = searchResults
4891
+ .filter((sr) => sr.meta.dataType === FEATURE)
4892
+ .map((sr) => sr.data);
4893
+ if (enabled && features.length) {
4894
+ this.searchResultsOverlayAll.setFeatures(features, FeatureMotion.None);
4895
+ }
4896
+ else {
4897
+ this.searchResultsOverlayFocused?.clear();
4898
+ this.searchResultsOverlayAll?.clear();
4899
+ }
4900
+ });
4901
+ }
4970
4902
  monitorResultOutOfView() {
4971
4903
  this.isSelectedResultOutOfView$$ = combineLatest([
4972
4904
  this.map.viewController.state$,
@@ -4980,84 +4912,19 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
4980
4912
  return;
4981
4913
  }
4982
4914
  if (selectedResult.data.geometry) {
4983
- const selectedOlFeature = featureToOl(selectedResult.data, this.map.projection);
4915
+ const selectedOlFeature = featureToOl(selectedResult.data, this.map.projectionCode);
4984
4916
  const selectedOlFeatureExtent = computeOlFeaturesExtent([selectedOlFeature], this.map.viewController.getOlProjection());
4985
- this.isSelectedResultOutOfView$.next(featuresAreOutOfView(this.map.getExtent(), selectedOlFeatureExtent));
4917
+ this.isSelectedResultOutOfView$.next(featuresAreOutOfView(this.map.viewController.getExtent(), selectedOlFeatureExtent));
4986
4918
  }
4987
4919
  });
4988
4920
  }
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
4921
  ngOnDestroy() {
5054
- this.topPanelState$$.unsubscribe();
5055
4922
  this.searchTerm$$.unsubscribe();
5056
4923
  if (this.isSelectedResultOutOfView$$) {
5057
4924
  this.isSelectedResultOutOfView$$.unsubscribe();
5058
4925
  }
5059
- if (this.showResultsGeometries$$) {
5060
- this.showResultsGeometries$$.unsubscribe();
4926
+ if (this.searchResultsOverlayAll$$) {
4927
+ this.searchResultsOverlayAll$$.unsubscribe();
5061
4928
  }
5062
4929
  if (this.getRoute$$) {
5063
4930
  this.getRoute$$.unsubscribe();
@@ -5069,31 +4936,17 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5069
4936
  * @param result A search result that could be a feature
5070
4937
  */
5071
4938
  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);
4939
+ if (this.store.state.get(result).selected) {
4940
+ this.searchResultsOverlayFocused.clear();
4941
+ }
4942
+ else {
4943
+ this.addResultToOverlay(result, this.searchResultsOverlayFocused, this.searchState.featureMotion.focus);
5081
4944
  }
5082
4945
  }
5083
4946
  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;
4947
+ if (!this.store.state.get(result).selected) {
4948
+ this.searchResultsOverlayFocused.clear();
5095
4949
  }
5096
- this.map.searchResultsOverlay.removeFeature(result.data);
5097
4950
  }
5098
4951
  /**
5099
4952
  * Try to add a feature to the map when it's being selected
@@ -5101,18 +4954,19 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5101
4954
  * @param result A search result that could be a feature or some layer options
5102
4955
  */
5103
4956
  onResultSelect(result) {
5104
- this.map.searchResultsOverlay.dataSource.ol.clear();
5105
- this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);
4957
+ this.searchResultsOverlayFocused.clear();
4958
+ this.searchResultsOverlaySelected.clear();
4959
+ this.addResultToOverlay(result, this.searchResultsOverlaySelected, this.searchState.featureMotion.selected);
5106
4960
  this.searchState.setSelectedResult(result);
5107
- if (this.topPanelState === 'initial') {
4961
+ if (this.topPanelStateValue() === 'initial') {
5108
4962
  if (this.topPanelStateDefault() !== 'collapsed') {
5109
- this.topPanelState = 'expanded';
4963
+ this.topPanelStateValue.set('expanded');
5110
4964
  }
5111
4965
  else {
5112
- this.topPanelState = 'collapsed';
4966
+ this.topPanelStateValue.set('collapsed');
5113
4967
  }
5114
4968
  }
5115
- if (this.topPanelState === 'expanded') {
4969
+ if (this.topPanelStateValue() === 'expanded') {
5116
4970
  const igoList = this.computeElementRef()[0];
5117
4971
  const selected = this.computeElementRef()[1];
5118
4972
  if (!this.isScrolledIntoView(igoList, selected)) {
@@ -5174,10 +5028,10 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5174
5028
  }
5175
5029
  adjustTopPanel(elemSource, elem) {
5176
5030
  if (!this.isScrolledIntoView(elemSource, elem)) {
5031
+ const firstChild = elem.children[0];
5032
+ const childHeight = firstChild instanceof HTMLElement ? firstChild.offsetHeight : 0;
5177
5033
  elemSource.scrollTop =
5178
- elem.offsetTop +
5179
- elem.children[0].offsetHeight -
5180
- elemSource.clientHeight;
5034
+ elem.offsetTop + childHeight - elemSource.clientHeight;
5181
5035
  }
5182
5036
  }
5183
5037
  toggleTopPanel(event) {
@@ -5185,11 +5039,11 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5185
5039
  return;
5186
5040
  }
5187
5041
  else {
5188
- if (this.topPanelState === 'expanded') {
5189
- this.topPanelState = 'collapsed';
5042
+ if (this.topPanelStateValue() === 'expanded') {
5043
+ this.topPanelStateValue.set('collapsed');
5190
5044
  }
5191
5045
  else {
5192
- this.topPanelState = 'expanded';
5046
+ this.topPanelStateValue.set('expanded');
5193
5047
  }
5194
5048
  }
5195
5049
  }
@@ -5208,17 +5062,19 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5208
5062
  * @param result A search result that could be a feature
5209
5063
  * @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay
5210
5064
  */
5211
- tryAddFeatureToMap(result, motion = FeatureMotion.Default) {
5065
+ addResultToOverlay(result, overlay, motion = FeatureMotion.Default) {
5212
5066
  if (result.meta.dataType !== FEATURE) {
5213
5067
  return undefined;
5214
5068
  }
5215
5069
  const feature = result.data;
5216
- // Somethimes features have no geometry. It happens with some GetFeatureInfo
5070
+ // Sometimes features have no geometry. It happens with some GetFeatureInfo
5217
5071
  if (!feature.geometry) {
5218
5072
  return;
5219
5073
  }
5220
- feature.meta.style = getCommonVectorSelectedStyle(Object.assign({}, { feature }, this.searchState.searchOverlayStyleSelection, result.style?.selection ? result.style.selection : {}));
5221
- this.map.searchResultsOverlay.addFeature(feature, motion);
5074
+ if (!feature.meta) {
5075
+ return;
5076
+ }
5077
+ overlay.setFeatures([feature], motion);
5222
5078
  }
5223
5079
  isScrolledIntoView(elemSource, elem) {
5224
5080
  const padding = 6;
@@ -5261,9 +5117,11 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5261
5117
  ];
5262
5118
  }
5263
5119
  }
5264
- stop.text = this.featureTitle;
5265
- stop.coordinates = coord;
5266
- this.directionState.stopsStore.update(stop);
5120
+ if (stop) {
5121
+ stop.text = this.featureTitle ?? '';
5122
+ stop.coordinates = coord;
5123
+ this.directionState.stopsStore.update(stop);
5124
+ }
5267
5125
  if (this.map.geolocationController.position$.value) {
5268
5126
  const currentPos = this.map.geolocationController.position$.value;
5269
5127
  const stop = this.directionState.stopsStore
@@ -5271,16 +5129,18 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
5271
5129
  .find((e) => e.position === 0);
5272
5130
  const currentCoord = olProj.transform(currentPos.position, currentPos.projection, 'EPSG:4326');
5273
5131
  const coord = roundCoordTo([currentCoord[0], currentCoord[1]], 6);
5274
- stop.text = coord.join(',');
5275
- stop.coordinates = coord;
5276
- this.directionState.stopsStore.update(stop);
5132
+ if (stop) {
5133
+ stop.text = coord.join(',');
5134
+ stop.coordinates = coord;
5135
+ this.directionState.stopsStore.update(stop);
5136
+ }
5277
5137
  }
5278
5138
  }
5279
5139
  });
5280
5140
  }, 250);
5281
5141
  }
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 } }, 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 [settingsChange$]=\"settingsChange$\"\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", "settingsChange$", "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 });
5142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchResultsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", 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
5144
  };
5285
5145
  SearchResultsToolComponent = __decorate([
5286
5146
  ToolComponent({
@@ -5290,7 +5150,7 @@ SearchResultsToolComponent = __decorate([
5290
5150
  }),
5291
5151
  __metadata("design:paramtypes", [])
5292
5152
  ], SearchResultsToolComponent);
5293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: SearchResultsToolComponent, decorators: [{
5153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: SearchResultsToolComponent, decorators: [{
5294
5154
  type: Component,
5295
5155
  args: [{ selector: 'igo-search-results-tool', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
5296
5156
  FlexibleComponent,
@@ -5305,20 +5165,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5305
5165
  AsyncPipe,
5306
5166
  IgoLanguageModule,
5307
5167
  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 [settingsChange$]=\"settingsChange$\"\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 }] }], topPanelState: [{
5310
- type: Input
5311
- }] } });
5168
+ ], 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"] }]
5169
+ }], 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
5170
 
5313
5171
  /**
5314
5172
  * @deprecated import the components/directive directly or INTEGRATION_SEARCH_DIRECTIVES for the set
5315
5173
  */
5316
5174
  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] });
5175
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5176
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchModule, imports: [SearchBarBindingDirective, SearchResultsToolComponent], exports: [SearchBarBindingDirective, SearchResultsToolComponent] });
5177
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchModule, imports: [SearchResultsToolComponent] });
5320
5178
  }
5321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchModule, decorators: [{
5179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchModule, decorators: [{
5322
5180
  type: NgModule,
5323
5181
  args: [{
5324
5182
  imports: [SearchBarBindingDirective, SearchResultsToolComponent],
@@ -5330,11 +5188,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5330
5188
  * @deprecated import the WorkspaceButtonComponent directly
5331
5189
  */
5332
5190
  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] });
5191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppWorkspaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5192
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent], exports: [WorkspaceButtonComponent] });
5193
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent] });
5336
5194
  }
5337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppWorkspaceModule, decorators: [{
5195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppWorkspaceModule, decorators: [{
5338
5196
  type: NgModule,
5339
5197
  args: [{
5340
5198
  imports: [WorkspaceButtonComponent],
@@ -5346,8 +5204,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5346
5204
  * @deprecated import the components directly
5347
5205
  */
5348
5206
  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,
5207
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoIntegrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5208
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoIntegrationModule, exports: [IgoAppContextModule,
5351
5209
  IgoAppCatalogModule,
5352
5210
  IgoAppDirectionsModule,
5353
5211
  IgoAppDrawModule,
@@ -5360,7 +5218,7 @@ class IgoIntegrationModule {
5360
5218
  IgoAppFilterModule,
5361
5219
  IgoAppAboutModule,
5362
5220
  IgoAppGeometryFormModule] });
5363
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoIntegrationModule, imports: [IgoAppContextModule,
5221
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoIntegrationModule, imports: [IgoAppContextModule,
5364
5222
  IgoAppCatalogModule,
5365
5223
  IgoAppDirectionsModule,
5366
5224
  IgoAppDrawModule,
@@ -5374,7 +5232,7 @@ class IgoIntegrationModule {
5374
5232
  IgoAppAboutModule,
5375
5233
  IgoAppGeometryFormModule] });
5376
5234
  }
5377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoIntegrationModule, decorators: [{
5235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoIntegrationModule, decorators: [{
5378
5236
  type: NgModule,
5379
5237
  args: [{
5380
5238
  imports: [],
@@ -5428,7 +5286,8 @@ class AnalyticsListenerService {
5428
5286
  listenContext() {
5429
5287
  this.contextState.context$.subscribe((context) => {
5430
5288
  if (context) {
5431
- this.analyticsService.trackEvent('context', 'activateContext', context.id?.toString() || context.uri);
5289
+ const eventName = context.id?.toString() ?? context.uri;
5290
+ this.analyticsService.trackEvent('context', 'activateContext', eventName);
5432
5291
  }
5433
5292
  });
5434
5293
  }
@@ -5498,14 +5357,15 @@ class AnalyticsListenerService {
5498
5357
  break;
5499
5358
  }
5500
5359
  }
5501
- this.analyticsService.trackLayer('layer', 'addLayer', wmsParams || wmtsParams || restParams);
5360
+ const eventName = wmsParams || wmtsParams || restParams;
5361
+ this.analyticsService.trackLayer('layer', 'addLayer', eventName);
5502
5362
  });
5503
5363
  });
5504
5364
  }
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' });
5365
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AnalyticsListenerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5366
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AnalyticsListenerService, providedIn: 'root' });
5507
5367
  }
5508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AnalyticsListenerService, decorators: [{
5368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: AnalyticsListenerService, decorators: [{
5509
5369
  type: Injectable,
5510
5370
  args: [{
5511
5371
  providedIn: 'root'
@@ -5533,22 +5393,15 @@ class QueryState {
5533
5393
  */
5534
5394
  store = new EntityStore([]);
5535
5395
  queryOverlayStyle = {};
5536
- queryOverlayStyleSelection = {};
5537
- queryOverlayStyleFocus = {};
5538
5396
  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
- }
5397
+ this.queryOverlayStyle = this.configService.getConfig('queryOverlayStyle', {});
5545
5398
  const geoPropertiesStrategy = new GeoPropertiesStrategy({ map: this.mapState.map }, this.propertyTypeDetectorService, this.capabilitiesService);
5546
5399
  this.store.addStrategy(geoPropertiesStrategy, true);
5547
5400
  }
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' });
5401
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QueryState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5402
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QueryState, providedIn: 'root' });
5550
5403
  }
5551
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: QueryState, decorators: [{
5404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QueryState, decorators: [{
5552
5405
  type: Injectable,
5553
5406
  args: [{
5554
5407
  providedIn: 'root'
@@ -5559,11 +5412,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5559
5412
  * @deprecated import the SearchResultsToolComponent directly
5560
5413
  */
5561
5414
  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] });
5415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchResultsToolModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5416
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchResultsToolModule, imports: [SearchResultsToolComponent], exports: [SearchResultsToolComponent] });
5417
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchResultsToolModule, imports: [SearchResultsToolComponent] });
5565
5418
  }
5566
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchResultsToolModule, decorators: [{
5419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchResultsToolModule, decorators: [{
5567
5420
  type: NgModule,
5568
5421
  args: [{
5569
5422
  imports: [SearchResultsToolComponent],
@@ -5575,11 +5428,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
5575
5428
  * @deprecated import the SearchBarBindingDirective directly
5576
5429
  */
5577
5430
  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 });
5431
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5432
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchBarModule, imports: [SearchBarBindingDirective], exports: [SearchBarBindingDirective] });
5433
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchBarModule });
5581
5434
  }
5582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: IgoAppSearchBarModule, decorators: [{
5435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: IgoAppSearchBarModule, decorators: [{
5583
5436
  type: NgModule,
5584
5437
  args: [{
5585
5438
  imports: [SearchBarBindingDirective],