@igo2/integration 20.1.0-next.1 → 20.1.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igo2-integration.mjs +229 -227
- package/fesm2022/igo2-integration.mjs.map +1 -1
- package/index.d.ts +11 -9
- package/locale/en.integration.json +1 -1
- package/locale/fr.integration.json +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-integration.mjs","sources":["../../../packages/integration/src/lib/about/about-tool/about-tool.component.ts","../../../packages/integration/src/lib/about/about-tool/about-tool.component.html","../../../packages/integration/src/lib/about/about.module.ts","../../../packages/integration/src/lib/map/map.state.ts","../../../packages/integration/src/lib/catalog/catalog.state.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.ts","../../../packages/integration/src/lib/import-export/import-export.state.ts","../../../packages/integration/src/lib/tool/tool.state.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.utils.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.module.ts","../../../packages/integration/src/lib/catalog/catalog.module.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.html","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.html","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.html","../../../packages/integration/src/lib/map/layer-list-tool.state.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.html","../../../packages/integration/src/lib/context/context.directive.ts","../../../packages/integration/src/lib/context/context.module.ts","../../../packages/integration/src/lib/context/context.state.ts","../../../packages/integration/src/lib/directions/directions.state.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.html","../../../packages/integration/src/lib/directions/directions.module.ts","../../../packages/integration/src/lib/draw/draw.state.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.html","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.module.ts","../../../packages/integration/src/lib/draw/draw.module.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.html","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.html","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.html","../../../packages/integration/src/lib/storage/storage.state.ts","../../../packages/integration/src/lib/workspace/shared/workspace.utils.ts","../../../packages/integration/src/lib/workspace/shared/edition-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/feature-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/wfs-actions.service.ts","../../../packages/integration/src/lib/workspace/workspace.state.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.html","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.html","../../../packages/integration/src/lib/filter/filter.module.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.html","../../../packages/integration/src/lib/geometry-form/geometry-form.module.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.html","../../../packages/integration/src/lib/import-export/import-export.module.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.html","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.ts","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.html","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.ts","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.html","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.ts","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.html","../../../packages/integration/src/lib/map/map-proximity.state.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.html","../../../packages/integration/src/lib/map/map-tool/map-tool.component.ts","../../../packages/integration/src/lib/map/map-tool/map-tool.component.html","../../../packages/integration/src/lib/map/map-tools/map-tools.component.ts","../../../packages/integration/src/lib/map/map-tools/map-tools.component.html","../../../packages/integration/src/lib/map/map.module.ts","../../../packages/integration/src/lib/measure/measure.state.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.html","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.module.ts","../../../packages/integration/src/lib/measure/measure.module.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.html","../../../packages/integration/src/lib/print/print.module.ts","../../../packages/integration/src/lib/map/map.directive.ts","../../../packages/integration/src/lib/search/search.state.ts","../../../packages/integration/src/lib/search/search-bar/search-bar-binding.directive.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.html","../../../packages/integration/src/lib/search/search.module.ts","../../../packages/integration/src/lib/workspace/workspace.module.ts","../../../packages/integration/src/lib/integration.module.ts","../../../packages/integration/src/lib/analytics/analytics-listener.service.ts","../../../packages/integration/src/lib/filter/index.ts","../../../packages/integration/src/lib/search/query.state.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.module.ts","../../../packages/integration/src/lib/search/search-bar/search-bar.module.ts","../../../packages/integration/src/public_api.ts","../../../packages/integration/src/igo2-integration.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n inject,\n model\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport { CustomHtmlComponent } from '@igo2/common/custom-html';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService, version } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { of } from 'rxjs';\nimport type { Observable } from 'rxjs';\n\nimport { AllEnvironmentOptions } from '../../environment';\n\n@ToolComponent({\n name: 'about',\n title: 'igo.integration.tools.about',\n icon: 'help'\n})\n@Component({\n selector: 'igo-about-tool',\n templateUrl: './about-tool.component.html',\n styleUrls: ['./about-tool.component.scss'],\n imports: [\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n MatMenuModule,\n CustomHtmlComponent,\n IgoLanguageModule\n ]\n})\nexport class AboutToolComponent implements OnInit {\n configService = inject(ConfigService);\n auth = inject(AuthService);\n private http = inject(HttpClient);\n private cdRef = inject(ChangeDetectorRef);\n private languageService = inject(LanguageService);\n\n private configOptions: AllEnvironmentOptions;\n @Input()\n get headerHtml() {\n return this._headerHtml;\n }\n set headerHtml(value: string) {\n this._headerHtml = Array.isArray(value) ? value.join('\\n') : value;\n }\n\n @Input()\n get html() {\n return this._html;\n }\n set html(value: string) {\n this._html = Array.isArray(value) ? value.join('\\n') : value;\n }\n private _discoverTitleInLocale = 'IGO';\n public discoverTitleInLocale$: Observable<string> = of(\n this._discoverTitleInLocale\n );\n\n @Input()\n get discoverTitleInLocale() {\n return this._discoverTitleInLocale;\n }\n set discoverTitleInLocale(value: string) {\n this._discoverTitleInLocale = value;\n this.discoverTitleInLocale$ = of(value);\n }\n\n readonly trainingGuideURLs = model(undefined);\n\n public effectiveVersion: string;\n private _html = 'igo.integration.aboutTool.html';\n private _headerHtml: string;\n\n private baseUrlProfil;\n private baseUrlGuide;\n\n public loading = false;\n\n constructor() {\n this.headerHtml = this.languageService.translate.instant(\n 'igo.integration.aboutTool.headerHtml'\n );\n this.configOptions = this.configService.getConfigs();\n const configVersion = this.configOptions.version;\n this.effectiveVersion =\n configVersion?.app || configVersion?.lib || version.lib;\n this.baseUrlProfil = this.configOptions.storage?.url;\n this.baseUrlGuide =\n this.configOptions.depot?.url +\n // todo validate this property\n (this.configOptions.depot as any)?.guideUrl;\n }\n\n ngOnInit() {\n if (this.auth.authenticated && this.configOptions.context?.url) {\n this.http.get(this.baseUrlProfil).subscribe((profil) => {\n const recast = profil as any;\n this.trainingGuideURLs.set(recast.guides);\n this.cdRef.detectChanges();\n });\n } else if (\n this.auth.authenticated &&\n !this.configOptions.context?.url &&\n this.configOptions.depot?.trainingGuides\n ) {\n this.trainingGuideURLs.set(this.configOptions.depot?.trainingGuides);\n }\n }\n\n openGuide(guide?) {\n this.loading = true;\n const url = guide\n ? this.baseUrlGuide + guide + '?'\n : this.baseUrlGuide + this.trainingGuideURLs()[0] + '?';\n this.http\n .get(url, {\n responseType: 'blob'\n })\n .subscribe(() => {\n this.loading = false;\n window.open(url, '_blank');\n this.cdRef.detectChanges();\n });\n }\n\n formatFileName(name: string) {\n name = name.split('_').join(' ');\n const index = name.indexOf('.');\n name = name.slice(0, index);\n return name;\n }\n}\n","@if (\n auth.authenticated && trainingGuideURLs() && trainingGuideURLs().length === 1\n) {\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 <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (\n auth.authenticated && trainingGuideURLs() && trainingGuideURLs().length > 1\n) {\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 <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\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","import {\n CUSTOM_ELEMENTS_SCHEMA,\n ModuleWithProviders,\n NgModule\n} from '@angular/core';\n\nimport { AboutToolComponent } from './about-tool/about-tool.component';\n\n/**\n * @deprecated import the AboutToolComponent directly\n */\n@NgModule({\n imports: [AboutToolComponent],\n exports: [AboutToolComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgoAppAboutModule {\n static forRoot(): ModuleWithProviders<IgoAppAboutModule> {\n return {\n ngModule: IgoAppAboutModule,\n providers: []\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { StorageService } from '@igo2/core/storage';\nimport { IgoMap, MapService, ProjectionService } from '@igo2/geo';\n\n/**\n * Service that holds the state of the map module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MapState {\n private mapService = inject(MapService);\n private projectionService = inject(ProjectionService);\n private storageService = inject(StorageService);\n private configService = inject(ConfigService);\n\n get showAllLegendsValue(): boolean {\n return this._legendToolShowAll;\n }\n\n set showAllLegendsValue(value) {\n this._legendToolShowAll = value;\n }\n private _legendToolShowAll: boolean;\n\n /**\n * Active map\n */\n get map(): IgoMap {\n return this._map;\n }\n private _map: IgoMap;\n\n constructor() {\n this._map = new IgoMap(\n {\n controls: {\n scaleLine: true,\n attribution: {\n collapsed: true\n }\n }\n },\n this.storageService,\n this.configService\n );\n\n this.mapService.setMap(this.map);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { EntityStore } from '@igo2/common/entity';\nimport { Catalog, CatalogItem } from '@igo2/geo';\n\n/**\n * Service that holds the state of the catalog module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CatalogState {\n /**\n * Store that contains all the catalogs\n */\n get catalogStore(): EntityStore<Catalog> {\n return this._catalogStore;\n }\n private _catalogStore: EntityStore<Catalog>;\n\n /**\n * Catalog -> Catalog items store mapping\n */\n private catalogItemsStores = new Map<string, EntityStore<CatalogItem>>();\n\n constructor() {\n const authService = inject(AuthService);\n\n this._catalogStore = new EntityStore([]);\n\n authService.authenticate$.subscribe(() => {\n this.clearCatalogItemsStores();\n });\n }\n\n /**\n * Get a catalog's items store\n * @param catalog Catalog\n * @returns Store that contains the catalog items\n */\n getCatalogItemsStore(catalog: Catalog): EntityStore<CatalogItem> {\n return this.catalogItemsStores.get(catalog.id as string);\n }\n\n /**\n * Bind a catalog items store to a catalog\n * @param catalog Catalog\n * @param store Catalog items store\n */\n setCatalogItemsStore(catalog: Catalog, store: EntityStore<CatalogItem>) {\n this.catalogItemsStores.set(catalog.id as string, store);\n }\n\n /**\n * Clear all catalog items stores\n */\n clearCatalogItemsStores() {\n this.catalogItemsStores.clear();\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { EntityRecord, EntityStore } from '@igo2/common/entity';\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n Catalog,\n CatalogBrowserComponent,\n CatalogItem,\n CatalogItemState,\n CatalogService,\n IgoMap\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { MapState } from '../../map/map.state';\nimport { CatalogState } from '../catalog.state';\n\n/**\n * Tool to browse a catalog's groups and layers and display them to a map.\n */\n@ToolComponent({\n name: 'catalogBrowser',\n title: 'igo.integration.tools.catalog',\n parent: 'catalog'\n})\n@Component({\n selector: 'igo-catalog-browser-tool',\n templateUrl: './catalog-browser-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CatalogBrowserComponent, AsyncPipe]\n})\nexport class CatalogBrowserToolComponent implements OnInit, OnDestroy {\n private catalogService = inject(CatalogService);\n private catalogState = inject(CatalogState);\n private mapState = inject(MapState);\n private authService = inject(AuthService);\n\n catalog: Catalog;\n\n /**\n * Store that contains the catalog items\n * @internal\n */\n store$ = new BehaviorSubject<EntityStore<CatalogItem, CatalogItemState>>(\n undefined\n );\n\n /**\n * Subscription to the selected catalog\n */\n private catalog$$: Subscription;\n\n /**\n * Whether a group can be toggled when it's collapsed\n */\n readonly toggleCollapsedGroup = input(true);\n\n /**\n * Map to add layers to\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n /**\n * @internal\n */\n ngOnInit() {\n const catalogStore = this.catalogState.catalogStore;\n\n const catalog$ = catalogStore.stateView.firstBy$(\n (record: EntityRecord<Catalog>) => record.state.selected === true\n );\n const authenticate$ = this.authService.authenticate$;\n this.catalog$$ = combineLatest([catalog$, authenticate$]).subscribe(\n ([record]) => {\n // Mute an error, that we are not able to replicate where the record is undefined\n if (record === undefined) {\n return;\n }\n const catalog = record.entity;\n this.catalog = catalog;\n this.loadCatalogItems(this.catalog);\n }\n );\n }\n\n /**\n * @internal\n */\n ngOnDestroy() {\n this.catalog$$.unsubscribe();\n }\n\n /**\n * Get the selected catalog's items from the CatalogService and\n * load them into the store.\n * @param catalog Selected catalog\n */\n private loadCatalogItems(catalog: Catalog) {\n let store = this.catalogState.getCatalogItemsStore(catalog);\n if (store !== undefined) {\n this.store$.next(store);\n return;\n }\n\n store = new EntityStore<CatalogItem>([]);\n this.catalogState.setCatalogItemsStore(catalog, store);\n this.catalogService\n .loadCatalogItems(catalog)\n .pipe(take(1))\n .subscribe((items: CatalogItem[]) => {\n store.load(items);\n this.store$.next(store);\n });\n }\n}\n","@if (store$ | async; as store) {\n <igo-catalog-browser\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup()\"\n />\n}\n","import { NgModule } from '@angular/core';\n\nimport { CatalogBrowserToolComponent } from './catalog-browser-tool.component';\n\n/**\n * @deprecated import the CatalogBrowserToolComponent directly\n */\n@NgModule({\n imports: [CatalogBrowserToolComponent],\n exports: [CatalogBrowserToolComponent]\n})\nexport class IgoAppCatalogBrowserToolModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ExportOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\nexport enum ImportExportType {\n layer = 'layer',\n context = 'context'\n}\n\nexport enum ImportExportMode {\n import = 'import',\n export = 'export'\n}\n\n/**\n * Service that holds the state of the importExport module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ImportExportState {\n readonly importExportType$ = new BehaviorSubject<ImportExportType>(\n ImportExportType.layer\n );\n readonly selectedMode$ = new BehaviorSubject<ImportExportMode>(\n ImportExportMode.import\n );\n readonly exportOptions$ = new BehaviorSubject<ExportOptions>(undefined);\n\n setImportExportType(type: ImportExportType) {\n this.importExportType$.next(type);\n }\n\n setMode(mode: ImportExportMode) {\n this.selectedMode$.next(mode);\n }\n\n setsExportOptions(exportOptions: ExportOptions) {\n this.exportOptions$.next(exportOptions);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ToolService, Toolbox } from '@igo2/common/tool';\nimport { ExportOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../import-export/import-export.state';\n\n/**\n * Service that holds the state of the search module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ToolState {\n private toolService = inject(ToolService);\n private importExportState = inject(ImportExportState);\n\n get toolbox(): Toolbox {\n return this.toolService.toolbox;\n }\n\n public openSidenav$ = new BehaviorSubject<boolean>(undefined);\n\n toolToActivateFromOptions(toolToActivate: {\n tool: string;\n options: ExportOptions;\n }) {\n if (!toolToActivate) {\n return;\n }\n if (toolToActivate.tool === 'importExport') {\n let exportOptions: ExportOptions =\n this.importExportState.exportOptions$.value;\n if (!exportOptions) {\n exportOptions = {\n layers: toolToActivate.options.layers,\n featureInMapExtent: toolToActivate.options.featureInMapExtent\n };\n } else {\n exportOptions.layers = toolToActivate.options.layers;\n exportOptions.featureInMapExtent =\n toolToActivate.options.featureInMapExtent;\n }\n this.importExportState.setsExportOptions(exportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n }\n\n if (this.toolbox.getTool(toolToActivate.tool)) {\n this.toolbox.activateTool(toolToActivate.tool);\n this.openSidenav$.next(true);\n }\n }\n}\n","import {\n AnyDataSourceOptions,\n ArcGISRestDataSourceOptions,\n CartoDataSourceOptions,\n ClusterDataSourceOptions,\n FeatureDataSourceOptions,\n MVTDataSourceOptions,\n OSMDataSourceOptions,\n WFSDataSourceOptions,\n WMSDataSourceOptions,\n WMTSDataSourceOptions,\n XYZDataSourceOptions,\n generateIdFromSourceOptions\n} from '@igo2/geo';\n\nimport { InfoFromSourceOptions } from './catalog-library-tool.interface';\n\nexport function getInfoFromSourceOptions(\n sourceOptions: AnyDataSourceOptions,\n context: string\n): InfoFromSourceOptions {\n const value: InfoFromSourceOptions = {\n id: undefined,\n layerName: undefined,\n url: undefined,\n sourceOptions: undefined,\n context\n };\n\n switch (sourceOptions.type) {\n case 'imagearcgisrest':\n case 'arcgisrest':\n case 'tilearcgisrest': {\n const argisSo = sourceOptions as ArcGISRestDataSourceOptions;\n value.layerName = argisSo.layer;\n value.url = argisSo.url;\n value.sourceOptions = argisSo;\n break;\n }\n case 'wmts': {\n const wmtsSo = sourceOptions as WMTSDataSourceOptions;\n value.layerName = wmtsSo.layer;\n value.url = wmtsSo.url;\n value.sourceOptions = wmtsSo;\n break;\n }\n case 'xyz': {\n const xyzSo = sourceOptions as XYZDataSourceOptions;\n value.layerName = '';\n value.url = xyzSo.url;\n value.sourceOptions = xyzSo;\n break;\n }\n case 'wms': {\n const wmsSo = sourceOptions as WMSDataSourceOptions;\n wmsSo.params.LAYERS = wmsSo.params.LAYERS ?? (wmsSo.params as any).layers;\n value.layerName = wmsSo.params.LAYERS;\n\n value.url = wmsSo.url;\n value.sourceOptions = wmsSo;\n break;\n }\n case 'osm': {\n const osmSo = sourceOptions as OSMDataSourceOptions;\n value.layerName = '';\n value.url = osmSo.url\n ? osmSo.url\n : 'https://tile.openstreetmap.org/{z}/{x}/{y}.png';\n value.sourceOptions = osmSo;\n break;\n }\n case 'wfs': {\n const wfsSo = sourceOptions as WFSDataSourceOptions;\n value.layerName = wfsSo.params.featureTypes;\n value.url = wfsSo.url;\n value.sourceOptions = wfsSo;\n break;\n }\n case 'vector': {\n const featureSo = sourceOptions as FeatureDataSourceOptions;\n value.layerName = '';\n value.url = featureSo.url;\n value.sourceOptions = featureSo;\n break;\n }\n case 'cluster': {\n const clusterSo = sourceOptions as ClusterDataSourceOptions;\n value.layerName = '';\n value.url = clusterSo.url;\n value.sourceOptions = clusterSo;\n break;\n }\n case 'mvt': {\n const mvtSo = sourceOptions as MVTDataSourceOptions;\n value.layerName = '';\n value.url = mvtSo.url;\n value.sourceOptions = mvtSo;\n break;\n }\n case 'carto': {\n const cartoSo = sourceOptions as CartoDataSourceOptions;\n value.layerName = cartoSo.config.layers\n .map((layer) => layer.options.sql)\n .join(' ');\n value.url = `https://${cartoSo.account}.carto.com/api/v1/map`;\n value.sourceOptions = cartoSo;\n break;\n }\n default:\n break;\n }\n if (value.sourceOptions) {\n value.id = generateIdFromSourceOptions(value.sourceOptions);\n value.url = value.url?.startsWith('/')\n ? window.location.origin + value.url\n : value.url;\n }\n\n return value;\n}\n","import { formatDate } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EntityStore } from '@igo2/common/entity';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ContextService } from '@igo2/context';\nimport { LanguageService } from '@igo2/core/language';\nimport { StorageScope, StorageService } from '@igo2/core/storage';\nimport {\n Catalog,\n CatalogItemGroup,\n CatalogItemLayer,\n CatalogItemType,\n CatalogLibraryComponent,\n CatalogService,\n isLayerItemOptions\n} from '@igo2/geo';\nimport {\n addExcelSheetToWorkBook,\n createExcelWorkBook,\n writeExcelFile\n} from '@igo2/utils';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, Subscription, combineLatest, forkJoin } from 'rxjs';\nimport { concatAll, map, switchMap, take, toArray } from 'rxjs/operators';\n\nimport { ToolState } from '../../tool/tool.state';\nimport { CatalogState } from '../catalog.state';\nimport {\n InfoFromSourceOptions,\n ListExport\n} from './catalog-library-tool.interface';\nimport { getInfoFromSourceOptions } from './catalog-library-tool.utils';\n\n/**\n * Tool to browse the list of available catalogs.\n */\n@ToolComponent({\n name: 'catalog',\n title: 'igo.integration.tools.catalog',\n icon: 'library_add'\n})\n@Component({\n selector: 'igo-catalog-library-tool',\n templateUrl: './catalog-library-tool.component.html',\n styleUrls: ['./catalog-library-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CatalogLibraryComponent,\n MatButtonModule,\n MatTooltipModule,\n TranslateModule\n ]\n})\nexport class CatalogLibraryToolComponent implements OnInit, OnDestroy {\n private contextService = inject(ContextService);\n private catalogService = inject(CatalogService);\n private catalogState = inject(CatalogState);\n private toolState = inject(ToolState);\n private storageService = inject(StorageService);\n private languageService = inject(LanguageService);\n\n private generatelist$$: Subscription;\n /**\n * Store that contains the catalogs\n * @internal\n */\n get store(): EntityStore<Catalog> {\n return this.catalogState.catalogStore;\n }\n\n /**\n * Determine if the form to add a catalog is allowed\n */\n readonly addCatalogAllowed = input(false);\n\n /**\n * Determine if the export button is shown\n */\n readonly exportButton = input(false);\n\n /**\n * List of predefined catalogs\n */\n readonly predefinedCatalogs = input<Catalog[]>([]);\n\n set selectedCatalogId(id) {\n this.storageService.set('selectedCatalogId', id, StorageScope.SESSION);\n }\n\n get currentTool() {\n return this.toolState.toolbox.getCurrentPreviousToolName()[1];\n }\n\n get lastTool() {\n return this.toolState.toolbox.getCurrentPreviousToolName()[0];\n }\n\n /**\n * @internal\n */\n ngOnInit() {\n if (this.lastTool === 'catalogBrowser' && this.currentTool === 'catalog') {\n this.selectedCatalogId = null;\n }\n\n if (this.store.count === 0) {\n this.loadCatalogs();\n }\n }\n\n ngOnDestroy() {\n this.generatelist$$?.unsubscribe();\n }\n\n /**\n * When the selected catalog changes, toggle the the CatalogBrowser tool.\n * @internal\n * @param event Select event\n */\n onCatalogSelectChange(event: { selected: boolean; catalog: Catalog }) {\n if (event.selected === false) {\n return;\n }\n this.toolState.toolbox.activateTool('catalogBrowser');\n }\n\n /**\n * Get all the available catalogs from the CatalogService and\n * load them into the store.\n */\n private loadCatalogs() {\n this.catalogService\n .loadCatalogs()\n .pipe(take(1))\n .subscribe((catalogs: Catalog[]) => {\n this.store.clear();\n this.store.load(\n catalogs.concat(\n (this.storageService.get('addedCatalogs') || []) as Catalog[]\n )\n );\n });\n }\n\n /**\n * Get the item abstract for getCatalogList\n */\n private getMetadataAbstract(item: CatalogItemLayer): string {\n return item.options.metadata.abstract?.replaceAll('\\n', '') ?? '';\n }\n /**\n * Get the item url metadata for getCatalogList\n */\n private getMetadataUrl(item: CatalogItemLayer): string {\n return item.options.metadata.url;\n }\n\n private layersInfoFromContexts(): Observable<InfoFromSourceOptions[]> {\n return this.contextService.getLocalContexts().pipe(\n switchMap((contextsList) =>\n forkJoin(\n contextsList.ours.map((context) =>\n this.contextService.getLocalContext(context.uri)\n )\n )\n ),\n concatAll(),\n map((detailedContext) => {\n return detailedContext.layers\n .filter((layer) => isLayerItemOptions(layer))\n .map((layer) =>\n getInfoFromSourceOptions(\n layer.sourceOptions,\n detailedContext.title ?? detailedContext.uri\n )\n );\n }),\n concatAll(),\n toArray()\n );\n }\n\n private listExportFromCatalogs(): Observable<ListExport[]> {\n let rank = 1;\n const finalListExportOutputs: ListExport[] = [];\n return this.store.entities$.pipe(\n switchMap((catalogs) =>\n combineLatest(\n catalogs.map((catalog) =>\n this.catalogService.loadCatalogItems(catalog).pipe(\n map((items) => {\n return { catalog, items };\n })\n )\n )\n )\n ),\n map((catalogsWithItems) => {\n catalogsWithItems.forEach((catalogAndItems) => {\n const catalog = catalogAndItems.catalog;\n const loadedCatalogItems = catalogAndItems.items;\n\n const catalogListExports = loadedCatalogItems.reduce(\n (catalogListExports, item) => {\n if (item.type === CatalogItemType.Group) {\n const group = item as CatalogItemGroup;\n group.items.forEach((layer: CatalogItemLayer) => {\n catalogListExports.push(\n this.formatLayer(layer, rank, group.title, catalog.title)\n );\n rank++;\n });\n } else {\n const layer = item as CatalogItemLayer;\n catalogListExports.push(\n this.formatLayer(layer, rank, '', catalog.title)\n );\n rank++;\n }\n return catalogListExports;\n },\n [] as ListExport[]\n );\n finalListExportOutputs.push(...catalogListExports);\n });\n return finalListExportOutputs;\n })\n );\n }\n\n async getCatalogList(): Promise<void> {\n this.generatelist$$ = combineLatest([\n this.layersInfoFromContexts(),\n this.listExportFromCatalogs()\n ]).subscribe(([layersInfoFromContexts, listExportFromCatalogs]) => {\n const listExport = this.matchLayersWithLayersFromContext(\n listExportFromCatalogs,\n layersInfoFromContexts\n );\n\n this.exportExcel(listExport);\n });\n }\n\n private formatLayer(\n layer: CatalogItemLayer,\n rank: number,\n groupTitle: string,\n catalogTitle: string\n ): ListExport {\n const infos = getInfoFromSourceOptions(\n layer.options.sourceOptions,\n layer.id\n );\n const t = this.languageService.translate;\n return {\n id: infos.id,\n rank: rank.toString(),\n layerTitle: layer.title,\n layerGroup: groupTitle,\n catalog: catalogTitle,\n provider: layer.externalProvider\n ? t.instant('igo.integration.catalog.listExport.external')\n : t.instant('igo.integration.catalog.listExport.internal'),\n url: infos.url,\n layerName: infos.layerName,\n context: '',\n metadataAbstract: this.getMetadataAbstract(layer),\n metadataUrl: this.getMetadataUrl(layer)\n };\n }\n\n /**\n * Match a list of layer info with an other list derived from contexts\n * @param catalogOutputs The row list to be written into a file\n * @param layerInfosFromDetailedContexts Layers info derived from the context\n * @returns An altered list, with layer/context association\n */\n\n private matchLayersWithLayersFromContext(\n listExport: ListExport[],\n layerInfosFromDetailedContexts: InfoFromSourceOptions[]\n ): ListExport[] {\n listExport.map((catalogOutput) => {\n const matchingLayersFromContext = layerInfosFromDetailedContexts\n .filter(\n (l) =>\n l.id === catalogOutput.id ||\n (l.layerName === catalogOutput.layerName &&\n l.url === catalogOutput.url)\n )\n .map((f) => f.context);\n catalogOutput.context = matchingLayersFromContext.join(',');\n });\n return listExport;\n }\n\n /**\n * Write a Excel file\n * @param catalogOutputs The row list to be written into a excel file\n */\n async exportExcel(catalogOutputs: ListExport[]) {\n const translateCatalogKey = (key: TemplateStringsArray) =>\n this.languageService.translate.instant(\n `igo.integration.catalog.listExport.${key}`\n );\n\n catalogOutputs.unshift({\n id: 'catalogIdHeader',\n rank: translateCatalogKey`rank`,\n layerTitle: translateCatalogKey`layerTitle`,\n layerGroup: translateCatalogKey`layerGroup`,\n catalog: translateCatalogKey`catalog`,\n provider: translateCatalogKey`externalProvider`,\n url: translateCatalogKey`url`,\n layerName: translateCatalogKey`layerName`,\n context: translateCatalogKey`context`,\n metadataAbstract: translateCatalogKey`metadataAbstract`,\n metadataUrl: translateCatalogKey`metadataUrl`\n });\n\n const catalogOutput = catalogOutputs.map((catalogOutput) => {\n delete catalogOutput.id;\n return catalogOutput;\n });\n\n const workBook = await createExcelWorkBook();\n\n await addExcelSheetToWorkBook('Informations', catalogOutput, workBook, {\n json2SheetOpts: { skipHeader: true }\n });\n\n const documentName = this.languageService.translate.instant(\n 'igo.integration.catalog.listExport.documentName',\n { value: formatDate(Date.now(), 'YYYY-MM-dd-H_mm', 'en-US') }\n );\n writeExcelFile(workBook, documentName, { compression: true });\n }\n}\n","<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","import { NgModule } from '@angular/core';\n\nimport { CatalogLibraryToolComponent } from './catalog-library-tool.component';\n\n/**\n * @deprecated import the CatalogLibraryToolComponent directly\n */\n@NgModule({\n imports: [CatalogLibraryToolComponent],\n exports: [CatalogLibraryToolComponent]\n})\nexport class IgoAppCatalogLibraryToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppCatalogBrowserToolModule } from './catalog-browser-tool/catalog-browser-tool.module';\nimport { IgoAppCatalogLibraryToolModule } from './catalog-library-tool/catalog-library-tool.module';\n\n/**\n * @deprecated import the components directly\n */\n@NgModule({\n exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule]\n})\nexport class IgoAppCatalogModule {}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n ContextEditBindingDirective,\n ContextEditComponent\n} from '@igo2/context';\n\nimport { ToolState } from '../../tool/tool.state';\n\n@ToolComponent({\n name: 'contextEditor',\n title: 'igo.integration.tools.contexts',\n icon: 'star',\n parent: 'contextManager'\n})\n@Component({\n selector: 'igo-context-editor-tool',\n templateUrl: './context-editor-tool.component.html',\n imports: [ContextEditComponent, ContextEditBindingDirective]\n})\nexport class ContextEditorToolComponent {\n private toolState = inject(ToolState);\n\n submitSuccessed() {\n this.toolState.toolbox.activatePreviousTool();\n }\n}\n","<igo-context-edit igoContextEditBinding (submitSuccessed)=\"submitSuccessed()\" />\n","import { Component, inject, input } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n ContextListBindingDirective,\n ContextListComponent\n} from '@igo2/context';\nimport { IgoMap } from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { ToolState } from '../../tool/tool.state';\n\n@ToolComponent({\n name: 'contextManager',\n title: 'igo.integration.tools.contexts',\n icon: 'star'\n})\n@Component({\n selector: 'igo-context-manager-tool',\n templateUrl: './context-manager-tool.component.html',\n imports: [ContextListComponent, ContextListBindingDirective]\n})\nexport class ContextManagerToolComponent {\n private toolState = inject(ToolState);\n private mapState = inject(MapState);\n\n readonly toolToOpenOnContextChange = input('mapTools');\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n editContext() {\n this.toolState.toolbox.activateTool('contextEditor');\n }\n\n managePermissions() {\n this.toolState.toolbox.activateTool('contextPermissionManager');\n }\n}\n","<igo-context-list\n igoContextListBinding\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n/>\n","import { Component } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n ContextPermissionsBindingDirective,\n ContextPermissionsComponent\n} from '@igo2/context';\n\n@ToolComponent({\n name: 'contextPermissionManager',\n title: 'igo.integration.tools.contexts',\n icon: 'star',\n parent: 'contextManager'\n})\n@Component({\n selector: 'igo-context-permission-manager-tool',\n templateUrl: './context-permission-manager-tool.component.html',\n imports: [ContextPermissionsComponent, ContextPermissionsBindingDirective]\n})\nexport class ContextPermissionManagerToolComponent {}\n","<igo-context-permissions igoContextPermissionsBinding />\n","import { Injectable } from '@angular/core';\n\nimport { LayerListControlsOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service that holds the state of layer list tool values\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LayerListToolState {\n readonly keyword$ = new BehaviorSubject<string>('');\n readonly sortAlpha$ = new BehaviorSubject<boolean>(undefined);\n readonly onlyVisible$ = new BehaviorSubject<boolean>(undefined);\n readonly selectedTab$ = new BehaviorSubject<number>(undefined);\n\n setKeyword(keyword: string) {\n this.keyword$.next(keyword);\n }\n\n setSortAlpha(sort: boolean) {\n this.sortAlpha$.next(sort);\n }\n\n setOnlyVisible(onlyVisible: boolean) {\n this.onlyVisible$.next(onlyVisible);\n }\n\n setSelectedTab(tab: number) {\n this.selectedTab$.next(tab);\n }\n\n getLayerListControls(): LayerListControlsOptions {\n return {\n keyword: this.keyword$.value,\n onlyVisible: this.onlyVisible$.value,\n sortAlpha: this.sortAlpha$.value\n };\n }\n}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ShareMapComponent } from '@igo2/context';\nimport { IgoMap, LayerListControlsOptions } from '@igo2/geo';\n\nimport { LayerListToolState } from '../../map/layer-list-tool.state';\nimport { MapState } from '../../map/map.state';\n\n@ToolComponent({\n name: 'shareMap',\n title: 'igo.integration.tools.shareMap',\n icon: 'share'\n})\n@Component({\n selector: 'igo-context-share-tool',\n templateUrl: './context-share-tool.component.html',\n imports: [ShareMapComponent]\n})\nexport class ContextShareToolComponent {\n private mapState = inject(MapState);\n private layerListToolState = inject(LayerListToolState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layerListControls(): LayerListControlsOptions {\n return this.layerListToolState.getLayerListControls();\n }\n}\n","<igo-share-map [map]=\"map\" />\n","import { ContextEditorToolComponent } from './context-editor-tool/context-editor-tool.component';\nimport { ContextManagerToolComponent } from './context-manager-tool/context-manager-tool.component';\nimport { ContextPermissionManagerToolComponent } from './context-permission-manager-tool/context-permission-manager-tool.component';\nimport { ContextShareToolComponent } from './context-share-tool/context-share-tool.component';\n\nexport const INTEGRATION_CONTEXT_DIRECTIVES = [\n ContextEditorToolComponent,\n ContextManagerToolComponent,\n ContextPermissionManagerToolComponent,\n ContextShareToolComponent\n] as const;\n","import { NgModule } from '@angular/core';\n\nimport { INTEGRATION_CONTEXT_DIRECTIVES } from './context.directive';\n\n/**\n * @deprecated import the components/directive directly or INTEGRATION_CONTEXT_DIRECTIVES for the set\n */\n@NgModule({\n imports: [...INTEGRATION_CONTEXT_DIRECTIVES],\n exports: [...INTEGRATION_CONTEXT_DIRECTIVES]\n})\nexport class IgoAppContextModule {}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Tool, ToolService } from '@igo2/common/tool';\nimport { ContextService, DetailedContext } from '@igo2/context';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ToolState } from '../tool/tool.state';\n\n/**\n * Service that holds the state of the context module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextState {\n private contextService = inject(ContextService);\n private toolService = inject(ToolService);\n private toolState = inject(ToolState);\n private languageService = inject(LanguageService);\n\n /**\n * Observable of the active context\n */\n context$ = new BehaviorSubject<DetailedContext>(undefined);\n\n constructor() {\n this.contextService.context$.subscribe((context: DetailedContext) => {\n this.onContextChange(context);\n });\n this.contextService.toolsChanged$.subscribe((context: DetailedContext) => {\n this.updateTools(context);\n });\n }\n\n /**\n * Set the active context\n * @param context Detailed context\n */\n private setContext(context: DetailedContext) {\n this.updateTools(context);\n this.context$.next(context);\n }\n\n /**\n * Update the tool state with the context's tools\n * @param context Detailed context\n */\n private updateTools(context: DetailedContext) {\n const toolbox = this.toolState.toolbox;\n\n const tools = [];\n const contextTools = context.tools || [];\n contextTools.forEach((contextTool: Tool) => {\n const baseTool = this.toolService.getTool(contextTool.name);\n if (baseTool === undefined) {\n return;\n }\n\n const options = Object.assign(\n {},\n baseTool.options || {},\n contextTool.options || {}\n );\n const tool = Object.assign({}, baseTool, contextTool, { options });\n tools.push(tool);\n });\n\n tools.forEach((tool) => {\n if (tool.parent) {\n const parentIndex = tools.findIndex((el) => el.name === tool.parent);\n if (parentIndex !== -1) {\n tools[parentIndex].children = [];\n tools[parentIndex].children.push(tool.name);\n }\n }\n });\n\n toolbox.setTools(tools);\n toolbox.setToolbar(context.toolbar || []);\n\n // TODO: This is a patch so the context service can work without\n // injecting the ToolState or without being completely refactored\n this.contextService.setTools([].concat(tools));\n this.contextService.setToolbar(context.toolbar || []);\n }\n\n /**\n * Set a new context and update the tool state\n * @param context Detailed context\n */\n private onContextChange(context: DetailedContext) {\n if (context === undefined) {\n return;\n }\n this.setContext(context);\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\n\nimport {\n RoutesFeatureStore,\n StepsFeatureStore,\n StopsFeatureStore,\n StopsStore\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the direction module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DirectionState {\n private mapState = inject(MapState);\n\n public zoomToActiveRoute = signal(false);\n\n /**\n * Store that holds the stop\n */\n public stopsStore: StopsStore = new StopsStore([]);\n\n /**\n * Store that holds the driving stops as feature\n */\n public stopsFeatureStore: StopsFeatureStore;\n\n /**\n * Store that holds the driving route as feature\n */\n public routesFeatureStore: RoutesFeatureStore;\n\n public stepFeatureStore: StepsFeatureStore;\n\n public debounceTime = 200;\n\n constructor() {\n this.stopsFeatureStore = new StopsFeatureStore([], {\n map: this.mapState.map\n });\n\n this.routesFeatureStore = new RoutesFeatureStore([], {\n map: this.mapState.map\n });\n\n this.stepFeatureStore = new StepsFeatureStore([], {\n map: this.mapState.map\n });\n\n this.mapState.map.layerController.all$.subscribe(() => {\n if (\n !this.mapState.map.layerController.getById('igo-direction-stops-layer')\n ) {\n this.stopsStore.deleteMany(this.stopsStore.all());\n this.stopsFeatureStore.deleteMany(this.stopsFeatureStore.all()); // not necessary\n }\n if (\n !this.mapState.map.layerController.getById('igo-direction-route-layer')\n ) {\n this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());\n }\n });\n }\n}\n","import { Component, OnInit, inject } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { MessageService } from '@igo2/core/message';\nimport { StorageScope, StorageService } from '@igo2/core/storage';\nimport {\n IgoDirectionsModule,\n IgoMap,\n RoutesFeatureStore,\n StepsFeatureStore,\n StopsFeatureStore,\n StopsStore\n} from '@igo2/geo';\n\nimport { ContextState } from '../../context/context.state';\nimport { MapState } from '../../map/map.state';\nimport { DirectionState } from '../directions.state';\n\n@ToolComponent({\n name: 'directions',\n title: 'igo.integration.tools.directions',\n icon: 'directions'\n})\n@Component({\n selector: 'igo-directions-tool',\n templateUrl: './directions-tool.component.html',\n imports: [IgoDirectionsModule]\n})\nexport class DirectionsToolComponent implements OnInit {\n private directionState = inject(DirectionState);\n private mapState = inject(MapState);\n private messageService = inject(MessageService);\n private storageService = inject(StorageService);\n contextState = inject(ContextState);\n private authService = inject(AuthService);\n\n public currentContextUri: string;\n /**\n * stops\n * @internal\n */\n get stopsStore(): StopsStore {\n return this.directionState.stopsStore;\n }\n\n get debounceTime(): number {\n return this.directionState.debounceTime;\n }\n\n /**\n * stops\n * @internal\n */\n get stopsFeatureStore(): StopsFeatureStore {\n return this.directionState.stopsFeatureStore;\n }\n\n /**\n * routes\n * @internal\n */\n get routesFeatureStore(): RoutesFeatureStore {\n return this.directionState.routesFeatureStore;\n }\n\n get stepFeatureStore(): StepsFeatureStore {\n return this.directionState.stepFeatureStore;\n }\n\n get zoomOnActiveRoute() {\n return this.directionState.zoomToActiveRoute;\n }\n\n get authenticated$() {\n return this.authService.authenticate$;\n }\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n ngOnInit(): void {\n const warningShown = this.storageService.get(\n 'direction.warning.shown'\n ) as boolean;\n if (!warningShown) {\n this.messageService.info(\n 'igo.integration.directions.warning.message',\n 'igo.integration.directions.warning.title',\n { timeOut: 20000 }\n );\n this.storageService.set(\n 'direction.warning.shown',\n true,\n StorageScope.SESSION\n );\n }\n this.contextState.context$.subscribe((c) => {\n if (!this.authService.authenticated) {\n this.currentContextUri = c.uri;\n }\n });\n }\n}\n","<igo-directions\n [contextUri]=\"currentContextUri\"\n [debounce]=\"debounceTime\"\n [stopsStore]=\"stopsStore\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stepsFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [zoomOnActiveRoute]=\"false\"\n [authenticated$]=\"authenticated$\"\n/>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DirectionsToolComponent } from './directions-tool/directions-tool.component';\n\n/**\n * @deprecated import the DirectionsToolComponent directly\n */\n@NgModule({\n imports: [DirectionsToolComponent],\n exports: [DirectionsToolComponent]\n})\nexport class IgoAppDirectionsModule {\n static forRoot(): ModuleWithProviders<IgoAppDirectionsModule> {\n return {\n ngModule: IgoAppDirectionsModule,\n providers: []\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n DrawControl,\n FeatureStore,\n FeatureWithDraw,\n VectorLayer\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DrawState {\n private mapState = inject(MapState);\n\n public stores: FeatureStore<FeatureWithDraw>[] = [];\n public layersID: string[] = [];\n public drawControls: [string, DrawControl][] = [];\n public activeDrawingLayer: VectorLayer;\n\n constructor() {\n this.mapState.map.layerController.all$.subscribe(() => {\n this.layersID.forEach((layerId) => {\n if (!this.mapState.map.layerController.getById(layerId)) {\n const deletedStore = this.stores.find(\n (store) => store.layer.id === layerId\n );\n if (deletedStore) {\n deletedStore.deleteMany(deletedStore.all());\n this.stores.splice(this.stores.indexOf(deletedStore, 0), 1);\n }\n this.layersID.splice(this.layersID.indexOf(layerId, 0), 1);\n const drawControlIndex = this.drawControls.findIndex(\n (dc) => dc[0] === layerId\n );\n this.drawControls.splice(drawControlIndex, 1);\n }\n });\n });\n for (let store of this.stores) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n store = new FeatureStore<FeatureWithDraw>([], { map: this.mapState.map });\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n DrawComponent,\n DrawControl,\n FeatureStore,\n FeatureWithDraw,\n IgoMap,\n VectorLayer\n} from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { DrawState } from '../draw.state';\n\n/**\n * Tool to measure lengths and areas\n */\n@ToolComponent({\n name: 'draw',\n title: 'igo.integration.tools.draw',\n icon: 'stylus_note'\n})\n@Component({\n selector: 'igo-drawing-tool',\n templateUrl: './drawing-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DrawComponent]\n})\nexport class DrawingToolComponent {\n private drawState = inject(DrawState);\n private mapState = inject(MapState);\n\n /**\n * Map to measure on\n * @internal\n */\n get stores(): FeatureStore<FeatureWithDraw>[] {\n return this.drawState.stores;\n }\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layersID(): string[] {\n return this.drawState.layersID;\n }\n\n get drawControls(): [string, DrawControl][] {\n return this.drawState.drawControls;\n }\n set drawControls(dc: [string, DrawControl][]) {\n this.drawState.drawControls = dc;\n }\n\n get activeDrawingLayer(): VectorLayer {\n return this.drawState.activeDrawingLayer;\n }\n set activeDrawingLayer(value: VectorLayer) {\n this.drawState.activeDrawingLayer = value;\n }\n\n public addLayersID(layerID: string) {\n this.layersID.push(layerID);\n }\n\n public addDrawControls(dc: [string, DrawControl][]) {\n this.drawControls = dc;\n }\n}\n","<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","import { NgModule } from '@angular/core';\n\nimport { DrawingToolComponent } from './drawing-tool.component';\n\n/**\n * @deprecated import the DrawingToolComponent directly\n */\n@NgModule({\n imports: [DrawingToolComponent],\n exports: [DrawingToolComponent]\n})\nexport class IgoAppDrawingToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppDrawingToolModule } from './drawing-tool/drawing-tool.module';\n\n/**\n * @deprecated import the DrawingToolComponent directly\n */\n@NgModule({\n exports: [IgoAppDrawingToolModule]\n})\nexport class IgoAppDrawModule {}\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n IgoMap,\n Layer,\n OgcFilterableItemComponent,\n isLayerItem\n} from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { toolSlideInOut } from './active-ogc-filter-tool.animation';\n\n@ToolComponent({\n name: 'activeOgcFilter',\n title: 'igo.integration.tools.ogcFilter',\n icon: 'filter',\n parent: 'mapTools'\n})\n@Component({\n selector: 'igo-active-ogc-filter-tool',\n templateUrl: './active-ogc-filter-tool.component.html',\n animations: [toolSlideInOut()],\n imports: [OgcFilterableItemComponent]\n})\nexport class ActiveOgcFilterToolComponent {\n mapState = inject(MapState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layer(): Layer {\n for (const lay of this.map.layerController.all) {\n if (isLayerItem(lay) && this.map.layerController.isSelected(lay)) {\n return lay;\n }\n }\n return;\n }\n\n public animate = 'enter';\n}\n","<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoMap, Layer, TimeFilterItemComponent, isLayerItem } from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { toolSlideInOut } from './active-time-filter-tool.animation';\n\n@ToolComponent({\n name: 'activeTimeFilter',\n title: 'igo.integration.tools.timeFilter',\n icon: 'history',\n parent: 'mapTools'\n})\n@Component({\n selector: 'igo-active-time-filter-tool',\n templateUrl: './active-time-filter-tool.component.html',\n animations: [toolSlideInOut()],\n imports: [TimeFilterItemComponent]\n})\nexport class ActiveTimeFilterToolComponent {\n mapState = inject(MapState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layer(): Layer {\n for (const lay of this.map.layerController.all) {\n if (isLayerItem(lay) && this.map.layerController.isSelected(lay)) {\n return lay;\n }\n }\n return;\n }\n\n public animate = 'enter';\n}\n","<igo-time-filter-item\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n","import { Component } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n OgcFilterableListBindingDirective,\n OgcFilterableListComponent\n} from '@igo2/geo';\n\n@ToolComponent({\n name: 'ogcFilter',\n title: 'igo.integration.tools.ogcFilter',\n icon: 'filter'\n})\n@Component({\n selector: 'igo-ogc-filter-tool',\n templateUrl: './ogc-filter-tool.component.html',\n imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective]\n})\nexport class OgcFilterToolComponent {}\n","<igo-ogc-filterable-list igoOgcFilterableListBinding />\n","import { Injectable, inject } from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\n\n/**\n * Service that holds the state of storage service\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageState {\n private igoStorageService = inject(StorageService);\n\n get storageService(): StorageService {\n return this.igoStorageService;\n }\n}\n","import { Action } from '@igo2/common/action';\nimport {\n EntityStoreFilterCustomFuncStrategy,\n EntityStoreFilterSelectionStrategy\n} from '@igo2/common/entity';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport { StorageService } from '@igo2/core/storage';\nimport {\n EditionWorkspace,\n FeatureMotion,\n FeatureStoreSelectionStrategy,\n FeatureWorkspace,\n OgcFilterableDataSource,\n WfsWorkspace,\n mapExtentStrategyActiveToolTip,\n noElementSelected\n} from '@igo2/geo';\n\nimport { jsPDF } from 'jspdf';\nimport { autoTable } from 'jspdf-autotable';\nimport moment from 'moment';\nimport { BehaviorSubject, map } from 'rxjs';\n\nimport { ToolState } from '../../tool';\n\nexport function handleZoomAuto(\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\n storageService\n) {\n const zoomStrategy = workspace.entityStore.getStrategyOfType(\n FeatureStoreSelectionStrategy\n ) as FeatureStoreSelectionStrategy;\n zoomStrategy.setMotion(\n (storageService.get('zoomAuto') as boolean)\n ? FeatureMotion.Default\n : FeatureMotion.None\n );\n}\n\nexport function getWorkspaceActions(\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>,\n ogcFilterWidget: Widget,\n zoomAuto$: BehaviorSubject<boolean>,\n maximize$: BehaviorSubject<boolean>,\n storageService: StorageService,\n languageService: LanguageService,\n mediaService: MediaService,\n toolState: ToolState,\n interactiveSelectionFormWidget?: Widget\n): Action[] {\n const actions = [\n {\n id: 'zoomAuto',\n checkbox: true,\n title: 'igo.integration.workspace.zoomAuto.title',\n tooltip: 'igo.integration.workspace.zoomAuto.tooltip',\n checkCondition: zoomAuto$,\n handler: () => {\n handleZoomAuto(workspace, storageService);\n storageService.set(\n 'zoomAuto',\n !storageService.get('zoomAuto') as boolean\n );\n }\n },\n {\n id: 'filterInMapExtent',\n checkbox: true,\n title: 'igo.integration.workspace.inMapExtent.title',\n tooltip: mapExtentStrategyActiveToolTip(workspace),\n checkCondition: rowsInMapExtentCheckCondition$,\n handler: () =>\n rowsInMapExtentCheckCondition$.next(\n !rowsInMapExtentCheckCondition$.value\n )\n },\n {\n id: 'selectedOnly',\n checkbox: true,\n title: 'igo.integration.workspace.selected.title',\n tooltip: 'igo.integration.workspace.selected.tooltip',\n checkCondition: selectOnlyCheckCondition$,\n handler: () =>\n selectOnlyCheckCondition$.next(!selectOnlyCheckCondition$.value)\n },\n {\n id: 'clearselection',\n icon: 'deselect',\n title: 'igo.integration.workspace.clearSelection.title',\n tooltip: 'igo.integration.workspace.clearSelection.tooltip',\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\n ws.entityStore.state.updateMany(ws.entityStore.view.all(), {\n selected: false\n });\n },\n args: [workspace],\n availability: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) =>\n noElementSelected(ws)\n },\n {\n id: 'featureDownload',\n icon: 'file_save',\n title: 'igo.integration.workspace.download.title',\n tooltip: 'igo.integration.workspace.download.tooltip',\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\n const filterStrategy = ws.entityStore.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n const filterSelectionStrategy = ws.entityStore.getStrategyOfType(\n EntityStoreFilterSelectionStrategy\n );\n const layersWithSelection = filterSelectionStrategy.active\n ? [ws.layer.id]\n : [];\n toolState.toolToActivateFromOptions({\n tool: 'importExport',\n options: {\n layers: [ws.layer.id],\n featureInMapExtent: filterStrategy.active,\n layersWithSelection\n }\n });\n },\n args: [workspace]\n },\n {\n id: 'ogcFilter',\n icon: 'filter_alt',\n title: 'igo.integration.workspace.ogcFilter.title',\n tooltip: 'igo.integration.workspace.ogcFilter.tooltip',\n handler: (\n widget: Widget,\n ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace\n ) => {\n ws.activateWidget(widget, {\n map: ws.map,\n layer: ws.layer\n });\n },\n args: [ogcFilterWidget, workspace]\n },\n {\n id: 'interactiveSelect',\n icon: 'select-marker',\n title: 'igo.integration.workspace.interactiveSelection.title',\n tooltip: 'igo.integration.workspace.interactiveSelection.tooltip',\n handler: (widget: Widget, ws: FeatureWorkspace | WfsWorkspace) => {\n ws.activateWidget(widget, {\n map: ws.map,\n workspace: ws\n });\n },\n args: [interactiveSelectionFormWidget, workspace]\n },\n {\n id: 'maximize',\n title: languageService.translate.instant(\n 'igo.integration.workspace.maximize'\n ),\n tooltip: languageService.translate.instant(\n 'igo.integration.workspace.maximizeTooltip'\n ),\n icon: 'resize',\n display: () => {\n return maximize$.pipe(map((v) => !v && !mediaService.isMobile()));\n },\n handler: () => {\n if (!mediaService.isMobile()) {\n maximize$.next(true);\n }\n }\n },\n {\n id: 'standardExtent',\n title: languageService.translate.instant(\n 'igo.integration.workspace.standardExtent'\n ),\n tooltip: languageService.translate.instant(\n 'igo.integration.workspace.standardExtentTooltip'\n ),\n icon: 'resize',\n display: () => {\n return maximize$.pipe(map((v) => v && !mediaService.isMobile()));\n },\n handler: () => {\n maximize$.next(false);\n }\n },\n {\n id: 'print',\n icon: 'print',\n title: 'igo.integration.workspace.print.title',\n tooltip: 'igo.integration.workspace.print.tooltip',\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\n const title = `${ws.layer.title} (${dateTransform(\n new Date(),\n 'YYYY-MM-DD-HH_mm'\n )})`;\n const doc = new jsPDF({\n orientation: 'landscape'\n });\n const totalPagesExp = '{total_pages_count_string}';\n doc.text(title, 14, 20);\n autoTable(doc, {\n startY: 25,\n tableWidth: 'wrap',\n html: '#currentWorkspaceTable',\n horizontalPageBreak: true,\n styles: { cellPadding: 0.5, minCellWidth: 20, fontSize: 6 },\n didDrawPage: (data) => {\n let str = 'Page ' + doc.getNumberOfPages();\n if (typeof doc.putTotalPages === 'function') {\n str = str + ' / ' + totalPagesExp;\n }\n doc.setFontSize(6);\n const pageSize = doc.internal.pageSize;\n const pageHeight = pageSize.height\n ? pageSize.height\n : pageSize.getHeight();\n doc.text(str, data.settings.margin.left, pageHeight - 10);\n }\n });\n if (typeof doc.putTotalPages === 'function') {\n doc.putTotalPages(totalPagesExp);\n }\n doc.save(`${title}.pdf`);\n },\n args: [workspace]\n }\n ];\n let returnActions = (workspace.layer.dataSource as OgcFilterableDataSource)\n .options.ogcFilters?.enabled\n ? actions\n : actions.filter((action) => action.id !== 'ogcFilter');\n returnActions =\n workspace.layer.options.workspace.printable !== false\n ? actions\n : actions.filter((action) => action.id !== 'print');\n return returnActions;\n}\n\nfunction dateTransform(date: Date, format: string): string {\n return moment(date).format(format);\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Action } from '@igo2/common/action';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport {\n StorageService,\n StorageServiceEvent,\n StorageServiceEventEnum\n} from '@igo2/core/storage';\nimport { EditionWorkspace, OgcFilterWidget } from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\nimport { StorageState } from '../../storage/storage.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EditionActionsService implements OnDestroy {\n private ogcFilterWidget = inject<Widget>(OgcFilterWidget, { optional: true });\n private storageState = inject(StorageState);\n languageService = inject(LanguageService);\n private mediaService = inject(MediaService);\n private toolState = inject(ToolState);\n\n public maximize$: BehaviorSubject<boolean>;\n\n zoomAuto$ = new BehaviorSubject<boolean>(false);\n private storageChange$$: Subscription;\n\n get storageService(): StorageService {\n return this.storageState.storageService;\n }\n\n get zoomAuto(): boolean {\n return this.storageService.get('zoomAuto') as boolean;\n }\n\n constructor() {\n this.maximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n }\n\n ngOnDestroy(): void {\n if (this.storageChange$$) {\n this.storageChange$$.unsubscribe();\n }\n }\n\n loadActions(\n workspace: EditionWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ) {\n const actions = this.buildActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$\n );\n workspace.actionStore.load(actions);\n }\n\n buildActions(\n workspace: EditionWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ): Action[] {\n this.zoomAuto$.next(this.zoomAuto);\n this.storageChange$$ = this.storageService.storageChange$\n .pipe(\n skipWhile(\n (storageChange: StorageServiceEvent) =>\n storageChange?.key !== 'zoomAuto' ||\n storageChange?.event === StorageServiceEventEnum.CLEARED\n )\n )\n .subscribe(() => {\n this.zoomAuto$.next(this.zoomAuto);\n handleZoomAuto(workspace, this.storageService);\n });\n return getWorkspaceActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$,\n this.ogcFilterWidget,\n this.zoomAuto$,\n this.maximize$,\n this.storageService,\n this.languageService,\n this.mediaService,\n this.toolState\n );\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Action } from '@igo2/common/action';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport {\n StorageService,\n StorageServiceEvent,\n StorageServiceEventEnum\n} from '@igo2/core/storage';\nimport { FeatureWorkspace, InteractiveSelectionFormWidget } from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\nimport { StorageState } from '../../storage/storage.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeatureActionsService implements OnDestroy {\n private storageState = inject(StorageState);\n languageService = inject(LanguageService);\n private toolState = inject(ToolState);\n private mediaService = inject(MediaService);\n private interactiveSelectionFormWidget = inject<Widget>(\n InteractiveSelectionFormWidget,\n { optional: true }\n );\n\n public maximize$: BehaviorSubject<boolean>;\n\n zoomAuto$ = new BehaviorSubject<boolean>(false);\n private storageChange$$: Subscription;\n\n get storageService(): StorageService {\n return this.storageState.storageService;\n }\n\n get zoomAuto(): boolean {\n return this.storageService.get('zoomAuto') as boolean;\n }\n\n constructor() {\n this.maximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n }\n\n ngOnDestroy(): void {\n if (this.storageChange$$) {\n this.storageChange$$.unsubscribe();\n }\n }\n\n loadActions(\n workspace: FeatureWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ) {\n const actions = this.buildActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$\n );\n workspace.actionStore.load(actions);\n }\n\n buildActions(\n workspace: FeatureWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ): Action[] {\n this.zoomAuto$.next(this.zoomAuto);\n this.storageChange$$ = this.storageService.storageChange$\n .pipe(\n skipWhile(\n (storageChange: StorageServiceEvent) =>\n storageChange?.key !== 'zoomAuto' ||\n storageChange?.event === StorageServiceEventEnum.CLEARED\n )\n )\n .subscribe(() => {\n this.zoomAuto$.next(this.zoomAuto);\n handleZoomAuto(workspace, this.storageService);\n });\n return getWorkspaceActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$,\n undefined,\n this.zoomAuto$,\n this.maximize$,\n this.storageService,\n this.languageService,\n this.mediaService,\n this.toolState,\n this.interactiveSelectionFormWidget\n );\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Action } from '@igo2/common/action';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport {\n StorageService,\n StorageServiceEvent,\n StorageServiceEventEnum\n} from '@igo2/core/storage';\nimport {\n InteractiveSelectionFormWidget,\n OgcFilterWidget,\n WfsWorkspace\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\nimport { StorageState } from '../../storage/storage.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WfsActionsService implements OnDestroy {\n private storageState = inject(StorageState);\n languageService = inject(LanguageService);\n private mediaService = inject(MediaService);\n private toolState = inject(ToolState);\n private interactiveSelectionFormWidget = inject<Widget>(\n InteractiveSelectionFormWidget,\n { optional: true }\n );\n private ogcFilterWidget = inject<Widget>(OgcFilterWidget, { optional: true });\n\n public maximize$: BehaviorSubject<boolean>;\n\n selectOnlyCheckCondition$ = new BehaviorSubject<boolean>(false);\n // rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n zoomAuto$ = new BehaviorSubject<boolean>(false);\n private storageChange$$: Subscription;\n\n get storageService(): StorageService {\n return this.storageState.storageService;\n }\n\n get zoomAuto(): boolean {\n return this.storageService.get('zoomAuto') as boolean;\n }\n\n constructor() {\n this.maximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n }\n\n ngOnDestroy(): void {\n if (this.storageChange$$) {\n this.storageChange$$.unsubscribe();\n }\n }\n\n loadActions(\n workspace: WfsWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ) {\n const actions = this.buildActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$\n );\n workspace.actionStore.load(actions);\n }\n\n buildActions(\n workspace: WfsWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ): Action[] {\n this.zoomAuto$.next(this.zoomAuto);\n this.storageChange$$ = this.storageService.storageChange$\n .pipe(\n skipWhile(\n (storageChange: StorageServiceEvent) =>\n storageChange?.key !== 'zoomAuto' ||\n storageChange?.event === StorageServiceEventEnum.CLEARED\n )\n )\n .subscribe(() => {\n this.zoomAuto$.next(this.zoomAuto);\n handleZoomAuto(workspace, this.storageService);\n });\n return getWorkspaceActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$,\n this.ogcFilterWidget,\n this.zoomAuto$,\n this.maximize$,\n this.storageService,\n this.languageService,\n this.mediaService,\n this.toolState,\n this.interactiveSelectionFormWidget\n );\n }\n}\n","import { Injectable, OnDestroy, inject, signal } from '@angular/core';\n\nimport {\n EntityRecord,\n EntityState,\n EntityStoreFilterCustomFuncStrategy,\n EntityStoreFilterSelectionStrategy\n} from '@igo2/common/entity';\nimport { Widget } from '@igo2/common/widget';\nimport { Workspace, WorkspaceStore } from '@igo2/common/workspace';\nimport { StorageService } from '@igo2/core/storage';\nimport { EditionWorkspace, FeatureWorkspace, WfsWorkspace } from '@igo2/geo';\n\nimport { BehaviorSubject, Observable, Subscription, of } from 'rxjs';\n\nimport { EditionActionsService } from './shared/edition-actions.service';\nimport { FeatureActionsService } from './shared/feature-actions.service';\nimport { WfsActionsService } from './shared/wfs-actions.service';\n\n/**\n * Service that holds the state of the workspace module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkspaceState implements OnDestroy {\n private featureActionsService = inject(FeatureActionsService);\n private wfsActionsService = inject(WfsActionsService);\n private editionActionsService = inject(EditionActionsService);\n private storageService = inject(StorageService);\n\n expanded = signal(false);\n\n readonly workspaceEnabled$: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(false);\n readonly rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(true);\n readonly selectOnlyCheckCondition$: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(false);\n\n readonly workspaceMaximize$: BehaviorSubject<boolean>;\n private actionMaximize$$: Subscription[] = [];\n\n private rowsInMapExtentCheckCondition$$: Subscription;\n private selectOnlyCheckCondition$$: Subscription;\n\n /** Subscription to the active workspace */\n private activeWorkspace$$: Subscription;\n\n /** Subscription to the active workspace widget */\n private activeWorkspaceWidget$$: Subscription;\n\n /** Active widget observable. Only one may be active for all available workspaces */\n readonly activeWorkspaceWidget$: BehaviorSubject<Widget> =\n new BehaviorSubject<Widget>(undefined);\n\n /**\n * Observable of the active workspace\n */\n public workspace$ = new BehaviorSubject<Workspace>(undefined);\n\n /**\n * Store that holds all the available workspaces\n */\n get store(): WorkspaceStore {\n return this._store;\n }\n private _store: WorkspaceStore;\n\n get workspaceSelection() {\n if (this.workspace$.value) {\n return this.workspace$.value?.entityStore.stateView.manyBy(\n (r) => r.state.selected === true\n );\n } else {\n return [];\n }\n }\n\n get workspaceSelection$(): Observable<EntityRecord<object, EntityState>[]> {\n if (this.workspace$.value) {\n return this.workspace$.value?.entityStore?.stateView.manyBy$(\n (r) => r.state.selected === true\n );\n } else {\n return of([]);\n }\n }\n\n constructor() {\n this.workspaceMaximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n this.initWorkspaces();\n }\n\n /**\n * Initialize the workspace store. Each time a workspace is activated,\n * subscribe to it's active widget. Tracking the active widget is useful\n * to make sure only one widget is active at a time.\n */\n private initWorkspaces() {\n this._store = new WorkspaceStore([]);\n this._store.stateView\n .firstBy$(\n (record: EntityRecord<Workspace>) => record.state.active === true\n )\n .subscribe((record: EntityRecord<Workspace>) => {\n const workspace = record ? record.entity : undefined;\n this.workspace$.next(workspace);\n });\n\n this._store.stateView\n .all$()\n .subscribe((workspaces: EntityRecord<Workspace>[]) => {\n workspaces.map((wks: EntityRecord<Workspace>) => {\n if (wks.entity.actionStore.empty) {\n if (wks.entity instanceof WfsWorkspace) {\n this.wfsActionsService.loadActions(\n wks.entity,\n this.rowsInMapExtentCheckCondition$,\n this.selectOnlyCheckCondition$\n );\n } else if (wks.entity instanceof FeatureWorkspace) {\n this.featureActionsService.loadActions(\n wks.entity,\n this.rowsInMapExtentCheckCondition$,\n this.selectOnlyCheckCondition$\n );\n } else if (wks.entity instanceof EditionWorkspace) {\n this.editionActionsService.loadActions(\n wks.entity,\n this.rowsInMapExtentCheckCondition$,\n this.selectOnlyCheckCondition$\n );\n }\n }\n });\n });\n\n this.actionMaximize$$.push(\n this.featureActionsService.maximize$.subscribe((maximized) => {\n this.setWorkspaceIsMaximized(maximized);\n })\n );\n\n this.actionMaximize$$.push(\n this.wfsActionsService.maximize$.subscribe((maximized) => {\n this.setWorkspaceIsMaximized(maximized);\n })\n );\n\n this.actionMaximize$$.push(\n this.editionActionsService.maximize$.subscribe((maximized) => {\n this.setWorkspaceIsMaximized(maximized);\n })\n );\n\n this.activeWorkspace$$ = this.workspace$.subscribe(\n (workspace: Workspace) => {\n if (this.activeWorkspaceWidget$$ !== undefined) {\n this.activeWorkspaceWidget$$.unsubscribe();\n this.activeWorkspaceWidget$$ = undefined;\n }\n\n if (workspace !== undefined) {\n this.activeWorkspaceWidget$$ = workspace.widget$.subscribe(\n (widget: Widget) => this.activeWorkspaceWidget$.next(widget)\n );\n }\n }\n );\n\n this.rowsInMapExtentCheckCondition$$ =\n this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\n if (!wks.entity.actionStore.empty) {\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n if (filterStrategy) {\n if (rowsInMapExtent) {\n filterStrategy.activate();\n } else {\n filterStrategy.deactivate();\n }\n }\n }\n });\n });\n\n this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe(\n (selectOnly) => {\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\n if (!wks.entity.actionStore.empty) {\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\n EntityStoreFilterSelectionStrategy\n );\n if (filterStrategy) {\n if (selectOnly) {\n filterStrategy.activate();\n } else {\n filterStrategy.deactivate();\n }\n }\n }\n });\n }\n );\n }\n\n private setWorkspaceIsMaximized(maximized: boolean) {\n this.storageService.set('workspaceMaximize', maximized);\n this.workspaceMaximize$.next(maximized);\n }\n\n public setActiveWorkspaceById(id: string) {\n const wksFromId = this.store.all().find((workspace) => workspace.id === id);\n if (wksFromId) {\n this.store.activateWorkspace(wksFromId);\n }\n }\n\n public setActiveWorkspaceByTitle(title: string) {\n const wksFromTitle = this.store\n .all()\n .find((workspace) => workspace.title === title);\n if (wksFromTitle) {\n this.store.activateWorkspace(wksFromTitle);\n }\n }\n\n /**\n * Teardown all the workspaces\n * @internal\n */\n ngOnDestroy() {\n this.teardownWorkspaces();\n this.actionMaximize$$.map((a) => a.unsubscribe());\n if (this.rowsInMapExtentCheckCondition$$) {\n this.selectOnlyCheckCondition$$.unsubscribe();\n }\n if (this.selectOnlyCheckCondition$$) {\n this.selectOnlyCheckCondition$$.unsubscribe();\n }\n }\n\n /**\n * Teardown the workspace store and any subscribers\n */\n private teardownWorkspaces() {\n this.store.clear();\n if (this.activeWorkspaceWidget$$ !== undefined) {\n this.activeWorkspaceWidget$$.unsubscribe();\n }\n if (this.activeWorkspace$$ !== undefined) {\n this.activeWorkspace$$.unsubscribe();\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n model\n} from '@angular/core';\n\nimport { EntityStore } from '@igo2/common/entity';\nimport { SELECTION_MARKER_ICON } from '@igo2/common/icon';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport {\n AnyLayer,\n ExportOptions,\n Feature,\n FeatureDetailsComponent,\n FeatureMotion,\n IgoMap,\n LayerService,\n MeasureLengthUnit,\n QueryableDataSourceOptions,\n RADIUS_NAME,\n SpatialFilterItemComponent,\n SpatialFilterItemType,\n SpatialFilterQueryType,\n SpatialFilterService,\n SpatialFilterThematic,\n SpatialFilterType,\n SpatialFilterTypeComponent,\n VectorLayer,\n VectorLayerOptions,\n createOverlayMarkerStyle,\n featureToOl,\n isLayerItem,\n moveToOlFeatures\n} from '@igo2/geo';\n\nimport OlFeature from 'ol/Feature';\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\nimport OlPoint from 'ol/geom/Point';\nimport { transform } from 'ol/proj';\nimport olSourceCluster from 'ol/source/Cluster';\nimport olSourceVector from 'ol/source/Vector';\nimport * as olstyle from 'ol/style';\n\nimport { Subject } from 'rxjs';\nimport { BehaviorSubject } from 'rxjs';\nimport { take, takeUntil, tap } from 'rxjs/operators';\n\nimport { MapState } from '../../map/map.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { WorkspaceState } from '../../workspace/workspace.state';\nimport {\n ImportExportMode,\n ImportExportState\n} from './../../import-export/import-export.state';\n\n/**\n * Tool to apply spatial filter\n */\n@ToolComponent({\n name: 'spatialFilter',\n title: 'igo.integration.tools.spatialFilter',\n icon: SELECTION_MARKER_ICON\n})\n/**\n * Spatial Filter Type\n */\n@Component({\n selector: 'igo-spatial-filter-tool',\n templateUrl: './spatial-filter-tool.component.html',\n styleUrls: ['./spatial-filter-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SpatialFilterTypeComponent,\n SpatialFilterItemComponent,\n FeatureDetailsComponent,\n AsyncPipe\n ]\n})\nexport class SpatialFilterToolComponent implements OnInit, OnDestroy {\n private spatialFilterService = inject(SpatialFilterService);\n private layerService = inject(LayerService);\n private mapState = inject(MapState);\n private messageService = inject(MessageService);\n private languageService = inject(LanguageService);\n private importExportState = inject(ImportExportState);\n private toolState = inject(ToolState);\n private workspaceState = inject(WorkspaceState);\n private cdRef = inject(ChangeDetectorRef);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n readonly type = model<SpatialFilterType>(undefined);\n readonly itemType = model<SpatialFilterItemType>(\n SpatialFilterItemType.Thematics\n );\n readonly freehandDrawIsActive = model<boolean>(undefined);\n\n public layers: AnyLayer[] = [];\n public activeLayers: AnyLayer[] = [];\n\n public queryType: SpatialFilterQueryType;\n public thematics: SpatialFilterThematic[];\n\n public buffer = 0;\n\n public iterator = 1;\n\n public selectedFeature$ = new BehaviorSubject<Feature>(undefined);\n\n public store: EntityStore<Feature> = new EntityStore<Feature>([]); // Store to print results at the end\n\n public spatialListStore: EntityStore<Feature> = new EntityStore<Feature>([]);\n\n public loading = false;\n\n public thematicLength = 0;\n\n public measureUnit: MeasureLengthUnit = MeasureLengthUnit.Meters;\n\n public defaultStyle: olstyle.Style | ((feature, resolution) => olstyle.Style);\n public zones: Feature[] = [];\n\n private unsubscribe$ = new Subject<void>();\n private activePredefinedLayerZones: VectorLayer;\n private activeDrawLayerZones: VectorLayer;\n\n ngOnInit() {\n for (const layer of this.map.layerController.all) {\n if (\n layer.title &&\n layer.title.includes(\n this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n )\n ) &&\n isLayerItem(layer)\n ) {\n this.layers.push(layer);\n }\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n getOutputType(event: SpatialFilterType) {\n this.type.set(event);\n this.queryType = undefined;\n }\n\n getOutputQueryType(event: SpatialFilterQueryType) {\n if (event !== this.queryType) {\n this.zones = [];\n this.activePredefinedLayerZones = undefined;\n }\n\n this.queryType = event;\n if (this.queryType) {\n this.loadFilterList();\n }\n }\n\n activateExportTool() {\n const ids = [];\n const re = new RegExp('^Zone \\\\d+');\n for (const layer of this.layers) {\n if (!layer.title.match(re)) {\n ids.push(layer.id);\n }\n }\n this.importExportState.setMode(ImportExportMode.export);\n this.importExportState.setsExportOptions({ layers: ids } as ExportOptions);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n activateWorkspace(record?) {\n let layerToOpenWks;\n this.workspaceState.store.entities$\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n if (\n !record &&\n this.activeLayers.length &&\n this.workspaceState.store.all().length > 1\n ) {\n if (\n this.itemType() === SpatialFilterItemType.Thematics &&\n this.thematics\n ) {\n for (const thematic of this.thematics) {\n if (!thematic.zeroResults) {\n layerToOpenWks = this.activeLayers.find((layer) =>\n layer.title.includes(\n thematic.name + ' ' + this.iterator.toString()\n )\n );\n break;\n }\n }\n } else {\n const title = 'Adresses ' + this.iterator.toString();\n this.activeLayers.forEach((layer) => {\n if (layer.title.includes(title)) {\n layerToOpenWks = layer;\n }\n });\n }\n\n if (layerToOpenWks) {\n this.workspaceState.expanded.set(true);\n this.workspaceState.setActiveWorkspaceById(layerToOpenWks.id);\n }\n } else if (\n record &&\n this.activeLayers.length &&\n this.workspaceState.store.all().length > 1\n ) {\n this.selectWorkspaceEntity(record);\n this.map.ol.on('moveend', () => {\n this.selectWorkspaceEntity(record);\n });\n }\n });\n }\n\n private selectWorkspaceEntity(record) {\n this.workspaceState.store.all().forEach((workspace) => {\n workspace.entityStore.state.updateAll({ selected: false });\n if (workspace.title.includes(record.added[0].meta.title)) {\n this.workspaceState.setActiveWorkspaceById(workspace.id);\n workspace.entityStore.state.updateMany(record.added, {\n selected: true\n });\n }\n });\n }\n\n private loadFilterList() {\n this.spatialFilterService\n .loadFilterList(this.queryType)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((features: Feature[]) => {\n features.sort((a, b) => {\n if (a.properties.nom < b.properties.nom) {\n return -1;\n }\n if (a.properties.nom > b.properties.nom) {\n return 1;\n }\n return 0;\n });\n this.spatialListStore.clear();\n this.spatialListStore.load(features);\n });\n }\n\n getOutputToggleSearch() {\n this.loadThematics();\n }\n\n getOutputClearSearch() {\n this.zones = [];\n this.queryType = undefined;\n }\n\n clearMap() {\n this.map.layerController.remove(...this.layers);\n this.layers = [];\n this.activeLayers = [];\n this.thematicLength = 0;\n this.iterator = 1;\n if (this.type() === SpatialFilterType.Predefined) {\n this.zones = [];\n this.queryType = undefined;\n }\n }\n\n private loadThematics() {\n this.loading = true;\n let zeroResults = true;\n let thematics!: SpatialFilterThematic[];\n const type = this.type();\n if (this.buffer === 0 || type === SpatialFilterType.Point) {\n this.addFeaturesToMap(this.zones);\n }\n if (this.itemType() !== SpatialFilterItemType.Thematics) {\n const theme: SpatialFilterThematic = {\n name: ''\n };\n thematics = [theme];\n } else {\n thematics = this.thematics;\n }\n if (\n this.measureUnit === MeasureLengthUnit.Kilometers &&\n type !== SpatialFilterType.Point\n ) {\n this.buffer = this.buffer * 1000;\n }\n if (type === SpatialFilterType.Polygon) {\n this.buffer = 0; // to avoid buffer enter a second time in terrAPI\n }\n\n this.spatialFilterService\n .loadFilterItems(this.zones, this.itemType(), {\n type: this.queryType,\n thematics,\n buffer: this.buffer\n })\n .pipe(\n tap((features: Feature[]) => {\n this.store.clear();\n this.workspaceState.store.clear();\n this.store.insertMany(features);\n const grouped = this.getFeatureByType(features);\n\n grouped.forEach(({ points, lines }) => {\n if (points.length > 0) {\n this.tryAddPointToMap(points, points[0].meta.id);\n }\n if (lines.length > 0) {\n this.tryAddLayerToMap(lines, lines[0].meta.id);\n }\n });\n\n thematics.forEach((thematic) => {\n const hasFeatures = features.some(\n (f) => f.properties.type === thematic.source\n );\n if (hasFeatures) {\n zeroResults = false;\n this.thematicLength += 1;\n thematic.zeroResults = zeroResults;\n } else {\n thematic.zeroResults = true;\n }\n });\n this.cdRef.detectChanges();\n\n if (features.length >= 10000) {\n this.messageService.alert(\n 'igo.geo.spatialFilter.maxSizeAlert',\n 'igo.geo.spatialFilter.warning',\n { timeOut: 10000 }\n );\n }\n })\n )\n .subscribe(() => {\n if (this.type() !== SpatialFilterType.Predefined) {\n this.zones = [];\n }\n this.loading = false;\n if (zeroResults) {\n this.messageService.alert(\n 'igo.geo.spatialFilter.zeroResults',\n 'igo.geo.spatialFilter.warning',\n { timeOut: 10000 }\n );\n }\n });\n }\n\n private getFeatureByType(features: Feature[]) {\n return features.reduce((grouped, feature) => {\n const typeKey = feature.properties.type;\n let group = grouped.get(typeKey);\n if (!group) {\n group = { points: [], lines: [] };\n grouped.set(typeKey, group);\n }\n\n if (feature.geometry.type === 'Point') {\n feature.properties.longitude = feature.geometry.coordinates[0];\n feature.properties.latitude = feature.geometry.coordinates[1];\n group.points.push(feature);\n } else {\n group.lines.push(feature);\n }\n return grouped;\n }, new Map<string, { points: Feature[]; lines: Feature[] }>());\n }\n\n /**\n * Try to add point features to the map\n * Necessary to create clusters\n */\n private tryAddPointToMap(features: Feature[], id) {\n // 🔑 Get active zone index from its title\n const activeZone =\n this.type() === SpatialFilterType.Predefined\n ? this.activePredefinedLayerZones\n : this.activeDrawLayerZones;\n let zoneIndex = 1;\n if (activeZone?.title) {\n const match = activeZone.title.match(/^Zone (\\d+) -/);\n if (match) {\n zoneIndex = parseInt(match[1], 10);\n }\n }\n const titleFeature = features[0].meta.title;\n\n // Count how many layers with the same meta.title already exist\n let i = 1;\n for (const layer of this.layers) {\n if (layer.title?.startsWith(titleFeature)) {\n i++;\n }\n }\n\n const style = createOverlayMarkerStyle();\n\n // 🔑 Use zoneIndex to sync layer naming\n const filterLabel = this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n );\n\n const options: VectorLayerOptions = {\n isIgoInternalLayer: true,\n title: `${titleFeature} ${zoneIndex} - ${filterLabel}`,\n visible: true,\n style,\n\n sourceOptions: {\n type: 'cluster',\n id,\n queryable: true,\n distance: 120,\n meta: {\n title: 'Cluster'\n }\n } as QueryableDataSourceOptions\n };\n\n this.layerService\n .createAsyncLayer(options)\n .pipe(take(1))\n .subscribe((layer: VectorLayer) => {\n const featuresOl = features.map((feature) => {\n return featureToOl(feature, this.map.projection);\n });\n const ol = layer.dataSource.ol as olSourceCluster;\n ol.getSource().addFeatures(featuresOl);\n const previousLayer = this.layers.find(\n (prevLayer) => prevLayer.id === layer.id\n );\n if (previousLayer) {\n this.map.layerController.remove(previousLayer);\n this.layers = this.layers.filter((l) => l.id !== layer.id);\n i = i - 1;\n layer.title = `${titleFeature} ${zoneIndex} - ${filterLabel}`;\n layer.options.title = layer.title;\n }\n this.iterator = i;\n this.map.layerController.add(layer);\n this.layers.push(layer);\n this.pushLayer(layer);\n });\n }\n\n /**\n * Try to add line or polygon features to the map\n */\n private tryAddLayerToMap(features: Feature[], id) {\n let i = 1;\n if (features.length) {\n if (this.map === undefined) {\n return;\n }\n for (const layer of this.layers) {\n if (layer.title?.startsWith(features[0].meta.title)) {\n i++;\n }\n }\n\n const options: VectorLayerOptions = {\n isIgoInternalLayer: true,\n title: (features[0].meta.title +\n ' ' +\n i +\n ' - ' +\n this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n )) as string,\n sourceOptions: {\n type: 'vector',\n id,\n queryable: true\n } as QueryableDataSourceOptions,\n visible: true\n };\n this.layerService\n .createAsyncLayer(options)\n .pipe(take(1))\n .subscribe((layer: VectorLayer) => {\n const featuresOl = features.map((feature) => {\n return featureToOl(feature, this.map.projection);\n });\n const ol = layer.dataSource.ol as olSourceVector;\n ol.addFeatures(featuresOl);\n const previousLayer = this.layers.find(\n (prevLayer) => prevLayer.id === layer.id\n );\n if (previousLayer) {\n this.map.layerController.remove(previousLayer);\n i = i - 1;\n layer.title = (features[0].meta.title +\n ' ' +\n i +\n ' - ' +\n this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n )) as string;\n layer.options.title = layer.title;\n }\n this.map.layerController.add(layer);\n this.layers.push(layer);\n this.pushLayer(layer);\n });\n }\n }\n\n private pushLayer(layer) {\n for (const lay of this.activeLayers) {\n if (lay.id === layer.id) {\n return;\n }\n }\n\n this.activeLayers.push(layer);\n }\n\n onAddZone(feature: Feature | undefined) {\n const featureList = feature ? [feature] : [];\n this.zones = [...this.zones, ...featureList];\n if (!this.zones.length) return;\n this.addFeaturesToMap(this.zones, false);\n }\n\n onAddZoneWithBuffer(features: Feature[] | Feature) {\n this.zones = Array.isArray(features) ? features : [features];\n this.addFeaturesToMap(this.zones, true);\n }\n\n onRemovedZone(feature: Feature) {\n const zoneLayer = this.activePredefinedLayerZones;\n if (!zoneLayer) return;\n const olSource = zoneLayer.dataSource.ol;\n\n // Convert to OL feature (same way as when adding)\n const featureOl = featureToOl(feature, this.map.projection);\n\n // Find matching OL feature(s) by id or geometry\n const toRemove = olSource.getFeatures().filter((f) => {\n return f.getId() === featureOl.getId();\n });\n\n if (toRemove.length) {\n toRemove.forEach((f) => olSource.removeFeature(f));\n this.zones = this.zones.filter((z) => z.meta.id !== feature.meta.id);\n }\n\n if (olSource.getFeatures().length === 0) {\n this.map.layerController.remove(zoneLayer);\n this.layers = this.layers.filter((l) => l !== zoneLayer);\n this.activeLayers = [];\n this.activePredefinedLayerZones = undefined;\n }\n this.zoomToOlFeatures(olSource.getFeatures());\n }\n\n private addFeaturesToMap(features: Feature[], buffer?: boolean) {\n const type = this.type();\n if (\n type === SpatialFilterType.Predefined &&\n this.zonesExistsInLayers() &&\n !buffer\n )\n return;\n\n const lastZoneIndex = this.findLastZoneIndex();\n const zoneLayer =\n type === SpatialFilterType.Predefined\n ? this.activePredefinedLayerZones\n : undefined;\n if (!zoneLayer) {\n this.defaultStyle = this.createZoneStyle(features[0]);\n this.createZoneLayer(lastZoneIndex + 1, features).subscribe(\n (layer: VectorLayer) => {\n this.setActiveZoneLayer(layer);\n this.addFeaturesToLayer(layer, features);\n this.cdRef.detectChanges();\n }\n );\n } else {\n this.addFeaturesToLayer(zoneLayer, features, buffer);\n }\n }\n\n private zonesExistsInLayers(): boolean {\n if (this.type() !== SpatialFilterType.Predefined) return false;\n return this.layers\n .filter((l) => l.title.includes('Zone'))\n .some((layer) => {\n const olSource = layer.dataSource.ol as olSourceVector;\n const layerFeatures = olSource.getFeatures();\n return this.zones.every((zone) =>\n layerFeatures.some((feature) => feature.getId() === zone.meta.id)\n );\n });\n }\n\n private findLastZoneIndex(): number {\n let max = 0;\n for (const layer of this.layers) {\n if (layer.title?.startsWith('Zone')) {\n const match = layer.title.match(/^Zone (\\d+) -/);\n if (match) {\n const index = parseInt(match[1], 10);\n if (index > max) max = index;\n }\n }\n }\n return max;\n }\n\n private createZoneStyle(feature: Feature): (f, r) => olstyle.Style {\n return (_feature, resolution) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const coordinates = (feature as any).coordinates;\n return new olstyle.Style({\n image: new olstyle.Circle({\n radius: coordinates\n ? this.buffer /\n Math.cos((Math.PI / 180) * coordinates[1]) /\n resolution\n : undefined,\n fill: new olstyle.Fill({ color: 'rgba(200, 200, 20, 0.2)' }),\n stroke: new olstyle.Stroke({ width: 1, color: 'orange' })\n }),\n stroke: new olstyle.Stroke({ width: 1, color: 'orange' }),\n fill: new olstyle.Fill({ color: 'rgba(200, 200, 20, 0.2)' })\n });\n };\n }\n\n private createZoneLayer(zoneIndex: number, features: Feature[]) {\n const filterLabel = this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n );\n const options: VectorLayerOptions = {\n isIgoInternalLayer: true,\n title: `Zone ${zoneIndex} - ${filterLabel}`,\n workspace: { enabled: true },\n _internal: {\n code:\n this.type() === SpatialFilterType.Predefined\n ? features[0].properties.code\n : undefined\n },\n sourceOptions: {\n type: 'vector',\n queryable: true\n } as QueryableDataSourceOptions,\n visible: true\n };\n return this.layerService.createAsyncLayer(options).pipe(take(1));\n }\n\n private setActiveZoneLayer(layer: VectorLayer) {\n this.map.layerController.add(layer);\n this.layers.push(layer);\n if (this.type() === SpatialFilterType.Predefined) {\n this.activePredefinedLayerZones = layer;\n } else {\n this.activeDrawLayerZones = layer;\n }\n this.pushLayer(layer);\n }\n\n private addFeaturesToLayer(\n layer: VectorLayer,\n features: Feature[],\n buffer?: boolean\n ) {\n const olSource = layer.dataSource.ol;\n\n if (buffer) olSource.clear();\n\n const featuresOl = features.map((f) => featureToOl(f, this.map.projection));\n\n const type = this.type();\n if (type !== SpatialFilterType.Predefined) {\n const customType =\n type === SpatialFilterType.Point ? 'Cercle' : 'Polygone';\n for (const f of featuresOl) {\n f.set('nom', 'Zone', true);\n f.set('type', customType, true);\n if (type === SpatialFilterType.Point) {\n this.setPointProps(\n featuresOl[0] as OlFeature<OlPoint>,\n this.map.projectionCode,\n this.buffer\n );\n }\n }\n }\n\n olSource.addFeatures(featuresOl);\n layer.ol.setStyle(this.defaultStyle);\n if (type === SpatialFilterType.Predefined) {\n this.zoomToOlFeatures(olSource.getFeatures());\n }\n }\n\n private zoomToOlFeatures(featuresOl: OlFeature<OlGeometry>[]) {\n if (!featuresOl.length) return;\n moveToOlFeatures(this.map.viewController, featuresOl, FeatureMotion.Zoom);\n }\n\n private setPointProps(\n featureOl: OlFeature<OlPoint>,\n projectionCode: string,\n radius: number\n ): void {\n const olGeometry = featureOl.getGeometry();\n const [longitude, latitude] = transform(\n olGeometry.getFlatCoordinates(),\n projectionCode,\n 'EPSG:4326'\n );\n\n const props = {\n [RADIUS_NAME]: radius,\n _projection: projectionCode,\n latitude,\n longitude\n };\n Object.entries(props).forEach(([key, value]) =>\n featureOl.set(key, value, true)\n );\n }\n}\n","<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","import { Component } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n TimeFilterListBindingDirective,\n TimeFilterListComponent\n} from '@igo2/geo';\n\n@ToolComponent({\n name: 'timeFilter',\n title: 'igo.integration.tools.timeFilter',\n icon: 'history'\n})\n@Component({\n selector: 'igo-time-filter-tool',\n templateUrl: './time-filter-tool.component.html',\n imports: [TimeFilterListComponent, TimeFilterListBindingDirective]\n})\nexport class TimeFilterToolComponent {}\n","<igo-time-filter-list igoTimeFilterListBinding />\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool/active-ogc-filter-tool.component';\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool/active-time-filter-tool.component';\nimport { OgcFilterToolComponent } from './ogc-filter-tool/ogc-filter-tool.component';\nimport { SpatialFilterToolComponent } from './spatial-filter-tool/spatial-filter-tool.component';\nimport { TimeFilterToolComponent } from './time-filter-tool/time-filter-tool.component';\n\n/**\n * @deprecated import the components directly or INTEGRATION_FILTER_DIRECTIVES for the set\n */\n@NgModule({\n imports: [\n OgcFilterToolComponent,\n ActiveOgcFilterToolComponent,\n TimeFilterToolComponent,\n ActiveTimeFilterToolComponent,\n SpatialFilterToolComponent\n ],\n exports: [\n OgcFilterToolComponent,\n ActiveOgcFilterToolComponent,\n TimeFilterToolComponent,\n ActiveTimeFilterToolComponent,\n SpatialFilterToolComponent\n ]\n})\nexport class IgoAppFilterModule {\n static forRoot(): ModuleWithProviders<IgoAppFilterModule> {\n return {\n ngModule: IgoAppFilterModule,\n providers: []\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, OnDestroy, OnInit, inject, input } from '@angular/core';\nimport { Validators } from '@angular/forms';\n\nimport { Form, FormService } from '@igo2/common/form';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { IgoMap, isBaseLayer } from '@igo2/geo';\n\nimport * as olstyle from 'ol/style';\n\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport type { Subscription } from 'rxjs';\n\nimport { MapState } from '../../map/map.state';\n\ninterface DataIssueReporterData {\n geometry: object;\n layer: string;\n desc: string;\n email: string;\n}\n\n@ToolComponent({\n name: 'dataIssueReporter',\n title: 'igo.integration.tools.dataIssueReporter',\n icon: 'feedback'\n})\n@Component({\n selector: 'igo-issue-reporter-tool',\n templateUrl: './data-issue-reporter-tool.component.html',\n styleUrls: ['./data-issue-reporter-tool.component.scss'],\n // eslint-disable-next-line @angular-eslint/prefer-standalone\n standalone: false\n})\nexport class DataIssueReporterToolComponent implements OnInit, OnDestroy {\n private mapState = inject(MapState);\n private formService = inject(FormService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private httpClient = inject(HttpClient);\n\n /**\n * Url to report the data issue. Use the Post protocol to send the form.\n */\n readonly url = input<string>(undefined);\n\n /**\n * Map to link to the form\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n form$ = new BehaviorSubject<Form>(undefined);\n\n data$ = new BehaviorSubject<Record<string, any>>(undefined);\n\n submitDisabled = true;\n\n private valueChanges$$: Subscription;\n\n ngOnInit() {\n combineLatest([\n this.languageService.language$,\n this.map.layerController.all$\n ]).subscribe(([_language, layers]) => {\n const baseLayerOrShownInLayerList = layers\n .filter((l) => isBaseLayer(l) || l.showInLayerList)\n .map((l) => {\n return { value: `${l.title}-${l.id}`, title: l.title };\n });\n const fieldConfigs = [\n {\n name: 'geometry',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.geometry'\n ),\n type: 'geometry',\n inputs: {\n map: this.map,\n geometryTypeField: true,\n geometryType: 'Polygon',\n drawGuideField: false,\n drawGuide: 0,\n drawGuidePlaceholder: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.drawGuidePlaceholder'\n ),\n drawStyle: new olstyle.Style({\n stroke: new olstyle.Stroke({\n color: [255, 0, 0, 1],\n width: 2\n }),\n fill: new olstyle.Fill({\n color: [255, 0, 0, 0.2]\n }),\n image: new olstyle.Circle({\n radius: 8,\n stroke: new olstyle.Stroke({\n color: [255, 0, 0, 1]\n }),\n fill: new olstyle.Fill({\n color: [255, 0, 0, 0.2]\n })\n })\n }),\n overlayStyle: new olstyle.Style({\n stroke: new olstyle.Stroke({\n color: [0, 255, 0, 1],\n width: 2\n }),\n fill: new olstyle.Fill({\n color: [0, 255, 0, 0.2]\n }),\n image: new olstyle.Circle({\n radius: 8,\n stroke: new olstyle.Stroke({\n color: [0, 255, 0, 1]\n }),\n fill: new olstyle.Fill({\n color: [0, 255, 0, 0.2]\n })\n })\n })\n }\n },\n {\n name: 'layer',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.layer'\n ),\n type: 'select',\n options: {\n cols: 2\n },\n inputs: {\n choices: baseLayerOrShownInLayerList\n }\n },\n {\n name: 'desc',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.description'\n ),\n type: 'textarea',\n options: {\n validator: Validators.required\n }\n },\n {\n name: 'email',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.email'\n ),\n options: {\n validator: Validators.email\n }\n }\n ];\n\n const fields = fieldConfigs.map((config) =>\n this.formService.field(config)\n );\n const form = this.formService.form(fields, []);\n\n this.valueChanges$$ = form.control.valueChanges.subscribe(() => {\n this.submitDisabled = !form.control.valid;\n });\n\n this.form$.next(form);\n });\n }\n\n ngOnDestroy() {\n this.valueChanges$$.unsubscribe();\n }\n\n clearForm() {\n this.form$.value.control.reset();\n }\n\n onSubmit(data: DataIssueReporterData) {\n const submitTitle = 'igo.integration.dataIssueReporterTool.submit.title';\n const url = this.url();\n if (!url) {\n this.messageService.alert(\n 'igo.integration.dataIssueReporterTool.submit.setupMessage',\n submitTitle\n );\n alert(JSON.stringify(data));\n } else {\n this.httpClient.post<DataIssueReporterData>(url, data).subscribe(() => {\n this.messageService.success(\n 'igo.integration.dataIssueReporterTool.submit.message',\n submitTitle\n );\n });\n this.clearForm();\n }\n }\n}\n","@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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { IgoFormModule } from '@igo2/common/form';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { IgoMessageModule } from '@igo2/core/message';\n\nimport { DataIssueReporterToolComponent } from './data-issue-reporter-tool/data-issue-reporter-tool.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n IgoLanguageModule,\n IgoFormModule,\n IgoMessageModule\n ],\n declarations: [DataIssueReporterToolComponent],\n exports: [DataIssueReporterToolComponent],\n schemas: []\n})\nexport class IgoAppGeometryFormModule {}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n inject,\n input,\n model\n} from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport type { WorkspaceStore } from '@igo2/common/workspace';\nimport { ContextImportExportComponent } from '@igo2/context';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport {\n ExportOptions,\n IgoMap,\n ImportExportComponent,\n ProjectionsLimitationsOptions\n} from '@igo2/geo';\n\nimport { ContextState } from '../../context/context.state';\nimport { MapState } from '../../map/map.state';\nimport { WorkspaceState } from '../../workspace/workspace.state';\nimport {\n ImportExportMode,\n ImportExportState,\n ImportExportType\n} from '../import-export.state';\n\n@ToolComponent({\n name: 'importExport',\n title: 'igo.integration.tools.importExport',\n icon: 'file_save'\n})\n@Component({\n selector: 'igo-import-export-tool',\n templateUrl: './import-export-tool.component.html',\n styleUrls: ['./import-export-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTabsModule,\n ImportExportComponent,\n ContextImportExportComponent,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class ImportExportToolComponent implements OnInit {\n private mapState = inject(MapState);\n importExportState = inject(ImportExportState);\n private workspaceState = inject(WorkspaceState);\n contextState = inject(ContextState);\n\n readonly projectionsLimitations =\n input<ProjectionsLimitationsOptions>(undefined);\n\n readonly selectFirstProj = input(false);\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get workspaceStore(): WorkspaceStore {\n return this.workspaceState.store;\n }\n\n readonly importExportType = model<ImportExportType>(ImportExportType.layer);\n readonly importExportShowBothType = input(true);\n\n ngOnInit(): void {\n this.selectType();\n this.selectMode();\n }\n\n private selectType() {\n const importExportType = this.importExportType();\n if (importExportType) {\n this.importExportState.importExportType$.next(importExportType);\n }\n const userSelectedType = this.importExportState.importExportType$.value;\n if (userSelectedType !== undefined) {\n this.importExportState.setImportExportType(userSelectedType);\n } else {\n this.importExportState.setImportExportType(ImportExportType.layer);\n }\n }\n\n private selectMode() {\n const userSelectedMode = this.importExportState.selectedMode$.value;\n if (userSelectedMode !== undefined) {\n this.importExportState.setMode(userSelectedMode);\n } else {\n this.importExportState.setMode(ImportExportMode.import);\n }\n }\n\n public modeChanged(mode: ImportExportMode) {\n this.importExportState.setMode(mode);\n }\n\n public exportOptionsChange(exportOptions: ExportOptions) {\n this.importExportState.setsExportOptions(exportOptions);\n }\n\n importExportTypeChange(event) {\n this.importExportType.set(event.value);\n }\n}\n","@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","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ImportExportToolComponent } from './import-export-tool/import-export-tool.component';\n\n/**\n * @deprecated import the ImportExportToolComponent directly\n */\n@NgModule({\n imports: [ImportExportToolComponent],\n exports: [ImportExportToolComponent]\n})\nexport class IgoAppImportExportModule {\n static forRoot(): ModuleWithProviders<IgoAppImportExportModule> {\n return {\n ngModule: IgoAppImportExportModule,\n providers: []\n };\n }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { AsyncPipe, DecimalPipe } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { StorageScope, StorageService } from '@igo2/core/storage';\nimport {\n IgoMap,\n InputProjections,\n ProjectionsLimitationsOptions,\n formatScale\n} from '@igo2/geo';\nimport { computeProjectionsConstraints, zoneMtm, zoneUtm } from '@igo2/geo';\n\nimport * as olproj from 'ol/proj';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { MapState } from '../../map.state';\n\n/**\n * Tool to display the coordinates and a cursor of the center of the map\n */\n@Component({\n selector: 'igo-advanced-coordinates',\n templateUrl: './advanced-coordinates.component.html',\n styleUrls: ['./advanced-coordinates.component.scss'],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatOptionModule,\n MatSlideToggleModule,\n AsyncPipe,\n DecimalPipe,\n IgoLanguageModule\n ]\n})\nexport class AdvancedCoordinatesComponent implements OnInit, OnDestroy {\n private clipboard = inject(Clipboard);\n mapState = inject(MapState);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private storageService = inject(StorageService);\n private config = inject(ConfigService);\n private formBuilder = inject(UntypedFormBuilder);\n\n public formattedScale$ = new BehaviorSubject<string>('');\n public projections$ = new BehaviorSubject<InputProjections[]>([]);\n public form: UntypedFormGroup;\n public coordinates: string[];\n private currentCenterDefaultProj: [number, number];\n public center: boolean;\n private inMtmZone = true;\n private inLambert2 = { 32198: true, 3798: true };\n private mapState$$: Subscription;\n private formStatus$$: Subscription;\n private _projectionsLimitations: ProjectionsLimitationsOptions = {};\n private projectionsConstraints: ProjectionsLimitationsOptions;\n private defaultProj: InputProjections;\n private currentZones = { utm: undefined, mtm: undefined };\n public units = true;\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get inputProj(): InputProjections {\n return this.form.get('inputProj').value;\n }\n set inputProj(value: InputProjections) {\n this.form.patchValue({ inputProj: value });\n }\n get projectionsLimitations(): ProjectionsLimitationsOptions {\n return this._projectionsLimitations || {};\n }\n\n @Input()\n set projectionsLimitations(value: ProjectionsLimitationsOptions) {\n this._projectionsLimitations = value;\n }\n\n constructor() {\n this.defaultProj = {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.wgs84',\n { code: 'EPSG:4326' }\n ),\n translateKey: 'wgs84',\n alias: 'WGS84',\n code: 'EPSG:4326',\n zone: '',\n def: undefined,\n extent: undefined\n };\n this.center = this.storageService.get('centerToggle') as boolean;\n this.computeProjections();\n this.buildForm();\n }\n\n /**\n * Listen a state of the map, a state of a form, update the coordinates\n */\n ngOnInit(): void {\n this.mapState$$ = this.map.viewController.state$\n .pipe(debounceTime(50))\n .subscribe(() => {\n this.setScaleValue(this.map);\n this.updateCoordinates();\n });\n\n this.formStatus$$ = this.form.valueChanges.subscribe(() => {\n this.updateCoordinates();\n });\n\n const tempInputProj = this.storageService.get(\n 'currentProjection'\n ) as InputProjections;\n\n this.inputProj =\n this.projections$.value.find(\n (val) => val.code === this.defaultProj.code\n ) ?? this.projections$.value[0];\n\n if (tempInputProj !== null) {\n const pos = this.positionInList(tempInputProj);\n this.inputProj = this.projections$.value[pos];\n this.updateZoneMtmUtm();\n }\n this.map.mapCenter$.next(this.center);\n this.coordinates = this.getCoordinates();\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\n this.defaultProj.code\n );\n }\n\n ngOnDestroy(): void {\n this.map.mapCenter$.next(false);\n this.mapState$$.unsubscribe();\n this.formStatus$$.unsubscribe();\n }\n\n setScaleValue(map: IgoMap) {\n this.formattedScale$.next(\n ': ~ 1 / ' + formatScale(map.viewController.getScale())\n );\n }\n /**\n * Coordinates of the center of the map on the appropriate systeme of coordinates\n * @returns Array of two numbers\n */\n getCoordinates(): string[] {\n this.currentZones.mtm = zoneMtm(this.currentCenterDefaultProj[0]);\n this.currentZones.utm = zoneUtm(this.currentCenterDefaultProj[0]);\n const code = this.inputProj.code;\n let decimal = 2;\n if (code.includes('EPSG:4326') || code.includes('EPSG:4269')) {\n decimal = 5;\n }\n this.units = code === 'EPSG:4326' || code === 'EPSG:4269';\n const coord = this.map.viewController\n .getCenter(code)\n .map((c) => c.toFixed(decimal));\n return coord;\n }\n\n updateCoordinates() {\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\n this.defaultProj.code\n );\n const currentMtmZone = zoneMtm(this.currentCenterDefaultProj[0]);\n const currentUtmZone = zoneUtm(this.currentCenterDefaultProj[0]);\n if (!this.inMtmZone && currentMtmZone !== this.currentZones.mtm) {\n this.back2quebec();\n }\n let zoneChange = false;\n if (currentMtmZone !== this.currentZones.mtm) {\n this.currentZones.mtm = currentMtmZone;\n zoneChange = true;\n }\n if (currentUtmZone !== this.currentZones.utm) {\n this.currentZones.utm = currentUtmZone;\n zoneChange = true;\n }\n if (zoneChange) {\n this.updateProjectionsZoneChange();\n }\n this.checkLambert(this.currentCenterDefaultProj);\n this.coordinates = this.getCoordinates();\n\n this.storageService.set(\n 'currentProjection',\n this.inputProj,\n StorageScope.SESSION\n );\n }\n\n /**\n * Copy the coordinates to a clipboard\n */\n copyTextToClipboard(): void {\n const successful = this.clipboard.copy(this.coordinates.toString());\n if (successful) {\n this.messageService.success(\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyMsg',\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyTitle'\n );\n }\n }\n\n /**\n * Display a cursor on the center of the map\n */\n displayCenter(toggle: boolean): void {\n this.center = toggle;\n this.map.mapCenter$.next(toggle);\n this.storageService.set('centerToggle', toggle, StorageScope.SESSION);\n }\n\n /**\n * Builder of the form\n */\n private buildForm(): void {\n this.form = this.formBuilder.group({\n inputProj: ['', [Validators.required]]\n });\n }\n\n /**\n * Update list of projections after changing of the state of the map\n */\n private updateProjectionsZoneChange(): void {\n let modifiedProj = this.projections$.value;\n const translate = this.languageService.translate;\n modifiedProj.map((p) => {\n if (p.translateKey === 'mtm') {\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n if (zone) {\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n p.alias = `MTM ${zone}`;\n p.code = code;\n p.zone = `${zone}`;\n p.translatedValue = translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n p\n );\n } else {\n p.alias = '';\n this.inMtmZone = false;\n if (this.inputProj.translateKey === 'mtm') {\n this.inputProj = this.projections$.value[0];\n }\n }\n }\n if (p.translateKey === 'utm') {\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\n const code = `EPSG:326${zone}`;\n p.alias = `UTM ${zone}`;\n p.code = code;\n p.zone = `${zone}`;\n p.translatedValue = translate.instant(\n 'igo.geo.importExportForm.projections.utm',\n p\n );\n }\n });\n modifiedProj = modifiedProj.filter((p) => p.alias !== '');\n this.projections$.next(modifiedProj);\n }\n\n /**\n * Create a list of currents projections\n */\n private computeProjections(): void {\n this.projectionsConstraints = computeProjectionsConstraints(\n this.projectionsLimitations\n );\n const projections: InputProjections[] = [];\n\n if (!this.currentCenterDefaultProj) {\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\n this.defaultProj.code\n );\n }\n\n const translate = this.languageService.translate;\n if (this.projectionsConstraints.wgs84) {\n projections.push({\n translatedValue: translate.instant(\n 'igo.geo.importExportForm.projections.wgs84',\n { code: 'EPSG:4326' }\n ),\n translateKey: 'wgs84',\n alias: 'WGS84',\n code: 'EPSG:4326',\n zone: '',\n def: undefined,\n extent: undefined\n });\n }\n\n if (this.projectionsConstraints.nad83) {\n projections.push({\n translatedValue: translate.instant(\n 'igo.geo.importExportForm.projections.nad83',\n { code: 'EPSG:4269' }\n ),\n translateKey: 'nad83',\n alias: 'NAD83',\n code: 'EPSG:4269',\n zone: '',\n def: undefined,\n extent: undefined\n });\n }\n\n if (this.projectionsConstraints.webMercator) {\n projections.push({\n translatedValue: translate.instant(\n 'igo.geo.importExportForm.projections.webMercator',\n { code: 'EPSG:3857' }\n ),\n translateKey: 'webMercator',\n alias: 'Web Mercator',\n code: 'EPSG:3857',\n zone: '',\n def: undefined,\n extent: undefined\n });\n }\n if (this.projectionsConstraints.mtm) {\n // Quebec\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n if (zone) {\n this.inMtmZone = true;\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n projections.splice(3, 0, {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n { code, zone }\n ),\n translateKey: 'mtm',\n alias: `MTM ${zone}`,\n code,\n zone: `${zone}`,\n def: undefined,\n extent: undefined\n });\n } else {\n this.inMtmZone = false;\n }\n }\n if (this.projectionsConstraints.utm) {\n const order = this.inMtmZone ? 4 : 3;\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\n projections.splice(order, 0, {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.utm',\n { code, zone }\n ),\n translateKey: 'utm',\n alias: `UTM ${zone}`,\n code,\n zone: `${zone}`,\n def: undefined,\n extent: undefined\n });\n }\n let configProjection: InputProjections[] = [];\n if (this.projectionsConstraints.projFromConfig) {\n configProjection = (this.config.getConfig('projections') ||\n []) as InputProjections[];\n }\n\n this.projections$.next(configProjection.concat(projections));\n }\n\n /**\n * Push the MTM in the array of systeme of coordinates\n * @param projections Array of the InputProjections\n */\n private pushMtm(projections: InputProjections[]): void {\n if (this.projectionsConstraints.mtm) {\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n projections.splice(3, 0, {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n { code, zone }\n ),\n translateKey: 'mtm',\n alias: `MTM ${zone}`,\n code,\n zone: `${zone}`,\n def: undefined,\n extent: undefined\n });\n }\n }\n\n /**\n * Updates the list of systems of coordinates for territory of Quebec\n * push MTM and UTM in the Array\n */\n private back2quebec(): void {\n const projections = this.projections$.value;\n this.pushMtm(projections);\n this.inMtmZone = true;\n }\n\n /**\n * Update the numbers of the zones when application is restarted\n */\n private updateZoneMtmUtm() {\n if (this.inputProj.translateKey === 'mtm') {\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n this.inputProj.alias = `MTM ${zone}`;\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n this.inputProj.code = code;\n this.inputProj.zone = `${zone}`;\n this.inputProj.translatedValue = this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n { code, zone }\n );\n }\n if (this.inputProj.translateKey === 'utm') {\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\n this.inputProj.alias = `UTM ${zone}`;\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\n this.inputProj.code = code;\n this.inputProj.zone = `${zone}`;\n this.inputProj.translatedValue = this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.utm',\n { code, zone }\n );\n }\n }\n\n /**\n * Compute the position of a current projection in a list. 0 if the projection is not in the list\n * @param translateKey string, translate key of a projection\n * @returns numeric, position of an element in the array\n */\n positionInList(tempInputProj: InputProjections): number {\n const tk = tempInputProj.translateKey;\n const alias = tempInputProj.alias;\n let position; // = undefined;\n let iter = 0;\n this.projections$.value.map((projection) => {\n if (tk) {\n if (tk === projection.translateKey) {\n position = iter;\n }\n } else if (alias === projection.alias) {\n position = iter;\n }\n iter++;\n });\n position = position ? position : 0;\n return position;\n }\n\n /**\n * Change the list of projections depending on the projections of Lambert\n * @param coordinates An array of numbers, longitude and latitude\n */\n checkLambert(coordinates: [number, number]) {\n const lambertProjections = this.config.getConfig('projections') || [];\n lambertProjections.forEach((projection) => {\n let modifiedProj = this.projections$.value;\n const extent = projection.extent;\n const code = projection.code.match(/\\d+/);\n const currentExtentWGS = olproj.transformExtent(\n extent,\n projection.code,\n this.defaultProj.code\n );\n if (\n coordinates[0] < currentExtentWGS[0] ||\n coordinates[0] > currentExtentWGS[2] ||\n coordinates[1] < currentExtentWGS[1] ||\n coordinates[1] > currentExtentWGS[3]\n ) {\n this.inLambert2[code] = false;\n if (this.inputProj.alias === projection.alias) {\n this.inputProj = this.projections$.value[0];\n }\n modifiedProj = modifiedProj.filter((p) => p.alias !== projection.alias);\n this.projections$.next(modifiedProj);\n } else {\n if (!this.inLambert2[code]) {\n this.projections$.next(modifiedProj.concat(projection));\n this.inLambert2[code] = true;\n }\n }\n });\n }\n}\n","<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","import { Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators\n} from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { DetailedContext } from '@igo2/context';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { AnyLayer, IgoMap, Layer, VectorLayer, isLayerItem } from '@igo2/geo';\n\nimport { ToolState } from '../../../tool/tool.state';\nimport { MapState } from '../../map.state';\n\n@Component({\n selector: 'igo-advanced-swipe',\n templateUrl: './advanced-swipe.component.html',\n styleUrls: ['./advanced-swipe.component.scss'],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatListModule,\n MatIconModule,\n IgoLanguageModule\n ]\n})\nexport class AdvancedSwipeComponent implements OnInit, OnDestroy {\n mapState = inject(MapState);\n private formBuilder = inject(UntypedFormBuilder);\n private toolState = inject(ToolState);\n\n public swipe = false;\n public layerList: AnyLayer[];\n public userControlledLayerList: AnyLayer[];\n public form: UntypedFormGroup;\n public layers: VectorLayer[];\n public res: DetailedContext;\n public listForSwipe: Layer[];\n\n /**\n * Get an active map state\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n constructor() {\n this.buildForm();\n }\n\n /**\n * Get the list of layers for swipe\n * @internal\n */\n ngOnInit() {\n this.map.layerController.all$.subscribe(\n (layers) =>\n (this.userControlledLayerList = layers.filter(\n (layer) =>\n isLayerItem(layer) &&\n !layer.baseLayer &&\n layer.showInLayerList &&\n layer.displayed\n ))\n );\n }\n\n /**\n * Desactivate the swipe\n * @internal\n */\n ngOnDestroy() {\n this.swipe = false;\n this.map.swipeEnabled$.next(this.swipe);\n }\n\n /**\n * Build a form for choise of the layers\n */\n private buildForm() {\n this.form = this.formBuilder.group({\n layers: ['', [Validators.required]]\n });\n }\n\n /**\n * Activate the swipe, send a list of layers for a swipe-tool\n */\n startSwipe(toggle: boolean) {\n this.swipe = toggle;\n this.map.swipeEnabled$.next(toggle);\n this.listForSwipe = [];\n for (const layer of this.form.value.layers) {\n this.listForSwipe.push(layer);\n }\n this.map.selectedFeatures$.next(this.listForSwipe);\n }\n\n /**\n * Restart a swipe for a new layers-list\n */\n applyNewLayers(e) {\n this.startSwipe(false); // l'approche KISS\n this.startSwipe(true);\n if (e._selected) {\n e._selected = false;\n }\n const allLayers = this.userControlledLayerList?.length;\n const selectedLayers = this.form.controls.layers.value.length;\n if (selectedLayers === allLayers) {\n e._selected = true;\n }\n }\n\n /**\n * Select all list of layers and restart a tool\n */\n selectAll(e) {\n if (e._selected) {\n this.form.controls.layers.setValue(this.userControlledLayerList);\n e._selected = true;\n } else {\n this.form.controls.layers.setValue([]);\n }\n this.startSwipe(false);\n this.startSwipe(true);\n }\n\n /**\n * Open search tool\n */\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n /**\n * Open catalog\n */\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n /**\n * Open context manager\n */\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n}\n","@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","import { AsyncPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { MapState } from '../map.state';\nimport { AdvancedCoordinatesComponent } from './advanced-coordinates/advanced-coordinates.component';\nimport { AdvancedSwipeComponent } from './advanced-swipe/advanced-swipe.component';\n\n@ToolComponent({\n name: 'advancedMap',\n title: 'igo.integration.tools.advancedMap',\n icon: 'home_repair_service'\n})\n/**\n * Tool to handle the advanced map tools\n */\n@Component({\n selector: 'igo-advanced-map-tool',\n templateUrl: './advanced-map-tool.component.html',\n styleUrls: ['./advanced-map-tool.component.scss'],\n imports: [\n AdvancedSwipeComponent,\n MatDividerModule,\n AdvancedCoordinatesComponent,\n MatSlideToggleModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class AdvancedMapToolComponent {\n mapState = inject(MapState);\n\n get tracking$() {\n return this.mapState.map.geolocationController?.tracking$;\n }\n get followPosition$() {\n return this.mapState.map.geolocationController?.followPosition$;\n }\n\n toggleTracking(value) {\n if (!this.mapState.map.geolocationController) {\n return;\n }\n this.mapState.map.geolocationController.tracking = value;\n }\n\n toggleFollow(value) {\n if (!this.mapState.map.geolocationController) {\n return;\n }\n this.mapState.map.geolocationController.followPosition = value;\n }\n}\n","<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","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { type AnyLayer, isLayerItem } from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\n\nimport { WorkspaceState } from '../workspace.state';\n\n@Component({\n selector: 'igo-workspace-button',\n templateUrl: './workspace-button.component.html',\n styleUrls: ['./workspace-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class WorkspaceButtonComponent implements OnInit, OnDestroy {\n private workspaceState = inject(WorkspaceState);\n\n public hasWorkspace$ = new BehaviorSubject<boolean>(false);\n private hasWorkspace$$: Subscription;\n\n private layer$ = new BehaviorSubject<AnyLayer>(undefined);\n @Input()\n set layer(value: AnyLayer) {\n this._layer = value;\n this.layer$.next(this._layer);\n }\n get layer(): AnyLayer {\n return this._layer;\n }\n private _layer: AnyLayer;\n\n readonly color = input('primary');\n\n ngOnInit(): void {\n this.hasWorkspace$$ = combineLatest([\n this.workspaceState.workspaceEnabled$,\n this.layer$\n ]).subscribe(([enabled, layer]) =>\n this.hasWorkspace$.next(\n enabled && isLayerItem(layer) && layer.options.workspace?.enabled\n )\n );\n }\n\n ngOnDestroy(): void {\n this.hasWorkspace$$.unsubscribe();\n }\n\n activateWorkspace() {\n if (\n this.workspaceState.workspace$.value &&\n (this.workspaceState.workspace$.value as any).layer.id ===\n this.layer.id &&\n this.workspaceState.expanded()\n ) {\n this.workspaceState.expanded.set(false);\n } else {\n this.workspaceState.expanded.set(true);\n this.workspaceState.setActiveWorkspaceById(this.layer.id);\n }\n }\n}\n","@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","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { Media, MediaService } from '@igo2/core/media';\nimport {\n AnyLayer,\n ExportButtonComponent,\n ExportOptions,\n IgoMap,\n Layer,\n LayerListControlsEnum,\n LayerListControlsOptions,\n LayerViewerComponent,\n LayerViewerOptions,\n MetadataButtonComponent,\n OgcFilterButtonComponent,\n SearchSourceService,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n sourceCanSearch\n} from '@igo2/geo';\n\nimport { Observable } from 'rxjs';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../../import-export/import-export.state';\nimport { WorkspaceButtonComponent } from '../../workspace';\nimport { ToolState } from './../../tool/tool.state';\nimport { MapState } from './../map.state';\n\n@ToolComponent({\n name: 'mapDetails',\n title: 'igo.integration.tools.map',\n icon: 'map'\n})\n@Component({\n selector: 'igo-map-details-tool',\n templateUrl: './map-details-tool.component.html',\n styleUrls: ['./map-details-tool.component.scss'],\n imports: [\n LayerViewerComponent,\n WorkspaceButtonComponent,\n ExportButtonComponent,\n OgcFilterButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n MetadataButtonComponent,\n MatListModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapDetailsToolComponent implements OnInit {\n private mapState = inject(MapState);\n private toolState = inject(ToolState);\n private searchSourceService = inject(SearchSourceService);\n private importExportState = inject(ImportExportState);\n private configService = inject(ConfigService);\n mediaService = inject(MediaService);\n private cdr = inject(ChangeDetectorRef);\n\n isDesktop: boolean;\n public delayedShowEmptyMapContent = false;\n\n readonly toggleLegendOnVisibilityChange = input(false);\n\n readonly expandLegendOfVisibleLayers = input(false);\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly ogcButton = input(true);\n\n readonly timeButton = input(true);\n\n readonly layerListControls = input<LayerListControlsOptions>({});\n\n readonly queryBadge = input(false);\n\n readonly layerAdditionAllowed = input(true);\n\n private _layerViewerOptions: Partial<LayerViewerOptions>;\n get layerViewerOptions(): LayerViewerOptions {\n return {\n filterAndSortOptions: this.layerFilterAndSortOptions,\n legend: {\n showForVisibleLayers: this.expandLegendOfVisibleLayers(),\n showOnVisibilityChange: this.toggleLegendOnVisibilityChange(),\n updateOnResolutionChange: this.updateLegendOnResolutionChange()\n },\n queryBadge: this.queryBadge(),\n ...this._layerViewerOptions\n };\n }\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layers$(): Observable<AnyLayer[]> {\n return this.map.layerController.all$;\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls().excludeBaseLayers || false;\n }\n\n get layerFilterAndSortOptions(): any {\n const filterSortOptions = Object.assign(\n {\n showToolbar: LayerListControlsEnum.default\n },\n this.layerListControls()\n );\n\n switch (this.layerListControls().showToolbar) {\n case LayerListControlsEnum.always:\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\n break;\n case LayerListControlsEnum.never:\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\n break;\n default:\n break;\n }\n return filterSortOptions;\n }\n\n get searchToolInToolbar(): boolean {\n return (\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\n this.searchSourceService\n .getSources()\n .filter(sourceCanSearch)\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\n );\n }\n\n get catalogToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\n }\n\n get contextToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\n }\n\n constructor() {\n this._layerViewerOptions = this.configService.getConfig('layer');\n }\n\n ngOnInit(): void {\n this.handleMedia();\n\n // prevent message to be shown too quickly. Waiting for layers\n setTimeout(() => {\n this.delayedShowEmptyMapContent = true;\n this.cdr.detectChanges();\n }, 250);\n }\n\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n\n activateExport(layer: Layer) {\n let id = layer.id;\n if (layer.options.workspace?.workspaceId) {\n id =\n layer.options.workspace.workspaceId !== layer.id\n ? layer.options.workspace.workspaceId\n : layer.id;\n }\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n private handleMedia(): void {\n this.mediaService.media$.subscribe((result) => {\n this.isDesktop = result === Media.Desktop;\n this.cdr.detectChanges();\n });\n }\n}\n","@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","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport {\n AnyLayer,\n IgoMap,\n LayerLegendListBindingDirective,\n LayerLegendListComponent,\n LayerListControlsOptions,\n SearchSourceService,\n isBaseLayer,\n sourceCanSearch\n} from '@igo2/geo';\n\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subscription,\n combineLatest\n} from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport { ToolState } from './../../tool/tool.state';\nimport { MapState } from './../map.state';\n\n@ToolComponent({\n name: 'mapLegend',\n title: 'igo.integration.tools.legend',\n icon: 'format_list_bulleted'\n})\n@Component({\n selector: 'igo-map-legend-tool',\n templateUrl: './map-legend-tool.component.html',\n styleUrls: ['./map-legend-tool.component.scss'],\n imports: [\n LayerLegendListComponent,\n LayerLegendListBindingDirective,\n MatListModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapLegendToolComponent implements OnInit, OnDestroy {\n private mapState = inject(MapState);\n private toolState = inject(ToolState);\n private searchSourceService = inject(SearchSourceService);\n private cdRef = inject(ChangeDetectorRef);\n\n public delayedShowEmptyMapContent = false;\n\n layers$ = new BehaviorSubject<AnyLayer[]>([]);\n showAllLegendsValue$ = new BehaviorSubject(false);\n change$ = new ReplaySubject<void>(1);\n\n private resolution$$: Subscription;\n private visibleOrInRangeLayers$$: Subscription;\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly layerAdditionAllowed = input(true);\n\n readonly allowShowAllLegends = input(false);\n\n readonly showAllLegendsValue = input(false);\n\n readonly layerListControls = input<LayerListControlsOptions>({});\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get visibleOrInRangeLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.displayed))\n );\n }\n\n get visibleLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.visible))\n );\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls().excludeBaseLayers || false;\n }\n\n get searchToolInToolbar(): boolean {\n return (\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\n this.searchSourceService\n .getSources()\n .filter(sourceCanSearch)\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\n );\n }\n\n get catalogToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\n }\n\n get contextToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\n }\n\n ngOnInit(): void {\n this.resolution$$ = combineLatest([\n this.map.layerController.all$,\n this.map.viewController.resolution$\n ])\n .pipe(debounceTime(10))\n .subscribe((bunch) => {\n this.layers$.next(\n bunch[0].filter(\n (layer) =>\n layer.showInLayerList !== false &&\n (!this.excludeBaseLayers || !isBaseLayer(layer))\n )\n );\n });\n\n if (this.allowShowAllLegends()) {\n this.mapState.showAllLegendsValue =\n this.mapState.showAllLegendsValue !== undefined\n ? this.mapState.showAllLegendsValue\n : this.showAllLegendsValue() || false;\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\n } else {\n this.showAllLegendsValue$.next(false);\n }\n\n // prevent message to be shown too quickly. Waiting for layers\n setTimeout(() => {\n this.delayedShowEmptyMapContent = true;\n this.cdRef.detectChanges();\n }, 250);\n }\n\n onShowAllLegends(event) {\n this.mapState.showAllLegendsValue = event;\n this.showAllLegendsValue$.next(event);\n }\n\n showAllLegend() {\n if (this.layers$.getValue().length === 0) {\n return false;\n } else if (\n this.layers$.getValue().length !== 0 &&\n this.allowShowAllLegends() === false\n ) {\n let visibleOrInRangeLayers;\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\n (value) => {\n visibleOrInRangeLayers = value.length === 0 ? false : true;\n }\n );\n\n if (visibleOrInRangeLayers === false) {\n return false;\n }\n }\n return true;\n }\n\n ngOnDestroy(): void {\n this.resolution$$.unsubscribe();\n if (this.visibleOrInRangeLayers$$) {\n this.visibleOrInRangeLayers$$.unsubscribe();\n }\n }\n\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n}\n","@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","import { Injectable, inject } from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\nimport {\n AnyLayer,\n FEATURE,\n Feature,\n FeatureStore,\n IgoMap,\n Layer,\n MapGeolocationState,\n QueryableDataSource,\n QueryableDataSourceOptions,\n featureFromOl,\n isLayerItem,\n measureOlGeometryLength,\n roundCoordTo\n} from '@igo2/geo';\nimport { uuid } from '@igo2/utils';\n\nimport { Coordinate } from 'ol/coordinate';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport Geometry from 'ol/geom/Geometry';\nimport olLineString from 'ol/geom/LineString';\nimport olLayerVector from 'ol/layer/Vector';\nimport * as olProj from 'ol/proj';\nimport olVectorSource from 'ol/source/Vector';\n\nimport { BehaviorSubject, Subscription, combineLatest, interval } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the direction module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MapProximityState {\n private mapState = inject(MapState);\n private storageService = inject(StorageService);\n\n private defaultProximityRadiusValue = 30;\n\n public enabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n false\n );\n public proximityRadiusValue$: BehaviorSubject<number>;\n public proximitylocationType$: BehaviorSubject<string> =\n new BehaviorSubject<string>('geolocation');\n public proximityFeatureStore: FeatureStore<Feature>;\n private subs$$: Subscription[] = [];\n public currentPositionCoordinate$ = new BehaviorSubject<Coordinate>(\n undefined\n );\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n constructor() {\n this.proximityFeatureStore = new FeatureStore<Feature>([], {\n map: this.mapState.map\n });\n\n this.proximityRadiusValue$ = new BehaviorSubject<number>(\n (this.storageService.get('mapProximityRadius') as number) ||\n this.defaultProximityRadiusValue\n );\n\n this.mapState.map.ol.once('rendercomplete', () => {\n this.subscribeProximityMonitor();\n });\n }\n\n subscribeProximityMonitor() {\n this.subs$$.push(\n combineLatest([\n this.enabled$,\n this.proximitylocationType$,\n this.proximityRadiusValue$,\n interval(5000),\n this.map.geolocationController.position$\n ])\n .pipe(debounceTime(750))\n .subscribe(\n (bunch: [boolean, string, number, number, MapGeolocationState]) => {\n this.proximityFeatureStore.clear();\n const enabled = bunch[0];\n const layers = this.map.layerController.all;\n const currentPos = this.map.geolocationController.position$.value;\n const locationType = bunch[1];\n const proximityRadiusValue = bunch[2];\n this.storageService.set(\n 'mapProximityRadius',\n proximityRadiusValue || this.defaultProximityRadiusValue\n );\n\n if (!enabled) {\n return;\n }\n\n let coord: number[];\n if (locationType === 'geolocation') {\n if (!currentPos || !currentPos.position) {\n return;\n }\n\n coord = olProj.transform(\n currentPos.position,\n currentPos.projection,\n this.map.projection\n );\n this.map.mapCenter$.next(false);\n } else {\n coord = this.map.viewController.getCenter();\n this.map.mapCenter$.next(true);\n }\n\n const coordLonLat = olProj.transform(\n coord,\n this.map.projection,\n 'EPSG:4269'\n );\n const roundedCoordLonLat = roundCoordTo(\n coordLonLat as [number, number],\n 6\n );\n this.currentPositionCoordinate$.next(roundedCoordLonLat);\n\n const layersToMonitor = layers.filter(\n (layer) =>\n isLayerItem(layer) &&\n layer.ol instanceof olLayerVector &&\n (layer.dataSource as QueryableDataSource).options.queryable &&\n layer.visible &&\n layer.isInResolutionsRange\n ) as Layer[];\n\n layersToMonitor.map((layerToMonitor) => {\n const layerSource =\n layerToMonitor.ol.getSource() as olVectorSource;\n\n // Mostly for polygon features.\n const olFeaturesAtCoordinate =\n layerSource.getFeaturesAtCoordinate(coord);\n if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {\n olFeaturesAtCoordinate.map((olFeatureAtCoordinate) => {\n const featureAtThisPosition = featureFromOl(\n olFeatureAtCoordinate,\n this.map.projection\n );\n const title = this.getQueryTitle(\n featureAtThisPosition,\n layerToMonitor\n );\n // todo handle imported layers without querytitle? prompt title or detect first column?\n this.addFeatureToStore(\n layerToMonitor,\n coord,\n featureAtThisPosition,\n title,\n 0\n );\n });\n } else {\n // compute proximity for remaining sources\n const closestOlFeature =\n layerSource.getClosestFeatureToCoordinate(coord);\n if (closestOlFeature) {\n const closestOlGeom = closestOlFeature.getGeometry();\n const closestFeature = featureFromOl(\n closestOlFeature,\n this.map.projection\n );\n const geometryClosestPoint =\n closestOlGeom.getClosestPoint(coord);\n const linebetween = new olLineString([\n coord,\n geometryClosestPoint\n ]);\n const lineLength = measureOlGeometryLength(\n linebetween,\n 'EPSG:3857'\n );\n if (lineLength <= proximityRadiusValue) {\n const title = this.getQueryTitle(\n closestFeature,\n layerToMonitor\n );\n // todo handle imported layers without querytitle? prompt title or detect first column?\n this.addFeatureToStore(\n layerToMonitor,\n coord,\n closestFeature,\n title,\n lineLength\n );\n }\n }\n }\n });\n }\n )\n );\n }\n\n /**\n * Add a feature with proximity properties to the store\n * @internal\n */\n private addFeatureToStore(\n layer: Layer,\n coordFromCalculatedDistance,\n feature: Feature,\n title,\n distance\n ) {\n const featureId = uuid();\n const projection = this.map.ol.getView().getProjection();\n const olGeometry = feature.ol.getGeometry() as Geometry;\n const geometry = new GeoJSON().writeGeometryObject(olGeometry, {\n featureProjection: projection,\n dataProjection: projection\n }) as any;\n this.proximityFeatureStore.update({\n type: FEATURE,\n geometry,\n projection: projection.getCode(),\n properties: {\n ...feature.properties,\n ...{\n id: featureId,\n element: title,\n distance,\n coordFromCalculatedDistance,\n layerSrcId: layer.id,\n layerSrcTitle: layer.title\n }\n },\n meta: {\n id: featureId\n }\n });\n }\n\n getQueryTitle(feature: Feature, layer: AnyLayer): string | undefined {\n if (isLayerItem(layer) && layer.options?.source?.options) {\n const dataSourceOptions = layer.options.source\n .options as QueryableDataSourceOptions;\n if (dataSourceOptions.queryTitle) {\n return this.getLabelMatch(feature, dataSourceOptions.queryTitle);\n }\n }\n }\n\n getLabelMatch(feature: Feature, labelMatch): string {\n let label = labelMatch;\n const labelToGet = Array.from(labelMatch.matchAll(/\\$\\{([^\\{\\}]+)\\}/g));\n\n labelToGet.forEach((v) => {\n label = label.replace(v[0], feature.properties[v[1]]);\n });\n\n // Nothing done? check feature's attribute\n if (labelToGet.length === 0 && label === labelMatch) {\n label = feature.properties[labelMatch] || labelMatch;\n }\n return label;\n }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, OnDestroy, OnInit, inject, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioChange, MatRadioModule } from '@angular/material/radio';\n\nimport { EntityTableComponent, EntityTableTemplate } from '@igo2/common/entity';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { Feature, IgoMap } from '@igo2/geo';\nimport { NumberUtils } from '@igo2/utils';\n\nimport { Subscription } from 'rxjs';\n\nimport { MapProximityState } from '../map-proximity.state';\nimport { MapState } from '../map.state';\n\n@ToolComponent({\n name: 'map-proximity',\n title: 'igo.integration.tools.closestFeature',\n icon: 'radar'\n})\n/**\n * Tool to handle the advanced map tools\n */\n@Component({\n selector: 'igo-map-proximity-tool',\n templateUrl: './map-proximity-tool.component.html',\n styleUrls: ['./map-proximity-tool.component.scss'],\n imports: [\n EntityTableComponent,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatRadioModule,\n FormsModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapProximityToolComponent implements OnInit, OnDestroy {\n private clipboard = inject(Clipboard);\n mapState = inject(MapState);\n mapProximityState = inject(MapProximityState);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n\n private subs$$: Subscription[] = [];\n readonly table = viewChild<EntityTableComponent>('table');\n\n get maxDistance() {\n return this.mapProximityState.proximityRadiusValue$.value;\n }\n set maxDistance(value: number) {\n this.mapProximityState.proximityRadiusValue$.next(value);\n }\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n public userDefinedMapCenter: boolean;\n public userDefinedFollowPosition: boolean;\n /**\n * Table template\n * @internal\n */\n public tableTemplate: EntityTableTemplate;\n\n constructor() {\n this.tableTemplate = {\n selection: true,\n selectMany: false,\n selectionCheckbox: false,\n sort: true,\n columns: [\n {\n name: 'element',\n title: this.languageService.translate.instant(\n 'igo.integration.map-proximity-tool.feature'\n ),\n valueAccessor: (localFeature: Feature) => {\n return localFeature.properties.element;\n }\n },\n {\n name: 'distance',\n title: this.languageService.translate.instant(\n 'igo.integration.map-proximity-tool.distance'\n ),\n valueAccessor: (localFeature: Feature) => {\n return `${NumberUtils.roundToNDecimal(\n localFeature.properties.distance,\n 1\n )}m`;\n }\n }\n ]\n };\n }\n\n ngOnInit(): void {\n this.mapProximityState.enabled$.next(true);\n this.userDefinedFollowPosition =\n this.map.geolocationController.followPosition === true;\n this.userDefinedMapCenter = this.map.mapCenter$.value === true;\n\n this.subs$$.push(\n this.mapProximityState.proximitylocationType$.subscribe((v) => {\n this.map.mapCenter$.next(v !== 'geolocation');\n if (v === 'geolocation') {\n this.map.geolocationController.followPosition = true;\n } else {\n this.map.geolocationController.followPosition = false;\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.mapProximityState.enabled$.next(false);\n this.map.mapCenter$.next(this.userDefinedMapCenter);\n this.subs$$.map((s) => s.unsubscribe());\n this.map.geolocationController.followPosition =\n this.userDefinedFollowPosition;\n }\n\n onLocationTypeChange(e: MatRadioChange) {\n this.mapProximityState.proximitylocationType$.next(e.value);\n }\n\n /**\n * Copy the coordinates to a clipboard\n */\n copyTextToClipboard(): void {\n const successful = this.clipboard.copy(\n this.mapProximityState.currentPositionCoordinate$?.value.toString()\n );\n if (successful) {\n this.messageService.success(\n 'igo.integration.map-proximity-tool.copyMsg',\n 'igo.integration.map-proximity-tool.copyTitle'\n );\n }\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n ContextListBindingDirective,\n ContextListComponent\n} from '@igo2/context';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { Media, MediaService } from '@igo2/core/media';\nimport {\n ExportButtonComponent,\n ExportOptions,\n IgoMap,\n Layer,\n LayerListControlsEnum,\n LayerListControlsOptions,\n LayerViewerComponent,\n LayerViewerOptions,\n MetadataButtonComponent,\n OgcFilterButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent\n} from '@igo2/geo';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../../import-export/import-export.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\nimport { MapState } from './../map.state';\n\n/**\n * Tool to browse a map's layers or to choose a different map\n */\n@ToolComponent({\n name: 'map',\n title: 'igo.integration.tools.map',\n icon: 'map'\n})\n@Component({\n selector: 'igo-map-tool',\n templateUrl: './map-tool.component.html',\n styleUrls: ['./map-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTabsModule,\n WorkspaceButtonComponent,\n ExportButtonComponent,\n OgcFilterButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n MetadataButtonComponent,\n LayerViewerComponent,\n ContextListComponent,\n ContextListBindingDirective,\n IgoLanguageModule\n ]\n})\nexport class MapToolComponent implements OnInit {\n private mapState = inject(MapState);\n private toolState = inject(ToolState);\n private importExportState = inject(ImportExportState);\n private configService = inject(ConfigService);\n mediaService = inject(MediaService);\n private cdr = inject(ChangeDetectorRef);\n\n isDesktop: boolean;\n\n readonly toggleLegendOnVisibilityChange = input(false);\n\n readonly expandLegendOfVisibleLayers = input(false);\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly ogcButton = input(true);\n\n readonly timeButton = input(true);\n\n readonly layerListControls = input<LayerListControlsOptions>({});\n\n readonly queryBadge = input(false);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls().excludeBaseLayers || false;\n }\n\n get layerFilterAndSortOptions(): any {\n const filterSortOptions = Object.assign(\n {\n showToolbar: LayerListControlsEnum.default\n },\n this.layerListControls()\n );\n\n switch (this.layerListControls().showToolbar) {\n case LayerListControlsEnum.always:\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\n break;\n case LayerListControlsEnum.never:\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\n break;\n default:\n break;\n }\n return filterSortOptions;\n }\n\n private _layerViewerOptions: Partial<LayerViewerOptions>;\n get layerViewerOptions(): LayerViewerOptions {\n return {\n filterAndSortOptions: this.layerFilterAndSortOptions,\n legend: {\n showForVisibleLayers: this.expandLegendOfVisibleLayers(),\n showOnVisibilityChange: this.toggleLegendOnVisibilityChange(),\n updateOnResolutionChange: this.updateLegendOnResolutionChange()\n },\n queryBadge: this.queryBadge(),\n ...this._layerViewerOptions\n };\n }\n\n constructor() {\n this._layerViewerOptions = this.configService.getConfig('layer');\n }\n\n ngOnInit(): void {\n this.handleMedia();\n }\n\n activateExport(layer: Layer) {\n let id = layer.id;\n if (layer.options.workspace?.workspaceId) {\n id =\n layer.options.workspace.workspaceId !== layer.id\n ? layer.options.workspace.workspaceId\n : layer.id;\n }\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n private handleMedia(): void {\n this.mediaService.media$.subscribe((result) => {\n this.isDesktop = result === Media.Desktop;\n this.cdr.detectChanges();\n });\n }\n}\n","<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","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input,\n viewChild\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { Media, MediaService } from '@igo2/core/media';\nimport {\n AnyLayer,\n ExportButtonComponent,\n ExportOptions,\n IgoMap,\n Layer,\n LayerLegendListBindingDirective,\n LayerLegendListComponent,\n LayerListControlsEnum,\n LayerListControlsOptions,\n LayerViewerComponent,\n LayerViewerOptions,\n MetadataButtonComponent,\n OgcFilterButtonComponent,\n SearchSourceService,\n StyleModalLayerButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n VectorLayer,\n sourceCanSearch\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../../import-export/import-export.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\nimport { LayerListToolState } from '../layer-list-tool.state';\nimport { MapState } from '../map.state';\n\n/**\n * Tool to browse a map's layers or to choose a different map\n */\n@ToolComponent({\n name: 'mapTools',\n title: 'igo.integration.tools.map',\n icon: 'map'\n})\n@Component({\n selector: 'igo-map-tools',\n templateUrl: './map-tools.component.html',\n styleUrls: ['./map-tools.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTabsModule,\n NgTemplateOutlet,\n LayerViewerComponent,\n StyleModalLayerButtonComponent,\n MetadataButtonComponent,\n TrackFeatureButtonComponent,\n TimeFilterButtonComponent,\n OgcFilterButtonComponent,\n ExportButtonComponent,\n WorkspaceButtonComponent,\n LayerLegendListComponent,\n LayerLegendListBindingDirective,\n MatListModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapToolsComponent implements OnInit, OnDestroy {\n layerListToolState = inject(LayerListToolState);\n private toolState = inject(ToolState);\n mapState = inject(MapState);\n private searchSourceService = inject(SearchSourceService);\n private importExportState = inject(ImportExportState);\n private configService = inject(ConfigService);\n mediaService = inject(MediaService);\n private cdr = inject(ChangeDetectorRef);\n\n isDesktop: boolean;\n layers$ = new BehaviorSubject<AnyLayer[]>([]);\n showAllLegendsValue$ = new BehaviorSubject<boolean>(false);\n\n private resolution$$: Subscription;\n private visibleOrInRangeLayers$$: Subscription;\n public delayedShowEmptyMapContent = false;\n\n readonly allowShowAllLegends = input(false);\n\n readonly showAllLegendsValue = input(false);\n\n readonly toggleLegendOnVisibilityChange = input(false);\n\n readonly expandLegendOfVisibleLayers = input(false);\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly selectedTabAtOpening = input<string>(undefined);\n\n readonly ogcButton = input(true);\n\n readonly timeButton = input(true);\n\n readonly layerAdditionAllowed = input(true);\n\n @Input()\n get layerListControls(): LayerListControlsOptions {\n return this._layerListControls;\n }\n set layerListControls(value: LayerListControlsOptions) {\n const stateOptions = this.layerListToolState.getLayerListControls();\n const stateKeyword = stateOptions.keyword;\n const stateOnlyVisible = stateOptions.onlyVisible;\n const stateSortAlpha = stateOptions.sortAlpha;\n\n value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;\n value.onlyVisible =\n stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;\n value.sortAlpha =\n stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;\n\n value.onlyVisible =\n value.onlyVisible === undefined ? false : value.onlyVisible;\n value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;\n\n this._layerListControls = value;\n }\n private _layerListControls = {};\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n readonly queryBadge = input(false);\n\n get visibleOrInRangeLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.displayed))\n );\n }\n\n get visibleLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.visible))\n );\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls.excludeBaseLayers || false;\n }\n\n get layerFilterAndSortOptions(): LayerListControlsOptions {\n const filterSortOptions = Object.assign(\n {\n showToolbar: LayerListControlsEnum.default\n },\n this.layerListControls\n );\n\n switch (this.layerListControls.showToolbar) {\n case LayerListControlsEnum.always:\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\n break;\n case LayerListControlsEnum.never:\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\n break;\n default:\n break;\n }\n return filterSortOptions;\n }\n\n private _layerViewerOptions: Partial<LayerViewerOptions>;\n get layerViewerOptions(): LayerViewerOptions {\n return {\n filterAndSortOptions: this.layerFilterAndSortOptions,\n legend: {\n showForVisibleLayers: this.expandLegendOfVisibleLayers(),\n showOnVisibilityChange: this.toggleLegendOnVisibilityChange(),\n updateOnResolutionChange: this.updateLegendOnResolutionChange()\n },\n queryBadge: this.queryBadge(),\n ...this._layerViewerOptions\n };\n }\n\n readonly tabGroup = viewChild('tabGroup');\n\n get searchToolInToolbar(): boolean {\n return (\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\n this.searchSourceService\n .getSources()\n .filter(sourceCanSearch)\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\n );\n }\n\n get catalogToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\n }\n\n get contextToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\n }\n\n constructor() {\n this._layerViewerOptions = this.configService.getConfig('layer');\n }\n\n ngOnInit(): void {\n this.handleMedia();\n this.selectedTab();\n this.resolution$$ = combineLatest([\n this.map.layerController.all$,\n this.map.viewController.resolution$\n ])\n .pipe(debounceTime(10))\n .subscribe(([layers]) => {\n this.layers$.next(layers);\n });\n\n if (this.allowShowAllLegends()) {\n this.mapState.showAllLegendsValue =\n this.mapState.showAllLegendsValue !== undefined\n ? this.mapState.showAllLegendsValue\n : this.showAllLegendsValue() || false;\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\n } else {\n this.showAllLegendsValue$.next(false);\n }\n\n // prevent message to be shown too quickly. Waiting for layers\n setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);\n }\n\n ngOnDestroy(): void {\n this.resolution$$.unsubscribe();\n if (this.visibleOrInRangeLayers$$) {\n this.visibleOrInRangeLayers$$.unsubscribe();\n }\n }\n\n onShowAllLegends(event) {\n this.mapState.showAllLegendsValue = event;\n this.showAllLegendsValue$.next(event);\n }\n\n private selectedTab() {\n const userSelectedTab = this.layerListToolState.selectedTab$.value;\n if (userSelectedTab !== undefined) {\n this.layerListToolState.setSelectedTab(userSelectedTab);\n } else {\n if (this.selectedTabAtOpening() === 'legend') {\n this.layerListToolState.setSelectedTab(1);\n } else {\n this.layerListToolState.setSelectedTab(0);\n }\n }\n }\n\n public tabChanged(tab: MatTabChangeEvent) {\n this.layerListToolState.setSelectedTab(tab.index);\n this.layers$.next(this.map.layerController.all);\n }\n\n onLayerListChange(appliedFilters: LayerListControlsOptions) {\n this.layerListToolState.setKeyword(appliedFilters.keyword);\n this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);\n this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);\n }\n\n showAllLegend() {\n if (this.layers$.getValue().length === 0) {\n return false;\n } else if (\n this.layers$.getValue().length !== 0 &&\n this.allowShowAllLegends() === false\n ) {\n let visibleOrInRangeLayers;\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\n (value) => {\n visibleOrInRangeLayers = value.length === 0 ? false : true;\n }\n );\n\n if (visibleOrInRangeLayers === false) {\n return false;\n }\n }\n return true;\n }\n\n activateExport(layer: Layer) {\n let id = layer.id;\n if (layer.options.workspace?.workspaceId) {\n id =\n layer.options.workspace.workspaceId !== layer.id\n ? layer.options.workspace.workspaceId\n : layer.id;\n }\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n activateTimeFilter() {\n this.toolState.toolbox.activateTool('activeTimeFilter');\n }\n\n activateOgcFilter() {\n this.toolState.toolbox.activateTool('activeOgcFilter');\n }\n\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n\n isTimeFilterButton(layer): boolean {\n const options = layer.dataSource.options;\n return this.timeButton() && options.timeFilterable && options.timeFilter;\n }\n\n isOGCFilterButton(layer): boolean {\n const options = layer.dataSource.options;\n return (\n this.ogcButton() &&\n options.ogcFilters &&\n options.ogcFilters.enabled &&\n (options.ogcFilters.pushButtons ||\n options.ogcFilters.checkboxes ||\n options.ogcFilters.radioButtons ||\n options.ogcFilters.select ||\n options.ogcFilters.autocomplete ||\n options.ogcFilters.editable)\n );\n }\n\n isExportButton(layer: Layer): boolean {\n if (\n (layer instanceof VectorLayer && layer.exportable === true) ||\n (layer.dataSource.options.download &&\n layer.dataSource.options.download.url) ||\n (layer.options.workspace?.enabled &&\n layer.options.workspace?.workspaceId !== layer.id)\n ) {\n return true;\n }\n return false;\n }\n\n isStyleEditButton(layer: Layer): boolean {\n if (layer instanceof VectorLayer) {\n if ((layer as VectorLayer).options?.igoStyle?.editable) {\n return true;\n }\n }\n return false;\n }\n\n private handleMedia(): void {\n this.mediaService.media$.subscribe((result) => {\n this.isDesktop = result === Media.Desktop;\n this.cdr.detectChanges();\n });\n }\n}\n","<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","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AdvancedMapToolComponent } from './advanced-map-tool/advanced-map-tool.component';\nimport { MapDetailsToolComponent } from './map-details-tool/map-details-tool.component';\nimport { MapLegendToolComponent } from './map-legend/map-legend-tool.component';\nimport { MapProximityToolComponent } from './map-proximity-tool/map-proximity-tool.component';\nimport { MapToolComponent } from './map-tool/map-tool.component';\nimport { MapToolsComponent } from './map-tools/map-tools.component';\n\n/**\n * @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set\n */\n@NgModule({\n imports: [\n AdvancedMapToolComponent,\n MapProximityToolComponent,\n MapToolComponent,\n MapToolsComponent,\n MapDetailsToolComponent,\n MapLegendToolComponent\n ],\n exports: [\n AdvancedMapToolComponent,\n MapProximityToolComponent,\n MapToolComponent,\n MapToolsComponent,\n MapDetailsToolComponent,\n MapLegendToolComponent\n ]\n})\nexport class IgoAppMapModule {\n static forRoot(): ModuleWithProviders<IgoAppMapModule> {\n return {\n ngModule: IgoAppMapModule,\n providers: []\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { FeatureStore, FeatureWithMeasure } from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MeasureState {\n private mapState = inject(MapState);\n\n /**\n * Store that holds the measures\n */\n public store: FeatureStore<FeatureWithMeasure>;\n\n constructor() {\n this.store = new FeatureStore<FeatureWithMeasure>([], {\n map: this.mapState.map\n });\n\n this.mapState.map.layerController.all$.subscribe((layers) => {\n const hasMeasure = layers.some((l) => l.id?.startsWith('igo-measures-'));\n if (!hasMeasure) {\n this.store.deleteMany(this.store.all());\n this.mapState.map.ol\n .getOverlays()\n .getArray()\n .filter((overlay) =>\n (overlay as any).options.className.includes('igo-map-tooltip')\n )\n .map((overlay) => this.mapState.map.ol.removeOverlay(overlay));\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n FeatureStore,\n FeatureWithMeasure,\n IgoMap,\n MeasurerComponent\n} from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { MeasureState } from '../measure.state';\n\n/**\n * Tool to measure lengths and areas\n */\n@ToolComponent({\n name: 'measurer',\n title: 'igo.integration.tools.measurer',\n icon: 'square_foot'\n})\n@Component({\n selector: 'igo-measurer-tool',\n templateUrl: './measurer-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MeasurerComponent]\n})\nexport class MeasurerToolComponent {\n private measureState = inject(MeasureState);\n private mapState = inject(MapState);\n\n /**\n * Map to measure on\n * @internal\n */\n get store(): FeatureStore<FeatureWithMeasure> {\n return this.measureState.store;\n }\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n}\n","<igo-measurer [store]=\"store\" [map]=\"map\" />\n","import { NgModule } from '@angular/core';\n\nimport { MeasurerToolComponent } from './measurer-tool.component';\n\n/**\n * @deprecated import the MeasurerToolComponent directly\n */\n@NgModule({\n imports: [MeasurerToolComponent],\n exports: [MeasurerToolComponent]\n})\nexport class IgoAppMeasurerToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppMeasurerToolModule } from './measurer-tool/measurer-tool.module';\n\n/**\n * @deprecated import the MeasurerToolComponent directly\n */\n@NgModule({\n exports: [IgoAppMeasurerToolModule]\n})\nexport class IgoAppMeasureModule {}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoMap, PrintComponent } from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\n\n@ToolComponent({\n name: 'print',\n title: 'igo.integration.tools.print',\n icon: 'print'\n})\n@Component({\n selector: 'igo-print-tool',\n templateUrl: './print-tool.component.html',\n imports: [PrintComponent]\n})\nexport class PrintToolComponent {\n private mapState = inject(MapState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n}\n","<igo-print [map]=\"map\" />\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { PrintToolComponent } from './print-tool/print-tool.component';\n\n/**\n * @deprecated import the PrintToolComponent directly\n */\n@NgModule({\n imports: [PrintToolComponent],\n exports: [PrintToolComponent]\n})\nexport class IgoAppPrintModule {\n static forRoot(): ModuleWithProviders<IgoAppPrintModule> {\n return {\n ngModule: IgoAppPrintModule,\n providers: []\n };\n }\n}\n","import { AdvancedMapToolComponent } from './advanced-map-tool';\nimport { MapDetailsToolComponent } from './map-details-tool';\nimport { MapLegendToolComponent } from './map-legend';\nimport { MapProximityToolComponent } from './map-proximity-tool';\nimport { MapToolComponent } from './map-tool';\nimport { MapToolsComponent } from './map-tools';\n\nexport const INTEGRATION_MAP_DIRECTIVES = [\n AdvancedMapToolComponent,\n MapProximityToolComponent,\n MapToolComponent,\n MapToolsComponent,\n MapDetailsToolComponent,\n MapLegendToolComponent\n] as const;\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n EntityRecord,\n EntityStore,\n EntityStoreFilterCustomFuncStrategy,\n EntityStoreStrategyFuncOptions\n} from '@igo2/common/entity';\nimport { ConfigService } from '@igo2/core/config';\nimport { StorageService } from '@igo2/core/storage';\nimport {\n CommonVectorStyleOptions,\n Feature,\n FeatureMotion,\n FeatureStore,\n FeatureWorkspace,\n OverlayStyleOptions,\n SearchResult,\n SearchSource,\n SearchSourceService\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { MapState } from '../map';\nimport { WorkspaceState } from '../workspace/workspace.state';\n\n/**\n * Define the FeatureMotion to apply when adding the SearchResult to the map as an overlay.\n */\nexport interface SearchFeatureMotion {\n selected?: FeatureMotion;\n focus?: FeatureMotion;\n}\n\n/**\n * Service that holds the state of the search module\n */\n@Injectable()\nexport class SearchState {\n private searchSourceService = inject(SearchSourceService);\n private storageService = inject(StorageService);\n private workspaceState = inject(WorkspaceState);\n private configService = inject(ConfigService);\n private mapState = inject(MapState);\n\n public searchLayerStores: FeatureStore<Feature>[] = [];\n public searchOverlayStyle: CommonVectorStyleOptions = {};\n public searchOverlayStyleSelection: CommonVectorStyleOptions = {};\n public searchOverlayStyleFocus: CommonVectorStyleOptions = {};\n\n public focusedOrResolution$$: Subscription;\n public selectedOrResolution$$: Subscription;\n\n /**\n * Default feature motion are:\n * on selection = FeatureMotion.Default and\n * on focus = FeatureMotion.None\n */\n public featureMotion: SearchFeatureMotion = {\n selected: FeatureMotion.Default,\n focus: FeatureMotion.None\n };\n\n readonly searchTermSplitter$ = new BehaviorSubject<string>('|');\n\n readonly searchTerm$ = new BehaviorSubject<string>(undefined);\n\n readonly searchType$ = new BehaviorSubject<string>(undefined);\n\n readonly searchDisabled$ = new BehaviorSubject<boolean>(false);\n\n readonly searchResultsGeometryEnabled$ = new BehaviorSubject<boolean>(false);\n\n readonly searchSettingsChange$ = new BehaviorSubject<boolean>(undefined);\n\n readonly selectedResult$ = new BehaviorSubject<SearchResult>(undefined);\n\n /**\n * Store that holds the search results\n */\n readonly store = new EntityStore<SearchResult>([]);\n\n /**\n * Search types currently enabled in the search source service\n */\n get searchTypes(): string[] {\n return this.searchSourceService\n .getEnabledSources()\n .map((source: SearchSource) => (source.constructor as any).type);\n }\n\n constructor() {\n const searchOverlayStyle: OverlayStyleOptions =\n this.configService.getConfig('searchOverlayStyle');\n if (searchOverlayStyle) {\n this.searchOverlayStyle = searchOverlayStyle.base;\n this.searchOverlayStyleSelection = searchOverlayStyle.selection;\n this.searchOverlayStyleFocus = searchOverlayStyle.focus;\n }\n\n const searchResultsGeometryEnabled = this.storageService.get(\n 'searchResultsGeometryEnabled'\n ) as boolean;\n if (searchResultsGeometryEnabled) {\n this.searchResultsGeometryEnabled$.next(searchResultsGeometryEnabled);\n }\n this.store.addStrategy(this.createCustomFilterTermStrategy(), false);\n\n const wksSource = this.searchSourceService\n .getSources()\n .find((source) => source.getId() === 'workspace');\n if (wksSource) {\n this.workspaceState.store.entities$.subscribe((e) => {\n const searchableWks = e.filter(\n (fw) =>\n fw instanceof FeatureWorkspace &&\n fw.layer.options.workspace.searchIndexEnabled\n );\n this.searchSourceService.setWorkspaces(wksSource, searchableWks);\n });\n }\n this.monitorLayerDeletion();\n }\n\n private monitorLayerDeletion() {\n this.mapState.map.layerController.all$.subscribe((layers) => {\n this.searchLayerStores.forEach((store) => {\n const layer = layers.find((l) => l.id === store.layer.id);\n if (!layer) {\n const index = this.searchLayerStores.indexOf(store);\n this.searchLayerStores.splice(index, 1);\n }\n });\n });\n }\n\n private createCustomFilterTermStrategy(): EntityStoreFilterCustomFuncStrategy {\n const filterClauseFunc = (record: EntityRecord<SearchResult>) => {\n return record.entity.meta.score === 100;\n };\n return new EntityStoreFilterCustomFuncStrategy({\n filterClauseFunc\n } as EntityStoreStrategyFuncOptions);\n }\n\n /**\n * Activate custom strategy\n *\n */\n activateCustomFilterTermStrategy() {\n const strategy = this.store.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n if (strategy !== undefined) {\n strategy.activate();\n }\n }\n\n /**\n * Deactivate custom strategy\n *\n */\n deactivateCustomFilterTermStrategy() {\n const strategy = this.store.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n if (strategy !== undefined) {\n strategy.deactivate();\n }\n }\n\n enableSearch() {\n this.searchDisabled$.next(false);\n }\n\n disableSearch() {\n this.searchDisabled$.next(true);\n }\n\n setSearchTerm(searchTerm: string) {\n this.searchTerm$.next(searchTerm);\n }\n\n setSearchType(searchType: string) {\n this.searchSourceService.enableSourcesByType(searchType);\n this.searchType$.next(searchType);\n }\n\n setSearchSettingsChange() {\n this.searchSettingsChange$.next(true);\n }\n\n setSelectedResult(result: SearchResult) {\n this.selectedResult$.next(result);\n }\n\n setSearchResultsGeometryStatus(value) {\n this.storageService.set('searchResultsGeometryEnabled', value);\n this.searchResultsGeometryEnabled$.next(value);\n }\n}\n","import {\n Directive,\n HostListener,\n OnDestroy,\n OnInit,\n inject\n} from '@angular/core';\n\nimport { SearchBarComponent } from '@igo2/geo';\n\nimport { Subscription } from 'rxjs';\n\nimport { SearchState } from '../search.state';\n\n@Directive({\n selector: '[igoSearchBarBinding]',\n standalone: true\n})\nexport class SearchBarBindingDirective implements OnInit, OnDestroy {\n private component = inject(SearchBarComponent, { self: true });\n private searchState = inject(SearchState);\n\n get searchTerm(): string {\n return this.searchState.searchTerm$.value;\n }\n get searchType(): string {\n return this.searchState.searchType$.value;\n }\n\n private searchTerm$$: Subscription;\n private searchType$$: Subscription;\n private searchDisabled$$: Subscription;\n\n ngOnInit() {\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\n (searchTerm: string) => {\n if (searchTerm !== undefined && searchTerm !== null) {\n this.component.setTerm(searchTerm);\n }\n }\n );\n\n this.searchType$$ = this.searchState.searchType$.subscribe(\n (searchType: string) => {\n if (searchType !== undefined && searchType !== null) {\n this.component.setSearchType(searchType);\n }\n }\n );\n\n this.searchDisabled$$ = this.searchState.searchDisabled$.subscribe(\n (searchDisabled: boolean) => {\n this.component.disabled = searchDisabled;\n }\n );\n }\n\n ngOnDestroy() {\n this.searchTerm$$.unsubscribe();\n this.searchType$$.unsubscribe();\n this.searchDisabled$$.unsubscribe();\n }\n\n @HostListener('searchTermChange', ['$event'])\n onSearchTermChange(searchTerm?: string) {\n if (searchTerm !== this.searchTerm) {\n this.searchState.setSearchTerm(searchTerm);\n }\n }\n\n @HostListener('searchTypeChange', ['$event'])\n onSearchTypeChange(searchType?: string) {\n if (searchType !== this.searchType) {\n this.searchState.setSearchType(searchType);\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { SanitizeHtmlPipe } from '@igo2/common/custom-html';\nimport { EntityState, EntityStore, getEntityTitle } from '@igo2/common/entity';\nimport { FlexibleComponent, FlexibleState } from '@igo2/common/flexible';\nimport { PanelComponent } from '@igo2/common/panel';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport {\n FEATURE,\n Feature,\n FeatureDetailsComponent,\n FeatureMotion,\n FeatureStore,\n IgoMap,\n Research,\n SearchResult,\n SearchResultAddButtonComponent,\n SearchResultsComponent,\n computeOlFeaturesExtent,\n featureFromOl,\n featureToOl,\n featuresAreOutOfView,\n featuresAreTooDeepInView,\n getCommonVectorSelectedStyle,\n getCommonVectorStyle,\n moveToOlFeatures,\n roundCoordTo\n} from '@igo2/geo';\n\nimport olFeature from 'ol/Feature';\nimport { Coordinate } from 'ol/coordinate';\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\nimport olPoint from 'ol/geom/Point';\nimport * as olProj from 'ol/proj';\n\nimport pointOnFeature from '@turf/point-on-feature';\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport { DirectionState } from '../../directions/directions.state';\nimport { MapState } from '../../map/map.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { SearchState } from '../search.state';\n\n/**\n * Tool to browse the search results\n */\n@ToolComponent({\n name: 'searchResults',\n title: 'igo.integration.tools.searchResults',\n icon: 'search'\n})\n@Component({\n selector: 'igo-search-results-tool',\n templateUrl: './search-results-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n :host {\n display: block;\n padding: 16px;\n }\n `\n ],\n imports: [\n FlexibleComponent,\n SearchResultsComponent,\n SearchResultAddButtonComponent,\n PanelComponent,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatBadgeModule,\n FeatureDetailsComponent,\n AsyncPipe,\n IgoLanguageModule,\n SanitizeHtmlPipe\n ]\n})\nexport class SearchResultsToolComponent implements OnInit, OnDestroy {\n private mapState = inject(MapState);\n private searchState = inject(SearchState);\n private elRef = inject(ElementRef);\n toolState = inject(ToolState);\n private directionState = inject(DirectionState);\n\n /**\n * to show hide results icons\n */\n readonly showIcons = input(true);\n\n /**\n * Determine the top panel default state\n */\n readonly topPanelStateDefault = input('expanded');\n\n private hasFeatureEmphasisOnSelection = false;\n public saveSearchResultInLayer = false;\n\n private showResultsGeometries$$: Subscription;\n private getRoute$$: Subscription;\n private shownResultsGeometries: Feature[] = [];\n private shownResultsEmphasisGeometries: Feature[] = [];\n private focusedResult$ = new BehaviorSubject<SearchResult>(undefined);\n public isSelectedResultOutOfView$ = new BehaviorSubject(false);\n private isSelectedResultOutOfView$$: Subscription;\n private abstractFocusedResult: Feature;\n private abstractSelectedResult: Feature;\n\n public debouncedEmpty$ = new BehaviorSubject<boolean>(true);\n private debouncedEmpty$$: Subscription;\n\n /**\n * Store holding the search results\n * @internal\n */\n get store(): EntityStore<SearchResult> {\n return this.searchState.store;\n }\n\n /**\n * Map to display the results on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get featureTitle(): string {\n return this.feature ? getEntityTitle(this.feature) : undefined;\n }\n\n get feature$(): Observable<Feature> {\n return this.store.stateView\n .firstBy$((e) => e.state.focused)\n .pipe(\n map(\n (element) =>\n (this.feature = element\n ? (element.entity.data as Feature)\n : undefined)\n )\n );\n }\n\n public feature: Feature;\n\n public term = '';\n private searchTerm$$: Subscription;\n\n public settingsChange$ = new BehaviorSubject<boolean>(undefined);\n\n public topPanelState$ = new BehaviorSubject<FlexibleState>('initial');\n private topPanelState$$: Subscription;\n\n @Input()\n set topPanelState(value: FlexibleState) {\n this.topPanelState$.next(value);\n }\n get topPanelState(): FlexibleState {\n return this.topPanelState$.value;\n }\n\n get termSplitter(): string {\n return this.searchState.searchTermSplitter$.value;\n }\n\n private format = new olFormatGeoJSON();\n\n get stores(): FeatureStore<Feature>[] {\n return this.searchState.searchLayerStores;\n }\n\n constructor() {\n const configService = inject(ConfigService);\n\n this.hasFeatureEmphasisOnSelection = configService.getConfig(\n 'hasFeatureEmphasisOnSelection'\n );\n this.saveSearchResultInLayer = configService.getConfig(\n 'saveSearchResultInLayer'\n );\n }\n\n ngOnInit() {\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\n (searchTerm: string) => {\n if (\n searchTerm !== undefined &&\n searchTerm !== null &&\n searchTerm !== ''\n ) {\n this.term = searchTerm;\n this.debouncedEmpty$.next(false);\n } else if (searchTerm === '') {\n this.debouncedEmpty$.next(true);\n }\n }\n );\n\n for (const res of this.store.stateView.all$().value) {\n if (this.store.state.get(res.entity).selected === true) {\n this.topPanelState = 'expanded';\n }\n }\n\n this.searchState.searchSettingsChange$.subscribe(() => {\n this.settingsChange$.next(true);\n });\n\n this.topPanelState$$ = this.topPanelState$.subscribe(() => {\n const igoList = this.computeElementRef()[0];\n const selected = this.computeElementRef()[1];\n if (selected) {\n setTimeout(() => {\n // To be sure the flexible component has been displayed yet\n if (!this.isScrolledIntoView(igoList, selected)) {\n this.adjustTopPanel(igoList, selected);\n }\n }, FlexibleComponent.transitionTime + 50);\n }\n });\n\n if (this.hasFeatureEmphasisOnSelection) {\n if (!this.searchState.focusedOrResolution$$) {\n this.searchState.focusedOrResolution$$ = combineLatest([\n this.focusedResult$,\n this.map.viewController.resolution$\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\n this.buildResultEmphasis(bunch[0], 'focused')\n );\n }\n\n if (!this.searchState.selectedOrResolution$$) {\n this.searchState.selectedOrResolution$$ = combineLatest([\n this.searchState.selectedResult$,\n this.map.viewController.resolution$\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\n this.buildResultEmphasis(bunch[0], 'selected')\n );\n }\n }\n this.monitorResultOutOfView();\n\n this.showResultsGeometries$$ = combineLatest([\n this.searchState.searchResultsGeometryEnabled$,\n this.store.stateView.all$(),\n this.focusedResult$,\n this.searchState.selectedResult$,\n this.searchState.searchTerm$,\n this.map.viewController.resolution$\n ]).subscribe(\n (\n bunch: [\n boolean,\n { entity: SearchResult; state: EntityState }[],\n SearchResult,\n SearchResult,\n string,\n number\n ]\n ) => {\n const searchResultsGeometryEnabled = bunch[0];\n const searchResults = bunch[1];\n\n if (this.hasFeatureEmphasisOnSelection) {\n this.clearFeatureEmphasis('shown');\n }\n this.shownResultsGeometries.map((result) =>\n this.map.queryResultsOverlay.removeFeature(result)\n );\n const featureToHandleGeom = searchResults.filter(\n (result) =>\n result.entity.meta.dataType === FEATURE &&\n result.entity.data.geometry &&\n !result.state.selected &&\n !result.state.focused\n );\n\n featureToHandleGeom.map((result) => {\n if (searchResultsGeometryEnabled) {\n result.entity.data.meta.style = getCommonVectorStyle(\n Object.assign(\n {},\n {\n feature: result.entity.data as Feature | olFeature<OlGeometry>\n },\n this.searchState.searchOverlayStyle,\n result.entity.style?.base ? result.entity.style.base : {}\n )\n );\n this.shownResultsGeometries.push(result.entity.data as Feature);\n this.map.queryResultsOverlay.addFeature(\n result.entity.data as Feature,\n FeatureMotion.None\n );\n if (this.hasFeatureEmphasisOnSelection) {\n this.buildResultEmphasis(\n result.entity as SearchResult<Feature>,\n 'shown'\n );\n }\n }\n });\n }\n );\n\n this.debouncedEmpty$$ = this.store.stateView.empty$\n .pipe(debounceTime(1500))\n .subscribe((empty) => this.debouncedEmpty$.next(empty));\n }\n\n private monitorResultOutOfView() {\n this.isSelectedResultOutOfView$$ = combineLatest([\n this.map.viewController.state$,\n this.searchState.selectedResult$\n ])\n .pipe(debounceTime(100))\n .subscribe((bunch) => {\n const selectedResult = bunch[1] as SearchResult<Feature>;\n if (!selectedResult) {\n this.isSelectedResultOutOfView$.next(false);\n return;\n }\n if (selectedResult.data.geometry) {\n const selectedOlFeature = featureToOl(\n selectedResult.data,\n this.map.projection\n );\n const selectedOlFeatureExtent = computeOlFeaturesExtent(\n [selectedOlFeature],\n this.map.viewController.getOlProjection()\n );\n this.isSelectedResultOutOfView$.next(\n featuresAreOutOfView(this.map.getExtent(), selectedOlFeatureExtent)\n );\n }\n });\n }\n\n private buildResultEmphasis(\n result: SearchResult<Feature>,\n trigger: 'selected' | 'focused' | 'shown' | undefined\n ) {\n if (trigger !== 'shown') {\n this.clearFeatureEmphasis(trigger);\n }\n if (!result || !result.data.geometry) {\n return;\n }\n const myOlFeature = featureToOl(result.data, this.map.projection);\n const olGeometry = myOlFeature.getGeometry();\n if (\n featuresAreTooDeepInView(\n this.map.viewController,\n olGeometry.getExtent() as [number, number, number, number],\n 0.0025\n )\n ) {\n const extent = olGeometry.getExtent();\n const x = extent[0] + (extent[2] - extent[0]) / 2;\n const y = extent[1] + (extent[3] - extent[1]) / 2;\n const feature1 = new olFeature({\n name: `${trigger}AbstractResult'`,\n geometry: new olPoint([x, y])\n });\n const abstractResult = featureFromOl(feature1, this.map.projection);\n\n let computedStyle;\n let zIndexOffset = 0;\n\n switch (trigger) {\n case 'focused':\n computedStyle = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: abstractResult },\n this.searchState.searchOverlayStyleFocus,\n result.style?.focus ? result.style.focus : {}\n )\n );\n zIndexOffset = 2;\n break;\n case 'shown':\n computedStyle = getCommonVectorStyle(\n Object.assign(\n {},\n { feature: abstractResult },\n this.searchState.searchOverlayStyle,\n result.style?.base ? result.style.base : {}\n )\n );\n break;\n case 'selected':\n computedStyle = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: abstractResult },\n this.searchState.searchOverlayStyleSelection,\n result.style?.selection ? result.style.selection : {}\n )\n );\n zIndexOffset = 1;\n break;\n }\n abstractResult.meta.style = computedStyle;\n abstractResult.meta.style.setZIndex(2000 + zIndexOffset);\n this.map.searchResultsOverlay.addFeature(\n abstractResult,\n this.searchState.featureMotion.focus\n );\n if (trigger === 'focused') {\n this.abstractFocusedResult = abstractResult;\n }\n if (trigger === 'selected') {\n this.abstractSelectedResult = abstractResult;\n }\n if (trigger === 'shown') {\n this.shownResultsEmphasisGeometries.push(abstractResult);\n }\n } else {\n this.clearFeatureEmphasis(trigger);\n }\n }\n\n private clearFeatureEmphasis(trigger: 'selected' | 'focused' | 'shown') {\n if (trigger === 'focused' && this.abstractFocusedResult) {\n this.map.searchResultsOverlay.removeFeature(this.abstractFocusedResult);\n this.abstractFocusedResult = undefined;\n }\n if (trigger === 'selected' && this.abstractSelectedResult) {\n this.map.searchResultsOverlay.removeFeature(this.abstractSelectedResult);\n this.abstractSelectedResult = undefined;\n }\n if (trigger === 'shown') {\n this.shownResultsEmphasisGeometries.map((shownResult) =>\n this.map.searchResultsOverlay.removeFeature(shownResult)\n );\n this.shownResultsEmphasisGeometries = [];\n }\n }\n\n ngOnDestroy() {\n this.topPanelState$$.unsubscribe();\n this.searchTerm$$.unsubscribe();\n if (this.isSelectedResultOutOfView$$) {\n this.isSelectedResultOutOfView$$.unsubscribe();\n }\n if (this.showResultsGeometries$$) {\n this.showResultsGeometries$$.unsubscribe();\n }\n if (this.getRoute$$) {\n this.getRoute$$.unsubscribe();\n }\n if (this.debouncedEmpty$$) {\n this.debouncedEmpty$$.unsubscribe();\n }\n }\n\n /**\n * Try to add a feature to the map when it's being focused\n * @internal\n * @param result A search result that could be a feature\n */\n onResultFocus(result: SearchResult) {\n this.focusedResult$.next(result);\n if (result.meta.dataType === FEATURE && result.data.geometry) {\n result.data.meta.style = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: result.data as Feature | olFeature<OlGeometry> },\n this.searchState.searchOverlayStyleFocus,\n result.style?.focus ? result.style.focus : {}\n )\n );\n\n const feature =\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\n result.meta.id\n );\n if (feature) {\n feature.setStyle(result.data.meta.style);\n return;\n }\n this.map.searchResultsOverlay.addFeature(\n result.data as Feature,\n this.searchState.featureMotion.focus\n );\n }\n }\n\n onResultUnfocus(result: SearchResult) {\n this.focusedResult$.next(undefined);\n if (result.meta.dataType !== FEATURE) {\n return;\n }\n\n if (this.store.state.get(result).selected === true) {\n const feature =\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\n result.meta.id\n );\n if (feature) {\n const style = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: result.data as Feature | olFeature<OlGeometry> },\n this.searchState.searchOverlayStyleFocus,\n result.style?.focus ? result.style.focus : {}\n )\n );\n feature.setStyle(style);\n }\n return;\n }\n this.map.searchResultsOverlay.removeFeature(result.data as Feature);\n }\n\n /**\n * Try to add a feature to the map when it's being selected\n * @internal\n * @param result A search result that could be a feature or some layer options\n */\n onResultSelect(result: SearchResult) {\n this.map.searchResultsOverlay.dataSource.ol.clear();\n this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);\n this.searchState.setSelectedResult(result);\n\n if (this.topPanelState === 'initial') {\n if (this.topPanelStateDefault() !== 'collapsed') {\n this.topPanelState = 'expanded';\n } else {\n this.topPanelState = 'collapsed';\n }\n }\n\n if (this.topPanelState === 'expanded') {\n const igoList = this.computeElementRef()[0];\n const selected = this.computeElementRef()[1];\n if (!this.isScrolledIntoView(igoList, selected)) {\n this.adjustTopPanel(igoList, selected);\n }\n }\n }\n\n onSearch(event: { research: Research; results: SearchResult[] }) {\n const results = event.results;\n const newResults = this.store.entities$.value\n .filter((result: SearchResult) => result.source !== event.research.source)\n .concat(results);\n\n this.store.load(newResults);\n\n for (const res of this.store.all()) {\n if (\n this.store.state.get(res).focused === true &&\n this.store.state.get(res).selected !== true\n ) {\n this.store.state.update(res, { focused: false }, true);\n }\n }\n\n setTimeout(() => {\n const igoList = this.elRef.nativeElement.querySelector('igo-list');\n let moreResults;\n event.research.request.subscribe((source) => {\n if (!source[0] || !source[0].source) {\n moreResults = null;\n } else if (source[0].source.getId() === 'icherche') {\n moreResults = igoList.querySelector('.icherche .moreResults');\n } else if (source[0].source.getId() === 'ilayer') {\n moreResults = igoList.querySelector('.ilayer .moreResults');\n } else if (source[0].source.getId() === 'nominatim') {\n moreResults = igoList.querySelector('.nominatim .moreResults');\n } else {\n moreResults = igoList.querySelector(\n '.' + source[0].source.getId() + ' .moreResults'\n );\n }\n\n if (\n moreResults !== null &&\n !this.isScrolledIntoView(igoList, moreResults)\n ) {\n igoList.scrollTop =\n moreResults.offsetTop +\n moreResults.offsetHeight -\n igoList.clientHeight;\n }\n });\n }, 250);\n }\n\n computeElementRef() {\n const items = document.getElementsByTagName('igo-search-results-item');\n const igoList =\n this.elRef.nativeElement.getElementsByTagName('igo-list')[0];\n let selectedItem;\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].className.includes('igo-list-item-selected')) {\n selectedItem = items[i];\n }\n }\n return [igoList, selectedItem];\n }\n\n adjustTopPanel(elemSource, elem) {\n if (!this.isScrolledIntoView(elemSource, elem)) {\n elemSource.scrollTop =\n elem.offsetTop +\n elem.children[0].offsetHeight -\n elemSource.clientHeight;\n }\n }\n\n toggleTopPanel(event?: MouseEvent) {\n if (event && (event.target as any)?.className !== 'igo-panel-title') {\n return;\n } else {\n if (this.topPanelState === 'expanded') {\n this.topPanelState = 'collapsed';\n } else {\n this.topPanelState = 'expanded';\n }\n }\n }\n\n zoomToFeatureExtent() {\n if (this.feature.geometry) {\n const localOlFeature = this.format.readFeature(this.feature, {\n dataProjection: this.feature.projection,\n featureProjection: this.map.projectionCode\n });\n moveToOlFeatures(\n this.map.viewController,\n localOlFeature,\n FeatureMotion.Zoom\n );\n }\n }\n\n /**\n * Try to add a feature to the map overlay\n * @param result A search result that could be a feature\n * @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay\n */\n private tryAddFeatureToMap(\n result: SearchResult,\n motion: FeatureMotion = FeatureMotion.Default\n ) {\n if (result.meta.dataType !== FEATURE) {\n return undefined;\n }\n const feature = (result as SearchResult<Feature>).data;\n\n // Somethimes features have no geometry. It happens with some GetFeatureInfo\n if (!feature.geometry) {\n return;\n }\n\n feature.meta.style = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature },\n this.searchState.searchOverlayStyleSelection,\n result.style?.selection ? result.style.selection : {}\n )\n );\n\n this.map.searchResultsOverlay.addFeature(feature, motion);\n }\n\n isScrolledIntoView(elemSource, elem) {\n const padding = 6;\n const docViewTop = elemSource.scrollTop;\n const docViewBottom = docViewTop + elemSource.clientHeight;\n\n const elemTop = elem.offsetTop;\n const elemBottom = elemTop + elem.clientHeight + padding;\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\n }\n\n getRoute() {\n this.toolState.toolbox.activateTool('directions');\n this.directionState.stopsStore.clearStops();\n setTimeout(() => {\n let routingCoordLoaded = false;\n if (this.getRoute$$) {\n this.getRoute$$.unsubscribe();\n }\n this.getRoute$$ =\n this.directionState.stopsStore.storeInitialized$.subscribe(() => {\n if (\n this.directionState.stopsStore.storeInitialized$.value &&\n !routingCoordLoaded\n ) {\n routingCoordLoaded = true;\n const stop = this.directionState.stopsStore\n .all()\n .find((e) => e.position === 1);\n let coord;\n if (this.feature.geometry) {\n if (this.feature.geometry.type === 'Point') {\n coord = [\n this.feature.geometry.coordinates[0],\n this.feature.geometry.coordinates[1]\n ];\n } else {\n const point = pointOnFeature(this.feature.geometry);\n coord = [\n point.geometry.coordinates[0],\n point.geometry.coordinates[1]\n ];\n }\n }\n stop.text = this.featureTitle;\n stop.coordinates = coord;\n this.directionState.stopsStore.update(stop);\n if (this.map.geolocationController.position$.value) {\n const currentPos = this.map.geolocationController.position$.value;\n const stop = this.directionState.stopsStore\n .all()\n .find((e) => e.position === 0);\n const currentCoord = olProj.transform(\n currentPos.position,\n currentPos.projection,\n 'EPSG:4326'\n );\n const coord: Coordinate = roundCoordTo(\n [currentCoord[0], currentCoord[1]],\n 6\n );\n stop.text = coord.join(',');\n stop.coordinates = coord;\n this.directionState.stopsStore.update(stop);\n }\n }\n });\n }, 250);\n }\n}\n","@if ((!store || store.stateView.empty) && (debouncedEmpty$ | async)) {\n <div>\n <section>\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 </div>\n}\n\n@if ((debouncedEmpty$ | async) === false) {\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 58px)\"\n collapsedMobile=\"calc(100% - 58px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"(feature$ | async) ? 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$ | async) {\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$ | async\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n","import { NgModule } from '@angular/core';\n\nimport { SearchBarBindingDirective } from './search-bar/search-bar-binding.directive';\nimport { SearchResultsToolComponent } from './search-results-tool/search-results-tool.component';\n\n/**\n * @deprecated import the components/directive directly or INTEGRATION_SEARCH_DIRECTIVES for the set\n */\n@NgModule({\n imports: [SearchBarBindingDirective, SearchResultsToolComponent],\n exports: [SearchBarBindingDirective, SearchResultsToolComponent]\n})\nexport class IgoAppSearchModule {}\n","import { NgModule } from '@angular/core';\n\nimport { WorkspaceButtonComponent } from './workspace-button/workspace-button.component';\n\n/**\n * @deprecated import the WorkspaceButtonComponent directly\n */\n@NgModule({\n imports: [WorkspaceButtonComponent],\n exports: [WorkspaceButtonComponent]\n})\nexport class IgoAppWorkspaceModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppAboutModule } from './about/about.module';\nimport { IgoAppCatalogModule } from './catalog/catalog.module';\nimport { IgoAppContextModule } from './context/context.module';\nimport { IgoAppDirectionsModule } from './directions/directions.module';\nimport { IgoAppDrawModule } from './draw/draw.module';\nimport { IgoAppFilterModule } from './filter/filter.module';\nimport { IgoAppGeometryFormModule } from './geometry-form/geometry-form.module';\nimport { IgoAppImportExportModule } from './import-export/import-export.module';\nimport { IgoAppMapModule } from './map/map.module';\nimport { IgoAppMeasureModule } from './measure/measure.module';\nimport { IgoAppPrintModule } from './print/print.module';\nimport { IgoAppSearchModule } from './search/search.module';\nimport { IgoAppWorkspaceModule } from './workspace/workspace.module';\n\n/**\n * @deprecated import the components directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: [\n IgoAppContextModule,\n IgoAppCatalogModule,\n IgoAppDirectionsModule,\n IgoAppDrawModule,\n IgoAppWorkspaceModule,\n IgoAppImportExportModule,\n IgoAppMapModule,\n IgoAppMeasureModule,\n IgoAppPrintModule,\n IgoAppSearchModule,\n IgoAppFilterModule,\n IgoAppAboutModule,\n IgoAppGeometryFormModule\n ]\n})\nexport class IgoIntegrationModule {}\n","import { Injectable, inject } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { AnalyticsService } from '@igo2/core/analytics';\nimport {\n ArcGISRestDataSourceOptions,\n ArcGISRestImageDataSourceOptions,\n TileArcGISRestDataSourceOptions,\n WMSDataSourceOptions,\n WMTSDataSourceOptions,\n isLayerGroup\n} from '@igo2/geo';\n\nimport { skip } from 'rxjs/operators';\n\nimport { ContextState } from '../context/context.state';\nimport { MapState } from '../map/map.state';\nimport { ToolState } from '../tool/tool.state';\n\n/**\n * Service that holds the state of the search module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsListenerService {\n private analyticsService = inject(AnalyticsService);\n private authService = inject(AuthService);\n private contextState = inject(ContextState);\n private toolState = inject(ToolState);\n private mapState = inject(MapState);\n\n listen() {\n this.listenUser();\n this.listenContext();\n this.listenTool();\n this.listenLayer();\n }\n\n listenUser() {\n this.authService.authenticate$.subscribe(() => {\n const tokenDecoded = this.authService.decodeToken();\n if (tokenDecoded?.user) {\n this.authService\n .getProfils()\n .subscribe((profils) =>\n this.analyticsService.setUser(tokenDecoded.user, profils.profils)\n );\n } else {\n this.analyticsService.setUser(null);\n }\n });\n }\n\n listenContext() {\n this.contextState.context$.subscribe((context) => {\n if (context) {\n this.analyticsService.trackEvent(\n 'context',\n 'activateContext',\n context.id || context.uri\n );\n }\n });\n }\n\n listenTool() {\n this.toolState.toolbox.activeTool$.pipe(skip(1)).subscribe((tool) => {\n if (tool) {\n this.analyticsService.trackEvent('tool', 'activateTool', tool.name);\n }\n });\n }\n\n /**\n * Listener for adding layers to the map\n */\n listenLayer() {\n this.mapState.map.layersAddedByClick$.subscribe((layers) => {\n if (!layers) {\n return;\n }\n\n layers.forEach((layer) => {\n let wmsParams: string;\n let wmtsParams: string;\n let xyzParams: string;\n let restParams: string;\n\n if (isLayerGroup(layer)) {\n return;\n }\n\n switch (layer.dataSource.options.type) {\n case 'wms': {\n const wmsDataSource = layer.dataSource\n .options as WMSDataSourceOptions;\n const wmsLayerName: string = wmsDataSource.params.LAYERS;\n const wmsUrl: string = wmsDataSource.url;\n const wmsType: string = wmsDataSource.type;\n wmsParams = JSON.stringify({\n layer: wmsLayerName,\n type: wmsType,\n url: wmsUrl\n });\n break;\n }\n case 'wmts': {\n const wmtsDataSource = layer.dataSource\n .options as WMTSDataSourceOptions;\n const wmtsLayerName: string = wmtsDataSource.layer;\n const wmtsUrl: string = wmtsDataSource.url;\n const matrixSet: string = wmtsDataSource.matrixSet;\n const wmtsType: string = wmtsDataSource.type;\n wmtsParams = JSON.stringify({\n layer: wmtsLayerName,\n type: wmtsType,\n url: wmtsUrl,\n matrixSet\n });\n break;\n }\n case 'arcgisrest':\n case 'tilearcgisrest':\n case 'imagearcgisrest': {\n const restDataSource = layer.options.sourceOptions as\n | ArcGISRestDataSourceOptions\n | TileArcGISRestDataSourceOptions\n | ArcGISRestImageDataSourceOptions;\n const restName: string = restDataSource.layer;\n const restUrl: string = restDataSource.url;\n const restType: string = restDataSource.type;\n restParams = JSON.stringify({\n layer: restName,\n type: restType,\n url: restUrl\n });\n break;\n }\n case 'xyz':\n /* const xyzDataSource = layer.dataSource.options as XYZDataSourceOptions;\n const xyzName: string = layer.title;\n const xyzUrl: string = xyzDataSource.url;\n const xyzType: string = layer.dataSource.options.type;\n xyzParams = JSON.stringify({layer: xyzName, type: xyzType, url: xyzUrl});\n */\n // todo\n break;\n }\n this.analyticsService.trackLayer(\n 'layer',\n 'addLayer',\n wmsParams || wmtsParams || xyzParams || restParams\n );\n });\n });\n }\n}\n","import { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool';\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool';\nimport { OgcFilterToolComponent } from './ogc-filter-tool';\nimport { SpatialFilterToolComponent } from './spatial-filter-tool';\nimport { TimeFilterToolComponent } from './time-filter-tool';\n\nexport * from './ogc-filter-tool';\nexport * from './active-ogc-filter-tool';\nexport * from './spatial-filter-tool';\nexport * from './time-filter-tool';\nexport * from './active-time-filter-tool';\n\nexport const INTEGRATION_FILTER_DIRECTIVES = [\n OgcFilterToolComponent,\n ActiveOgcFilterToolComponent,\n TimeFilterToolComponent,\n ActiveTimeFilterToolComponent,\n SpatialFilterToolComponent\n];\n","import { Injectable, inject } from '@angular/core';\n\nimport { EntityStore } from '@igo2/common/entity';\nimport { ConfigService } from '@igo2/core/config';\nimport {\n CapabilitiesService,\n CommonVectorStyleOptions,\n GeoPropertiesStrategy,\n OverlayStyleOptions,\n PropertyTypeDetectorService,\n SearchResult\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the query module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class QueryState {\n private configService = inject(ConfigService);\n private propertyTypeDetectorService = inject(PropertyTypeDetectorService);\n private capabilitiesService = inject(CapabilitiesService);\n private mapState = inject(MapState);\n\n /**\n * Store that holds the query results\n */\n public store = new EntityStore<SearchResult>([]);\n public queryOverlayStyle: CommonVectorStyleOptions = {};\n public queryOverlayStyleSelection: CommonVectorStyleOptions = {};\n public queryOverlayStyleFocus: CommonVectorStyleOptions = {};\n\n constructor() {\n const queryOverlayStyle: OverlayStyleOptions =\n this.configService.getConfig('queryOverlayStyle');\n if (queryOverlayStyle) {\n this.queryOverlayStyle = queryOverlayStyle.base;\n this.queryOverlayStyleSelection = queryOverlayStyle.selection;\n this.queryOverlayStyleFocus = queryOverlayStyle.focus;\n }\n const geoPropertiesStrategy = new GeoPropertiesStrategy(\n { map: this.mapState.map },\n this.propertyTypeDetectorService,\n this.capabilitiesService\n );\n this.store.addStrategy(geoPropertiesStrategy, true);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SearchResultsToolComponent } from './search-results-tool.component';\n\n/**\n * @deprecated import the SearchResultsToolComponent directly\n */\n@NgModule({\n imports: [SearchResultsToolComponent],\n exports: [SearchResultsToolComponent]\n})\nexport class IgoAppSearchResultsToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { SearchBarBindingDirective } from './search-bar-binding.directive';\n\n/**\n * @deprecated import the SearchBarBindingDirective directly\n */\n@NgModule({\n imports: [SearchBarBindingDirective],\n exports: [SearchBarBindingDirective]\n})\nexport class IgoAppSearchBarModule {}\n","/*\n * Public API Surface of tools\n */\n\nexport * from './lib/integration.module';\nexport * from './lib/about/about.module';\nexport * from './lib/geometry-form/geometry-form.module';\nexport * from './lib/context/context.module';\nexport * from './lib/catalog/catalog.module';\n\nexport * from './lib/directions/directions.module';\nexport * from './lib/draw/draw.module';\nexport * from './lib/workspace/workspace.module';\nexport * from './lib/filter/filter.module';\nexport * from './lib/import-export/import-export.module';\nexport * from './lib/map/map.module';\nexport * from './lib/measure/measure.module';\nexport * from './lib/print/print.module';\nexport * from './lib/search/search.module';\n\nexport * from './lib/about';\nexport * from './lib/geometry-form';\nexport * from './lib/analytics';\nexport * from './lib/context';\nexport * from './lib/catalog';\nexport * from './lib/directions';\nexport * from './lib/draw';\nexport * from './lib/environment';\nexport * from './lib/workspace';\nexport * from './lib/filter';\nexport * from './lib/import-export';\nexport * from './lib/map';\nexport * from './lib/measure';\nexport * from './lib/print';\nexport * from './lib/search';\nexport * from './lib/tool';\nexport * from './lib/storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i5","i3","i1.ContextEditorToolComponent","i2.ContextManagerToolComponent","i3.ContextPermissionManagerToolComponent","i4.ContextShareToolComponent","i1","toolSlideInOut","map","i2","i4","olproj","i8","i6","i7","olFormatGeoJSON"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-integration.mjs","sources":["../../../packages/integration/src/lib/about/about-tool/about-tool.component.ts","../../../packages/integration/src/lib/about/about-tool/about-tool.component.html","../../../packages/integration/src/lib/about/about.module.ts","../../../packages/integration/src/lib/map/map.state.ts","../../../packages/integration/src/lib/catalog/catalog.state.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.ts","../../../packages/integration/src/lib/import-export/import-export.state.ts","../../../packages/integration/src/lib/tool/tool.state.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.utils.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.ts","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.component.html","../../../packages/integration/src/lib/catalog/catalog-library-tool/catalog-library-tool.module.ts","../../../packages/integration/src/lib/catalog/catalog.module.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.ts","../../../packages/integration/src/lib/context/context-editor-tool/context-editor-tool.component.html","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-manager-tool/context-manager-tool.component.html","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.ts","../../../packages/integration/src/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.html","../../../packages/integration/src/lib/map/layer-list-tool.state.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.ts","../../../packages/integration/src/lib/context/context-share-tool/context-share-tool.component.html","../../../packages/integration/src/lib/context/context.directive.ts","../../../packages/integration/src/lib/context/context.module.ts","../../../packages/integration/src/lib/context/context.state.ts","../../../packages/integration/src/lib/directions/directions.state.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.ts","../../../packages/integration/src/lib/directions/directions-tool/directions-tool.component.html","../../../packages/integration/src/lib/directions/directions.module.ts","../../../packages/integration/src/lib/draw/draw.state.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.ts","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.component.html","../../../packages/integration/src/lib/draw/drawing-tool/drawing-tool.module.ts","../../../packages/integration/src/lib/draw/draw.module.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.html","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/active-time-filter-tool/active-time-filter-tool.component.html","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.ts","../../../packages/integration/src/lib/filter/ogc-filter-tool/ogc-filter-tool.component.html","../../../packages/integration/src/lib/storage/storage.state.ts","../../../packages/integration/src/lib/workspace/shared/workspace.utils.ts","../../../packages/integration/src/lib/workspace/shared/edition-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/feature-actions.service.ts","../../../packages/integration/src/lib/workspace/shared/wfs-actions.service.ts","../../../packages/integration/src/lib/workspace/workspace.state.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.ts","../../../packages/integration/src/lib/filter/spatial-filter-tool/spatial-filter-tool.component.html","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.ts","../../../packages/integration/src/lib/filter/time-filter-tool/time-filter-tool.component.html","../../../packages/integration/src/lib/filter/filter.module.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.ts","../../../packages/integration/src/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.html","../../../packages/integration/src/lib/geometry-form/geometry-form.module.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.ts","../../../packages/integration/src/lib/import-export/import-export-tool/import-export-tool.component.html","../../../packages/integration/src/lib/import-export/import-export.module.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.html","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.ts","../../../packages/integration/src/lib/map/advanced-map-tool/advanced-map-tool.component.html","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.ts","../../../packages/integration/src/lib/workspace/workspace-button/workspace-button.component.html","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.ts","../../../packages/integration/src/lib/map/map-details-tool/map-details-tool.component.html","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.ts","../../../packages/integration/src/lib/map/map-legend/map-legend-tool.component.html","../../../packages/integration/src/lib/map/map-proximity.state.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.ts","../../../packages/integration/src/lib/map/map-proximity-tool/map-proximity-tool.component.html","../../../packages/integration/src/lib/map/map-tool/map-tool.component.ts","../../../packages/integration/src/lib/map/map-tool/map-tool.component.html","../../../packages/integration/src/lib/map/map-tools/map-tools.component.ts","../../../packages/integration/src/lib/map/map-tools/map-tools.component.html","../../../packages/integration/src/lib/map/map.module.ts","../../../packages/integration/src/lib/measure/measure.state.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.ts","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.component.html","../../../packages/integration/src/lib/measure/measurer-tool/measurer-tool.module.ts","../../../packages/integration/src/lib/measure/measure.module.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.ts","../../../packages/integration/src/lib/print/print-tool/print-tool.component.html","../../../packages/integration/src/lib/print/print.module.ts","../../../packages/integration/src/lib/map/map.directive.ts","../../../packages/integration/src/lib/search/search.state.ts","../../../packages/integration/src/lib/search/search-bar/search-bar-binding.directive.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.component.html","../../../packages/integration/src/lib/search/search.module.ts","../../../packages/integration/src/lib/workspace/workspace.module.ts","../../../packages/integration/src/lib/integration.module.ts","../../../packages/integration/src/lib/analytics/analytics-listener.service.ts","../../../packages/integration/src/lib/filter/index.ts","../../../packages/integration/src/lib/search/query.state.ts","../../../packages/integration/src/lib/search/search-results-tool/search-results-tool.module.ts","../../../packages/integration/src/lib/search/search-bar/search-bar.module.ts","../../../packages/integration/src/public_api.ts","../../../packages/integration/src/igo2-integration.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n inject,\n model\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport { CustomHtmlComponent } from '@igo2/common/custom-html';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService, version } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { of } from 'rxjs';\nimport type { Observable } from 'rxjs';\n\nimport { AllEnvironmentOptions } from '../../environment';\n\n@ToolComponent({\n name: 'about',\n title: 'igo.integration.tools.about',\n icon: 'help'\n})\n@Component({\n selector: 'igo-about-tool',\n templateUrl: './about-tool.component.html',\n styleUrls: ['./about-tool.component.scss'],\n imports: [\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n MatMenuModule,\n CustomHtmlComponent,\n IgoLanguageModule\n ]\n})\nexport class AboutToolComponent implements OnInit {\n configService = inject(ConfigService);\n auth = inject(AuthService);\n private http = inject(HttpClient);\n private cdRef = inject(ChangeDetectorRef);\n private languageService = inject(LanguageService);\n\n private configOptions: AllEnvironmentOptions;\n @Input()\n get headerHtml() {\n return this._headerHtml;\n }\n set headerHtml(value: string) {\n this._headerHtml = Array.isArray(value) ? value.join('\\n') : value;\n }\n\n @Input()\n get html() {\n return this._html;\n }\n set html(value: string) {\n this._html = Array.isArray(value) ? value.join('\\n') : value;\n }\n private _discoverTitleInLocale = 'IGO';\n public discoverTitleInLocale$: Observable<string> = of(\n this._discoverTitleInLocale\n );\n\n @Input()\n get discoverTitleInLocale() {\n return this._discoverTitleInLocale;\n }\n set discoverTitleInLocale(value: string) {\n this._discoverTitleInLocale = value;\n this.discoverTitleInLocale$ = of(value);\n }\n\n readonly trainingGuideURLs = model(undefined);\n\n public effectiveVersion: string;\n private _html = 'igo.integration.aboutTool.html';\n private _headerHtml: string;\n\n private baseUrlProfil;\n private baseUrlGuide;\n\n public loading = false;\n\n constructor() {\n this.headerHtml = this.languageService.translate.instant(\n 'igo.integration.aboutTool.headerHtml'\n );\n this.configOptions = this.configService.getConfigs();\n const configVersion = this.configOptions.version;\n this.effectiveVersion =\n configVersion?.app || configVersion?.lib || version.lib;\n this.baseUrlProfil = this.configOptions.storage?.url;\n this.baseUrlGuide =\n this.configOptions.depot?.url +\n // todo validate this property\n (this.configOptions.depot as any)?.guideUrl;\n }\n\n ngOnInit() {\n if (this.auth.authenticated && this.configOptions.context?.url) {\n this.http.get(this.baseUrlProfil).subscribe((profil) => {\n const recast = profil as any;\n this.trainingGuideURLs.set(recast.guides);\n this.cdRef.detectChanges();\n });\n } else if (\n this.auth.authenticated &&\n !this.configOptions.context?.url &&\n this.configOptions.depot?.trainingGuides\n ) {\n this.trainingGuideURLs.set(this.configOptions.depot?.trainingGuides);\n }\n }\n\n openGuide(guide?) {\n this.loading = true;\n const url = guide\n ? this.baseUrlGuide + guide + '?'\n : this.baseUrlGuide + this.trainingGuideURLs()[0] + '?';\n this.http\n .get(url, {\n responseType: 'blob'\n })\n .subscribe(() => {\n this.loading = false;\n window.open(url, '_blank');\n this.cdRef.detectChanges();\n });\n }\n\n formatFileName(name: string) {\n name = name.split('_').join(' ');\n const index = name.indexOf('.');\n name = name.slice(0, index);\n return name;\n }\n}\n","@if (\n auth.authenticated && trainingGuideURLs() && trainingGuideURLs().length === 1\n) {\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 <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (\n auth.authenticated && trainingGuideURLs() && trainingGuideURLs().length > 1\n) {\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 <span>{{ 'igo.integration.aboutTool.trainingGuide' | translate }}</span>\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","import {\n CUSTOM_ELEMENTS_SCHEMA,\n ModuleWithProviders,\n NgModule\n} from '@angular/core';\n\nimport { AboutToolComponent } from './about-tool/about-tool.component';\n\n/**\n * @deprecated import the AboutToolComponent directly\n */\n@NgModule({\n imports: [AboutToolComponent],\n exports: [AboutToolComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgoAppAboutModule {\n static forRoot(): ModuleWithProviders<IgoAppAboutModule> {\n return {\n ngModule: IgoAppAboutModule,\n providers: []\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { StorageService } from '@igo2/core/storage';\nimport { IgoMap, MapService, ProjectionService } from '@igo2/geo';\n\n/**\n * Service that holds the state of the map module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MapState {\n private mapService = inject(MapService);\n private projectionService = inject(ProjectionService);\n private storageService = inject(StorageService);\n private configService = inject(ConfigService);\n\n get showAllLegendsValue(): boolean {\n return this._legendToolShowAll;\n }\n\n set showAllLegendsValue(value) {\n this._legendToolShowAll = value;\n }\n private _legendToolShowAll: boolean;\n\n /**\n * Active map\n */\n get map(): IgoMap {\n return this._map;\n }\n private _map: IgoMap;\n\n constructor() {\n this._map = new IgoMap(\n {\n controls: {\n scaleLine: true,\n attribution: {\n collapsed: true\n }\n }\n },\n this.storageService,\n this.configService\n );\n\n this.mapService.setMap(this.map);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { EntityStore } from '@igo2/common/entity';\nimport { Catalog, CatalogItem } from '@igo2/geo';\n\n/**\n * Service that holds the state of the catalog module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class CatalogState {\n /**\n * Store that contains all the catalogs\n */\n get catalogStore(): EntityStore<Catalog> {\n return this._catalogStore;\n }\n private _catalogStore: EntityStore<Catalog>;\n\n /**\n * Catalog -> Catalog items store mapping\n */\n private catalogItemsStores = new Map<string, EntityStore<CatalogItem>>();\n\n constructor() {\n const authService = inject(AuthService);\n\n this._catalogStore = new EntityStore([]);\n\n authService.authenticate$.subscribe(() => {\n this.clearCatalogItemsStores();\n });\n }\n\n /**\n * Get a catalog's items store\n * @param catalog Catalog\n * @returns Store that contains the catalog items\n */\n getCatalogItemsStore(catalog: Catalog): EntityStore<CatalogItem> {\n return this.catalogItemsStores.get(catalog.id as string);\n }\n\n /**\n * Bind a catalog items store to a catalog\n * @param catalog Catalog\n * @param store Catalog items store\n */\n setCatalogItemsStore(catalog: Catalog, store: EntityStore<CatalogItem>) {\n this.catalogItemsStores.set(catalog.id as string, store);\n }\n\n /**\n * Clear all catalog items stores\n */\n clearCatalogItemsStores() {\n this.catalogItemsStores.clear();\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { EntityRecord, EntityStore } from '@igo2/common/entity';\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n Catalog,\n CatalogBrowserComponent,\n CatalogItem,\n CatalogItemState,\n CatalogService,\n IgoMap\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { MapState } from '../../map/map.state';\nimport { CatalogState } from '../catalog.state';\n\n/**\n * Tool to browse a catalog's groups and layers and display them to a map.\n */\n@ToolComponent({\n name: 'catalogBrowser',\n title: 'igo.integration.tools.catalog',\n parent: 'catalog'\n})\n@Component({\n selector: 'igo-catalog-browser-tool',\n templateUrl: './catalog-browser-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CatalogBrowserComponent, AsyncPipe]\n})\nexport class CatalogBrowserToolComponent implements OnInit, OnDestroy {\n private catalogService = inject(CatalogService);\n private catalogState = inject(CatalogState);\n private mapState = inject(MapState);\n private authService = inject(AuthService);\n\n catalog: Catalog;\n\n /**\n * Store that contains the catalog items\n * @internal\n */\n store$ = new BehaviorSubject<EntityStore<CatalogItem, CatalogItemState>>(\n undefined\n );\n\n /**\n * Subscription to the selected catalog\n */\n private catalog$$: Subscription;\n\n /**\n * Whether a group can be toggled when it's collapsed\n */\n readonly toggleCollapsedGroup = input(true);\n\n /**\n * Map to add layers to\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n /**\n * @internal\n */\n ngOnInit() {\n const catalogStore = this.catalogState.catalogStore;\n\n const catalog$ = catalogStore.stateView.firstBy$(\n (record: EntityRecord<Catalog>) => record.state.selected === true\n );\n const authenticate$ = this.authService.authenticate$;\n this.catalog$$ = combineLatest([catalog$, authenticate$]).subscribe(\n ([record]) => {\n // Mute an error, that we are not able to replicate where the record is undefined\n if (record === undefined) {\n return;\n }\n const catalog = record.entity;\n this.catalog = catalog;\n this.loadCatalogItems(this.catalog);\n }\n );\n }\n\n /**\n * @internal\n */\n ngOnDestroy() {\n this.catalog$$.unsubscribe();\n }\n\n /**\n * Get the selected catalog's items from the CatalogService and\n * load them into the store.\n * @param catalog Selected catalog\n */\n private loadCatalogItems(catalog: Catalog) {\n let store = this.catalogState.getCatalogItemsStore(catalog);\n if (store !== undefined) {\n this.store$.next(store);\n return;\n }\n\n store = new EntityStore<CatalogItem>([]);\n this.catalogState.setCatalogItemsStore(catalog, store);\n this.catalogService\n .loadCatalogItems(catalog)\n .pipe(take(1))\n .subscribe((items: CatalogItem[]) => {\n store.load(items);\n this.store$.next(store);\n });\n }\n}\n","@if (store$ | async; as store) {\n <igo-catalog-browser\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup()\"\n />\n}\n","import { NgModule } from '@angular/core';\n\nimport { CatalogBrowserToolComponent } from './catalog-browser-tool.component';\n\n/**\n * @deprecated import the CatalogBrowserToolComponent directly\n */\n@NgModule({\n imports: [CatalogBrowserToolComponent],\n exports: [CatalogBrowserToolComponent]\n})\nexport class IgoAppCatalogBrowserToolModule {}\n","import { Injectable } from '@angular/core';\n\nimport { ExportOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\nexport enum ImportExportType {\n layer = 'layer',\n context = 'context'\n}\n\nexport enum ImportExportMode {\n import = 'import',\n export = 'export'\n}\n\n/**\n * Service that holds the state of the importExport module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ImportExportState {\n readonly importExportType$ = new BehaviorSubject<ImportExportType>(\n ImportExportType.layer\n );\n readonly selectedMode$ = new BehaviorSubject<ImportExportMode>(\n ImportExportMode.import\n );\n readonly exportOptions$ = new BehaviorSubject<ExportOptions>(undefined);\n\n setImportExportType(type: ImportExportType) {\n this.importExportType$.next(type);\n }\n\n setMode(mode: ImportExportMode) {\n this.selectedMode$.next(mode);\n }\n\n setsExportOptions(exportOptions: ExportOptions) {\n this.exportOptions$.next(exportOptions);\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { ToolService, Toolbox } from '@igo2/common/tool';\nimport { ExportOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../import-export/import-export.state';\n\n/**\n * Service that holds the state of the search module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ToolState {\n private toolService = inject(ToolService);\n private importExportState = inject(ImportExportState);\n\n get toolbox(): Toolbox {\n return this.toolService.toolbox;\n }\n\n public openSidenav$ = new BehaviorSubject<boolean>(undefined);\n\n toolToActivateFromOptions(toolToActivate: {\n tool: string;\n options: ExportOptions;\n }) {\n if (!toolToActivate) {\n return;\n }\n if (toolToActivate.tool === 'importExport') {\n let exportOptions: ExportOptions =\n this.importExportState.exportOptions$.value;\n if (!exportOptions) {\n exportOptions = {\n layers: toolToActivate.options.layers,\n featureInMapExtent: toolToActivate.options.featureInMapExtent\n };\n } else {\n exportOptions.layers = toolToActivate.options.layers;\n exportOptions.featureInMapExtent =\n toolToActivate.options.featureInMapExtent;\n }\n this.importExportState.setsExportOptions(exportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n }\n\n if (this.toolbox.getTool(toolToActivate.tool)) {\n this.toolbox.activateTool(toolToActivate.tool);\n this.openSidenav$.next(true);\n }\n }\n}\n","import {\n AnyDataSourceOptions,\n ArcGISRestDataSourceOptions,\n CartoDataSourceOptions,\n ClusterDataSourceOptions,\n FeatureDataSourceOptions,\n MVTDataSourceOptions,\n OSMDataSourceOptions,\n WFSDataSourceOptions,\n WMSDataSourceOptions,\n WMTSDataSourceOptions,\n XYZDataSourceOptions,\n generateIdFromSourceOptions\n} from '@igo2/geo';\n\nimport { InfoFromSourceOptions } from './catalog-library-tool.interface';\n\nexport function getInfoFromSourceOptions(\n sourceOptions: AnyDataSourceOptions,\n context: string\n): InfoFromSourceOptions {\n const value: InfoFromSourceOptions = {\n id: undefined,\n layerName: undefined,\n url: undefined,\n sourceOptions: undefined,\n context\n };\n\n switch (sourceOptions.type) {\n case 'imagearcgisrest':\n case 'arcgisrest':\n case 'tilearcgisrest': {\n const argisSo = sourceOptions as ArcGISRestDataSourceOptions;\n value.layerName = argisSo.layer;\n value.url = argisSo.url;\n value.sourceOptions = argisSo;\n break;\n }\n case 'wmts': {\n const wmtsSo = sourceOptions as WMTSDataSourceOptions;\n value.layerName = wmtsSo.layer;\n value.url = wmtsSo.url;\n value.sourceOptions = wmtsSo;\n break;\n }\n case 'xyz': {\n const xyzSo = sourceOptions as XYZDataSourceOptions;\n value.layerName = '';\n value.url = xyzSo.url;\n value.sourceOptions = xyzSo;\n break;\n }\n case 'wms': {\n const wmsSo = sourceOptions as WMSDataSourceOptions;\n wmsSo.params.LAYERS = wmsSo.params.LAYERS ?? (wmsSo.params as any).layers;\n value.layerName = wmsSo.params.LAYERS;\n\n value.url = wmsSo.url;\n value.sourceOptions = wmsSo;\n break;\n }\n case 'osm': {\n const osmSo = sourceOptions as OSMDataSourceOptions;\n value.layerName = '';\n value.url = osmSo.url\n ? osmSo.url\n : 'https://tile.openstreetmap.org/{z}/{x}/{y}.png';\n value.sourceOptions = osmSo;\n break;\n }\n case 'wfs': {\n const wfsSo = sourceOptions as WFSDataSourceOptions;\n value.layerName = wfsSo.params.featureTypes;\n value.url = wfsSo.url;\n value.sourceOptions = wfsSo;\n break;\n }\n case 'vector': {\n const featureSo = sourceOptions as FeatureDataSourceOptions;\n value.layerName = '';\n value.url = featureSo.url;\n value.sourceOptions = featureSo;\n break;\n }\n case 'cluster': {\n const clusterSo = sourceOptions as ClusterDataSourceOptions;\n value.layerName = '';\n value.url = clusterSo.url;\n value.sourceOptions = clusterSo;\n break;\n }\n case 'mvt': {\n const mvtSo = sourceOptions as MVTDataSourceOptions;\n value.layerName = '';\n value.url = mvtSo.url;\n value.sourceOptions = mvtSo;\n break;\n }\n case 'carto': {\n const cartoSo = sourceOptions as CartoDataSourceOptions;\n value.layerName = cartoSo.config.layers\n .map((layer) => layer.options.sql)\n .join(' ');\n value.url = `https://${cartoSo.account}.carto.com/api/v1/map`;\n value.sourceOptions = cartoSo;\n break;\n }\n default:\n break;\n }\n if (value.sourceOptions) {\n value.id = generateIdFromSourceOptions(value.sourceOptions);\n value.url = value.url?.startsWith('/')\n ? window.location.origin + value.url\n : value.url;\n }\n\n return value;\n}\n","import { formatDate } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EntityStore } from '@igo2/common/entity';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ContextService } from '@igo2/context';\nimport { LanguageService } from '@igo2/core/language';\nimport { StorageScope, StorageService } from '@igo2/core/storage';\nimport {\n Catalog,\n CatalogItemGroup,\n CatalogItemLayer,\n CatalogItemType,\n CatalogLibraryComponent,\n CatalogService,\n isLayerItemOptions\n} from '@igo2/geo';\nimport {\n addExcelSheetToWorkBook,\n createExcelWorkBook,\n writeExcelFile\n} from '@igo2/utils';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, Subscription, combineLatest, forkJoin } from 'rxjs';\nimport { concatAll, map, switchMap, take, toArray } from 'rxjs/operators';\n\nimport { ToolState } from '../../tool/tool.state';\nimport { CatalogState } from '../catalog.state';\nimport {\n InfoFromSourceOptions,\n ListExport\n} from './catalog-library-tool.interface';\nimport { getInfoFromSourceOptions } from './catalog-library-tool.utils';\n\n/**\n * Tool to browse the list of available catalogs.\n */\n@ToolComponent({\n name: 'catalog',\n title: 'igo.integration.tools.catalog',\n icon: 'library_add'\n})\n@Component({\n selector: 'igo-catalog-library-tool',\n templateUrl: './catalog-library-tool.component.html',\n styleUrls: ['./catalog-library-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CatalogLibraryComponent,\n MatButtonModule,\n MatTooltipModule,\n TranslateModule\n ]\n})\nexport class CatalogLibraryToolComponent implements OnInit, OnDestroy {\n private contextService = inject(ContextService);\n private catalogService = inject(CatalogService);\n private catalogState = inject(CatalogState);\n private toolState = inject(ToolState);\n private storageService = inject(StorageService);\n private languageService = inject(LanguageService);\n\n private generatelist$$: Subscription;\n /**\n * Store that contains the catalogs\n * @internal\n */\n get store(): EntityStore<Catalog> {\n return this.catalogState.catalogStore;\n }\n\n /**\n * Determine if the form to add a catalog is allowed\n */\n readonly addCatalogAllowed = input(false);\n\n /**\n * Determine if the export button is shown\n */\n readonly exportButton = input(false);\n\n /**\n * List of predefined catalogs\n */\n readonly predefinedCatalogs = input<Catalog[]>([]);\n\n set selectedCatalogId(id) {\n this.storageService.set('selectedCatalogId', id, StorageScope.SESSION);\n }\n\n get currentTool() {\n return this.toolState.toolbox.getCurrentPreviousToolName()[1];\n }\n\n get lastTool() {\n return this.toolState.toolbox.getCurrentPreviousToolName()[0];\n }\n\n /**\n * @internal\n */\n ngOnInit() {\n if (this.lastTool === 'catalogBrowser' && this.currentTool === 'catalog') {\n this.selectedCatalogId = null;\n }\n\n if (this.store.count === 0) {\n this.loadCatalogs();\n }\n }\n\n ngOnDestroy() {\n this.generatelist$$?.unsubscribe();\n }\n\n /**\n * When the selected catalog changes, toggle the the CatalogBrowser tool.\n * @internal\n * @param event Select event\n */\n onCatalogSelectChange(event: { selected: boolean; catalog: Catalog }) {\n if (event.selected === false) {\n return;\n }\n this.toolState.toolbox.activateTool('catalogBrowser');\n }\n\n /**\n * Get all the available catalogs from the CatalogService and\n * load them into the store.\n */\n private loadCatalogs() {\n this.catalogService\n .loadCatalogs()\n .pipe(take(1))\n .subscribe((catalogs: Catalog[]) => {\n this.store.clear();\n this.store.load(\n catalogs.concat(\n (this.storageService.get('addedCatalogs') || []) as Catalog[]\n )\n );\n });\n }\n\n /**\n * Get the item abstract for getCatalogList\n */\n private getMetadataAbstract(item: CatalogItemLayer): string {\n return item.options.metadata.abstract?.replaceAll('\\n', '') ?? '';\n }\n /**\n * Get the item url metadata for getCatalogList\n */\n private getMetadataUrl(item: CatalogItemLayer): string {\n return item.options.metadata.url;\n }\n\n private layersInfoFromContexts(): Observable<InfoFromSourceOptions[]> {\n return this.contextService.getLocalContexts().pipe(\n switchMap((contextsList) =>\n forkJoin(\n contextsList.ours.map((context) =>\n this.contextService.getLocalContext(context.uri)\n )\n )\n ),\n concatAll(),\n map((detailedContext) => {\n return detailedContext.layers\n .filter((layer) => isLayerItemOptions(layer))\n .map((layer) =>\n getInfoFromSourceOptions(\n layer.sourceOptions,\n detailedContext.title ?? detailedContext.uri\n )\n );\n }),\n concatAll(),\n toArray()\n );\n }\n\n private listExportFromCatalogs(): Observable<ListExport[]> {\n let rank = 1;\n const finalListExportOutputs: ListExport[] = [];\n return this.store.entities$.pipe(\n switchMap((catalogs) =>\n combineLatest(\n catalogs.map((catalog) =>\n this.catalogService.loadCatalogItems(catalog).pipe(\n map((items) => {\n return { catalog, items };\n })\n )\n )\n )\n ),\n map((catalogsWithItems) => {\n catalogsWithItems.forEach((catalogAndItems) => {\n const catalog = catalogAndItems.catalog;\n const loadedCatalogItems = catalogAndItems.items;\n\n const catalogListExports = loadedCatalogItems.reduce(\n (catalogListExports, item) => {\n if (item.type === CatalogItemType.Group) {\n const group = item as CatalogItemGroup;\n group.items.forEach((layer: CatalogItemLayer) => {\n catalogListExports.push(\n this.formatLayer(layer, rank, group.title, catalog.title)\n );\n rank++;\n });\n } else {\n const layer = item as CatalogItemLayer;\n catalogListExports.push(\n this.formatLayer(layer, rank, '', catalog.title)\n );\n rank++;\n }\n return catalogListExports;\n },\n [] as ListExport[]\n );\n finalListExportOutputs.push(...catalogListExports);\n });\n return finalListExportOutputs;\n })\n );\n }\n\n async getCatalogList(): Promise<void> {\n this.generatelist$$ = combineLatest([\n this.layersInfoFromContexts(),\n this.listExportFromCatalogs()\n ]).subscribe(([layersInfoFromContexts, listExportFromCatalogs]) => {\n const listExport = this.matchLayersWithLayersFromContext(\n listExportFromCatalogs,\n layersInfoFromContexts\n );\n\n this.exportExcel(listExport);\n });\n }\n\n private formatLayer(\n layer: CatalogItemLayer,\n rank: number,\n groupTitle: string,\n catalogTitle: string\n ): ListExport {\n const infos = getInfoFromSourceOptions(\n layer.options.sourceOptions,\n layer.id\n );\n const t = this.languageService.translate;\n return {\n id: infos.id,\n rank: rank.toString(),\n layerTitle: layer.title,\n layerGroup: groupTitle,\n catalog: catalogTitle,\n provider: layer.externalProvider\n ? t.instant('igo.integration.catalog.listExport.external')\n : t.instant('igo.integration.catalog.listExport.internal'),\n url: infos.url,\n layerName: infos.layerName,\n context: '',\n metadataAbstract: this.getMetadataAbstract(layer),\n metadataUrl: this.getMetadataUrl(layer)\n };\n }\n\n /**\n * Match a list of layer info with an other list derived from contexts\n * @param catalogOutputs The row list to be written into a file\n * @param layerInfosFromDetailedContexts Layers info derived from the context\n * @returns An altered list, with layer/context association\n */\n\n private matchLayersWithLayersFromContext(\n listExport: ListExport[],\n layerInfosFromDetailedContexts: InfoFromSourceOptions[]\n ): ListExport[] {\n listExport.map((catalogOutput) => {\n const matchingLayersFromContext = layerInfosFromDetailedContexts\n .filter(\n (l) =>\n l.id === catalogOutput.id ||\n (l.layerName === catalogOutput.layerName &&\n l.url === catalogOutput.url)\n )\n .map((f) => f.context);\n catalogOutput.context = matchingLayersFromContext.join(',');\n });\n return listExport;\n }\n\n /**\n * Write a Excel file\n * @param catalogOutputs The row list to be written into a excel file\n */\n async exportExcel(catalogOutputs: ListExport[]) {\n const translateCatalogKey = (key: TemplateStringsArray) =>\n this.languageService.translate.instant(\n `igo.integration.catalog.listExport.${key}`\n );\n\n catalogOutputs.unshift({\n id: 'catalogIdHeader',\n rank: translateCatalogKey`rank`,\n layerTitle: translateCatalogKey`layerTitle`,\n layerGroup: translateCatalogKey`layerGroup`,\n catalog: translateCatalogKey`catalog`,\n provider: translateCatalogKey`externalProvider`,\n url: translateCatalogKey`url`,\n layerName: translateCatalogKey`layerName`,\n context: translateCatalogKey`context`,\n metadataAbstract: translateCatalogKey`metadataAbstract`,\n metadataUrl: translateCatalogKey`metadataUrl`\n });\n\n const catalogOutput = catalogOutputs.map((catalogOutput) => {\n delete catalogOutput.id;\n return catalogOutput;\n });\n\n const workBook = await createExcelWorkBook();\n\n await addExcelSheetToWorkBook('Informations', catalogOutput, workBook, {\n json2SheetOpts: { skipHeader: true }\n });\n\n const documentName = this.languageService.translate.instant(\n 'igo.integration.catalog.listExport.documentName',\n { value: formatDate(Date.now(), 'YYYY-MM-dd-H_mm', 'en-US') }\n );\n writeExcelFile(workBook, documentName, { compression: true });\n }\n}\n","<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","import { NgModule } from '@angular/core';\n\nimport { CatalogLibraryToolComponent } from './catalog-library-tool.component';\n\n/**\n * @deprecated import the CatalogLibraryToolComponent directly\n */\n@NgModule({\n imports: [CatalogLibraryToolComponent],\n exports: [CatalogLibraryToolComponent]\n})\nexport class IgoAppCatalogLibraryToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppCatalogBrowserToolModule } from './catalog-browser-tool/catalog-browser-tool.module';\nimport { IgoAppCatalogLibraryToolModule } from './catalog-library-tool/catalog-library-tool.module';\n\n/**\n * @deprecated import the components directly\n */\n@NgModule({\n exports: [IgoAppCatalogLibraryToolModule, IgoAppCatalogBrowserToolModule]\n})\nexport class IgoAppCatalogModule {}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ContextEditComponent } from '@igo2/context';\n\nimport { ToolState } from '../../tool/tool.state';\n\n@ToolComponent({\n name: 'contextEditor',\n title: 'igo.integration.tools.contexts',\n icon: 'star',\n parent: 'contextManager'\n})\n@Component({\n selector: 'igo-context-editor-tool',\n templateUrl: './context-editor-tool.component.html',\n imports: [ContextEditComponent]\n})\nexport class ContextEditorToolComponent {\n private toolState = inject(ToolState);\n\n submitSuccessed() {\n this.toolState.toolbox.activatePreviousTool();\n }\n}\n","<igo-context-edit (submitSuccessed)=\"submitSuccessed()\" />\n","import { Component, inject, input } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ContextListComponent } from '@igo2/context';\nimport { Media, MediaService } from '@igo2/core/media';\nimport { IgoMap } from '@igo2/geo';\n\nimport { map } from 'rxjs';\n\nimport { MapState } from '../../map/map.state';\nimport { ToolState } from '../../tool/tool.state';\n\n@ToolComponent({\n name: 'contextManager',\n title: 'igo.integration.tools.contexts',\n icon: 'star'\n})\n@Component({\n selector: 'igo-context-manager-tool',\n templateUrl: './context-manager-tool.component.html',\n imports: [ContextListComponent]\n})\nexport class ContextManagerToolComponent {\n private toolState = inject(ToolState);\n private mapState = inject(MapState);\n private mediaService = inject(MediaService);\n\n readonly toolToOpenOnContextChange = input('mapTools');\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n isDesktop = toSignal(\n this.mediaService.media$.pipe(map((value) => value === Media.Desktop))\n );\n\n editContext() {\n this.toolState.toolbox.activateTool('contextEditor');\n }\n\n managePermissions() {\n this.toolState.toolbox.activateTool('contextPermissionManager');\n }\n}\n","<igo-context-list\n [map]=\"map\"\n (edit)=\"editContext()\"\n (managePermissions)=\"managePermissions()\"\n [isDesktop]=\"isDesktop()\"\n/>\n","import { Component } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n ContextPermissionsBindingDirective,\n ContextPermissionsComponent\n} from '@igo2/context';\n\n@ToolComponent({\n name: 'contextPermissionManager',\n title: 'igo.integration.tools.contexts',\n icon: 'star',\n parent: 'contextManager'\n})\n@Component({\n selector: 'igo-context-permission-manager-tool',\n templateUrl: './context-permission-manager-tool.component.html',\n imports: [ContextPermissionsComponent, ContextPermissionsBindingDirective]\n})\nexport class ContextPermissionManagerToolComponent {}\n","<igo-context-permissions igoContextPermissionsBinding />\n","import { Injectable } from '@angular/core';\n\nimport { LayerListControlsOptions } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Service that holds the state of layer list tool values\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class LayerListToolState {\n readonly keyword$ = new BehaviorSubject<string>('');\n readonly sortAlpha$ = new BehaviorSubject<boolean>(undefined);\n readonly onlyVisible$ = new BehaviorSubject<boolean>(undefined);\n readonly selectedTab$ = new BehaviorSubject<number>(undefined);\n\n setKeyword(keyword: string) {\n this.keyword$.next(keyword);\n }\n\n setSortAlpha(sort: boolean) {\n this.sortAlpha$.next(sort);\n }\n\n setOnlyVisible(onlyVisible: boolean) {\n this.onlyVisible$.next(onlyVisible);\n }\n\n setSelectedTab(tab: number) {\n this.selectedTab$.next(tab);\n }\n\n getLayerListControls(): LayerListControlsOptions {\n return {\n keyword: this.keyword$.value,\n onlyVisible: this.onlyVisible$.value,\n sortAlpha: this.sortAlpha$.value\n };\n }\n}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ShareMapComponent } from '@igo2/context';\nimport { IgoMap, LayerListControlsOptions } from '@igo2/geo';\n\nimport { LayerListToolState } from '../../map/layer-list-tool.state';\nimport { MapState } from '../../map/map.state';\n\n@ToolComponent({\n name: 'shareMap',\n title: 'igo.integration.tools.shareMap',\n icon: 'share'\n})\n@Component({\n selector: 'igo-context-share-tool',\n templateUrl: './context-share-tool.component.html',\n imports: [ShareMapComponent]\n})\nexport class ContextShareToolComponent {\n private mapState = inject(MapState);\n private layerListToolState = inject(LayerListToolState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layerListControls(): LayerListControlsOptions {\n return this.layerListToolState.getLayerListControls();\n }\n}\n","<igo-share-map [map]=\"map\" />\n","import { ContextEditorToolComponent } from './context-editor-tool/context-editor-tool.component';\nimport { ContextManagerToolComponent } from './context-manager-tool/context-manager-tool.component';\nimport { ContextPermissionManagerToolComponent } from './context-permission-manager-tool/context-permission-manager-tool.component';\nimport { ContextShareToolComponent } from './context-share-tool/context-share-tool.component';\n\nexport const INTEGRATION_CONTEXT_DIRECTIVES = [\n ContextEditorToolComponent,\n ContextManagerToolComponent,\n ContextPermissionManagerToolComponent,\n ContextShareToolComponent\n] as const;\n","import { NgModule } from '@angular/core';\n\nimport { INTEGRATION_CONTEXT_DIRECTIVES } from './context.directive';\n\n/**\n * @deprecated import the components/directive directly or INTEGRATION_CONTEXT_DIRECTIVES for the set\n */\n@NgModule({\n imports: [...INTEGRATION_CONTEXT_DIRECTIVES],\n exports: [...INTEGRATION_CONTEXT_DIRECTIVES]\n})\nexport class IgoAppContextModule {}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Tool, ToolService } from '@igo2/common/tool';\nimport { ContextService, DetailedContext } from '@igo2/context';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ToolState } from '../tool/tool.state';\n\n/**\n * Service that holds the state of the context module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextState {\n private contextService = inject(ContextService);\n private toolService = inject(ToolService);\n private toolState = inject(ToolState);\n private languageService = inject(LanguageService);\n\n /**\n * Observable of the active context\n */\n context$ = new BehaviorSubject<DetailedContext>(undefined);\n\n constructor() {\n this.contextService.context$.subscribe((context: DetailedContext) => {\n this.onContextChange(context);\n });\n this.contextService.toolsChanged$.subscribe((context: DetailedContext) => {\n this.updateTools(context);\n });\n }\n\n /**\n * Set the active context\n * @param context Detailed context\n */\n private setContext(context: DetailedContext) {\n this.updateTools(context);\n this.context$.next(context);\n }\n\n /**\n * Update the tool state with the context's tools\n * @param context Detailed context\n */\n private updateTools(context: DetailedContext) {\n const toolbox = this.toolState.toolbox;\n\n const tools = [];\n const contextTools = context.tools || [];\n contextTools.forEach((contextTool: Tool) => {\n const baseTool = this.toolService.getTool(contextTool.name);\n if (baseTool === undefined) {\n return;\n }\n\n const options = Object.assign(\n {},\n baseTool.options || {},\n contextTool.options || {}\n );\n const tool = Object.assign({}, baseTool, contextTool, { options });\n tools.push(tool);\n });\n\n tools.forEach((tool) => {\n if (tool.parent) {\n const parentIndex = tools.findIndex((el) => el.name === tool.parent);\n if (parentIndex !== -1) {\n tools[parentIndex].children = [];\n tools[parentIndex].children.push(tool.name);\n }\n }\n });\n\n toolbox.setTools(tools);\n toolbox.setToolbar(context.toolbar || []);\n\n // TODO: This is a patch so the context service can work without\n // injecting the ToolState or without being completely refactored\n this.contextService.setTools([].concat(tools));\n this.contextService.setToolbar(context.toolbar || []);\n }\n\n /**\n * Set a new context and update the tool state\n * @param context Detailed context\n */\n private onContextChange(context: DetailedContext) {\n if (context === undefined) {\n return;\n }\n this.setContext(context);\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\n\nimport {\n RoutesFeatureStore,\n StepsFeatureStore,\n StopsFeatureStore,\n StopsStore\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the direction module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DirectionState {\n private mapState = inject(MapState);\n\n public zoomToActiveRoute = signal(false);\n\n /**\n * Store that holds the stop\n */\n public stopsStore: StopsStore = new StopsStore([]);\n\n /**\n * Store that holds the driving stops as feature\n */\n public stopsFeatureStore: StopsFeatureStore;\n\n /**\n * Store that holds the driving route as feature\n */\n public routesFeatureStore: RoutesFeatureStore;\n\n public stepFeatureStore: StepsFeatureStore;\n\n public debounceTime = 200;\n\n constructor() {\n this.stopsFeatureStore = new StopsFeatureStore([], {\n map: this.mapState.map\n });\n\n this.routesFeatureStore = new RoutesFeatureStore([], {\n map: this.mapState.map\n });\n\n this.stepFeatureStore = new StepsFeatureStore([], {\n map: this.mapState.map\n });\n\n this.mapState.map.layerController.all$.subscribe(() => {\n if (\n !this.mapState.map.layerController.getById('igo-direction-stops-layer')\n ) {\n this.stopsStore.deleteMany(this.stopsStore.all());\n this.stopsFeatureStore.deleteMany(this.stopsFeatureStore.all()); // not necessary\n }\n if (\n !this.mapState.map.layerController.getById('igo-direction-route-layer')\n ) {\n this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());\n }\n });\n }\n}\n","import { Component, OnInit, inject } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { MessageService } from '@igo2/core/message';\nimport { StorageScope, StorageService } from '@igo2/core/storage';\nimport {\n IgoDirectionsModule,\n IgoMap,\n RoutesFeatureStore,\n StepsFeatureStore,\n StopsFeatureStore,\n StopsStore\n} from '@igo2/geo';\n\nimport { ContextState } from '../../context/context.state';\nimport { MapState } from '../../map/map.state';\nimport { DirectionState } from '../directions.state';\n\n@ToolComponent({\n name: 'directions',\n title: 'igo.integration.tools.directions',\n icon: 'directions'\n})\n@Component({\n selector: 'igo-directions-tool',\n templateUrl: './directions-tool.component.html',\n imports: [IgoDirectionsModule]\n})\nexport class DirectionsToolComponent implements OnInit {\n private directionState = inject(DirectionState);\n private mapState = inject(MapState);\n private messageService = inject(MessageService);\n private storageService = inject(StorageService);\n contextState = inject(ContextState);\n private authService = inject(AuthService);\n\n public currentContextUri: string;\n /**\n * stops\n * @internal\n */\n get stopsStore(): StopsStore {\n return this.directionState.stopsStore;\n }\n\n get debounceTime(): number {\n return this.directionState.debounceTime;\n }\n\n /**\n * stops\n * @internal\n */\n get stopsFeatureStore(): StopsFeatureStore {\n return this.directionState.stopsFeatureStore;\n }\n\n /**\n * routes\n * @internal\n */\n get routesFeatureStore(): RoutesFeatureStore {\n return this.directionState.routesFeatureStore;\n }\n\n get stepFeatureStore(): StepsFeatureStore {\n return this.directionState.stepFeatureStore;\n }\n\n get zoomOnActiveRoute() {\n return this.directionState.zoomToActiveRoute;\n }\n\n get authenticated$() {\n return this.authService.authenticate$;\n }\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n ngOnInit(): void {\n const warningShown = this.storageService.get(\n 'direction.warning.shown'\n ) as boolean;\n if (!warningShown) {\n this.messageService.info(\n 'igo.integration.directions.warning.message',\n 'igo.integration.directions.warning.title',\n { timeOut: 20000 }\n );\n this.storageService.set(\n 'direction.warning.shown',\n true,\n StorageScope.SESSION\n );\n }\n this.contextState.context$.subscribe((c) => {\n if (!this.authService.authenticated) {\n this.currentContextUri = c.uri;\n }\n });\n }\n}\n","<igo-directions\n [contextUri]=\"currentContextUri\"\n [debounce]=\"debounceTime\"\n [stopsStore]=\"stopsStore\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stepsFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [zoomOnActiveRoute]=\"false\"\n [authenticated$]=\"authenticated$\"\n/>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DirectionsToolComponent } from './directions-tool/directions-tool.component';\n\n/**\n * @deprecated import the DirectionsToolComponent directly\n */\n@NgModule({\n imports: [DirectionsToolComponent],\n exports: [DirectionsToolComponent]\n})\nexport class IgoAppDirectionsModule {\n static forRoot(): ModuleWithProviders<IgoAppDirectionsModule> {\n return {\n ngModule: IgoAppDirectionsModule,\n providers: []\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n DrawControl,\n FeatureStore,\n FeatureWithDraw,\n LayerId,\n VectorLayer\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DrawState {\n private mapState = inject(MapState);\n\n public stores: FeatureStore<FeatureWithDraw>[] = [];\n public layersID: LayerId[] = [];\n public drawControls: [LayerId, DrawControl][] = [];\n public activeDrawingLayer: VectorLayer;\n\n constructor() {\n this.mapState.map.layerController.all$.subscribe(() => {\n this.layersID.forEach((layerId) => {\n if (!this.mapState.map.layerController.getById(layerId)) {\n const deletedStore = this.stores.find(\n (store) => store.layer.id === layerId\n );\n if (deletedStore) {\n deletedStore.deleteMany(deletedStore.all());\n this.stores.splice(this.stores.indexOf(deletedStore, 0), 1);\n }\n this.layersID.splice(this.layersID.indexOf(layerId, 0), 1);\n const drawControlIndex = this.drawControls.findIndex(\n (dc) => dc[0] === layerId\n );\n this.drawControls.splice(drawControlIndex, 1);\n }\n });\n });\n for (let store of this.stores) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n store = new FeatureStore<FeatureWithDraw>([], { map: this.mapState.map });\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n DrawComponent,\n DrawControl,\n FeatureStore,\n FeatureWithDraw,\n IgoMap,\n LayerId,\n VectorLayer\n} from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { DrawState } from '../draw.state';\n\n/**\n * Tool to measure lengths and areas\n */\n@ToolComponent({\n name: 'draw',\n title: 'igo.integration.tools.draw',\n icon: 'stylus_note'\n})\n@Component({\n selector: 'igo-drawing-tool',\n templateUrl: './drawing-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DrawComponent]\n})\nexport class DrawingToolComponent {\n private drawState = inject(DrawState);\n private mapState = inject(MapState);\n\n /**\n * Map to measure on\n * @internal\n */\n get stores(): FeatureStore<FeatureWithDraw>[] {\n return this.drawState.stores;\n }\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layersID(): LayerId[] {\n return this.drawState.layersID;\n }\n\n get drawControls(): [LayerId, DrawControl][] {\n return this.drawState.drawControls;\n }\n set drawControls(dc: [LayerId, DrawControl][]) {\n this.drawState.drawControls = dc;\n }\n\n get activeDrawingLayer(): VectorLayer {\n return this.drawState.activeDrawingLayer;\n }\n set activeDrawingLayer(value: VectorLayer) {\n this.drawState.activeDrawingLayer = value;\n }\n\n public addLayersID(layerID: LayerId) {\n this.layersID.push(layerID);\n }\n\n public addDrawControls(dc: [LayerId, DrawControl][]) {\n this.drawControls = dc;\n }\n}\n","<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","import { NgModule } from '@angular/core';\n\nimport { DrawingToolComponent } from './drawing-tool.component';\n\n/**\n * @deprecated import the DrawingToolComponent directly\n */\n@NgModule({\n imports: [DrawingToolComponent],\n exports: [DrawingToolComponent]\n})\nexport class IgoAppDrawingToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppDrawingToolModule } from './drawing-tool/drawing-tool.module';\n\n/**\n * @deprecated import the DrawingToolComponent directly\n */\n@NgModule({\n exports: [IgoAppDrawingToolModule]\n})\nexport class IgoAppDrawModule {}\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n IgoMap,\n Layer,\n OgcFilterableItemComponent,\n isLayerItem\n} from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { toolSlideInOut } from './active-ogc-filter-tool.animation';\n\n@ToolComponent({\n name: 'activeOgcFilter',\n title: 'igo.integration.tools.ogcFilter',\n icon: 'filter',\n parent: 'mapTools'\n})\n@Component({\n selector: 'igo-active-ogc-filter-tool',\n templateUrl: './active-ogc-filter-tool.component.html',\n animations: [toolSlideInOut()],\n imports: [OgcFilterableItemComponent]\n})\nexport class ActiveOgcFilterToolComponent {\n mapState = inject(MapState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layer(): Layer {\n for (const lay of this.map.layerController.all) {\n if (isLayerItem(lay) && this.map.layerController.isSelected(lay)) {\n return lay;\n }\n }\n return;\n }\n\n public animate = 'enter';\n}\n","<igo-ogc-filterable-item\n [map]=\"map\"\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n","import {\n AnimationTriggerMetadata,\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport function toolSlideInOut(\n speed = '300ms',\n type = 'ease-in-out'\n): AnimationTriggerMetadata {\n return trigger('toolSlideInOut', [\n state(\n 'enter',\n style({\n transform: 'translateX(100%)'\n })\n ),\n transition('void => enter', animate(speed + ' ' + type))\n ]);\n}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoMap, Layer, TimeFilterItemComponent, isLayerItem } from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { toolSlideInOut } from './active-time-filter-tool.animation';\n\n@ToolComponent({\n name: 'activeTimeFilter',\n title: 'igo.integration.tools.timeFilter',\n icon: 'history',\n parent: 'mapTools'\n})\n@Component({\n selector: 'igo-active-time-filter-tool',\n templateUrl: './active-time-filter-tool.component.html',\n animations: [toolSlideInOut()],\n imports: [TimeFilterItemComponent]\n})\nexport class ActiveTimeFilterToolComponent {\n mapState = inject(MapState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layer(): Layer {\n for (const lay of this.map.layerController.all) {\n if (isLayerItem(lay) && this.map.layerController.isSelected(lay)) {\n return lay;\n }\n }\n return;\n }\n\n public animate = 'enter';\n}\n","<igo-time-filter-item\n [layer]=\"layer\"\n [header]=\"false\"\n [@toolSlideInOut]=\"animate\"\n/>\n","import { Component } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n OgcFilterableListBindingDirective,\n OgcFilterableListComponent\n} from '@igo2/geo';\n\n@ToolComponent({\n name: 'ogcFilter',\n title: 'igo.integration.tools.ogcFilter',\n icon: 'filter'\n})\n@Component({\n selector: 'igo-ogc-filter-tool',\n templateUrl: './ogc-filter-tool.component.html',\n imports: [OgcFilterableListComponent, OgcFilterableListBindingDirective]\n})\nexport class OgcFilterToolComponent {}\n","<igo-ogc-filterable-list igoOgcFilterableListBinding />\n","import { Injectable, inject } from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\n\n/**\n * Service that holds the state of storage service\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageState {\n private igoStorageService = inject(StorageService);\n\n get storageService(): StorageService {\n return this.igoStorageService;\n }\n}\n","import { Action } from '@igo2/common/action';\nimport {\n EntityStoreFilterCustomFuncStrategy,\n EntityStoreFilterSelectionStrategy\n} from '@igo2/common/entity';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport { StorageService } from '@igo2/core/storage';\nimport {\n EditionWorkspace,\n FeatureMotion,\n FeatureStoreSelectionStrategy,\n FeatureWorkspace,\n OgcFilterableDataSource,\n WfsWorkspace,\n mapExtentStrategyActiveToolTip,\n noElementSelected\n} from '@igo2/geo';\n\nimport { jsPDF } from 'jspdf';\nimport { autoTable } from 'jspdf-autotable';\nimport moment from 'moment';\nimport { BehaviorSubject, map } from 'rxjs';\n\nimport { ToolState } from '../../tool';\n\nexport function handleZoomAuto(\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\n storageService\n) {\n const zoomStrategy = workspace.entityStore.getStrategyOfType(\n FeatureStoreSelectionStrategy\n ) as FeatureStoreSelectionStrategy;\n zoomStrategy.setMotion(\n (storageService.get('zoomAuto') as boolean)\n ? FeatureMotion.Default\n : FeatureMotion.None\n );\n}\n\nexport function getWorkspaceActions(\n workspace: FeatureWorkspace | WfsWorkspace | EditionWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>,\n ogcFilterWidget: Widget,\n zoomAuto$: BehaviorSubject<boolean>,\n maximize$: BehaviorSubject<boolean>,\n storageService: StorageService,\n languageService: LanguageService,\n mediaService: MediaService,\n toolState: ToolState,\n interactiveSelectionFormWidget?: Widget\n): Action[] {\n const actions = [\n {\n id: 'zoomAuto',\n checkbox: true,\n title: 'igo.integration.workspace.zoomAuto.title',\n tooltip: 'igo.integration.workspace.zoomAuto.tooltip',\n checkCondition: zoomAuto$,\n handler: () => {\n handleZoomAuto(workspace, storageService);\n storageService.set(\n 'zoomAuto',\n !storageService.get('zoomAuto') as boolean\n );\n }\n },\n {\n id: 'filterInMapExtent',\n checkbox: true,\n title: 'igo.integration.workspace.inMapExtent.title',\n tooltip: mapExtentStrategyActiveToolTip(workspace),\n checkCondition: rowsInMapExtentCheckCondition$,\n handler: () =>\n rowsInMapExtentCheckCondition$.next(\n !rowsInMapExtentCheckCondition$.value\n )\n },\n {\n id: 'selectedOnly',\n checkbox: true,\n title: 'igo.integration.workspace.selected.title',\n tooltip: 'igo.integration.workspace.selected.tooltip',\n checkCondition: selectOnlyCheckCondition$,\n handler: () =>\n selectOnlyCheckCondition$.next(!selectOnlyCheckCondition$.value)\n },\n {\n id: 'clearselection',\n icon: 'deselect',\n title: 'igo.integration.workspace.clearSelection.title',\n tooltip: 'igo.integration.workspace.clearSelection.tooltip',\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\n ws.entityStore.state.updateMany(ws.entityStore.view.all(), {\n selected: false\n });\n },\n args: [workspace],\n availability: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) =>\n noElementSelected(ws)\n },\n {\n id: 'featureDownload',\n icon: 'file_save',\n title: 'igo.integration.workspace.download.title',\n tooltip: 'igo.integration.workspace.download.tooltip',\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\n const filterStrategy = ws.entityStore.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n const filterSelectionStrategy = ws.entityStore.getStrategyOfType(\n EntityStoreFilterSelectionStrategy\n );\n const layersWithSelection = filterSelectionStrategy.active\n ? [ws.layer.id]\n : [];\n toolState.toolToActivateFromOptions({\n tool: 'importExport',\n options: {\n layers: [ws.layer.id],\n featureInMapExtent: filterStrategy.active,\n layersWithSelection\n }\n });\n },\n args: [workspace]\n },\n {\n id: 'ogcFilter',\n icon: 'filter_alt',\n title: 'igo.integration.workspace.ogcFilter.title',\n tooltip: 'igo.integration.workspace.ogcFilter.tooltip',\n handler: (\n widget: Widget,\n ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace\n ) => {\n ws.activateWidget(widget, {\n map: ws.map,\n layer: ws.layer\n });\n },\n args: [ogcFilterWidget, workspace]\n },\n {\n id: 'interactiveSelect',\n icon: 'select-marker',\n title: 'igo.integration.workspace.interactiveSelection.title',\n tooltip: 'igo.integration.workspace.interactiveSelection.tooltip',\n handler: (widget: Widget, ws: FeatureWorkspace | WfsWorkspace) => {\n ws.activateWidget(widget, {\n map: ws.map,\n workspace: ws\n });\n },\n args: [interactiveSelectionFormWidget, workspace]\n },\n {\n id: 'maximize',\n title: languageService.translate.instant(\n 'igo.integration.workspace.maximize'\n ),\n tooltip: languageService.translate.instant(\n 'igo.integration.workspace.maximizeTooltip'\n ),\n icon: 'resize',\n display: () => {\n return maximize$.pipe(map((v) => !v && !mediaService.isMobile()));\n },\n handler: () => {\n if (!mediaService.isMobile()) {\n maximize$.next(true);\n }\n }\n },\n {\n id: 'standardExtent',\n title: languageService.translate.instant(\n 'igo.integration.workspace.standardExtent'\n ),\n tooltip: languageService.translate.instant(\n 'igo.integration.workspace.standardExtentTooltip'\n ),\n icon: 'resize',\n display: () => {\n return maximize$.pipe(map((v) => v && !mediaService.isMobile()));\n },\n handler: () => {\n maximize$.next(false);\n }\n },\n {\n id: 'print',\n icon: 'print',\n title: 'igo.integration.workspace.print.title',\n tooltip: 'igo.integration.workspace.print.tooltip',\n handler: (ws: FeatureWorkspace | WfsWorkspace | EditionWorkspace) => {\n const title = `${ws.layer.title} (${dateTransform(\n new Date(),\n 'YYYY-MM-DD-HH_mm'\n )})`;\n const doc = new jsPDF({\n orientation: 'landscape'\n });\n const totalPagesExp = '{total_pages_count_string}';\n doc.text(title, 14, 20);\n autoTable(doc, {\n startY: 25,\n tableWidth: 'wrap',\n html: '#currentWorkspaceTable',\n horizontalPageBreak: true,\n styles: { cellPadding: 0.5, minCellWidth: 20, fontSize: 6 },\n didDrawPage: (data) => {\n let str = 'Page ' + doc.getNumberOfPages();\n if (typeof doc.putTotalPages === 'function') {\n str = str + ' / ' + totalPagesExp;\n }\n doc.setFontSize(6);\n const pageSize = doc.internal.pageSize;\n const pageHeight = pageSize.height\n ? pageSize.height\n : pageSize.getHeight();\n doc.text(str, data.settings.margin.left, pageHeight - 10);\n }\n });\n if (typeof doc.putTotalPages === 'function') {\n doc.putTotalPages(totalPagesExp);\n }\n doc.save(`${title}.pdf`);\n },\n args: [workspace]\n }\n ];\n let returnActions = (workspace.layer.dataSource as OgcFilterableDataSource)\n .options.ogcFilters?.enabled\n ? actions\n : actions.filter((action) => action.id !== 'ogcFilter');\n returnActions =\n workspace.layer.options.workspace.printable !== false\n ? actions\n : actions.filter((action) => action.id !== 'print');\n return returnActions;\n}\n\nfunction dateTransform(date: Date, format: string): string {\n return moment(date).format(format);\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Action } from '@igo2/common/action';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport {\n StorageService,\n StorageServiceEvent,\n StorageServiceEventEnum\n} from '@igo2/core/storage';\nimport { EditionWorkspace, OgcFilterWidget } from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\nimport { StorageState } from '../../storage/storage.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EditionActionsService implements OnDestroy {\n private ogcFilterWidget = inject<Widget>(OgcFilterWidget, { optional: true });\n private storageState = inject(StorageState);\n languageService = inject(LanguageService);\n private mediaService = inject(MediaService);\n private toolState = inject(ToolState);\n\n public maximize$: BehaviorSubject<boolean>;\n\n zoomAuto$ = new BehaviorSubject<boolean>(false);\n private storageChange$$: Subscription;\n\n get storageService(): StorageService {\n return this.storageState.storageService;\n }\n\n get zoomAuto(): boolean {\n return this.storageService.get('zoomAuto') as boolean;\n }\n\n constructor() {\n this.maximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n }\n\n ngOnDestroy(): void {\n if (this.storageChange$$) {\n this.storageChange$$.unsubscribe();\n }\n }\n\n loadActions(\n workspace: EditionWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ) {\n const actions = this.buildActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$\n );\n workspace.actionStore.load(actions);\n }\n\n buildActions(\n workspace: EditionWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ): Action[] {\n this.zoomAuto$.next(this.zoomAuto);\n this.storageChange$$ = this.storageService.storageChange$\n .pipe(\n skipWhile(\n (storageChange: StorageServiceEvent) =>\n storageChange?.key !== 'zoomAuto' ||\n storageChange?.event === StorageServiceEventEnum.CLEARED\n )\n )\n .subscribe(() => {\n this.zoomAuto$.next(this.zoomAuto);\n handleZoomAuto(workspace, this.storageService);\n });\n return getWorkspaceActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$,\n this.ogcFilterWidget,\n this.zoomAuto$,\n this.maximize$,\n this.storageService,\n this.languageService,\n this.mediaService,\n this.toolState\n );\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Action } from '@igo2/common/action';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport {\n StorageService,\n StorageServiceEvent,\n StorageServiceEventEnum\n} from '@igo2/core/storage';\nimport { FeatureWorkspace, InteractiveSelectionFormWidget } from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\nimport { StorageState } from '../../storage/storage.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeatureActionsService implements OnDestroy {\n private storageState = inject(StorageState);\n languageService = inject(LanguageService);\n private toolState = inject(ToolState);\n private mediaService = inject(MediaService);\n private interactiveSelectionFormWidget = inject<Widget>(\n InteractiveSelectionFormWidget,\n { optional: true }\n );\n\n public maximize$: BehaviorSubject<boolean>;\n\n zoomAuto$ = new BehaviorSubject<boolean>(false);\n private storageChange$$: Subscription;\n\n get storageService(): StorageService {\n return this.storageState.storageService;\n }\n\n get zoomAuto(): boolean {\n return this.storageService.get('zoomAuto') as boolean;\n }\n\n constructor() {\n this.maximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n }\n\n ngOnDestroy(): void {\n if (this.storageChange$$) {\n this.storageChange$$.unsubscribe();\n }\n }\n\n loadActions(\n workspace: FeatureWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ) {\n const actions = this.buildActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$\n );\n workspace.actionStore.load(actions);\n }\n\n buildActions(\n workspace: FeatureWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ): Action[] {\n this.zoomAuto$.next(this.zoomAuto);\n this.storageChange$$ = this.storageService.storageChange$\n .pipe(\n skipWhile(\n (storageChange: StorageServiceEvent) =>\n storageChange?.key !== 'zoomAuto' ||\n storageChange?.event === StorageServiceEventEnum.CLEARED\n )\n )\n .subscribe(() => {\n this.zoomAuto$.next(this.zoomAuto);\n handleZoomAuto(workspace, this.storageService);\n });\n return getWorkspaceActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$,\n undefined,\n this.zoomAuto$,\n this.maximize$,\n this.storageService,\n this.languageService,\n this.mediaService,\n this.toolState,\n this.interactiveSelectionFormWidget\n );\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\n\nimport { Action } from '@igo2/common/action';\nimport { Widget } from '@igo2/common/widget';\nimport { LanguageService } from '@igo2/core/language';\nimport { MediaService } from '@igo2/core/media';\nimport {\n StorageService,\n StorageServiceEvent,\n StorageServiceEventEnum\n} from '@igo2/core/storage';\nimport {\n InteractiveSelectionFormWidget,\n OgcFilterWidget,\n WfsWorkspace\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\nimport { StorageState } from '../../storage/storage.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { getWorkspaceActions, handleZoomAuto } from './workspace.utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WfsActionsService implements OnDestroy {\n private storageState = inject(StorageState);\n languageService = inject(LanguageService);\n private mediaService = inject(MediaService);\n private toolState = inject(ToolState);\n private interactiveSelectionFormWidget = inject<Widget>(\n InteractiveSelectionFormWidget,\n { optional: true }\n );\n private ogcFilterWidget = inject<Widget>(OgcFilterWidget, { optional: true });\n\n public maximize$: BehaviorSubject<boolean>;\n\n selectOnlyCheckCondition$ = new BehaviorSubject<boolean>(false);\n // rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n zoomAuto$ = new BehaviorSubject<boolean>(false);\n private storageChange$$: Subscription;\n\n get storageService(): StorageService {\n return this.storageState.storageService;\n }\n\n get zoomAuto(): boolean {\n return this.storageService.get('zoomAuto') as boolean;\n }\n\n constructor() {\n this.maximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n }\n\n ngOnDestroy(): void {\n if (this.storageChange$$) {\n this.storageChange$$.unsubscribe();\n }\n }\n\n loadActions(\n workspace: WfsWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ) {\n const actions = this.buildActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$\n );\n workspace.actionStore.load(actions);\n }\n\n buildActions(\n workspace: WfsWorkspace,\n rowsInMapExtentCheckCondition$: BehaviorSubject<boolean>,\n selectOnlyCheckCondition$: BehaviorSubject<boolean>\n ): Action[] {\n this.zoomAuto$.next(this.zoomAuto);\n this.storageChange$$ = this.storageService.storageChange$\n .pipe(\n skipWhile(\n (storageChange: StorageServiceEvent) =>\n storageChange?.key !== 'zoomAuto' ||\n storageChange?.event === StorageServiceEventEnum.CLEARED\n )\n )\n .subscribe(() => {\n this.zoomAuto$.next(this.zoomAuto);\n handleZoomAuto(workspace, this.storageService);\n });\n return getWorkspaceActions(\n workspace,\n rowsInMapExtentCheckCondition$,\n selectOnlyCheckCondition$,\n this.ogcFilterWidget,\n this.zoomAuto$,\n this.maximize$,\n this.storageService,\n this.languageService,\n this.mediaService,\n this.toolState,\n this.interactiveSelectionFormWidget\n );\n }\n}\n","import { Injectable, OnDestroy, inject, signal } from '@angular/core';\n\nimport {\n EntityRecord,\n EntityState,\n EntityStoreFilterCustomFuncStrategy,\n EntityStoreFilterSelectionStrategy\n} from '@igo2/common/entity';\nimport { Widget } from '@igo2/common/widget';\nimport { Workspace, WorkspaceStore } from '@igo2/common/workspace';\nimport { StorageService } from '@igo2/core/storage';\nimport {\n EditionWorkspace,\n FeatureWorkspace,\n LayerId,\n WfsWorkspace\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Observable, Subscription, of } from 'rxjs';\n\nimport { EditionActionsService } from './shared/edition-actions.service';\nimport { FeatureActionsService } from './shared/feature-actions.service';\nimport { WfsActionsService } from './shared/wfs-actions.service';\n\n/**\n * Service that holds the state of the workspace module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class WorkspaceState implements OnDestroy {\n private featureActionsService = inject(FeatureActionsService);\n private wfsActionsService = inject(WfsActionsService);\n private editionActionsService = inject(EditionActionsService);\n private storageService = inject(StorageService);\n\n expanded = signal(false);\n\n readonly workspaceEnabled$: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(false);\n readonly rowsInMapExtentCheckCondition$: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(true);\n readonly selectOnlyCheckCondition$: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(false);\n\n readonly workspaceMaximize$: BehaviorSubject<boolean>;\n private actionMaximize$$: Subscription[] = [];\n\n private rowsInMapExtentCheckCondition$$: Subscription;\n private selectOnlyCheckCondition$$: Subscription;\n\n /** Subscription to the active workspace */\n private activeWorkspace$$: Subscription;\n\n /** Subscription to the active workspace widget */\n private activeWorkspaceWidget$$: Subscription;\n\n /** Active widget observable. Only one may be active for all available workspaces */\n readonly activeWorkspaceWidget$: BehaviorSubject<Widget> =\n new BehaviorSubject<Widget>(undefined);\n\n /**\n * Observable of the active workspace\n */\n public workspace$ = new BehaviorSubject<Workspace>(undefined);\n\n /**\n * Store that holds all the available workspaces\n */\n get store(): WorkspaceStore {\n return this._store;\n }\n private _store: WorkspaceStore;\n\n get workspaceSelection() {\n if (this.workspace$.value) {\n return this.workspace$.value?.entityStore.stateView.manyBy(\n (r) => r.state.selected === true\n );\n } else {\n return [];\n }\n }\n\n get workspaceSelection$(): Observable<EntityRecord<object, EntityState>[]> {\n if (this.workspace$.value) {\n return this.workspace$.value?.entityStore?.stateView.manyBy$(\n (r) => r.state.selected === true\n );\n } else {\n return of([]);\n }\n }\n\n constructor() {\n this.workspaceMaximize$ = new BehaviorSubject(\n this.storageService.get('workspaceMaximize') as boolean\n );\n this.initWorkspaces();\n }\n\n /**\n * Initialize the workspace store. Each time a workspace is activated,\n * subscribe to it's active widget. Tracking the active widget is useful\n * to make sure only one widget is active at a time.\n */\n private initWorkspaces() {\n this._store = new WorkspaceStore([]);\n this._store.stateView\n .firstBy$(\n (record: EntityRecord<Workspace>) => record.state.active === true\n )\n .subscribe((record: EntityRecord<Workspace>) => {\n const workspace = record ? record.entity : undefined;\n this.workspace$.next(workspace);\n });\n\n this._store.stateView\n .all$()\n .subscribe((workspaces: EntityRecord<Workspace>[]) => {\n workspaces.map((wks: EntityRecord<Workspace>) => {\n if (wks.entity.actionStore.empty) {\n if (wks.entity instanceof WfsWorkspace) {\n this.wfsActionsService.loadActions(\n wks.entity,\n this.rowsInMapExtentCheckCondition$,\n this.selectOnlyCheckCondition$\n );\n } else if (wks.entity instanceof FeatureWorkspace) {\n this.featureActionsService.loadActions(\n wks.entity,\n this.rowsInMapExtentCheckCondition$,\n this.selectOnlyCheckCondition$\n );\n } else if (wks.entity instanceof EditionWorkspace) {\n this.editionActionsService.loadActions(\n wks.entity,\n this.rowsInMapExtentCheckCondition$,\n this.selectOnlyCheckCondition$\n );\n }\n }\n });\n });\n\n this.actionMaximize$$.push(\n this.featureActionsService.maximize$.subscribe((maximized) => {\n this.setWorkspaceIsMaximized(maximized);\n })\n );\n\n this.actionMaximize$$.push(\n this.wfsActionsService.maximize$.subscribe((maximized) => {\n this.setWorkspaceIsMaximized(maximized);\n })\n );\n\n this.actionMaximize$$.push(\n this.editionActionsService.maximize$.subscribe((maximized) => {\n this.setWorkspaceIsMaximized(maximized);\n })\n );\n\n this.activeWorkspace$$ = this.workspace$.subscribe(\n (workspace: Workspace) => {\n if (this.activeWorkspaceWidget$$ !== undefined) {\n this.activeWorkspaceWidget$$.unsubscribe();\n this.activeWorkspaceWidget$$ = undefined;\n }\n\n if (workspace !== undefined) {\n this.activeWorkspaceWidget$$ = workspace.widget$.subscribe(\n (widget: Widget) => this.activeWorkspaceWidget$.next(widget)\n );\n }\n }\n );\n\n this.rowsInMapExtentCheckCondition$$ =\n this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\n if (!wks.entity.actionStore.empty) {\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n if (filterStrategy) {\n if (rowsInMapExtent) {\n filterStrategy.activate();\n } else {\n filterStrategy.deactivate();\n }\n }\n }\n });\n });\n\n this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe(\n (selectOnly) => {\n this._store.stateView.all().map((wks: EntityRecord<Workspace>) => {\n if (!wks.entity.actionStore.empty) {\n const filterStrategy = wks.entity.entityStore.getStrategyOfType(\n EntityStoreFilterSelectionStrategy\n );\n if (filterStrategy) {\n if (selectOnly) {\n filterStrategy.activate();\n } else {\n filterStrategy.deactivate();\n }\n }\n }\n });\n }\n );\n }\n\n private setWorkspaceIsMaximized(maximized: boolean) {\n this.storageService.set('workspaceMaximize', maximized);\n this.workspaceMaximize$.next(maximized);\n }\n\n public setActiveWorkspaceById(id: LayerId) {\n const wksFromId = this.store.all().find((workspace) => workspace.id === id);\n if (wksFromId) {\n this.store.activateWorkspace(wksFromId);\n }\n }\n\n public setActiveWorkspaceByTitle(title: string) {\n const wksFromTitle = this.store\n .all()\n .find((workspace) => workspace.title === title);\n if (wksFromTitle) {\n this.store.activateWorkspace(wksFromTitle);\n }\n }\n\n /**\n * Teardown all the workspaces\n * @internal\n */\n ngOnDestroy() {\n this.teardownWorkspaces();\n this.actionMaximize$$.map((a) => a.unsubscribe());\n if (this.rowsInMapExtentCheckCondition$$) {\n this.selectOnlyCheckCondition$$.unsubscribe();\n }\n if (this.selectOnlyCheckCondition$$) {\n this.selectOnlyCheckCondition$$.unsubscribe();\n }\n }\n\n /**\n * Teardown the workspace store and any subscribers\n */\n private teardownWorkspaces() {\n this.store.clear();\n if (this.activeWorkspaceWidget$$ !== undefined) {\n this.activeWorkspaceWidget$$.unsubscribe();\n }\n if (this.activeWorkspace$$ !== undefined) {\n this.activeWorkspace$$.unsubscribe();\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n model\n} from '@angular/core';\n\nimport { EntityStore } from '@igo2/common/entity';\nimport { SELECTION_MARKER_ICON } from '@igo2/common/icon';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport {\n AnyLayer,\n ExportOptions,\n Feature,\n FeatureDetailsComponent,\n FeatureMotion,\n IgoMap,\n LayerService,\n MeasureLengthUnit,\n QueryableDataSourceOptions,\n RADIUS_NAME,\n SpatialFilterItemComponent,\n SpatialFilterItemType,\n SpatialFilterQueryType,\n SpatialFilterService,\n SpatialFilterThematic,\n SpatialFilterType,\n SpatialFilterTypeComponent,\n VectorLayer,\n VectorLayerOptions,\n createOverlayMarkerStyle,\n featureToOl,\n isLayerItem,\n moveToOlFeatures\n} from '@igo2/geo';\n\nimport OlFeature from 'ol/Feature';\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\nimport OlPoint from 'ol/geom/Point';\nimport { transform } from 'ol/proj';\nimport olSourceCluster from 'ol/source/Cluster';\nimport olSourceVector from 'ol/source/Vector';\nimport * as olstyle from 'ol/style';\n\nimport { Subject } from 'rxjs';\nimport { BehaviorSubject } from 'rxjs';\nimport { take, takeUntil, tap } from 'rxjs/operators';\n\nimport { MapState } from '../../map/map.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { WorkspaceState } from '../../workspace/workspace.state';\nimport {\n ImportExportMode,\n ImportExportState\n} from './../../import-export/import-export.state';\n\n/**\n * Tool to apply spatial filter\n */\n@ToolComponent({\n name: 'spatialFilter',\n title: 'igo.integration.tools.spatialFilter',\n icon: SELECTION_MARKER_ICON\n})\n/**\n * Spatial Filter Type\n */\n@Component({\n selector: 'igo-spatial-filter-tool',\n templateUrl: './spatial-filter-tool.component.html',\n styleUrls: ['./spatial-filter-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n SpatialFilterTypeComponent,\n SpatialFilterItemComponent,\n FeatureDetailsComponent,\n AsyncPipe\n ]\n})\nexport class SpatialFilterToolComponent implements OnInit, OnDestroy {\n private spatialFilterService = inject(SpatialFilterService);\n private layerService = inject(LayerService);\n private mapState = inject(MapState);\n private messageService = inject(MessageService);\n private languageService = inject(LanguageService);\n private importExportState = inject(ImportExportState);\n private toolState = inject(ToolState);\n private workspaceState = inject(WorkspaceState);\n private cdRef = inject(ChangeDetectorRef);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n readonly type = model<SpatialFilterType>(undefined);\n readonly itemType = model<SpatialFilterItemType>(\n SpatialFilterItemType.Thematics\n );\n readonly freehandDrawIsActive = model<boolean>(undefined);\n\n public layers: AnyLayer[] = [];\n public activeLayers: AnyLayer[] = [];\n\n public queryType: SpatialFilterQueryType;\n public thematics: SpatialFilterThematic[];\n\n public buffer = 0;\n\n public iterator = 1;\n\n public selectedFeature$ = new BehaviorSubject<Feature>(undefined);\n\n public store: EntityStore<Feature> = new EntityStore<Feature>([]); // Store to print results at the end\n\n public spatialListStore: EntityStore<Feature> = new EntityStore<Feature>([]);\n\n public loading = false;\n\n public thematicLength = 0;\n\n public measureUnit: MeasureLengthUnit = MeasureLengthUnit.Meters;\n\n public defaultStyle: olstyle.Style | ((feature, resolution) => olstyle.Style);\n public zones: Feature[] = [];\n\n private unsubscribe$ = new Subject<void>();\n private activePredefinedLayerZones: VectorLayer;\n private activeDrawLayerZones: VectorLayer;\n\n ngOnInit() {\n for (const layer of this.map.layerController.all) {\n if (\n layer.title &&\n layer.title.includes(\n this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n )\n ) &&\n isLayerItem(layer)\n ) {\n this.layers.push(layer);\n }\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n getOutputType(event: SpatialFilterType) {\n this.type.set(event);\n this.queryType = undefined;\n }\n\n getOutputQueryType(event: SpatialFilterQueryType) {\n if (event !== this.queryType) {\n this.zones = [];\n this.activePredefinedLayerZones = undefined;\n }\n\n this.queryType = event;\n if (this.queryType) {\n this.loadFilterList();\n }\n }\n\n activateExportTool() {\n const ids = [];\n const re = new RegExp('^Zone \\\\d+');\n for (const layer of this.layers) {\n if (!layer.title.match(re)) {\n ids.push(layer.id);\n }\n }\n this.importExportState.setMode(ImportExportMode.export);\n this.importExportState.setsExportOptions({ layers: ids } as ExportOptions);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n activateWorkspace(record?) {\n let layerToOpenWks;\n this.workspaceState.store.entities$\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n if (\n !record &&\n this.activeLayers.length &&\n this.workspaceState.store.all().length > 1\n ) {\n if (\n this.itemType() === SpatialFilterItemType.Thematics &&\n this.thematics\n ) {\n for (const thematic of this.thematics) {\n if (!thematic.zeroResults) {\n layerToOpenWks = this.activeLayers.find((layer) =>\n layer.title.includes(\n thematic.name + ' ' + this.iterator.toString()\n )\n );\n break;\n }\n }\n } else {\n const title = 'Adresses ' + this.iterator.toString();\n this.activeLayers.forEach((layer) => {\n if (layer.title.includes(title)) {\n layerToOpenWks = layer;\n }\n });\n }\n\n if (layerToOpenWks) {\n this.workspaceState.expanded.set(true);\n this.workspaceState.setActiveWorkspaceById(layerToOpenWks.id);\n }\n } else if (\n record &&\n this.activeLayers.length &&\n this.workspaceState.store.all().length > 1\n ) {\n this.selectWorkspaceEntity(record);\n this.map.ol.on('moveend', () => {\n this.selectWorkspaceEntity(record);\n });\n }\n });\n }\n\n private selectWorkspaceEntity(record) {\n this.workspaceState.store.all().forEach((workspace) => {\n workspace.entityStore.state.updateAll({ selected: false });\n if (workspace.title.includes(record.added[0].meta.title)) {\n this.workspaceState.setActiveWorkspaceById(workspace.id);\n workspace.entityStore.state.updateMany(record.added, {\n selected: true\n });\n }\n });\n }\n\n private loadFilterList() {\n this.spatialFilterService\n .loadFilterList(this.queryType)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((features: Feature[]) => {\n features.sort((a, b) => {\n if (a.properties.nom < b.properties.nom) {\n return -1;\n }\n if (a.properties.nom > b.properties.nom) {\n return 1;\n }\n return 0;\n });\n this.spatialListStore.clear();\n this.spatialListStore.load(features);\n });\n }\n\n getOutputToggleSearch() {\n this.loadThematics();\n }\n\n getOutputClearSearch() {\n this.zones = [];\n this.queryType = undefined;\n }\n\n clearMap() {\n this.map.layerController.remove(...this.layers);\n this.layers = [];\n this.activeLayers = [];\n this.thematicLength = 0;\n this.iterator = 1;\n if (this.type() === SpatialFilterType.Predefined) {\n this.zones = [];\n this.queryType = undefined;\n }\n }\n\n private loadThematics() {\n this.loading = true;\n let zeroResults = true;\n let thematics!: SpatialFilterThematic[];\n const type = this.type();\n if (this.buffer === 0 || type === SpatialFilterType.Point) {\n this.addFeaturesToMap(this.zones);\n }\n if (this.itemType() !== SpatialFilterItemType.Thematics) {\n const theme: SpatialFilterThematic = {\n name: ''\n };\n thematics = [theme];\n } else {\n thematics = this.thematics;\n }\n if (\n this.measureUnit === MeasureLengthUnit.Kilometers &&\n type !== SpatialFilterType.Point\n ) {\n this.buffer = this.buffer * 1000;\n }\n if (type === SpatialFilterType.Polygon) {\n this.buffer = 0; // to avoid buffer enter a second time in terrAPI\n }\n\n this.spatialFilterService\n .loadFilterItems(this.zones, this.itemType(), {\n type: this.queryType,\n thematics,\n buffer: this.buffer\n })\n .pipe(\n tap((features: Feature[]) => {\n this.store.clear();\n this.workspaceState.store.clear();\n this.store.insertMany(features);\n const grouped = this.getFeatureByType(features);\n\n grouped.forEach(({ points, lines }) => {\n if (points.length > 0) {\n this.tryAddPointToMap(points, points[0].meta.id);\n }\n if (lines.length > 0) {\n this.tryAddLayerToMap(lines, lines[0].meta.id);\n }\n });\n\n thematics.forEach((thematic) => {\n const hasFeatures = features.some(\n (f) => f.properties.type === thematic.source\n );\n if (hasFeatures) {\n zeroResults = false;\n this.thematicLength += 1;\n thematic.zeroResults = zeroResults;\n } else {\n thematic.zeroResults = true;\n }\n });\n this.cdRef.detectChanges();\n\n if (features.length >= 10000) {\n this.messageService.alert(\n 'igo.geo.spatialFilter.maxSizeAlert',\n 'igo.geo.spatialFilter.warning',\n { timeOut: 10000 }\n );\n }\n })\n )\n .subscribe(() => {\n if (this.type() !== SpatialFilterType.Predefined) {\n this.zones = [];\n }\n this.loading = false;\n if (zeroResults) {\n this.messageService.alert(\n 'igo.geo.spatialFilter.zeroResults',\n 'igo.geo.spatialFilter.warning',\n { timeOut: 10000 }\n );\n }\n });\n }\n\n private getFeatureByType(features: Feature[]) {\n return features.reduce((grouped, feature) => {\n const typeKey = feature.properties.type;\n let group = grouped.get(typeKey);\n if (!group) {\n group = { points: [], lines: [] };\n grouped.set(typeKey, group);\n }\n\n if (feature.geometry.type === 'Point') {\n feature.properties.longitude = feature.geometry.coordinates[0];\n feature.properties.latitude = feature.geometry.coordinates[1];\n group.points.push(feature);\n } else {\n group.lines.push(feature);\n }\n return grouped;\n }, new Map<string, { points: Feature[]; lines: Feature[] }>());\n }\n\n /**\n * Try to add point features to the map\n * Necessary to create clusters\n */\n private tryAddPointToMap(features: Feature[], id) {\n // 🔑 Get active zone index from its title\n const activeZone =\n this.type() === SpatialFilterType.Predefined\n ? this.activePredefinedLayerZones\n : this.activeDrawLayerZones;\n let zoneIndex = 1;\n if (activeZone?.title) {\n const match = activeZone.title.match(/^Zone (\\d+) -/);\n if (match) {\n zoneIndex = parseInt(match[1], 10);\n }\n }\n const titleFeature = features[0].meta.title;\n\n // Count how many layers with the same meta.title already exist\n let i = 1;\n for (const layer of this.layers) {\n if (layer.title?.startsWith(titleFeature)) {\n i++;\n }\n }\n\n const style = createOverlayMarkerStyle();\n\n // 🔑 Use zoneIndex to sync layer naming\n const filterLabel = this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n );\n\n const options: VectorLayerOptions = {\n isIgoInternalLayer: true,\n title: `${titleFeature} ${zoneIndex} - ${filterLabel}`,\n visible: true,\n style,\n\n sourceOptions: {\n type: 'cluster',\n id,\n queryable: true,\n distance: 120,\n meta: {\n title: 'Cluster'\n }\n } as QueryableDataSourceOptions\n };\n\n this.layerService\n .createAsyncLayer(options)\n .pipe(take(1))\n .subscribe((layer: VectorLayer) => {\n const featuresOl = features.map((feature) => {\n return featureToOl(feature, this.map.projection);\n });\n const ol = layer.dataSource.ol as olSourceCluster;\n ol.getSource().addFeatures(featuresOl);\n const previousLayer = this.layers.find(\n (prevLayer) => prevLayer.id === layer.id\n );\n if (previousLayer) {\n this.map.layerController.remove(previousLayer);\n this.layers = this.layers.filter((l) => l.id !== layer.id);\n i = i - 1;\n layer.title = `${titleFeature} ${zoneIndex} - ${filterLabel}`;\n layer.options.title = layer.title;\n }\n this.iterator = i;\n this.map.layerController.add(layer);\n this.layers.push(layer);\n this.pushLayer(layer);\n });\n }\n\n /**\n * Try to add line or polygon features to the map\n */\n private tryAddLayerToMap(features: Feature[], id) {\n let i = 1;\n if (features.length) {\n if (this.map === undefined) {\n return;\n }\n for (const layer of this.layers) {\n if (layer.title?.startsWith(features[0].meta.title)) {\n i++;\n }\n }\n\n const options: VectorLayerOptions = {\n isIgoInternalLayer: true,\n title: (features[0].meta.title +\n ' ' +\n i +\n ' - ' +\n this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n )) as string,\n sourceOptions: {\n type: 'vector',\n id,\n queryable: true\n } as QueryableDataSourceOptions,\n visible: true\n };\n this.layerService\n .createAsyncLayer(options)\n .pipe(take(1))\n .subscribe((layer: VectorLayer) => {\n const featuresOl = features.map((feature) => {\n return featureToOl(feature, this.map.projection);\n });\n const ol = layer.dataSource.ol as olSourceVector;\n ol.addFeatures(featuresOl);\n const previousLayer = this.layers.find(\n (prevLayer) => prevLayer.id === layer.id\n );\n if (previousLayer) {\n this.map.layerController.remove(previousLayer);\n i = i - 1;\n layer.title = (features[0].meta.title +\n ' ' +\n i +\n ' - ' +\n this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n )) as string;\n layer.options.title = layer.title;\n }\n this.map.layerController.add(layer);\n this.layers.push(layer);\n this.pushLayer(layer);\n });\n }\n }\n\n private pushLayer(layer) {\n for (const lay of this.activeLayers) {\n if (lay.id === layer.id) {\n return;\n }\n }\n\n this.activeLayers.push(layer);\n }\n\n onAddZone(feature: Feature | undefined) {\n const featureList = feature ? [feature] : [];\n this.zones = [...this.zones, ...featureList];\n if (!this.zones.length) return;\n this.addFeaturesToMap(this.zones, false);\n }\n\n onAddZoneWithBuffer(features: Feature[] | Feature) {\n this.zones = Array.isArray(features) ? features : [features];\n this.addFeaturesToMap(this.zones, true);\n }\n\n onRemovedZone(feature: Feature) {\n const zoneLayer = this.activePredefinedLayerZones;\n if (!zoneLayer) return;\n const olSource = zoneLayer.dataSource.ol;\n\n // Convert to OL feature (same way as when adding)\n const featureOl = featureToOl(feature, this.map.projection);\n\n // Find matching OL feature(s) by id or geometry\n const toRemove = olSource.getFeatures().filter((f) => {\n return f.getId() === featureOl.getId();\n });\n\n if (toRemove.length) {\n toRemove.forEach((f) => olSource.removeFeature(f));\n this.zones = this.zones.filter((z) => z.meta.id !== feature.meta.id);\n }\n\n if (olSource.getFeatures().length === 0) {\n this.map.layerController.remove(zoneLayer);\n this.layers = this.layers.filter((l) => l !== zoneLayer);\n this.activeLayers = [];\n this.activePredefinedLayerZones = undefined;\n }\n this.zoomToOlFeatures(olSource.getFeatures());\n }\n\n private addFeaturesToMap(features: Feature[], buffer?: boolean) {\n const type = this.type();\n if (\n type === SpatialFilterType.Predefined &&\n this.zonesExistsInLayers() &&\n !buffer\n )\n return;\n\n const lastZoneIndex = this.findLastZoneIndex();\n const zoneLayer =\n type === SpatialFilterType.Predefined\n ? this.activePredefinedLayerZones\n : undefined;\n if (!zoneLayer) {\n this.defaultStyle = this.createZoneStyle(features[0]);\n this.createZoneLayer(lastZoneIndex + 1, features).subscribe(\n (layer: VectorLayer) => {\n this.setActiveZoneLayer(layer);\n this.addFeaturesToLayer(layer, features);\n this.cdRef.detectChanges();\n }\n );\n } else {\n this.addFeaturesToLayer(zoneLayer, features, buffer);\n }\n }\n\n private zonesExistsInLayers(): boolean {\n if (this.type() !== SpatialFilterType.Predefined) return false;\n return this.layers\n .filter((l) => l.title.includes('Zone'))\n .some((layer) => {\n const olSource = layer.dataSource.ol as olSourceVector;\n const layerFeatures = olSource.getFeatures();\n return this.zones.every((zone) =>\n layerFeatures.some((feature) => feature.getId() === zone.meta.id)\n );\n });\n }\n\n private findLastZoneIndex(): number {\n let max = 0;\n for (const layer of this.layers) {\n if (layer.title?.startsWith('Zone')) {\n const match = layer.title.match(/^Zone (\\d+) -/);\n if (match) {\n const index = parseInt(match[1], 10);\n if (index > max) max = index;\n }\n }\n }\n return max;\n }\n\n private createZoneStyle(feature: Feature): (f, r) => olstyle.Style {\n return (_feature, resolution) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const coordinates = (feature as any).coordinates;\n return new olstyle.Style({\n image: new olstyle.Circle({\n radius: coordinates\n ? this.buffer /\n Math.cos((Math.PI / 180) * coordinates[1]) /\n resolution\n : undefined,\n fill: new olstyle.Fill({ color: 'rgba(200, 200, 20, 0.2)' }),\n stroke: new olstyle.Stroke({ width: 1, color: 'orange' })\n }),\n stroke: new olstyle.Stroke({ width: 1, color: 'orange' }),\n fill: new olstyle.Fill({ color: 'rgba(200, 200, 20, 0.2)' })\n });\n };\n }\n\n private createZoneLayer(zoneIndex: number, features: Feature[]) {\n const filterLabel = this.languageService.translate.instant(\n 'igo.geo.spatialFilter.spatialFilter'\n );\n const options: VectorLayerOptions = {\n isIgoInternalLayer: true,\n title: `Zone ${zoneIndex} - ${filterLabel}`,\n workspace: { enabled: true },\n _internal: {\n code:\n this.type() === SpatialFilterType.Predefined\n ? features[0].properties.code\n : undefined\n },\n sourceOptions: {\n type: 'vector',\n queryable: true\n } as QueryableDataSourceOptions,\n visible: true\n };\n return this.layerService.createAsyncLayer(options).pipe(take(1));\n }\n\n private setActiveZoneLayer(layer: VectorLayer) {\n this.map.layerController.add(layer);\n this.layers.push(layer);\n if (this.type() === SpatialFilterType.Predefined) {\n this.activePredefinedLayerZones = layer;\n } else {\n this.activeDrawLayerZones = layer;\n }\n this.pushLayer(layer);\n }\n\n private addFeaturesToLayer(\n layer: VectorLayer,\n features: Feature[],\n buffer?: boolean\n ) {\n const olSource = layer.dataSource.ol;\n\n if (buffer) olSource.clear();\n\n const featuresOl = features.map((f) => featureToOl(f, this.map.projection));\n\n const type = this.type();\n if (type !== SpatialFilterType.Predefined) {\n const customType =\n type === SpatialFilterType.Point ? 'Cercle' : 'Polygone';\n for (const f of featuresOl) {\n f.set('nom', 'Zone', true);\n f.set('type', customType, true);\n if (type === SpatialFilterType.Point) {\n this.setPointProps(\n featuresOl[0] as OlFeature<OlPoint>,\n this.map.projectionCode,\n this.buffer\n );\n }\n }\n }\n\n olSource.addFeatures(featuresOl);\n layer.ol.setStyle(this.defaultStyle);\n if (type === SpatialFilterType.Predefined) {\n this.zoomToOlFeatures(olSource.getFeatures());\n }\n }\n\n private zoomToOlFeatures(featuresOl: OlFeature<OlGeometry>[]) {\n if (!featuresOl.length) return;\n moveToOlFeatures(this.map.viewController, featuresOl, FeatureMotion.Zoom);\n }\n\n private setPointProps(\n featureOl: OlFeature<OlPoint>,\n projectionCode: string,\n radius: number\n ): void {\n const olGeometry = featureOl.getGeometry();\n const [longitude, latitude] = transform(\n olGeometry.getFlatCoordinates(),\n projectionCode,\n 'EPSG:4326'\n );\n\n const props = {\n [RADIUS_NAME]: radius,\n _projection: projectionCode,\n latitude,\n longitude\n };\n Object.entries(props).forEach(([key, value]) =>\n featureOl.set(key, value, true)\n );\n }\n}\n","<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","import { Component } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n TimeFilterListBindingDirective,\n TimeFilterListComponent\n} from '@igo2/geo';\n\n@ToolComponent({\n name: 'timeFilter',\n title: 'igo.integration.tools.timeFilter',\n icon: 'history'\n})\n@Component({\n selector: 'igo-time-filter-tool',\n templateUrl: './time-filter-tool.component.html',\n imports: [TimeFilterListComponent, TimeFilterListBindingDirective]\n})\nexport class TimeFilterToolComponent {}\n","<igo-time-filter-list igoTimeFilterListBinding />\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool/active-ogc-filter-tool.component';\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool/active-time-filter-tool.component';\nimport { OgcFilterToolComponent } from './ogc-filter-tool/ogc-filter-tool.component';\nimport { SpatialFilterToolComponent } from './spatial-filter-tool/spatial-filter-tool.component';\nimport { TimeFilterToolComponent } from './time-filter-tool/time-filter-tool.component';\n\n/**\n * @deprecated import the components directly or INTEGRATION_FILTER_DIRECTIVES for the set\n */\n@NgModule({\n imports: [\n OgcFilterToolComponent,\n ActiveOgcFilterToolComponent,\n TimeFilterToolComponent,\n ActiveTimeFilterToolComponent,\n SpatialFilterToolComponent\n ],\n exports: [\n OgcFilterToolComponent,\n ActiveOgcFilterToolComponent,\n TimeFilterToolComponent,\n ActiveTimeFilterToolComponent,\n SpatialFilterToolComponent\n ]\n})\nexport class IgoAppFilterModule {\n static forRoot(): ModuleWithProviders<IgoAppFilterModule> {\n return {\n ngModule: IgoAppFilterModule,\n providers: []\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, OnDestroy, OnInit, inject, input } from '@angular/core';\nimport { Validators } from '@angular/forms';\n\nimport { Form, FormService } from '@igo2/common/form';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { IgoMap, isBaseLayer } from '@igo2/geo';\n\nimport * as olstyle from 'ol/style';\n\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport type { Subscription } from 'rxjs';\n\nimport { MapState } from '../../map/map.state';\n\ninterface DataIssueReporterData {\n geometry: object;\n layer: string;\n desc: string;\n email: string;\n}\n\n@ToolComponent({\n name: 'dataIssueReporter',\n title: 'igo.integration.tools.dataIssueReporter',\n icon: 'feedback'\n})\n@Component({\n selector: 'igo-issue-reporter-tool',\n templateUrl: './data-issue-reporter-tool.component.html',\n styleUrls: ['./data-issue-reporter-tool.component.scss'],\n // eslint-disable-next-line @angular-eslint/prefer-standalone\n standalone: false\n})\nexport class DataIssueReporterToolComponent implements OnInit, OnDestroy {\n private mapState = inject(MapState);\n private formService = inject(FormService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private httpClient = inject(HttpClient);\n\n /**\n * Url to report the data issue. Use the Post protocol to send the form.\n */\n readonly url = input<string>(undefined);\n\n /**\n * Map to link to the form\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n form$ = new BehaviorSubject<Form>(undefined);\n\n data$ = new BehaviorSubject<Record<string, any>>(undefined);\n\n submitDisabled = true;\n\n private valueChanges$$: Subscription;\n\n ngOnInit() {\n combineLatest([\n this.languageService.language$,\n this.map.layerController.all$\n ]).subscribe(([_language, layers]) => {\n const baseLayerOrShownInLayerList = layers\n .filter((l) => isBaseLayer(l) || l.showInLayerList)\n .map((l) => {\n return { value: `${l.title}-${l.id}`, title: l.title };\n });\n const fieldConfigs = [\n {\n name: 'geometry',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.geometry'\n ),\n type: 'geometry',\n inputs: {\n map: this.map,\n geometryTypeField: true,\n geometryType: 'Polygon',\n drawGuideField: false,\n drawGuide: 0,\n drawGuidePlaceholder: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.drawGuidePlaceholder'\n ),\n drawStyle: new olstyle.Style({\n stroke: new olstyle.Stroke({\n color: [255, 0, 0, 1],\n width: 2\n }),\n fill: new olstyle.Fill({\n color: [255, 0, 0, 0.2]\n }),\n image: new olstyle.Circle({\n radius: 8,\n stroke: new olstyle.Stroke({\n color: [255, 0, 0, 1]\n }),\n fill: new olstyle.Fill({\n color: [255, 0, 0, 0.2]\n })\n })\n }),\n overlayStyle: new olstyle.Style({\n stroke: new olstyle.Stroke({\n color: [0, 255, 0, 1],\n width: 2\n }),\n fill: new olstyle.Fill({\n color: [0, 255, 0, 0.2]\n }),\n image: new olstyle.Circle({\n radius: 8,\n stroke: new olstyle.Stroke({\n color: [0, 255, 0, 1]\n }),\n fill: new olstyle.Fill({\n color: [0, 255, 0, 0.2]\n })\n })\n })\n }\n },\n {\n name: 'layer',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.layer'\n ),\n type: 'select',\n options: {\n cols: 2\n },\n inputs: {\n choices: baseLayerOrShownInLayerList\n }\n },\n {\n name: 'desc',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.description'\n ),\n type: 'textarea',\n options: {\n validator: Validators.required\n }\n },\n {\n name: 'email',\n title: this.languageService.translate.instant(\n 'igo.integration.dataIssueReporterTool.email'\n ),\n options: {\n validator: Validators.email\n }\n }\n ];\n\n const fields = fieldConfigs.map((config) =>\n this.formService.field(config)\n );\n const form = this.formService.form(fields, []);\n\n this.valueChanges$$ = form.control.valueChanges.subscribe(() => {\n this.submitDisabled = !form.control.valid;\n });\n\n this.form$.next(form);\n });\n }\n\n ngOnDestroy() {\n this.valueChanges$$.unsubscribe();\n }\n\n clearForm() {\n this.form$.value.control.reset();\n }\n\n onSubmit(data: DataIssueReporterData) {\n const submitTitle = 'igo.integration.dataIssueReporterTool.submit.title';\n const url = this.url();\n if (!url) {\n this.messageService.alert(\n 'igo.integration.dataIssueReporterTool.submit.setupMessage',\n submitTitle\n );\n alert(JSON.stringify(data));\n } else {\n this.httpClient.post<DataIssueReporterData>(url, data).subscribe(() => {\n this.messageService.success(\n 'igo.integration.dataIssueReporterTool.submit.message',\n submitTitle\n );\n });\n this.clearForm();\n }\n }\n}\n","@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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { IgoFormModule } from '@igo2/common/form';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { IgoMessageModule } from '@igo2/core/message';\n\nimport { DataIssueReporterToolComponent } from './data-issue-reporter-tool/data-issue-reporter-tool.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n IgoLanguageModule,\n IgoFormModule,\n IgoMessageModule\n ],\n declarations: [DataIssueReporterToolComponent],\n exports: [DataIssueReporterToolComponent],\n schemas: []\n})\nexport class IgoAppGeometryFormModule {}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n inject,\n input,\n model\n} from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport type { WorkspaceStore } from '@igo2/common/workspace';\nimport { ContextImportExportComponent } from '@igo2/context';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport {\n ExportOptions,\n IgoMap,\n ImportExportComponent,\n ProjectionsLimitationsOptions\n} from '@igo2/geo';\n\nimport { ContextState } from '../../context/context.state';\nimport { MapState } from '../../map/map.state';\nimport { WorkspaceState } from '../../workspace/workspace.state';\nimport {\n ImportExportMode,\n ImportExportState,\n ImportExportType\n} from '../import-export.state';\n\n@ToolComponent({\n name: 'importExport',\n title: 'igo.integration.tools.importExport',\n icon: 'file_save'\n})\n@Component({\n selector: 'igo-import-export-tool',\n templateUrl: './import-export-tool.component.html',\n styleUrls: ['./import-export-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTabsModule,\n ImportExportComponent,\n ContextImportExportComponent,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class ImportExportToolComponent implements OnInit {\n private mapState = inject(MapState);\n importExportState = inject(ImportExportState);\n private workspaceState = inject(WorkspaceState);\n contextState = inject(ContextState);\n\n readonly projectionsLimitations =\n input<ProjectionsLimitationsOptions>(undefined);\n\n readonly selectFirstProj = input(false);\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get workspaceStore(): WorkspaceStore {\n return this.workspaceState.store;\n }\n\n readonly importExportType = model<ImportExportType>(ImportExportType.layer);\n readonly importExportShowBothType = input(true);\n\n ngOnInit(): void {\n this.selectType();\n this.selectMode();\n }\n\n private selectType() {\n const importExportType = this.importExportType();\n if (importExportType) {\n this.importExportState.importExportType$.next(importExportType);\n }\n const userSelectedType = this.importExportState.importExportType$.value;\n if (userSelectedType !== undefined) {\n this.importExportState.setImportExportType(userSelectedType);\n } else {\n this.importExportState.setImportExportType(ImportExportType.layer);\n }\n }\n\n private selectMode() {\n const userSelectedMode = this.importExportState.selectedMode$.value;\n if (userSelectedMode !== undefined) {\n this.importExportState.setMode(userSelectedMode);\n } else {\n this.importExportState.setMode(ImportExportMode.import);\n }\n }\n\n public modeChanged(mode: ImportExportMode) {\n this.importExportState.setMode(mode);\n }\n\n public exportOptionsChange(exportOptions: ExportOptions) {\n this.importExportState.setsExportOptions(exportOptions);\n }\n\n importExportTypeChange(event) {\n this.importExportType.set(event.value);\n }\n}\n","@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","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ImportExportToolComponent } from './import-export-tool/import-export-tool.component';\n\n/**\n * @deprecated import the ImportExportToolComponent directly\n */\n@NgModule({\n imports: [ImportExportToolComponent],\n exports: [ImportExportToolComponent]\n})\nexport class IgoAppImportExportModule {\n static forRoot(): ModuleWithProviders<IgoAppImportExportModule> {\n return {\n ngModule: IgoAppImportExportModule,\n providers: []\n };\n }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { AsyncPipe, DecimalPipe } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { StorageScope, StorageService } from '@igo2/core/storage';\nimport {\n IgoMap,\n InputProjections,\n ProjectionsLimitationsOptions,\n formatScale\n} from '@igo2/geo';\nimport { computeProjectionsConstraints, zoneMtm, zoneUtm } from '@igo2/geo';\n\nimport * as olproj from 'ol/proj';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { MapState } from '../../map.state';\n\n/**\n * Tool to display the coordinates and a cursor of the center of the map\n */\n@Component({\n selector: 'igo-advanced-coordinates',\n templateUrl: './advanced-coordinates.component.html',\n styleUrls: ['./advanced-coordinates.component.scss'],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n MatOptionModule,\n MatSlideToggleModule,\n AsyncPipe,\n DecimalPipe,\n IgoLanguageModule\n ]\n})\nexport class AdvancedCoordinatesComponent implements OnInit, OnDestroy {\n private clipboard = inject(Clipboard);\n mapState = inject(MapState);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private storageService = inject(StorageService);\n private config = inject(ConfigService);\n private formBuilder = inject(UntypedFormBuilder);\n\n public formattedScale$ = new BehaviorSubject<string>('');\n public projections$ = new BehaviorSubject<InputProjections[]>([]);\n public form: UntypedFormGroup;\n public coordinates: string[];\n private currentCenterDefaultProj: [number, number];\n public center: boolean;\n private inMtmZone = true;\n private inLambert2 = { 32198: true, 3798: true };\n private mapState$$: Subscription;\n private formStatus$$: Subscription;\n private _projectionsLimitations: ProjectionsLimitationsOptions = {};\n private projectionsConstraints: ProjectionsLimitationsOptions;\n private defaultProj: InputProjections;\n private currentZones = { utm: undefined, mtm: undefined };\n public units = true;\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get inputProj(): InputProjections {\n return this.form.get('inputProj').value;\n }\n set inputProj(value: InputProjections) {\n this.form.patchValue({ inputProj: value });\n }\n get projectionsLimitations(): ProjectionsLimitationsOptions {\n return this._projectionsLimitations || {};\n }\n\n @Input()\n set projectionsLimitations(value: ProjectionsLimitationsOptions) {\n this._projectionsLimitations = value;\n }\n\n constructor() {\n this.defaultProj = {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.wgs84',\n { code: 'EPSG:4326' }\n ),\n translateKey: 'wgs84',\n alias: 'WGS84',\n code: 'EPSG:4326',\n zone: '',\n def: undefined,\n extent: undefined\n };\n this.center = this.storageService.get('centerToggle') as boolean;\n this.computeProjections();\n this.buildForm();\n }\n\n /**\n * Listen a state of the map, a state of a form, update the coordinates\n */\n ngOnInit(): void {\n this.mapState$$ = this.map.viewController.state$\n .pipe(debounceTime(50))\n .subscribe(() => {\n this.setScaleValue(this.map);\n this.updateCoordinates();\n });\n\n this.formStatus$$ = this.form.valueChanges.subscribe(() => {\n this.updateCoordinates();\n });\n\n const tempInputProj = this.storageService.get(\n 'currentProjection'\n ) as InputProjections;\n\n this.inputProj =\n this.projections$.value.find(\n (val) => val.code === this.defaultProj.code\n ) ?? this.projections$.value[0];\n\n if (tempInputProj !== null) {\n const pos = this.positionInList(tempInputProj);\n this.inputProj = this.projections$.value[pos];\n this.updateZoneMtmUtm();\n }\n this.map.mapCenter$.next(this.center);\n this.coordinates = this.getCoordinates();\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\n this.defaultProj.code\n );\n }\n\n ngOnDestroy(): void {\n this.map.mapCenter$.next(false);\n this.mapState$$.unsubscribe();\n this.formStatus$$.unsubscribe();\n }\n\n setScaleValue(map: IgoMap) {\n this.formattedScale$.next(\n ': ~ 1 / ' + formatScale(map.viewController.getScale())\n );\n }\n /**\n * Coordinates of the center of the map on the appropriate systeme of coordinates\n * @returns Array of two numbers\n */\n getCoordinates(): string[] {\n this.currentZones.mtm = zoneMtm(this.currentCenterDefaultProj[0]);\n this.currentZones.utm = zoneUtm(this.currentCenterDefaultProj[0]);\n const code = this.inputProj.code;\n let decimal = 2;\n if (code.includes('EPSG:4326') || code.includes('EPSG:4269')) {\n decimal = 5;\n }\n this.units = code === 'EPSG:4326' || code === 'EPSG:4269';\n const coord = this.map.viewController\n .getCenter(code)\n .map((c) => c.toFixed(decimal));\n return coord;\n }\n\n updateCoordinates() {\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\n this.defaultProj.code\n );\n const currentMtmZone = zoneMtm(this.currentCenterDefaultProj[0]);\n const currentUtmZone = zoneUtm(this.currentCenterDefaultProj[0]);\n if (!this.inMtmZone && currentMtmZone !== this.currentZones.mtm) {\n this.back2quebec();\n }\n let zoneChange = false;\n if (currentMtmZone !== this.currentZones.mtm) {\n this.currentZones.mtm = currentMtmZone;\n zoneChange = true;\n }\n if (currentUtmZone !== this.currentZones.utm) {\n this.currentZones.utm = currentUtmZone;\n zoneChange = true;\n }\n if (zoneChange) {\n this.updateProjectionsZoneChange();\n }\n this.checkLambert(this.currentCenterDefaultProj);\n this.coordinates = this.getCoordinates();\n\n this.storageService.set(\n 'currentProjection',\n this.inputProj,\n StorageScope.SESSION\n );\n }\n\n /**\n * Copy the coordinates to a clipboard\n */\n copyTextToClipboard(): void {\n const successful = this.clipboard.copy(this.coordinates.toString());\n if (successful) {\n this.messageService.success(\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyMsg',\n 'igo.integration.advanced-map-tool.advanced-coordinates.copyTitle'\n );\n }\n }\n\n /**\n * Display a cursor on the center of the map\n */\n displayCenter(toggle: boolean): void {\n this.center = toggle;\n this.map.mapCenter$.next(toggle);\n this.storageService.set('centerToggle', toggle, StorageScope.SESSION);\n }\n\n /**\n * Builder of the form\n */\n private buildForm(): void {\n this.form = this.formBuilder.group({\n inputProj: ['', [Validators.required]]\n });\n }\n\n /**\n * Update list of projections after changing of the state of the map\n */\n private updateProjectionsZoneChange(): void {\n let modifiedProj = this.projections$.value;\n const translate = this.languageService.translate;\n modifiedProj.map((p) => {\n if (p.translateKey === 'mtm') {\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n if (zone) {\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n p.alias = `MTM ${zone}`;\n p.code = code;\n p.zone = `${zone}`;\n p.translatedValue = translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n p\n );\n } else {\n p.alias = '';\n this.inMtmZone = false;\n if (this.inputProj.translateKey === 'mtm') {\n this.inputProj = this.projections$.value[0];\n }\n }\n }\n if (p.translateKey === 'utm') {\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\n const code = `EPSG:326${zone}`;\n p.alias = `UTM ${zone}`;\n p.code = code;\n p.zone = `${zone}`;\n p.translatedValue = translate.instant(\n 'igo.geo.importExportForm.projections.utm',\n p\n );\n }\n });\n modifiedProj = modifiedProj.filter((p) => p.alias !== '');\n this.projections$.next(modifiedProj);\n }\n\n /**\n * Create a list of currents projections\n */\n private computeProjections(): void {\n this.projectionsConstraints = computeProjectionsConstraints(\n this.projectionsLimitations\n );\n const projections: InputProjections[] = [];\n\n if (!this.currentCenterDefaultProj) {\n this.currentCenterDefaultProj = this.map.viewController.getCenter(\n this.defaultProj.code\n );\n }\n\n const translate = this.languageService.translate;\n if (this.projectionsConstraints.wgs84) {\n projections.push({\n translatedValue: translate.instant(\n 'igo.geo.importExportForm.projections.wgs84',\n { code: 'EPSG:4326' }\n ),\n translateKey: 'wgs84',\n alias: 'WGS84',\n code: 'EPSG:4326',\n zone: '',\n def: undefined,\n extent: undefined\n });\n }\n\n if (this.projectionsConstraints.nad83) {\n projections.push({\n translatedValue: translate.instant(\n 'igo.geo.importExportForm.projections.nad83',\n { code: 'EPSG:4269' }\n ),\n translateKey: 'nad83',\n alias: 'NAD83',\n code: 'EPSG:4269',\n zone: '',\n def: undefined,\n extent: undefined\n });\n }\n\n if (this.projectionsConstraints.webMercator) {\n projections.push({\n translatedValue: translate.instant(\n 'igo.geo.importExportForm.projections.webMercator',\n { code: 'EPSG:3857' }\n ),\n translateKey: 'webMercator',\n alias: 'Web Mercator',\n code: 'EPSG:3857',\n zone: '',\n def: undefined,\n extent: undefined\n });\n }\n if (this.projectionsConstraints.mtm) {\n // Quebec\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n if (zone) {\n this.inMtmZone = true;\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n projections.splice(3, 0, {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n { code, zone }\n ),\n translateKey: 'mtm',\n alias: `MTM ${zone}`,\n code,\n zone: `${zone}`,\n def: undefined,\n extent: undefined\n });\n } else {\n this.inMtmZone = false;\n }\n }\n if (this.projectionsConstraints.utm) {\n const order = this.inMtmZone ? 4 : 3;\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\n projections.splice(order, 0, {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.utm',\n { code, zone }\n ),\n translateKey: 'utm',\n alias: `UTM ${zone}`,\n code,\n zone: `${zone}`,\n def: undefined,\n extent: undefined\n });\n }\n let configProjection: InputProjections[] = [];\n if (this.projectionsConstraints.projFromConfig) {\n configProjection = (this.config.getConfig('projections') ||\n []) as InputProjections[];\n }\n\n this.projections$.next(configProjection.concat(projections));\n }\n\n /**\n * Push the MTM in the array of systeme of coordinates\n * @param projections Array of the InputProjections\n */\n private pushMtm(projections: InputProjections[]): void {\n if (this.projectionsConstraints.mtm) {\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n projections.splice(3, 0, {\n translatedValue: this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n { code, zone }\n ),\n translateKey: 'mtm',\n alias: `MTM ${zone}`,\n code,\n zone: `${zone}`,\n def: undefined,\n extent: undefined\n });\n }\n }\n\n /**\n * Updates the list of systems of coordinates for territory of Quebec\n * push MTM and UTM in the Array\n */\n private back2quebec(): void {\n const projections = this.projections$.value;\n this.pushMtm(projections);\n this.inMtmZone = true;\n }\n\n /**\n * Update the numbers of the zones when application is restarted\n */\n private updateZoneMtmUtm() {\n if (this.inputProj.translateKey === 'mtm') {\n const zone = zoneMtm(this.currentCenterDefaultProj[0]);\n this.inputProj.alias = `MTM ${zone}`;\n const code = zone < 10 ? `EPSG:3218${zone}` : `EPSG:321${80 + zone}`;\n this.inputProj.code = code;\n this.inputProj.zone = `${zone}`;\n this.inputProj.translatedValue = this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.mtm',\n { code, zone }\n );\n }\n if (this.inputProj.translateKey === 'utm') {\n const zone = zoneUtm(this.currentCenterDefaultProj[0]);\n this.inputProj.alias = `UTM ${zone}`;\n const code = zone < 10 ? `EPSG:3260${zone}` : `EPSG:326${zone}`;\n this.inputProj.code = code;\n this.inputProj.zone = `${zone}`;\n this.inputProj.translatedValue = this.languageService.translate.instant(\n 'igo.geo.importExportForm.projections.utm',\n { code, zone }\n );\n }\n }\n\n /**\n * Compute the position of a current projection in a list. 0 if the projection is not in the list\n * @param translateKey string, translate key of a projection\n * @returns numeric, position of an element in the array\n */\n positionInList(tempInputProj: InputProjections): number {\n const tk = tempInputProj.translateKey;\n const alias = tempInputProj.alias;\n let position; // = undefined;\n let iter = 0;\n this.projections$.value.map((projection) => {\n if (tk) {\n if (tk === projection.translateKey) {\n position = iter;\n }\n } else if (alias === projection.alias) {\n position = iter;\n }\n iter++;\n });\n position = position ? position : 0;\n return position;\n }\n\n /**\n * Change the list of projections depending on the projections of Lambert\n * @param coordinates An array of numbers, longitude and latitude\n */\n checkLambert(coordinates: [number, number]) {\n const lambertProjections = this.config.getConfig('projections') || [];\n lambertProjections.forEach((projection) => {\n let modifiedProj = this.projections$.value;\n const extent = projection.extent;\n const code = projection.code.match(/\\d+/);\n const currentExtentWGS = olproj.transformExtent(\n extent,\n projection.code,\n this.defaultProj.code\n );\n if (\n coordinates[0] < currentExtentWGS[0] ||\n coordinates[0] > currentExtentWGS[2] ||\n coordinates[1] < currentExtentWGS[1] ||\n coordinates[1] > currentExtentWGS[3]\n ) {\n this.inLambert2[code] = false;\n if (this.inputProj.alias === projection.alias) {\n this.inputProj = this.projections$.value[0];\n }\n modifiedProj = modifiedProj.filter((p) => p.alias !== projection.alias);\n this.projections$.next(modifiedProj);\n } else {\n if (!this.inLambert2[code]) {\n this.projections$.next(modifiedProj.concat(projection));\n this.inLambert2[code] = true;\n }\n }\n });\n }\n}\n","<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","import { Component, OnDestroy, OnInit, inject } from '@angular/core';\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators\n} from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { DetailedContext } from '@igo2/context';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { AnyLayer, IgoMap, Layer, VectorLayer, isLayerItem } from '@igo2/geo';\n\nimport { ToolState } from '../../../tool/tool.state';\nimport { MapState } from '../../map.state';\n\n@Component({\n selector: 'igo-advanced-swipe',\n templateUrl: './advanced-swipe.component.html',\n styleUrls: ['./advanced-swipe.component.scss'],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatDividerModule,\n MatSlideToggleModule,\n MatListModule,\n MatIconModule,\n IgoLanguageModule\n ]\n})\nexport class AdvancedSwipeComponent implements OnInit, OnDestroy {\n mapState = inject(MapState);\n private formBuilder = inject(UntypedFormBuilder);\n private toolState = inject(ToolState);\n\n public swipe = false;\n public layerList: AnyLayer[];\n public userControlledLayerList: AnyLayer[];\n public form: UntypedFormGroup;\n public layers: VectorLayer[];\n public res: DetailedContext;\n public listForSwipe: Layer[];\n\n /**\n * Get an active map state\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n constructor() {\n this.buildForm();\n }\n\n /**\n * Get the list of layers for swipe\n * @internal\n */\n ngOnInit() {\n this.map.layerController.all$.subscribe(\n (layers) =>\n (this.userControlledLayerList = layers.filter(\n (layer) =>\n isLayerItem(layer) &&\n !layer.baseLayer &&\n layer.showInLayerList &&\n layer.displayed\n ))\n );\n }\n\n /**\n * Desactivate the swipe\n * @internal\n */\n ngOnDestroy() {\n this.swipe = false;\n this.map.swipeEnabled$.next(this.swipe);\n }\n\n /**\n * Build a form for choise of the layers\n */\n private buildForm() {\n this.form = this.formBuilder.group({\n layers: ['', [Validators.required]]\n });\n }\n\n /**\n * Activate the swipe, send a list of layers for a swipe-tool\n */\n startSwipe(toggle: boolean) {\n this.swipe = toggle;\n this.map.swipeEnabled$.next(toggle);\n this.listForSwipe = [];\n for (const layer of this.form.value.layers) {\n this.listForSwipe.push(layer);\n }\n this.map.selectedFeatures$.next(this.listForSwipe);\n }\n\n /**\n * Restart a swipe for a new layers-list\n */\n applyNewLayers(e) {\n this.startSwipe(false); // l'approche KISS\n this.startSwipe(true);\n if (e._selected) {\n e._selected = false;\n }\n const allLayers = this.userControlledLayerList?.length;\n const selectedLayers = this.form.controls.layers.value.length;\n if (selectedLayers === allLayers) {\n e._selected = true;\n }\n }\n\n /**\n * Select all list of layers and restart a tool\n */\n selectAll(e) {\n if (e._selected) {\n this.form.controls.layers.setValue(this.userControlledLayerList);\n e._selected = true;\n } else {\n this.form.controls.layers.setValue([]);\n }\n this.startSwipe(false);\n this.startSwipe(true);\n }\n\n /**\n * Open search tool\n */\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n /**\n * Open catalog\n */\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n /**\n * Open context manager\n */\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n}\n","@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","import { AsyncPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { MapState } from '../map.state';\nimport { AdvancedCoordinatesComponent } from './advanced-coordinates/advanced-coordinates.component';\nimport { AdvancedSwipeComponent } from './advanced-swipe/advanced-swipe.component';\n\n@ToolComponent({\n name: 'advancedMap',\n title: 'igo.integration.tools.advancedMap',\n icon: 'home_repair_service'\n})\n/**\n * Tool to handle the advanced map tools\n */\n@Component({\n selector: 'igo-advanced-map-tool',\n templateUrl: './advanced-map-tool.component.html',\n styleUrls: ['./advanced-map-tool.component.scss'],\n imports: [\n AdvancedSwipeComponent,\n MatDividerModule,\n AdvancedCoordinatesComponent,\n MatSlideToggleModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class AdvancedMapToolComponent {\n mapState = inject(MapState);\n\n get tracking$() {\n return this.mapState.map.geolocationController?.tracking$;\n }\n get followPosition$() {\n return this.mapState.map.geolocationController?.followPosition$;\n }\n\n toggleTracking(value) {\n if (!this.mapState.map.geolocationController) {\n return;\n }\n this.mapState.map.geolocationController.tracking = value;\n }\n\n toggleFollow(value) {\n if (!this.mapState.map.geolocationController) {\n return;\n }\n this.mapState.map.geolocationController.followPosition = value;\n }\n}\n","<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","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { type AnyLayer, isLayerItem } from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\n\nimport { WorkspaceState } from '../workspace.state';\n\n@Component({\n selector: 'igo-workspace-button',\n templateUrl: './workspace-button.component.html',\n styleUrls: ['./workspace-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class WorkspaceButtonComponent implements OnInit, OnDestroy {\n private workspaceState = inject(WorkspaceState);\n\n public hasWorkspace$ = new BehaviorSubject<boolean>(false);\n private hasWorkspace$$: Subscription;\n\n private layer$ = new BehaviorSubject<AnyLayer>(undefined);\n @Input()\n set layer(value: AnyLayer) {\n this._layer = value;\n this.layer$.next(this._layer);\n }\n get layer(): AnyLayer {\n return this._layer;\n }\n private _layer: AnyLayer;\n\n readonly color = input('primary');\n\n ngOnInit(): void {\n this.hasWorkspace$$ = combineLatest([\n this.workspaceState.workspaceEnabled$,\n this.layer$\n ]).subscribe(([enabled, layer]) =>\n this.hasWorkspace$.next(\n enabled && isLayerItem(layer) && layer.options.workspace?.enabled\n )\n );\n }\n\n ngOnDestroy(): void {\n this.hasWorkspace$$.unsubscribe();\n }\n\n activateWorkspace() {\n if (\n this.workspaceState.workspace$.value &&\n (this.workspaceState.workspace$.value as any).layer.id ===\n this.layer.id &&\n this.workspaceState.expanded()\n ) {\n this.workspaceState.expanded.set(false);\n } else {\n this.workspaceState.expanded.set(true);\n this.workspaceState.setActiveWorkspaceById(this.layer.id);\n }\n }\n}\n","@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","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { Media, MediaService } from '@igo2/core/media';\nimport {\n AnyLayer,\n ExportButtonComponent,\n ExportOptions,\n IgoMap,\n Layer,\n LayerListControlsEnum,\n LayerListControlsOptions,\n LayerViewerComponent,\n LayerViewerOptions,\n MetadataButtonComponent,\n OgcFilterButtonComponent,\n SearchSourceService,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n sourceCanSearch\n} from '@igo2/geo';\n\nimport { Observable } from 'rxjs';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../../import-export/import-export.state';\nimport { WorkspaceButtonComponent } from '../../workspace';\nimport { ToolState } from './../../tool/tool.state';\nimport { MapState } from './../map.state';\n\n@ToolComponent({\n name: 'mapDetails',\n title: 'igo.integration.tools.map',\n icon: 'map'\n})\n@Component({\n selector: 'igo-map-details-tool',\n templateUrl: './map-details-tool.component.html',\n styleUrls: ['./map-details-tool.component.scss'],\n imports: [\n LayerViewerComponent,\n WorkspaceButtonComponent,\n ExportButtonComponent,\n OgcFilterButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n MetadataButtonComponent,\n MatListModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapDetailsToolComponent implements OnInit {\n private mapState = inject(MapState);\n private toolState = inject(ToolState);\n private searchSourceService = inject(SearchSourceService);\n private importExportState = inject(ImportExportState);\n private configService = inject(ConfigService);\n mediaService = inject(MediaService);\n private cdr = inject(ChangeDetectorRef);\n\n isDesktop: boolean;\n public delayedShowEmptyMapContent = false;\n\n readonly toggleLegendOnVisibilityChange = input(false);\n\n readonly expandLegendOfVisibleLayers = input(false);\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly ogcButton = input(true);\n\n readonly timeButton = input(true);\n\n readonly layerListControls = input<LayerListControlsOptions>({});\n\n readonly queryBadge = input(false);\n\n readonly layerAdditionAllowed = input(true);\n\n private _layerViewerOptions: Partial<LayerViewerOptions>;\n get layerViewerOptions(): LayerViewerOptions {\n return {\n filterAndSortOptions: this.layerFilterAndSortOptions,\n legend: {\n showForVisibleLayers: this.expandLegendOfVisibleLayers(),\n showOnVisibilityChange: this.toggleLegendOnVisibilityChange(),\n updateOnResolutionChange: this.updateLegendOnResolutionChange()\n },\n queryBadge: this.queryBadge(),\n ...this._layerViewerOptions\n };\n }\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get layers$(): Observable<AnyLayer[]> {\n return this.map.layerController.all$;\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls().excludeBaseLayers || false;\n }\n\n get layerFilterAndSortOptions(): any {\n const filterSortOptions = Object.assign(\n {\n showToolbar: LayerListControlsEnum.default\n },\n this.layerListControls()\n );\n\n switch (this.layerListControls().showToolbar) {\n case LayerListControlsEnum.always:\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\n break;\n case LayerListControlsEnum.never:\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\n break;\n default:\n break;\n }\n return filterSortOptions;\n }\n\n get searchToolInToolbar(): boolean {\n return (\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\n this.searchSourceService\n .getSources()\n .filter(sourceCanSearch)\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\n );\n }\n\n get catalogToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\n }\n\n get contextToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\n }\n\n constructor() {\n this._layerViewerOptions = this.configService.getConfig('layer');\n }\n\n ngOnInit(): void {\n this.handleMedia();\n\n // prevent message to be shown too quickly. Waiting for layers\n setTimeout(() => {\n this.delayedShowEmptyMapContent = true;\n this.cdr.detectChanges();\n }, 250);\n }\n\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n\n activateExport(layer: Layer) {\n let id = layer.id;\n if (layer.options.workspace?.workspaceId) {\n id =\n layer.options.workspace.workspaceId !== layer.id\n ? layer.options.workspace.workspaceId\n : layer.id;\n }\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n private handleMedia(): void {\n this.mediaService.media$.subscribe((result) => {\n this.isDesktop = result === Media.Desktop;\n this.cdr.detectChanges();\n });\n }\n}\n","@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","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport {\n AnyLayer,\n IgoMap,\n LayerLegendListBindingDirective,\n LayerLegendListComponent,\n LayerListControlsOptions,\n SearchSourceService,\n isBaseLayer,\n sourceCanSearch\n} from '@igo2/geo';\n\nimport {\n BehaviorSubject,\n Observable,\n ReplaySubject,\n Subscription,\n combineLatest\n} from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport { ToolState } from './../../tool/tool.state';\nimport { MapState } from './../map.state';\n\n@ToolComponent({\n name: 'mapLegend',\n title: 'igo.integration.tools.legend',\n icon: 'format_list_bulleted'\n})\n@Component({\n selector: 'igo-map-legend-tool',\n templateUrl: './map-legend-tool.component.html',\n styleUrls: ['./map-legend-tool.component.scss'],\n imports: [\n LayerLegendListComponent,\n LayerLegendListBindingDirective,\n MatListModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapLegendToolComponent implements OnInit, OnDestroy {\n private mapState = inject(MapState);\n private toolState = inject(ToolState);\n private searchSourceService = inject(SearchSourceService);\n private cdRef = inject(ChangeDetectorRef);\n\n public delayedShowEmptyMapContent = false;\n\n layers$ = new BehaviorSubject<AnyLayer[]>([]);\n showAllLegendsValue$ = new BehaviorSubject(false);\n change$ = new ReplaySubject<void>(1);\n\n private resolution$$: Subscription;\n private visibleOrInRangeLayers$$: Subscription;\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly layerAdditionAllowed = input(true);\n\n readonly allowShowAllLegends = input(false);\n\n readonly showAllLegendsValue = input(false);\n\n readonly layerListControls = input<LayerListControlsOptions>({});\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get visibleOrInRangeLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.displayed))\n );\n }\n\n get visibleLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.visible))\n );\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls().excludeBaseLayers || false;\n }\n\n get searchToolInToolbar(): boolean {\n return (\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\n this.searchSourceService\n .getSources()\n .filter(sourceCanSearch)\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\n );\n }\n\n get catalogToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\n }\n\n get contextToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\n }\n\n ngOnInit(): void {\n this.resolution$$ = combineLatest([\n this.map.layerController.all$,\n this.map.viewController.resolution$\n ])\n .pipe(debounceTime(10))\n .subscribe((bunch) => {\n this.layers$.next(\n bunch[0].filter(\n (layer) =>\n layer.showInLayerList !== false &&\n (!this.excludeBaseLayers || !isBaseLayer(layer))\n )\n );\n });\n\n if (this.allowShowAllLegends()) {\n this.mapState.showAllLegendsValue =\n this.mapState.showAllLegendsValue !== undefined\n ? this.mapState.showAllLegendsValue\n : this.showAllLegendsValue() || false;\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\n } else {\n this.showAllLegendsValue$.next(false);\n }\n\n // prevent message to be shown too quickly. Waiting for layers\n setTimeout(() => {\n this.delayedShowEmptyMapContent = true;\n this.cdRef.detectChanges();\n }, 250);\n }\n\n onShowAllLegends(event) {\n this.mapState.showAllLegendsValue = event;\n this.showAllLegendsValue$.next(event);\n }\n\n showAllLegend() {\n if (this.layers$.getValue().length === 0) {\n return false;\n } else if (\n this.layers$.getValue().length !== 0 &&\n this.allowShowAllLegends() === false\n ) {\n let visibleOrInRangeLayers;\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\n (value) => {\n visibleOrInRangeLayers = value.length === 0 ? false : true;\n }\n );\n\n if (visibleOrInRangeLayers === false) {\n return false;\n }\n }\n return true;\n }\n\n ngOnDestroy(): void {\n this.resolution$$.unsubscribe();\n if (this.visibleOrInRangeLayers$$) {\n this.visibleOrInRangeLayers$$.unsubscribe();\n }\n }\n\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n}\n","@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","import { Injectable, inject } from '@angular/core';\n\nimport { StorageService } from '@igo2/core/storage';\nimport {\n AnyLayer,\n FEATURE,\n Feature,\n FeatureStore,\n IgoMap,\n Layer,\n MapGeolocationState,\n QueryableDataSource,\n QueryableDataSourceOptions,\n featureFromOl,\n isLayerItem,\n measureOlGeometryLength,\n roundCoordTo\n} from '@igo2/geo';\nimport { uuid } from '@igo2/utils';\n\nimport { Coordinate } from 'ol/coordinate';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport Geometry from 'ol/geom/Geometry';\nimport olLineString from 'ol/geom/LineString';\nimport olLayerVector from 'ol/layer/Vector';\nimport * as olProj from 'ol/proj';\nimport olVectorSource from 'ol/source/Vector';\n\nimport { BehaviorSubject, Subscription, combineLatest, interval } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the direction module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MapProximityState {\n private mapState = inject(MapState);\n private storageService = inject(StorageService);\n\n private defaultProximityRadiusValue = 30;\n\n public enabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n false\n );\n public proximityRadiusValue$: BehaviorSubject<number>;\n public proximitylocationType$: BehaviorSubject<string> =\n new BehaviorSubject<string>('geolocation');\n public proximityFeatureStore: FeatureStore<Feature>;\n private subs$$: Subscription[] = [];\n public currentPositionCoordinate$ = new BehaviorSubject<Coordinate>(\n undefined\n );\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n constructor() {\n this.proximityFeatureStore = new FeatureStore<Feature>([], {\n map: this.mapState.map\n });\n\n this.proximityRadiusValue$ = new BehaviorSubject<number>(\n (this.storageService.get('mapProximityRadius') as number) ||\n this.defaultProximityRadiusValue\n );\n\n this.mapState.map.ol.once('rendercomplete', () => {\n this.subscribeProximityMonitor();\n });\n }\n\n subscribeProximityMonitor() {\n this.subs$$.push(\n combineLatest([\n this.enabled$,\n this.proximitylocationType$,\n this.proximityRadiusValue$,\n interval(5000),\n this.map.geolocationController.position$\n ])\n .pipe(debounceTime(750))\n .subscribe(\n (bunch: [boolean, string, number, number, MapGeolocationState]) => {\n this.proximityFeatureStore.clear();\n const enabled = bunch[0];\n const layers = this.map.layerController.all;\n const currentPos = this.map.geolocationController.position$.value;\n const locationType = bunch[1];\n const proximityRadiusValue = bunch[2];\n this.storageService.set(\n 'mapProximityRadius',\n proximityRadiusValue || this.defaultProximityRadiusValue\n );\n\n if (!enabled) {\n return;\n }\n\n let coord: number[];\n if (locationType === 'geolocation') {\n if (!currentPos || !currentPos.position) {\n return;\n }\n\n coord = olProj.transform(\n currentPos.position,\n currentPos.projection,\n this.map.projection\n );\n this.map.mapCenter$.next(false);\n } else {\n coord = this.map.viewController.getCenter();\n this.map.mapCenter$.next(true);\n }\n\n const coordLonLat = olProj.transform(\n coord,\n this.map.projection,\n 'EPSG:4269'\n );\n const roundedCoordLonLat = roundCoordTo(\n coordLonLat as [number, number],\n 6\n );\n this.currentPositionCoordinate$.next(roundedCoordLonLat);\n\n const layersToMonitor = layers.filter(\n (layer) =>\n isLayerItem(layer) &&\n layer.ol instanceof olLayerVector &&\n (layer.dataSource as QueryableDataSource).options.queryable &&\n layer.visible &&\n layer.isInResolutionsRange\n ) as Layer[];\n\n layersToMonitor.map((layerToMonitor) => {\n const layerSource =\n layerToMonitor.ol.getSource() as olVectorSource;\n\n // Mostly for polygon features.\n const olFeaturesAtCoordinate =\n layerSource.getFeaturesAtCoordinate(coord);\n if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {\n olFeaturesAtCoordinate.map((olFeatureAtCoordinate) => {\n const featureAtThisPosition = featureFromOl(\n olFeatureAtCoordinate,\n this.map.projection\n );\n const title = this.getQueryTitle(\n featureAtThisPosition,\n layerToMonitor\n );\n // todo handle imported layers without querytitle? prompt title or detect first column?\n this.addFeatureToStore(\n layerToMonitor,\n coord,\n featureAtThisPosition,\n title,\n 0\n );\n });\n } else {\n // compute proximity for remaining sources\n const closestOlFeature =\n layerSource.getClosestFeatureToCoordinate(coord);\n if (closestOlFeature) {\n const closestOlGeom = closestOlFeature.getGeometry();\n const closestFeature = featureFromOl(\n closestOlFeature,\n this.map.projection\n );\n const geometryClosestPoint =\n closestOlGeom.getClosestPoint(coord);\n const linebetween = new olLineString([\n coord,\n geometryClosestPoint\n ]);\n const lineLength = measureOlGeometryLength(\n linebetween,\n 'EPSG:3857'\n );\n if (lineLength <= proximityRadiusValue) {\n const title = this.getQueryTitle(\n closestFeature,\n layerToMonitor\n );\n // todo handle imported layers without querytitle? prompt title or detect first column?\n this.addFeatureToStore(\n layerToMonitor,\n coord,\n closestFeature,\n title,\n lineLength\n );\n }\n }\n }\n });\n }\n )\n );\n }\n\n /**\n * Add a feature with proximity properties to the store\n * @internal\n */\n private addFeatureToStore(\n layer: Layer,\n coordFromCalculatedDistance,\n feature: Feature,\n title,\n distance\n ) {\n const featureId = uuid();\n const projection = this.map.ol.getView().getProjection();\n const olGeometry = feature.ol.getGeometry() as Geometry;\n const geometry = new GeoJSON().writeGeometryObject(olGeometry, {\n featureProjection: projection,\n dataProjection: projection\n }) as any;\n this.proximityFeatureStore.update({\n type: FEATURE,\n geometry,\n projection: projection.getCode(),\n properties: {\n ...feature.properties,\n ...{\n id: featureId,\n element: title,\n distance,\n coordFromCalculatedDistance,\n layerSrcId: layer.id,\n layerSrcTitle: layer.title\n }\n },\n meta: {\n id: featureId\n }\n });\n }\n\n getQueryTitle(feature: Feature, layer: AnyLayer): string | undefined {\n if (isLayerItem(layer) && layer.options?.source?.options) {\n const dataSourceOptions = layer.options.source\n .options as QueryableDataSourceOptions;\n if (dataSourceOptions.queryTitle) {\n return this.getLabelMatch(feature, dataSourceOptions.queryTitle);\n }\n }\n }\n\n getLabelMatch(feature: Feature, labelMatch): string {\n let label = labelMatch;\n const labelToGet = Array.from(labelMatch.matchAll(/\\$\\{([^\\{\\}]+)\\}/g));\n\n labelToGet.forEach((v) => {\n label = label.replace(v[0], feature.properties[v[1]]);\n });\n\n // Nothing done? check feature's attribute\n if (labelToGet.length === 0 && label === labelMatch) {\n label = feature.properties[labelMatch] || labelMatch;\n }\n return label;\n }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, OnDestroy, OnInit, inject, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioChange, MatRadioModule } from '@angular/material/radio';\n\nimport { EntityTableComponent, EntityTableTemplate } from '@igo2/common/entity';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { Feature, IgoMap } from '@igo2/geo';\nimport { NumberUtils } from '@igo2/utils';\n\nimport { Subscription } from 'rxjs';\n\nimport { MapProximityState } from '../map-proximity.state';\nimport { MapState } from '../map.state';\n\n@ToolComponent({\n name: 'map-proximity',\n title: 'igo.integration.tools.closestFeature',\n icon: 'radar'\n})\n/**\n * Tool to handle the advanced map tools\n */\n@Component({\n selector: 'igo-map-proximity-tool',\n templateUrl: './map-proximity-tool.component.html',\n styleUrls: ['./map-proximity-tool.component.scss'],\n imports: [\n EntityTableComponent,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatRadioModule,\n FormsModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapProximityToolComponent implements OnInit, OnDestroy {\n private clipboard = inject(Clipboard);\n mapState = inject(MapState);\n mapProximityState = inject(MapProximityState);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n\n private subs$$: Subscription[] = [];\n readonly table = viewChild<EntityTableComponent>('table');\n\n get maxDistance() {\n return this.mapProximityState.proximityRadiusValue$.value;\n }\n set maxDistance(value: number) {\n this.mapProximityState.proximityRadiusValue$.next(value);\n }\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n public userDefinedMapCenter: boolean;\n public userDefinedFollowPosition: boolean;\n /**\n * Table template\n * @internal\n */\n public tableTemplate: EntityTableTemplate;\n\n constructor() {\n this.tableTemplate = {\n selection: true,\n selectMany: false,\n selectionCheckbox: false,\n sort: true,\n columns: [\n {\n name: 'element',\n title: this.languageService.translate.instant(\n 'igo.integration.map-proximity-tool.feature'\n ),\n valueAccessor: (localFeature: Feature) => {\n return localFeature.properties.element;\n }\n },\n {\n name: 'distance',\n title: this.languageService.translate.instant(\n 'igo.integration.map-proximity-tool.distance'\n ),\n valueAccessor: (localFeature: Feature) => {\n return `${NumberUtils.roundToNDecimal(\n localFeature.properties.distance,\n 1\n )}m`;\n }\n }\n ]\n };\n }\n\n ngOnInit(): void {\n this.mapProximityState.enabled$.next(true);\n this.userDefinedFollowPosition =\n this.map.geolocationController.followPosition === true;\n this.userDefinedMapCenter = this.map.mapCenter$.value === true;\n\n this.subs$$.push(\n this.mapProximityState.proximitylocationType$.subscribe((v) => {\n this.map.mapCenter$.next(v !== 'geolocation');\n if (v === 'geolocation') {\n this.map.geolocationController.followPosition = true;\n } else {\n this.map.geolocationController.followPosition = false;\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.mapProximityState.enabled$.next(false);\n this.map.mapCenter$.next(this.userDefinedMapCenter);\n this.subs$$.map((s) => s.unsubscribe());\n this.map.geolocationController.followPosition =\n this.userDefinedFollowPosition;\n }\n\n onLocationTypeChange(e: MatRadioChange) {\n this.mapProximityState.proximitylocationType$.next(e.value);\n }\n\n /**\n * Copy the coordinates to a clipboard\n */\n copyTextToClipboard(): void {\n const successful = this.clipboard.copy(\n this.mapProximityState.currentPositionCoordinate$?.value.toString()\n );\n if (successful) {\n this.messageService.success(\n 'igo.integration.map-proximity-tool.copyMsg',\n 'igo.integration.map-proximity-tool.copyTitle'\n );\n }\n }\n}\n","<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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ContextListComponent } from '@igo2/context';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { Media, MediaService } from '@igo2/core/media';\nimport {\n ExportButtonComponent,\n ExportOptions,\n IgoMap,\n Layer,\n LayerListControlsEnum,\n LayerListControlsOptions,\n LayerViewerComponent,\n LayerViewerOptions,\n MetadataButtonComponent,\n OgcFilterButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent\n} from '@igo2/geo';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../../import-export/import-export.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\nimport { MapState } from './../map.state';\n\n/**\n * Tool to browse a map's layers or to choose a different map\n */\n@ToolComponent({\n name: 'map',\n title: 'igo.integration.tools.map',\n icon: 'map'\n})\n@Component({\n selector: 'igo-map-tool',\n templateUrl: './map-tool.component.html',\n styleUrls: ['./map-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTabsModule,\n WorkspaceButtonComponent,\n ExportButtonComponent,\n OgcFilterButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n MetadataButtonComponent,\n LayerViewerComponent,\n ContextListComponent,\n IgoLanguageModule\n ]\n})\nexport class MapToolComponent implements OnInit {\n private mapState = inject(MapState);\n private toolState = inject(ToolState);\n private importExportState = inject(ImportExportState);\n private configService = inject(ConfigService);\n mediaService = inject(MediaService);\n private cdr = inject(ChangeDetectorRef);\n\n isDesktop: boolean;\n\n readonly toggleLegendOnVisibilityChange = input(false);\n\n readonly expandLegendOfVisibleLayers = input(false);\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly ogcButton = input(true);\n\n readonly timeButton = input(true);\n\n readonly layerListControls = input<LayerListControlsOptions>({});\n\n readonly queryBadge = input(false);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls().excludeBaseLayers || false;\n }\n\n get layerFilterAndSortOptions(): any {\n const filterSortOptions = Object.assign(\n {\n showToolbar: LayerListControlsEnum.default\n },\n this.layerListControls()\n );\n\n switch (this.layerListControls().showToolbar) {\n case LayerListControlsEnum.always:\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\n break;\n case LayerListControlsEnum.never:\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\n break;\n default:\n break;\n }\n return filterSortOptions;\n }\n\n private _layerViewerOptions: Partial<LayerViewerOptions>;\n get layerViewerOptions(): LayerViewerOptions {\n return {\n filterAndSortOptions: this.layerFilterAndSortOptions,\n legend: {\n showForVisibleLayers: this.expandLegendOfVisibleLayers(),\n showOnVisibilityChange: this.toggleLegendOnVisibilityChange(),\n updateOnResolutionChange: this.updateLegendOnResolutionChange()\n },\n queryBadge: this.queryBadge(),\n ...this._layerViewerOptions\n };\n }\n\n constructor() {\n this._layerViewerOptions = this.configService.getConfig('layer');\n }\n\n ngOnInit(): void {\n this.handleMedia();\n }\n\n activateExport(layer: Layer) {\n let id = layer.id;\n if (layer.options.workspace?.workspaceId) {\n id =\n layer.options.workspace.workspaceId !== layer.id\n ? layer.options.workspace.workspaceId\n : layer.id;\n }\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n private handleMedia(): void {\n this.mediaService.media$.subscribe((result) => {\n this.isDesktop = result === Media.Desktop;\n this.cdr.detectChanges();\n });\n }\n}\n","<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","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input,\n viewChild\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { Media, MediaService } from '@igo2/core/media';\nimport {\n AnyLayer,\n ExportButtonComponent,\n ExportOptions,\n IgoMap,\n Layer,\n LayerLegendListBindingDirective,\n LayerLegendListComponent,\n LayerListControlsEnum,\n LayerListControlsOptions,\n LayerViewerComponent,\n LayerViewerOptions,\n MetadataButtonComponent,\n OgcFilterButtonComponent,\n SearchSourceService,\n StyleModalLayerButtonComponent,\n TimeFilterButtonComponent,\n TrackFeatureButtonComponent,\n VectorLayer,\n sourceCanSearch\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport {\n ImportExportMode,\n ImportExportState\n} from '../../import-export/import-export.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';\nimport { LayerListToolState } from '../layer-list-tool.state';\nimport { MapState } from '../map.state';\n\n/**\n * Tool to browse a map's layers or to choose a different map\n */\n@ToolComponent({\n name: 'mapTools',\n title: 'igo.integration.tools.map',\n icon: 'map'\n})\n@Component({\n selector: 'igo-map-tools',\n templateUrl: './map-tools.component.html',\n styleUrls: ['./map-tools.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTabsModule,\n NgTemplateOutlet,\n LayerViewerComponent,\n StyleModalLayerButtonComponent,\n MetadataButtonComponent,\n TrackFeatureButtonComponent,\n TimeFilterButtonComponent,\n OgcFilterButtonComponent,\n ExportButtonComponent,\n WorkspaceButtonComponent,\n LayerLegendListComponent,\n LayerLegendListBindingDirective,\n MatListModule,\n MatIconModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class MapToolsComponent implements OnInit, OnDestroy {\n layerListToolState = inject(LayerListToolState);\n private toolState = inject(ToolState);\n mapState = inject(MapState);\n private searchSourceService = inject(SearchSourceService);\n private importExportState = inject(ImportExportState);\n private configService = inject(ConfigService);\n mediaService = inject(MediaService);\n private cdr = inject(ChangeDetectorRef);\n\n isDesktop: boolean;\n layers$ = new BehaviorSubject<AnyLayer[]>([]);\n showAllLegendsValue$ = new BehaviorSubject<boolean>(false);\n\n private resolution$$: Subscription;\n private visibleOrInRangeLayers$$: Subscription;\n public delayedShowEmptyMapContent = false;\n\n readonly allowShowAllLegends = input(false);\n\n readonly showAllLegendsValue = input(false);\n\n readonly toggleLegendOnVisibilityChange = input(false);\n\n readonly expandLegendOfVisibleLayers = input(false);\n\n readonly updateLegendOnResolutionChange = input(false);\n\n readonly selectedTabAtOpening = input<string>(undefined);\n\n readonly ogcButton = input(true);\n\n readonly timeButton = input(true);\n\n readonly layerAdditionAllowed = input(true);\n\n @Input()\n get layerListControls(): LayerListControlsOptions {\n return this._layerListControls;\n }\n set layerListControls(value: LayerListControlsOptions) {\n const stateOptions = this.layerListToolState.getLayerListControls();\n const stateKeyword = stateOptions.keyword;\n const stateOnlyVisible = stateOptions.onlyVisible;\n const stateSortAlpha = stateOptions.sortAlpha;\n\n value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;\n value.onlyVisible =\n stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;\n value.sortAlpha =\n stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;\n\n value.onlyVisible =\n value.onlyVisible === undefined ? false : value.onlyVisible;\n value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;\n\n this._layerListControls = value;\n }\n private _layerListControls = {};\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n readonly queryBadge = input(false);\n\n get visibleOrInRangeLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.displayed))\n );\n }\n\n get visibleLayers$(): Observable<AnyLayer[]> {\n return this.layers$.pipe(\n map((layers) => layers.filter((layer) => layer.visible))\n );\n }\n\n get excludeBaseLayers(): boolean {\n return this.layerListControls.excludeBaseLayers || false;\n }\n\n get layerFilterAndSortOptions(): LayerListControlsOptions {\n const filterSortOptions = Object.assign(\n {\n showToolbar: LayerListControlsEnum.default\n },\n this.layerListControls\n );\n\n switch (this.layerListControls.showToolbar) {\n case LayerListControlsEnum.always:\n filterSortOptions.showToolbar = LayerListControlsEnum.always;\n break;\n case LayerListControlsEnum.never:\n filterSortOptions.showToolbar = LayerListControlsEnum.never;\n break;\n default:\n break;\n }\n return filterSortOptions;\n }\n\n private _layerViewerOptions: Partial<LayerViewerOptions>;\n get layerViewerOptions(): LayerViewerOptions {\n return {\n filterAndSortOptions: this.layerFilterAndSortOptions,\n legend: {\n showForVisibleLayers: this.expandLegendOfVisibleLayers(),\n showOnVisibilityChange: this.toggleLegendOnVisibilityChange(),\n updateOnResolutionChange: this.updateLegendOnResolutionChange()\n },\n queryBadge: this.queryBadge(),\n ...this._layerViewerOptions\n };\n }\n\n readonly tabGroup = viewChild('tabGroup');\n\n get searchToolInToolbar(): boolean {\n return (\n this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&\n this.searchSourceService\n .getSources()\n .filter(sourceCanSearch)\n .filter((s) => s.available && s.getType() === 'Layer').length > 0\n );\n }\n\n get catalogToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;\n }\n\n get contextToolInToolbar(): boolean {\n return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;\n }\n\n constructor() {\n this._layerViewerOptions = this.configService.getConfig('layer');\n }\n\n ngOnInit(): void {\n this.handleMedia();\n this.selectedTab();\n this.resolution$$ = combineLatest([\n this.map.layerController.all$,\n this.map.viewController.resolution$\n ])\n .pipe(debounceTime(10))\n .subscribe(([layers]) => {\n this.layers$.next(layers);\n });\n\n if (this.allowShowAllLegends()) {\n this.mapState.showAllLegendsValue =\n this.mapState.showAllLegendsValue !== undefined\n ? this.mapState.showAllLegendsValue\n : this.showAllLegendsValue() || false;\n this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);\n } else {\n this.showAllLegendsValue$.next(false);\n }\n\n // prevent message to be shown too quickly. Waiting for layers\n setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);\n }\n\n ngOnDestroy(): void {\n this.resolution$$.unsubscribe();\n if (this.visibleOrInRangeLayers$$) {\n this.visibleOrInRangeLayers$$.unsubscribe();\n }\n }\n\n onShowAllLegends(event) {\n this.mapState.showAllLegendsValue = event;\n this.showAllLegendsValue$.next(event);\n }\n\n private selectedTab() {\n const userSelectedTab = this.layerListToolState.selectedTab$.value;\n if (userSelectedTab !== undefined) {\n this.layerListToolState.setSelectedTab(userSelectedTab);\n } else {\n if (this.selectedTabAtOpening() === 'legend') {\n this.layerListToolState.setSelectedTab(1);\n } else {\n this.layerListToolState.setSelectedTab(0);\n }\n }\n }\n\n public tabChanged(tab: MatTabChangeEvent) {\n this.layerListToolState.setSelectedTab(tab.index);\n this.layers$.next(this.map.layerController.all);\n }\n\n onLayerListChange(appliedFilters: LayerListControlsOptions) {\n this.layerListToolState.setKeyword(appliedFilters.keyword);\n this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);\n this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);\n }\n\n showAllLegend() {\n if (this.layers$.getValue().length === 0) {\n return false;\n } else if (\n this.layers$.getValue().length !== 0 &&\n this.allowShowAllLegends() === false\n ) {\n let visibleOrInRangeLayers;\n this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe(\n (value) => {\n visibleOrInRangeLayers = value.length === 0 ? false : true;\n }\n );\n\n if (visibleOrInRangeLayers === false) {\n return false;\n }\n }\n return true;\n }\n\n activateExport(layer: Layer) {\n let id = layer.id;\n if (layer.options.workspace?.workspaceId) {\n id =\n layer.options.workspace.workspaceId !== layer.id\n ? layer.options.workspace.workspaceId\n : layer.id;\n }\n this.importExportState.setsExportOptions({ layers: [id] } as ExportOptions);\n this.importExportState.setMode(ImportExportMode.export);\n this.toolState.toolbox.activateTool('importExport');\n }\n\n activateTimeFilter() {\n this.toolState.toolbox.activateTool('activeTimeFilter');\n }\n\n activateOgcFilter() {\n this.toolState.toolbox.activateTool('activeOgcFilter');\n }\n\n searchEmit() {\n this.toolState.toolbox.activateTool('searchResults');\n }\n\n catalogEmit() {\n this.toolState.toolbox.activateTool('catalog');\n }\n\n contextEmit() {\n this.toolState.toolbox.activateTool('contextManager');\n }\n\n isTimeFilterButton(layer): boolean {\n const options = layer.dataSource.options;\n return this.timeButton() && options.timeFilterable && options.timeFilter;\n }\n\n isOGCFilterButton(layer): boolean {\n const options = layer.dataSource.options;\n return (\n this.ogcButton() &&\n options.ogcFilters &&\n options.ogcFilters.enabled &&\n (options.ogcFilters.pushButtons ||\n options.ogcFilters.checkboxes ||\n options.ogcFilters.radioButtons ||\n options.ogcFilters.select ||\n options.ogcFilters.autocomplete ||\n options.ogcFilters.editable)\n );\n }\n\n isExportButton(layer: Layer): boolean {\n if (\n (layer instanceof VectorLayer && layer.exportable === true) ||\n (layer.dataSource.options.download &&\n layer.dataSource.options.download.url) ||\n (layer.options.workspace?.enabled &&\n layer.options.workspace?.workspaceId !== layer.id)\n ) {\n return true;\n }\n return false;\n }\n\n isStyleEditButton(layer: Layer): boolean {\n if (layer instanceof VectorLayer) {\n if ((layer as VectorLayer).options?.igoStyle?.editable) {\n return true;\n }\n }\n return false;\n }\n\n private handleMedia(): void {\n this.mediaService.media$.subscribe((result) => {\n this.isDesktop = result === Media.Desktop;\n this.cdr.detectChanges();\n });\n }\n}\n","<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","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AdvancedMapToolComponent } from './advanced-map-tool/advanced-map-tool.component';\nimport { MapDetailsToolComponent } from './map-details-tool/map-details-tool.component';\nimport { MapLegendToolComponent } from './map-legend/map-legend-tool.component';\nimport { MapProximityToolComponent } from './map-proximity-tool/map-proximity-tool.component';\nimport { MapToolComponent } from './map-tool/map-tool.component';\nimport { MapToolsComponent } from './map-tools/map-tools.component';\n\n/**\n * @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set\n */\n@NgModule({\n imports: [\n AdvancedMapToolComponent,\n MapProximityToolComponent,\n MapToolComponent,\n MapToolsComponent,\n MapDetailsToolComponent,\n MapLegendToolComponent\n ],\n exports: [\n AdvancedMapToolComponent,\n MapProximityToolComponent,\n MapToolComponent,\n MapToolsComponent,\n MapDetailsToolComponent,\n MapLegendToolComponent\n ]\n})\nexport class IgoAppMapModule {\n static forRoot(): ModuleWithProviders<IgoAppMapModule> {\n return {\n ngModule: IgoAppMapModule,\n providers: []\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { FeatureStore, FeatureWithMeasure } from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the measure module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MeasureState {\n private mapState = inject(MapState);\n\n /**\n * Store that holds the measures\n */\n public store: FeatureStore<FeatureWithMeasure>;\n\n constructor() {\n this.store = new FeatureStore<FeatureWithMeasure>([], {\n map: this.mapState.map\n });\n\n this.mapState.map.layerController.all$.subscribe((layers) => {\n const hasMeasure = layers.some((l) =>\n String(l.id)?.startsWith('igo-measures-')\n );\n if (!hasMeasure) {\n this.store.deleteMany(this.store.all());\n this.mapState.map.ol\n .getOverlays()\n .getArray()\n .filter((overlay) =>\n (overlay as any).options.className.includes('igo-map-tooltip')\n )\n .map((overlay) => this.mapState.map.ol.removeOverlay(overlay));\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport {\n FeatureStore,\n FeatureWithMeasure,\n IgoMap,\n MeasurerComponent\n} from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\nimport { MeasureState } from '../measure.state';\n\n/**\n * Tool to measure lengths and areas\n */\n@ToolComponent({\n name: 'measurer',\n title: 'igo.integration.tools.measurer',\n icon: 'square_foot'\n})\n@Component({\n selector: 'igo-measurer-tool',\n templateUrl: './measurer-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MeasurerComponent]\n})\nexport class MeasurerToolComponent {\n private measureState = inject(MeasureState);\n private mapState = inject(MapState);\n\n /**\n * Map to measure on\n * @internal\n */\n get store(): FeatureStore<FeatureWithMeasure> {\n return this.measureState.store;\n }\n\n /**\n * Map to measure on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n}\n","<igo-measurer [store]=\"store\" [map]=\"map\" />\n","import { NgModule } from '@angular/core';\n\nimport { MeasurerToolComponent } from './measurer-tool.component';\n\n/**\n * @deprecated import the MeasurerToolComponent directly\n */\n@NgModule({\n imports: [MeasurerToolComponent],\n exports: [MeasurerToolComponent]\n})\nexport class IgoAppMeasurerToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppMeasurerToolModule } from './measurer-tool/measurer-tool.module';\n\n/**\n * @deprecated import the MeasurerToolComponent directly\n */\n@NgModule({\n exports: [IgoAppMeasurerToolModule]\n})\nexport class IgoAppMeasureModule {}\n","import { Component, inject } from '@angular/core';\n\nimport { ToolComponent } from '@igo2/common/tool';\nimport { IgoMap, PrintComponent } from '@igo2/geo';\n\nimport { MapState } from '../../map/map.state';\n\n@ToolComponent({\n name: 'print',\n title: 'igo.integration.tools.print',\n icon: 'print'\n})\n@Component({\n selector: 'igo-print-tool',\n templateUrl: './print-tool.component.html',\n imports: [PrintComponent]\n})\nexport class PrintToolComponent {\n private mapState = inject(MapState);\n\n get map(): IgoMap {\n return this.mapState.map;\n }\n}\n","<igo-print [map]=\"map\" />\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { PrintToolComponent } from './print-tool/print-tool.component';\n\n/**\n * @deprecated import the PrintToolComponent directly\n */\n@NgModule({\n imports: [PrintToolComponent],\n exports: [PrintToolComponent]\n})\nexport class IgoAppPrintModule {\n static forRoot(): ModuleWithProviders<IgoAppPrintModule> {\n return {\n ngModule: IgoAppPrintModule,\n providers: []\n };\n }\n}\n","import { AdvancedMapToolComponent } from './advanced-map-tool';\nimport { MapDetailsToolComponent } from './map-details-tool';\nimport { MapLegendToolComponent } from './map-legend';\nimport { MapProximityToolComponent } from './map-proximity-tool';\nimport { MapToolComponent } from './map-tool';\nimport { MapToolsComponent } from './map-tools';\n\nexport const INTEGRATION_MAP_DIRECTIVES = [\n AdvancedMapToolComponent,\n MapProximityToolComponent,\n MapToolComponent,\n MapToolsComponent,\n MapDetailsToolComponent,\n MapLegendToolComponent\n] as const;\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n EntityRecord,\n EntityStore,\n EntityStoreFilterCustomFuncStrategy,\n EntityStoreStrategyFuncOptions\n} from '@igo2/common/entity';\nimport { ConfigService } from '@igo2/core/config';\nimport { StorageService } from '@igo2/core/storage';\nimport {\n CommonVectorStyleOptions,\n Feature,\n FeatureMotion,\n FeatureStore,\n FeatureWorkspace,\n OverlayStyleOptions,\n SearchResult,\n SearchSource,\n SearchSourceService\n} from '@igo2/geo';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { MapState } from '../map';\nimport { WorkspaceState } from '../workspace/workspace.state';\n\n/**\n * Define the FeatureMotion to apply when adding the SearchResult to the map as an overlay.\n */\nexport interface SearchFeatureMotion {\n selected?: FeatureMotion;\n focus?: FeatureMotion;\n}\n\n/**\n * Service that holds the state of the search module\n */\n@Injectable()\nexport class SearchState {\n private searchSourceService = inject(SearchSourceService);\n private storageService = inject(StorageService);\n private workspaceState = inject(WorkspaceState);\n private configService = inject(ConfigService);\n private mapState = inject(MapState);\n\n public searchLayerStores: FeatureStore<Feature>[] = [];\n public searchOverlayStyle: CommonVectorStyleOptions = {};\n public searchOverlayStyleSelection: CommonVectorStyleOptions = {};\n public searchOverlayStyleFocus: CommonVectorStyleOptions = {};\n\n public focusedOrResolution$$: Subscription;\n public selectedOrResolution$$: Subscription;\n\n /**\n * Default feature motion are:\n * on selection = FeatureMotion.Default and\n * on focus = FeatureMotion.None\n */\n public featureMotion: SearchFeatureMotion = {\n selected: FeatureMotion.Default,\n focus: FeatureMotion.None\n };\n\n readonly searchTermSplitter$ = new BehaviorSubject<string>('|');\n\n readonly searchTerm$ = new BehaviorSubject<string>(undefined);\n\n readonly searchType$ = new BehaviorSubject<string>(undefined);\n\n readonly searchDisabled$ = new BehaviorSubject<boolean>(false);\n\n readonly searchResultsGeometryEnabled$ = new BehaviorSubject<boolean>(false);\n\n readonly searchSettingsChange$ = new BehaviorSubject<boolean>(undefined);\n\n readonly selectedResult$ = new BehaviorSubject<SearchResult>(undefined);\n\n /**\n * Store that holds the search results\n */\n readonly store = new EntityStore<SearchResult>([]);\n\n /**\n * Search types currently enabled in the search source service\n */\n get searchTypes(): string[] {\n return this.searchSourceService\n .getEnabledSources()\n .map((source: SearchSource) => (source.constructor as any).type);\n }\n\n constructor() {\n const searchOverlayStyle: OverlayStyleOptions =\n this.configService.getConfig('searchOverlayStyle');\n if (searchOverlayStyle) {\n this.searchOverlayStyle = searchOverlayStyle.base;\n this.searchOverlayStyleSelection = searchOverlayStyle.selection;\n this.searchOverlayStyleFocus = searchOverlayStyle.focus;\n }\n\n const searchResultsGeometryEnabled = this.storageService.get(\n 'searchResultsGeometryEnabled'\n ) as boolean;\n if (searchResultsGeometryEnabled) {\n this.searchResultsGeometryEnabled$.next(searchResultsGeometryEnabled);\n }\n this.store.addStrategy(this.createCustomFilterTermStrategy(), false);\n\n const wksSource = this.searchSourceService\n .getSources()\n .find((source) => source.getId() === 'workspace');\n if (wksSource) {\n this.workspaceState.store.entities$.subscribe((e) => {\n const searchableWks = e.filter(\n (fw) =>\n fw instanceof FeatureWorkspace &&\n fw.layer.options.workspace.searchIndexEnabled\n );\n this.searchSourceService.setWorkspaces(wksSource, searchableWks);\n });\n }\n this.monitorLayerDeletion();\n }\n\n private monitorLayerDeletion() {\n this.mapState.map.layerController.all$.subscribe((layers) => {\n this.searchLayerStores.forEach((store) => {\n const layer = layers.find((l) => l.id === store.layer.id);\n if (!layer) {\n const index = this.searchLayerStores.indexOf(store);\n this.searchLayerStores.splice(index, 1);\n }\n });\n });\n }\n\n private createCustomFilterTermStrategy(): EntityStoreFilterCustomFuncStrategy {\n const filterClauseFunc = (record: EntityRecord<SearchResult>) => {\n return record.entity.meta.score === 100;\n };\n return new EntityStoreFilterCustomFuncStrategy({\n filterClauseFunc\n } as EntityStoreStrategyFuncOptions);\n }\n\n /**\n * Activate custom strategy\n *\n */\n activateCustomFilterTermStrategy() {\n const strategy = this.store.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n if (strategy !== undefined) {\n strategy.activate();\n }\n }\n\n /**\n * Deactivate custom strategy\n *\n */\n deactivateCustomFilterTermStrategy() {\n const strategy = this.store.getStrategyOfType(\n EntityStoreFilterCustomFuncStrategy\n );\n if (strategy !== undefined) {\n strategy.deactivate();\n }\n }\n\n enableSearch() {\n this.searchDisabled$.next(false);\n }\n\n disableSearch() {\n this.searchDisabled$.next(true);\n }\n\n setSearchTerm(searchTerm: string) {\n this.searchTerm$.next(searchTerm);\n }\n\n setSearchType(searchType: string) {\n this.searchSourceService.enableSourcesByType(searchType);\n this.searchType$.next(searchType);\n }\n\n setSearchSettingsChange() {\n this.searchSettingsChange$.next(true);\n }\n\n setSelectedResult(result: SearchResult) {\n this.selectedResult$.next(result);\n }\n\n setSearchResultsGeometryStatus(value) {\n this.storageService.set('searchResultsGeometryEnabled', value);\n this.searchResultsGeometryEnabled$.next(value);\n }\n}\n","import {\n Directive,\n HostListener,\n OnDestroy,\n OnInit,\n inject\n} from '@angular/core';\n\nimport { SearchBarComponent } from '@igo2/geo';\n\nimport { Subscription } from 'rxjs';\n\nimport { SearchState } from '../search.state';\n\n@Directive({\n selector: '[igoSearchBarBinding]',\n standalone: true\n})\nexport class SearchBarBindingDirective implements OnInit, OnDestroy {\n private component = inject(SearchBarComponent, { self: true });\n private searchState = inject(SearchState);\n\n get searchTerm(): string {\n return this.searchState.searchTerm$.value;\n }\n get searchType(): string {\n return this.searchState.searchType$.value;\n }\n\n private searchTerm$$: Subscription;\n private searchType$$: Subscription;\n private searchDisabled$$: Subscription;\n\n ngOnInit() {\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\n (searchTerm: string) => {\n if (searchTerm !== undefined && searchTerm !== null) {\n this.component.setTerm(searchTerm);\n }\n }\n );\n\n this.searchType$$ = this.searchState.searchType$.subscribe(\n (searchType: string) => {\n if (searchType !== undefined && searchType !== null) {\n this.component.setSearchType(searchType);\n }\n }\n );\n\n this.searchDisabled$$ = this.searchState.searchDisabled$.subscribe(\n (searchDisabled: boolean) => {\n this.component.disabled = searchDisabled;\n }\n );\n }\n\n ngOnDestroy() {\n this.searchTerm$$.unsubscribe();\n this.searchType$$.unsubscribe();\n this.searchDisabled$$.unsubscribe();\n }\n\n @HostListener('searchTermChange', ['$event'])\n onSearchTermChange(searchTerm?: string) {\n if (searchTerm !== this.searchTerm) {\n this.searchState.setSearchTerm(searchTerm);\n }\n }\n\n @HostListener('searchTypeChange', ['$event'])\n onSearchTypeChange(searchType?: string) {\n if (searchType !== this.searchType) {\n this.searchState.setSearchType(searchType);\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input\n} from '@angular/core';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { SanitizeHtmlPipe } from '@igo2/common/custom-html';\nimport { EntityState, EntityStore, getEntityTitle } from '@igo2/common/entity';\nimport { FlexibleComponent, FlexibleState } from '@igo2/common/flexible';\nimport { PanelComponent } from '@igo2/common/panel';\nimport { ToolComponent } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport {\n FEATURE,\n Feature,\n FeatureDetailsComponent,\n FeatureMotion,\n FeatureStore,\n IgoMap,\n Research,\n SearchResult,\n SearchResultAddButtonComponent,\n SearchResultsComponent,\n computeOlFeaturesExtent,\n featureFromOl,\n featureToOl,\n featuresAreOutOfView,\n featuresAreTooDeepInView,\n getCommonVectorSelectedStyle,\n getCommonVectorStyle,\n moveToOlFeatures,\n roundCoordTo\n} from '@igo2/geo';\n\nimport olFeature from 'ol/Feature';\nimport { Coordinate } from 'ol/coordinate';\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\nimport olPoint from 'ol/geom/Point';\nimport * as olProj from 'ol/proj';\n\nimport pointOnFeature from '@turf/point-on-feature';\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\n\nimport { DirectionState } from '../../directions/directions.state';\nimport { MapState } from '../../map/map.state';\nimport { ToolState } from '../../tool/tool.state';\nimport { SearchState } from '../search.state';\n\n/**\n * Tool to browse the search results\n */\n@ToolComponent({\n name: 'searchResults',\n title: 'igo.integration.tools.searchResults',\n icon: 'search'\n})\n@Component({\n selector: 'igo-search-results-tool',\n templateUrl: './search-results-tool.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\n `\n :host {\n display: block;\n padding: 16px;\n }\n `\n ],\n imports: [\n FlexibleComponent,\n SearchResultsComponent,\n SearchResultAddButtonComponent,\n PanelComponent,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatBadgeModule,\n FeatureDetailsComponent,\n AsyncPipe,\n IgoLanguageModule,\n SanitizeHtmlPipe\n ]\n})\nexport class SearchResultsToolComponent implements OnInit, OnDestroy {\n private mapState = inject(MapState);\n private searchState = inject(SearchState);\n private elRef = inject(ElementRef);\n toolState = inject(ToolState);\n private directionState = inject(DirectionState);\n\n /**\n * to show hide results icons\n */\n readonly showIcons = input(true);\n\n /**\n * Determine the top panel default state\n */\n readonly topPanelStateDefault = input('expanded');\n\n private hasFeatureEmphasisOnSelection = false;\n public saveSearchResultInLayer = false;\n\n private showResultsGeometries$$: Subscription;\n private getRoute$$: Subscription;\n private shownResultsGeometries: Feature[] = [];\n private shownResultsEmphasisGeometries: Feature[] = [];\n private focusedResult$ = new BehaviorSubject<SearchResult>(undefined);\n public isSelectedResultOutOfView$ = new BehaviorSubject(false);\n private isSelectedResultOutOfView$$: Subscription;\n private abstractFocusedResult: Feature;\n private abstractSelectedResult: Feature;\n\n public debouncedEmpty$ = new BehaviorSubject<boolean>(true);\n private debouncedEmpty$$: Subscription;\n\n /**\n * Store holding the search results\n * @internal\n */\n get store(): EntityStore<SearchResult> {\n return this.searchState.store;\n }\n\n /**\n * Map to display the results on\n * @internal\n */\n get map(): IgoMap {\n return this.mapState.map;\n }\n\n get featureTitle(): string {\n return this.feature ? getEntityTitle(this.feature) : undefined;\n }\n\n get feature$(): Observable<Feature> {\n return this.store.stateView\n .firstBy$((e) => e.state.focused)\n .pipe(\n map(\n (element) =>\n (this.feature = element\n ? (element.entity.data as Feature)\n : undefined)\n )\n );\n }\n\n public feature: Feature;\n\n public term = '';\n private searchTerm$$: Subscription;\n\n public settingsChange$ = new BehaviorSubject<boolean>(undefined);\n\n public topPanelState$ = new BehaviorSubject<FlexibleState>('initial');\n private topPanelState$$: Subscription;\n\n @Input()\n set topPanelState(value: FlexibleState) {\n this.topPanelState$.next(value);\n }\n get topPanelState(): FlexibleState {\n return this.topPanelState$.value;\n }\n\n get termSplitter(): string {\n return this.searchState.searchTermSplitter$.value;\n }\n\n private format = new olFormatGeoJSON();\n\n get stores(): FeatureStore<Feature>[] {\n return this.searchState.searchLayerStores;\n }\n\n constructor() {\n const configService = inject(ConfigService);\n\n this.hasFeatureEmphasisOnSelection = configService.getConfig(\n 'hasFeatureEmphasisOnSelection'\n );\n this.saveSearchResultInLayer = configService.getConfig(\n 'saveSearchResultInLayer'\n );\n }\n\n ngOnInit() {\n this.searchTerm$$ = this.searchState.searchTerm$.subscribe(\n (searchTerm: string) => {\n if (\n searchTerm !== undefined &&\n searchTerm !== null &&\n searchTerm !== ''\n ) {\n this.term = searchTerm;\n this.debouncedEmpty$.next(false);\n } else if (searchTerm === '') {\n this.debouncedEmpty$.next(true);\n }\n }\n );\n\n for (const res of this.store.stateView.all$().value) {\n if (this.store.state.get(res.entity).selected === true) {\n this.topPanelState = 'expanded';\n }\n }\n\n this.searchState.searchSettingsChange$.subscribe(() => {\n this.settingsChange$.next(true);\n });\n\n this.topPanelState$$ = this.topPanelState$.subscribe(() => {\n const igoList = this.computeElementRef()[0];\n const selected = this.computeElementRef()[1];\n if (selected) {\n setTimeout(() => {\n // To be sure the flexible component has been displayed yet\n if (!this.isScrolledIntoView(igoList, selected)) {\n this.adjustTopPanel(igoList, selected);\n }\n }, FlexibleComponent.transitionTime + 50);\n }\n });\n\n if (this.hasFeatureEmphasisOnSelection) {\n if (!this.searchState.focusedOrResolution$$) {\n this.searchState.focusedOrResolution$$ = combineLatest([\n this.focusedResult$,\n this.map.viewController.resolution$\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\n this.buildResultEmphasis(bunch[0], 'focused')\n );\n }\n\n if (!this.searchState.selectedOrResolution$$) {\n this.searchState.selectedOrResolution$$ = combineLatest([\n this.searchState.selectedResult$,\n this.map.viewController.resolution$\n ]).subscribe((bunch: [SearchResult<Feature>, number]) =>\n this.buildResultEmphasis(bunch[0], 'selected')\n );\n }\n }\n this.monitorResultOutOfView();\n\n this.showResultsGeometries$$ = combineLatest([\n this.searchState.searchResultsGeometryEnabled$,\n this.store.stateView.all$(),\n this.focusedResult$,\n this.searchState.selectedResult$,\n this.searchState.searchTerm$,\n this.map.viewController.resolution$\n ]).subscribe(\n (\n bunch: [\n boolean,\n { entity: SearchResult; state: EntityState }[],\n SearchResult,\n SearchResult,\n string,\n number\n ]\n ) => {\n const searchResultsGeometryEnabled = bunch[0];\n const searchResults = bunch[1];\n\n if (this.hasFeatureEmphasisOnSelection) {\n this.clearFeatureEmphasis('shown');\n }\n this.shownResultsGeometries.map((result) =>\n this.map.queryResultsOverlay.removeFeature(result)\n );\n const featureToHandleGeom = searchResults.filter(\n (result) =>\n result.entity.meta.dataType === FEATURE &&\n result.entity.data.geometry &&\n !result.state.selected &&\n !result.state.focused\n );\n\n featureToHandleGeom.map((result) => {\n if (searchResultsGeometryEnabled) {\n result.entity.data.meta.style = getCommonVectorStyle(\n Object.assign(\n {},\n {\n feature: result.entity.data as Feature | olFeature<OlGeometry>\n },\n this.searchState.searchOverlayStyle,\n result.entity.style?.base ? result.entity.style.base : {}\n )\n );\n this.shownResultsGeometries.push(result.entity.data as Feature);\n this.map.queryResultsOverlay.addFeature(\n result.entity.data as Feature,\n FeatureMotion.None\n );\n if (this.hasFeatureEmphasisOnSelection) {\n this.buildResultEmphasis(\n result.entity as SearchResult<Feature>,\n 'shown'\n );\n }\n }\n });\n }\n );\n\n this.debouncedEmpty$$ = this.store.stateView.empty$\n .pipe(debounceTime(1500))\n .subscribe((empty) => this.debouncedEmpty$.next(empty));\n }\n\n private monitorResultOutOfView() {\n this.isSelectedResultOutOfView$$ = combineLatest([\n this.map.viewController.state$,\n this.searchState.selectedResult$\n ])\n .pipe(debounceTime(100))\n .subscribe((bunch) => {\n const selectedResult = bunch[1] as SearchResult<Feature>;\n if (!selectedResult) {\n this.isSelectedResultOutOfView$.next(false);\n return;\n }\n if (selectedResult.data.geometry) {\n const selectedOlFeature = featureToOl(\n selectedResult.data,\n this.map.projection\n );\n const selectedOlFeatureExtent = computeOlFeaturesExtent(\n [selectedOlFeature],\n this.map.viewController.getOlProjection()\n );\n this.isSelectedResultOutOfView$.next(\n featuresAreOutOfView(this.map.getExtent(), selectedOlFeatureExtent)\n );\n }\n });\n }\n\n private buildResultEmphasis(\n result: SearchResult<Feature>,\n trigger: 'selected' | 'focused' | 'shown' | undefined\n ) {\n if (trigger !== 'shown') {\n this.clearFeatureEmphasis(trigger);\n }\n if (!result || !result.data.geometry) {\n return;\n }\n const myOlFeature = featureToOl(result.data, this.map.projection);\n const olGeometry = myOlFeature.getGeometry();\n if (\n featuresAreTooDeepInView(\n this.map.viewController,\n olGeometry.getExtent() as [number, number, number, number],\n 0.0025\n )\n ) {\n const extent = olGeometry.getExtent();\n const x = extent[0] + (extent[2] - extent[0]) / 2;\n const y = extent[1] + (extent[3] - extent[1]) / 2;\n const feature1 = new olFeature({\n name: `${trigger}AbstractResult'`,\n geometry: new olPoint([x, y])\n });\n const abstractResult = featureFromOl(feature1, this.map.projection);\n\n let computedStyle;\n let zIndexOffset = 0;\n\n switch (trigger) {\n case 'focused':\n computedStyle = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: abstractResult },\n this.searchState.searchOverlayStyleFocus,\n result.style?.focus ? result.style.focus : {}\n )\n );\n zIndexOffset = 2;\n break;\n case 'shown':\n computedStyle = getCommonVectorStyle(\n Object.assign(\n {},\n { feature: abstractResult },\n this.searchState.searchOverlayStyle,\n result.style?.base ? result.style.base : {}\n )\n );\n break;\n case 'selected':\n computedStyle = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: abstractResult },\n this.searchState.searchOverlayStyleSelection,\n result.style?.selection ? result.style.selection : {}\n )\n );\n zIndexOffset = 1;\n break;\n }\n abstractResult.meta.style = computedStyle;\n abstractResult.meta.style.setZIndex(2000 + zIndexOffset);\n this.map.searchResultsOverlay.addFeature(\n abstractResult,\n this.searchState.featureMotion.focus\n );\n if (trigger === 'focused') {\n this.abstractFocusedResult = abstractResult;\n }\n if (trigger === 'selected') {\n this.abstractSelectedResult = abstractResult;\n }\n if (trigger === 'shown') {\n this.shownResultsEmphasisGeometries.push(abstractResult);\n }\n } else {\n this.clearFeatureEmphasis(trigger);\n }\n }\n\n private clearFeatureEmphasis(trigger: 'selected' | 'focused' | 'shown') {\n if (trigger === 'focused' && this.abstractFocusedResult) {\n this.map.searchResultsOverlay.removeFeature(this.abstractFocusedResult);\n this.abstractFocusedResult = undefined;\n }\n if (trigger === 'selected' && this.abstractSelectedResult) {\n this.map.searchResultsOverlay.removeFeature(this.abstractSelectedResult);\n this.abstractSelectedResult = undefined;\n }\n if (trigger === 'shown') {\n this.shownResultsEmphasisGeometries.map((shownResult) =>\n this.map.searchResultsOverlay.removeFeature(shownResult)\n );\n this.shownResultsEmphasisGeometries = [];\n }\n }\n\n ngOnDestroy() {\n this.topPanelState$$.unsubscribe();\n this.searchTerm$$.unsubscribe();\n if (this.isSelectedResultOutOfView$$) {\n this.isSelectedResultOutOfView$$.unsubscribe();\n }\n if (this.showResultsGeometries$$) {\n this.showResultsGeometries$$.unsubscribe();\n }\n if (this.getRoute$$) {\n this.getRoute$$.unsubscribe();\n }\n if (this.debouncedEmpty$$) {\n this.debouncedEmpty$$.unsubscribe();\n }\n }\n\n /**\n * Try to add a feature to the map when it's being focused\n * @internal\n * @param result A search result that could be a feature\n */\n onResultFocus(result: SearchResult) {\n this.focusedResult$.next(result);\n if (result.meta.dataType === FEATURE && result.data.geometry) {\n result.data.meta.style = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: result.data as Feature | olFeature<OlGeometry> },\n this.searchState.searchOverlayStyleFocus,\n result.style?.focus ? result.style.focus : {}\n )\n );\n\n const feature =\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\n result.meta.id\n );\n if (feature) {\n feature.setStyle(result.data.meta.style);\n return;\n }\n this.map.searchResultsOverlay.addFeature(\n result.data as Feature,\n this.searchState.featureMotion.focus\n );\n }\n }\n\n onResultUnfocus(result: SearchResult) {\n this.focusedResult$.next(undefined);\n if (result.meta.dataType !== FEATURE) {\n return;\n }\n\n if (this.store.state.get(result).selected === true) {\n const feature =\n this.map.searchResultsOverlay.dataSource.ol.getFeatureById(\n result.meta.id\n );\n if (feature) {\n const style = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature: result.data as Feature | olFeature<OlGeometry> },\n this.searchState.searchOverlayStyleFocus,\n result.style?.focus ? result.style.focus : {}\n )\n );\n feature.setStyle(style);\n }\n return;\n }\n this.map.searchResultsOverlay.removeFeature(result.data as Feature);\n }\n\n /**\n * Try to add a feature to the map when it's being selected\n * @internal\n * @param result A search result that could be a feature or some layer options\n */\n onResultSelect(result: SearchResult) {\n this.map.searchResultsOverlay.dataSource.ol.clear();\n this.tryAddFeatureToMap(result, this.searchState.featureMotion.selected);\n this.searchState.setSelectedResult(result);\n\n if (this.topPanelState === 'initial') {\n if (this.topPanelStateDefault() !== 'collapsed') {\n this.topPanelState = 'expanded';\n } else {\n this.topPanelState = 'collapsed';\n }\n }\n\n if (this.topPanelState === 'expanded') {\n const igoList = this.computeElementRef()[0];\n const selected = this.computeElementRef()[1];\n if (!this.isScrolledIntoView(igoList, selected)) {\n this.adjustTopPanel(igoList, selected);\n }\n }\n }\n\n onSearch(event: { research: Research; results: SearchResult[] }) {\n const results = event.results;\n const newResults = this.store.entities$.value\n .filter((result: SearchResult) => result.source !== event.research.source)\n .concat(results);\n\n this.store.load(newResults);\n\n for (const res of this.store.all()) {\n if (\n this.store.state.get(res).focused === true &&\n this.store.state.get(res).selected !== true\n ) {\n this.store.state.update(res, { focused: false }, true);\n }\n }\n\n setTimeout(() => {\n const igoList = this.elRef.nativeElement.querySelector('igo-list');\n let moreResults;\n event.research.request.subscribe((source) => {\n if (!source[0] || !source[0].source) {\n moreResults = null;\n } else if (source[0].source.getId() === 'icherche') {\n moreResults = igoList.querySelector('.icherche .moreResults');\n } else if (source[0].source.getId() === 'ilayer') {\n moreResults = igoList.querySelector('.ilayer .moreResults');\n } else if (source[0].source.getId() === 'nominatim') {\n moreResults = igoList.querySelector('.nominatim .moreResults');\n } else {\n moreResults = igoList.querySelector(\n '.' + source[0].source.getId() + ' .moreResults'\n );\n }\n\n if (\n moreResults !== null &&\n !this.isScrolledIntoView(igoList, moreResults)\n ) {\n igoList.scrollTop =\n moreResults.offsetTop +\n moreResults.offsetHeight -\n igoList.clientHeight;\n }\n });\n }, 250);\n }\n\n computeElementRef() {\n const items = document.getElementsByTagName('igo-search-results-item');\n const igoList =\n this.elRef.nativeElement.getElementsByTagName('igo-list')[0];\n let selectedItem;\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].className.includes('igo-list-item-selected')) {\n selectedItem = items[i];\n }\n }\n return [igoList, selectedItem];\n }\n\n adjustTopPanel(elemSource, elem) {\n if (!this.isScrolledIntoView(elemSource, elem)) {\n elemSource.scrollTop =\n elem.offsetTop +\n elem.children[0].offsetHeight -\n elemSource.clientHeight;\n }\n }\n\n toggleTopPanel(event?: MouseEvent) {\n if (event && (event.target as any)?.className !== 'igo-panel-title') {\n return;\n } else {\n if (this.topPanelState === 'expanded') {\n this.topPanelState = 'collapsed';\n } else {\n this.topPanelState = 'expanded';\n }\n }\n }\n\n zoomToFeatureExtent() {\n if (this.feature.geometry) {\n const localOlFeature = this.format.readFeature(this.feature, {\n dataProjection: this.feature.projection,\n featureProjection: this.map.projectionCode\n });\n moveToOlFeatures(\n this.map.viewController,\n localOlFeature,\n FeatureMotion.Zoom\n );\n }\n }\n\n /**\n * Try to add a feature to the map overlay\n * @param result A search result that could be a feature\n * @param motion A FeatureMotion to trigger when adding the searchresult to the map search overlay\n */\n private tryAddFeatureToMap(\n result: SearchResult,\n motion: FeatureMotion = FeatureMotion.Default\n ) {\n if (result.meta.dataType !== FEATURE) {\n return undefined;\n }\n const feature = (result as SearchResult<Feature>).data;\n\n // Somethimes features have no geometry. It happens with some GetFeatureInfo\n if (!feature.geometry) {\n return;\n }\n\n feature.meta.style = getCommonVectorSelectedStyle(\n Object.assign(\n {},\n { feature },\n this.searchState.searchOverlayStyleSelection,\n result.style?.selection ? result.style.selection : {}\n )\n );\n\n this.map.searchResultsOverlay.addFeature(feature, motion);\n }\n\n isScrolledIntoView(elemSource, elem) {\n const padding = 6;\n const docViewTop = elemSource.scrollTop;\n const docViewBottom = docViewTop + elemSource.clientHeight;\n\n const elemTop = elem.offsetTop;\n const elemBottom = elemTop + elem.clientHeight + padding;\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\n }\n\n getRoute() {\n this.toolState.toolbox.activateTool('directions');\n this.directionState.stopsStore.clearStops();\n setTimeout(() => {\n let routingCoordLoaded = false;\n if (this.getRoute$$) {\n this.getRoute$$.unsubscribe();\n }\n this.getRoute$$ =\n this.directionState.stopsStore.storeInitialized$.subscribe(() => {\n if (\n this.directionState.stopsStore.storeInitialized$.value &&\n !routingCoordLoaded\n ) {\n routingCoordLoaded = true;\n const stop = this.directionState.stopsStore\n .all()\n .find((e) => e.position === 1);\n let coord;\n if (this.feature.geometry) {\n if (this.feature.geometry.type === 'Point') {\n coord = [\n this.feature.geometry.coordinates[0],\n this.feature.geometry.coordinates[1]\n ];\n } else {\n const point = pointOnFeature(this.feature.geometry);\n coord = [\n point.geometry.coordinates[0],\n point.geometry.coordinates[1]\n ];\n }\n }\n stop.text = this.featureTitle;\n stop.coordinates = coord;\n this.directionState.stopsStore.update(stop);\n if (this.map.geolocationController.position$.value) {\n const currentPos = this.map.geolocationController.position$.value;\n const stop = this.directionState.stopsStore\n .all()\n .find((e) => e.position === 0);\n const currentCoord = olProj.transform(\n currentPos.position,\n currentPos.projection,\n 'EPSG:4326'\n );\n const coord: Coordinate = roundCoordTo(\n [currentCoord[0], currentCoord[1]],\n 6\n );\n stop.text = coord.join(',');\n stop.coordinates = coord;\n this.directionState.stopsStore.update(stop);\n }\n }\n });\n }, 250);\n }\n}\n","@if ((!store || store.stateView.empty) && (debouncedEmpty$ | async)) {\n <div>\n <section>\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 </div>\n}\n\n@if ((debouncedEmpty$ | async) === false) {\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 58px)\"\n collapsedMobile=\"calc(100% - 58px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"(feature$ | async) ? 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$ | async) {\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$ | async\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n","import { NgModule } from '@angular/core';\n\nimport { SearchBarBindingDirective } from './search-bar/search-bar-binding.directive';\nimport { SearchResultsToolComponent } from './search-results-tool/search-results-tool.component';\n\n/**\n * @deprecated import the components/directive directly or INTEGRATION_SEARCH_DIRECTIVES for the set\n */\n@NgModule({\n imports: [SearchBarBindingDirective, SearchResultsToolComponent],\n exports: [SearchBarBindingDirective, SearchResultsToolComponent]\n})\nexport class IgoAppSearchModule {}\n","import { NgModule } from '@angular/core';\n\nimport { WorkspaceButtonComponent } from './workspace-button/workspace-button.component';\n\n/**\n * @deprecated import the WorkspaceButtonComponent directly\n */\n@NgModule({\n imports: [WorkspaceButtonComponent],\n exports: [WorkspaceButtonComponent]\n})\nexport class IgoAppWorkspaceModule {}\n","import { NgModule } from '@angular/core';\n\nimport { IgoAppAboutModule } from './about/about.module';\nimport { IgoAppCatalogModule } from './catalog/catalog.module';\nimport { IgoAppContextModule } from './context/context.module';\nimport { IgoAppDirectionsModule } from './directions/directions.module';\nimport { IgoAppDrawModule } from './draw/draw.module';\nimport { IgoAppFilterModule } from './filter/filter.module';\nimport { IgoAppGeometryFormModule } from './geometry-form/geometry-form.module';\nimport { IgoAppImportExportModule } from './import-export/import-export.module';\nimport { IgoAppMapModule } from './map/map.module';\nimport { IgoAppMeasureModule } from './measure/measure.module';\nimport { IgoAppPrintModule } from './print/print.module';\nimport { IgoAppSearchModule } from './search/search.module';\nimport { IgoAppWorkspaceModule } from './workspace/workspace.module';\n\n/**\n * @deprecated import the components directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: [\n IgoAppContextModule,\n IgoAppCatalogModule,\n IgoAppDirectionsModule,\n IgoAppDrawModule,\n IgoAppWorkspaceModule,\n IgoAppImportExportModule,\n IgoAppMapModule,\n IgoAppMeasureModule,\n IgoAppPrintModule,\n IgoAppSearchModule,\n IgoAppFilterModule,\n IgoAppAboutModule,\n IgoAppGeometryFormModule\n ]\n})\nexport class IgoIntegrationModule {}\n","import { Injectable, inject } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { AnalyticsService } from '@igo2/core/analytics';\nimport {\n ArcGISRestDataSourceOptions,\n ArcGISRestImageDataSourceOptions,\n TileArcGISRestDataSourceOptions,\n WMSDataSourceOptions,\n WMTSDataSourceOptions,\n isLayerGroup\n} from '@igo2/geo';\n\nimport { skip } from 'rxjs/operators';\n\nimport { ContextState } from '../context/context.state';\nimport { MapState } from '../map/map.state';\nimport { ToolState } from '../tool/tool.state';\n\n/**\n * Service that holds the state of the search module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsListenerService {\n private analyticsService = inject(AnalyticsService);\n private authService = inject(AuthService);\n private contextState = inject(ContextState);\n private toolState = inject(ToolState);\n private mapState = inject(MapState);\n\n listen() {\n this.listenUser();\n this.listenContext();\n this.listenTool();\n this.listenLayer();\n }\n\n listenUser() {\n this.authService.authenticate$.subscribe(() => {\n const tokenDecoded = this.authService.decodeToken();\n if (tokenDecoded?.user) {\n this.authService\n .getProfils()\n .subscribe((profils) =>\n this.analyticsService.setUser(tokenDecoded.user, profils.profils)\n );\n } else {\n this.analyticsService.setUser(null);\n }\n });\n }\n\n listenContext() {\n this.contextState.context$.subscribe((context) => {\n if (context) {\n this.analyticsService.trackEvent(\n 'context',\n 'activateContext',\n context.id || context.uri\n );\n }\n });\n }\n\n listenTool() {\n this.toolState.toolbox.activeTool$.pipe(skip(1)).subscribe((tool) => {\n if (tool) {\n this.analyticsService.trackEvent('tool', 'activateTool', tool.name);\n }\n });\n }\n\n /**\n * Listener for adding layers to the map\n */\n listenLayer() {\n this.mapState.map.layersAddedByClick$.subscribe((layers) => {\n if (!layers) {\n return;\n }\n\n layers.forEach((layer) => {\n let wmsParams: string;\n let wmtsParams: string;\n let xyzParams: string;\n let restParams: string;\n\n if (isLayerGroup(layer)) {\n return;\n }\n\n switch (layer.dataSource.options.type) {\n case 'wms': {\n const wmsDataSource = layer.dataSource\n .options as WMSDataSourceOptions;\n const wmsLayerName: string = wmsDataSource.params.LAYERS;\n const wmsUrl: string = wmsDataSource.url;\n const wmsType: string = wmsDataSource.type;\n wmsParams = JSON.stringify({\n layer: wmsLayerName,\n type: wmsType,\n url: wmsUrl\n });\n break;\n }\n case 'wmts': {\n const wmtsDataSource = layer.dataSource\n .options as WMTSDataSourceOptions;\n const wmtsLayerName: string = wmtsDataSource.layer;\n const wmtsUrl: string = wmtsDataSource.url;\n const matrixSet: string = wmtsDataSource.matrixSet;\n const wmtsType: string = wmtsDataSource.type;\n wmtsParams = JSON.stringify({\n layer: wmtsLayerName,\n type: wmtsType,\n url: wmtsUrl,\n matrixSet\n });\n break;\n }\n case 'arcgisrest':\n case 'tilearcgisrest':\n case 'imagearcgisrest': {\n const restDataSource = layer.options.sourceOptions as\n | ArcGISRestDataSourceOptions\n | TileArcGISRestDataSourceOptions\n | ArcGISRestImageDataSourceOptions;\n const restName: string = restDataSource.layer;\n const restUrl: string = restDataSource.url;\n const restType: string = restDataSource.type;\n restParams = JSON.stringify({\n layer: restName,\n type: restType,\n url: restUrl\n });\n break;\n }\n case 'xyz':\n /* const xyzDataSource = layer.dataSource.options as XYZDataSourceOptions;\n const xyzName: string = layer.title;\n const xyzUrl: string = xyzDataSource.url;\n const xyzType: string = layer.dataSource.options.type;\n xyzParams = JSON.stringify({layer: xyzName, type: xyzType, url: xyzUrl});\n */\n // todo\n break;\n }\n this.analyticsService.trackLayer(\n 'layer',\n 'addLayer',\n wmsParams || wmtsParams || xyzParams || restParams\n );\n });\n });\n }\n}\n","import { ActiveOgcFilterToolComponent } from './active-ogc-filter-tool';\nimport { ActiveTimeFilterToolComponent } from './active-time-filter-tool';\nimport { OgcFilterToolComponent } from './ogc-filter-tool';\nimport { SpatialFilterToolComponent } from './spatial-filter-tool';\nimport { TimeFilterToolComponent } from './time-filter-tool';\n\nexport * from './ogc-filter-tool';\nexport * from './active-ogc-filter-tool';\nexport * from './spatial-filter-tool';\nexport * from './time-filter-tool';\nexport * from './active-time-filter-tool';\n\nexport const INTEGRATION_FILTER_DIRECTIVES = [\n OgcFilterToolComponent,\n ActiveOgcFilterToolComponent,\n TimeFilterToolComponent,\n ActiveTimeFilterToolComponent,\n SpatialFilterToolComponent\n];\n","import { Injectable, inject } from '@angular/core';\n\nimport { EntityStore } from '@igo2/common/entity';\nimport { ConfigService } from '@igo2/core/config';\nimport {\n CapabilitiesService,\n CommonVectorStyleOptions,\n GeoPropertiesStrategy,\n OverlayStyleOptions,\n PropertyTypeDetectorService,\n SearchResult\n} from '@igo2/geo';\n\nimport { MapState } from '../map/map.state';\n\n/**\n * Service that holds the state of the query module\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class QueryState {\n private configService = inject(ConfigService);\n private propertyTypeDetectorService = inject(PropertyTypeDetectorService);\n private capabilitiesService = inject(CapabilitiesService);\n private mapState = inject(MapState);\n\n /**\n * Store that holds the query results\n */\n public store = new EntityStore<SearchResult>([]);\n public queryOverlayStyle: CommonVectorStyleOptions = {};\n public queryOverlayStyleSelection: CommonVectorStyleOptions = {};\n public queryOverlayStyleFocus: CommonVectorStyleOptions = {};\n\n constructor() {\n const queryOverlayStyle: OverlayStyleOptions =\n this.configService.getConfig('queryOverlayStyle');\n if (queryOverlayStyle) {\n this.queryOverlayStyle = queryOverlayStyle.base;\n this.queryOverlayStyleSelection = queryOverlayStyle.selection;\n this.queryOverlayStyleFocus = queryOverlayStyle.focus;\n }\n const geoPropertiesStrategy = new GeoPropertiesStrategy(\n { map: this.mapState.map },\n this.propertyTypeDetectorService,\n this.capabilitiesService\n );\n this.store.addStrategy(geoPropertiesStrategy, true);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SearchResultsToolComponent } from './search-results-tool.component';\n\n/**\n * @deprecated import the SearchResultsToolComponent directly\n */\n@NgModule({\n imports: [SearchResultsToolComponent],\n exports: [SearchResultsToolComponent]\n})\nexport class IgoAppSearchResultsToolModule {}\n","import { NgModule } from '@angular/core';\n\nimport { SearchBarBindingDirective } from './search-bar-binding.directive';\n\n/**\n * @deprecated import the SearchBarBindingDirective directly\n */\n@NgModule({\n imports: [SearchBarBindingDirective],\n exports: [SearchBarBindingDirective]\n})\nexport class IgoAppSearchBarModule {}\n","/*\n * Public API Surface of tools\n */\n\nexport * from './lib/integration.module';\nexport * from './lib/about/about.module';\nexport * from './lib/geometry-form/geometry-form.module';\nexport * from './lib/context/context.module';\nexport * from './lib/catalog/catalog.module';\n\nexport * from './lib/directions/directions.module';\nexport * from './lib/draw/draw.module';\nexport * from './lib/workspace/workspace.module';\nexport * from './lib/filter/filter.module';\nexport * from './lib/import-export/import-export.module';\nexport * from './lib/map/map.module';\nexport * from './lib/measure/measure.module';\nexport * from './lib/print/print.module';\nexport * from './lib/search/search.module';\n\nexport * from './lib/about';\nexport * from './lib/geometry-form';\nexport * from './lib/analytics';\nexport * from './lib/context';\nexport * from './lib/catalog';\nexport * from './lib/directions';\nexport * from './lib/draw';\nexport * from './lib/environment';\nexport * from './lib/workspace';\nexport * from './lib/filter';\nexport * from './lib/import-export';\nexport * from './lib/map';\nexport * from './lib/measure';\nexport * from './lib/print';\nexport * from './lib/search';\nexport * from './lib/tool';\nexport * from './lib/storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i5","i3","map","i1.ContextEditorToolComponent","i2.ContextManagerToolComponent","i3.ContextPermissionManagerToolComponent","i4.ContextShareToolComponent","i1","toolSlideInOut","i2","i4","olproj","i8","i6","i7","olFormatGeoJSON"],"mappings":"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"}
|