{"version":3,"file":"igo2-context.mjs","sources":["../../../packages/context/src/lib/context-manager/shared/context.enum.ts","../../../packages/context/src/lib/context-manager/shared/context.service.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.errors.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.service.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.utils.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.errors.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.utils.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.service.ts","../../../packages/context/src/lib/context-import-export/context-import-export/context-import-export.component.ts","../../../packages/context/src/lib/context-import-export/context-import-export/context-import-export.component.html","../../../packages/context/src/lib/context-import-export/context-import-export.module.ts","../../../packages/context/src/lib/context-manager/context-form/context-form.component.ts","../../../packages/context/src/lib/context-manager/context-form/context-form.component.html","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.html","../../../packages/context/src/lib/context-manager/context-edit/context-edit-binding.directive.ts","../../../packages/context/src/lib/context-manager/context-item/context-item.component.ts","../../../packages/context/src/lib/context-manager/context-item/context-item.component.html","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-dialog.component.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-dialog.component.html","../../../packages/context/src/lib/context-manager/context-list/context-list.enum.ts","../../../packages/context/src/lib/context-manager/context-list/context-list.component.ts","../../../packages/context/src/lib/context-manager/context-list/context-list.component.html","../../../packages/context/src/lib/context-manager/context-list/context-list-binding.directive.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions.component.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions.component.html","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions-binding.directive.ts","../../../packages/context/src/lib/context-manager/shared/layer-context.directive.ts","../../../packages/context/src/lib/context-manager/shared/map-context.directive.ts","../../../packages/context/src/lib/context-manager/context-manager.module.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-button.component.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-button.component.html","../../../packages/context/src/lib/context-map-button/poi-button/poi-dialog.component.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-dialog.component.html","../../../packages/context/src/lib/context-map-button/poi-button/shared/poi.service.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-button.component.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-button.component.html","../../../packages/context/src/lib/context-map-button/user-button/user-button.animation.ts","../../../packages/context/src/lib/context-map-button/user-button/user-dialog.component.ts","../../../packages/context/src/lib/context-map-button/user-button/user-dialog.component.html","../../../packages/context/src/lib/context-map-button/user-button/user-button.component.ts","../../../packages/context/src/lib/context-map-button/user-button/user-button.component.html","../../../packages/context/src/lib/context-map-button/context-map-button.module.ts","../../../packages/context/src/lib/share-map/shared/share-map.service.ts","../../../packages/context/src/lib/share-map/share-map/share-map-api.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map-api.component.html","../../../packages/context/src/lib/share-map/share-map/share-map-url.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map-url.component.html","../../../packages/context/src/lib/share-map/share-map/share-map.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map.component.html","../../../packages/context/src/lib/share-map/share-map.module.ts","../../../packages/context/src/lib/sidenav/sidenav.component.ts","../../../packages/context/src/lib/sidenav/sidenav.component.html","../../../packages/context/src/lib/sidenav/sidenav.module.ts","../../../packages/context/src/lib/context.module.ts","../../../packages/context/src/lib/context-manager/context-manager.directive.ts","../../../packages/context/src/lib/context-map-button/context-map-button.directive.ts","../../../packages/context/src/public_api.ts","../../../packages/context/src/igo2-context.ts"],"sourcesContent":["export enum TypePermission {\n  null,\n  read,\n  write\n}\n\nexport enum Scope {\n  public,\n  protected,\n  private\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, Optional } from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { Tool } from '@igo2/common/tool';\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { Message, MessageService } from '@igo2/core/message';\nimport { RouteService } from '@igo2/core/route';\nimport { StorageService } from '@igo2/core/storage';\nimport type { AnyLayer, IgoMap, Layer } from '@igo2/geo';\nimport { ExportService, isLayerGroup } from '@igo2/geo';\nimport { ObjectUtils, uuid } from '@igo2/utils';\n\nimport GeoJSON from 'ol/format/GeoJSON';\nimport { Geometry } from 'ol/geom';\nimport olPoint from 'ol/geom/Point';\nimport Cluster from 'ol/source/Cluster';\nimport olVectorSource from 'ol/source/Vector';\n\nimport { Feature } from 'ol';\nimport { BehaviorSubject, Observable, Subject, of } from 'rxjs';\nimport {\n  catchError,\n  debounceTime,\n  first,\n  map,\n  mergeMap,\n  skip,\n  tap\n} from 'rxjs/operators';\n\nimport { TypePermission } from './context.enum';\nimport {\n  Context,\n  ContextMapView,\n  ContextPermission,\n  ContextProfils,\n  ContextServiceOptions,\n  ContextsList,\n  DetailedContext,\n  ExtraFeatures\n} from './context.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContextService {\n  public context$ = new BehaviorSubject<DetailedContext>(undefined);\n  public contexts$ = new BehaviorSubject<ContextsList>({ ours: [] });\n  public defaultContextId$ = new BehaviorSubject<string>(undefined);\n  public editedContext$ = new BehaviorSubject<DetailedContext>(undefined);\n  public importedContext: DetailedContext[] = [];\n  public toolsChanged$ = new Subject<DetailedContext>();\n  private mapViewFromRoute: ContextMapView = {};\n  private options: ContextServiceOptions;\n  private baseUrl: string;\n\n  // Until the ContextService is completely refactored, this is needed\n  // to track the current tools\n  private tools: Tool[];\n  private toolbar: string[];\n\n  get defaultContextUri(): string {\n    return (\n      (this.storageService.get('favorite.context.uri') as string) ||\n      this._defaultContextUri ||\n      this.options.defaultContextUri\n    );\n  }\n  set defaultContextUri(uri: string) {\n    this._defaultContextUri = uri;\n  }\n  private _defaultContextUri: string;\n\n  constructor(\n    private http: HttpClient,\n    private authService: AuthService,\n    private languageService: LanguageService,\n    private config: ConfigService,\n    private messageService: MessageService,\n    private storageService: StorageService,\n    private exportService: ExportService,\n    @Optional() private route: RouteService\n  ) {\n    this.options = Object.assign(\n      {\n        basePath: 'contexts',\n        contextListFile: '_contexts.json',\n        defaultContextUri: '_default'\n      },\n      this.config.getConfig('context')\n    );\n\n    this.baseUrl = this.options.url ?? '';\n\n    this.readParamsFromRoute();\n\n    if (this.authService.hasAuthService) {\n      this.authService.logged$.subscribe((logged) => {\n        if (logged) {\n          this.contexts$.pipe(skip(1), first()).subscribe(() => {\n            this.handleContextsChange();\n          });\n          this.loadContexts();\n        }\n      });\n    } else {\n      this.loadContexts();\n      this.handleContextsChange(false);\n    }\n  }\n\n  get(permissions?: string[], hidden?: boolean): Observable<ContextsList> {\n    let url = this.baseUrl + '/contexts';\n    if (permissions && this.authService.authenticated) {\n      url += '?permission=' + permissions.join();\n      if (hidden) {\n        url += '&hidden=true';\n      }\n    }\n    return this.http.get<ContextsList>(url);\n  }\n\n  getById(id: string): Observable<Context> {\n    const url = this.baseUrl + '/contexts/' + id;\n    return this.http.get<Context>(url);\n  }\n\n  getDetails(id: string): Observable<DetailedContext> {\n    const url = `${this.baseUrl}/contexts/${id}/details`;\n    return this.http.get<DetailedContext>(url).pipe(\n      catchError((res) => {\n        this.handleError(res, id);\n        throw res;\n      })\n    );\n  }\n\n  getDefault(): Observable<DetailedContext> {\n    if (this.authService.authenticated) {\n      const url = this.baseUrl + '/contexts/default';\n      return this.http.get<DetailedContext>(url).pipe(\n        tap((context) => {\n          this.defaultContextId$.next(context.id);\n        })\n      );\n    } else {\n      const uri = this.storageService.get('favorite.context.uri') as string;\n      this.defaultContextId$.next(uri);\n      return this.getContextByUri(uri);\n    }\n  }\n\n  getProfilByUser(): Observable<ContextProfils[]> {\n    if (this.baseUrl) {\n      const url = this.baseUrl + '/profils?';\n      return this.http.get<ContextProfils[]>(url);\n    }\n    return of([]);\n  }\n\n  setDefault(id: string): Observable<any> {\n    if (this.authService.authenticated) {\n      const url = this.baseUrl + '/contexts/default';\n      return this.http.post(url, { defaultContextId: id });\n    } else {\n      this.storageService.set('favorite.context.uri', id);\n      return of(undefined);\n    }\n  }\n\n  hideContext(id: string) {\n    const url = this.baseUrl + '/contexts/' + id + '/hide';\n    return this.http.post(url, {});\n  }\n\n  showContext(id: string) {\n    const url = this.baseUrl + '/contexts/' + id + '/show';\n    return this.http.post(url, {});\n  }\n\n  delete(id: string, imported = false): Observable<void> {\n    const contexts: ContextsList = { ours: [] };\n    Object.keys(this.contexts$.value).forEach(\n      (key) =>\n        (contexts[key] = this.contexts$.value[key].filter((c) => c.id !== id))\n    );\n\n    if (imported) {\n      this.importedContext = this.importedContext.filter((c) => c.id !== id);\n      return of(this.contexts$.next(contexts));\n    }\n\n    const url = this.baseUrl + '/contexts/' + id;\n    return this.http.delete<void>(url).pipe(\n      tap(() => {\n        this.contexts$.next(contexts);\n      })\n    );\n  }\n\n  create(context: DetailedContext): Observable<Context> {\n    const url = this.baseUrl + '/contexts';\n    return this.http.post<Context>(url, context).pipe(\n      map((contextCreated) => {\n        if (this.authService.authenticated) {\n          contextCreated.permission = TypePermission[TypePermission.write];\n        } else {\n          contextCreated.permission = TypePermission[TypePermission.read];\n        }\n        this.contexts$.value.ours.unshift(contextCreated);\n        this.contexts$.next(this.contexts$.value);\n        return contextCreated;\n      })\n    );\n  }\n\n  clone(id: string, properties = {}): Observable<Context> {\n    const url = this.baseUrl + '/contexts/' + id + '/clone';\n    return this.http.post<Context>(url, properties).pipe(\n      map((contextCloned) => {\n        contextCloned.permission = TypePermission[TypePermission.write];\n        this.contexts$.value.ours.unshift(contextCloned);\n        this.contexts$.next(this.contexts$.value);\n        return contextCloned;\n      })\n    );\n  }\n\n  update(id: string, context: DetailedContext): Observable<Context> {\n    const url = this.baseUrl + '/contexts/' + id;\n    return this.http.patch<Context>(url, context);\n  }\n\n  // =================================================================\n\n  addToolAssociation(contextId: string, toolId: string): Observable<void> {\n    const url = `${this.baseUrl}/contexts/${contextId}/tools`;\n    const association = {\n      toolId\n    };\n    return this.http.post<void>(url, association);\n  }\n\n  deleteToolAssociation(contextId: string, toolId: string): Observable<any> {\n    const url = `${this.baseUrl}/contexts/${contextId}/tools/${toolId}`;\n    return this.http.delete(url);\n  }\n\n  getPermissions(id: string): Observable<ContextPermission[]> {\n    const url = this.baseUrl + '/contexts/' + id + '/permissions';\n    return this.http.get<ContextPermission[]>(url);\n  }\n\n  addPermissionAssociation(\n    contextId: string,\n    profil: string,\n    type: TypePermission\n  ): Observable<ContextPermission[]> {\n    const url = `${this.baseUrl}/contexts/${contextId}/permissions`;\n    const association = {\n      profil,\n      typePermission: type\n    };\n\n    return this.http.post<ContextPermission[]>(url, association).pipe(\n      catchError((res) => {\n        this.handleError(res, undefined, true);\n        throw [res]; // TODO Not sure about this.\n      })\n    );\n  }\n\n  deletePermissionAssociation(\n    contextId: string,\n    permissionId: string\n  ): Observable<void> {\n    const url = `${this.baseUrl}/contexts/${contextId}/permissions/${permissionId}`;\n    return this.http.delete<void>(url);\n  }\n\n  // ======================================================================\n\n  getLocalContexts(): Observable<ContextsList> {\n    const url = this.getPath(this.options.contextListFile);\n    return this.http.get<ContextsList>(url).pipe(\n      map((res: any) => {\n        return { ours: res };\n      })\n    );\n  }\n\n  getLocalContext(uri: string): Observable<DetailedContext> {\n    const url = this.getPath(`${uri}.json`);\n    return this.http.get<DetailedContext>(url).pipe(\n      mergeMap((res) => {\n        if (!res.base) {\n          return of(res);\n        }\n        const urlBase = this.getPath(`${res.base}.json`);\n        return this.http.get<DetailedContext>(urlBase).pipe(\n          map((resBase: DetailedContext) => {\n            const resMerge = res;\n            resMerge.map = ObjectUtils.mergeDeep(resBase.map, res.map);\n            resMerge.layers = (resBase.layers || [])\n              .concat(res.layers || [])\n              .reverse()\n              .filter(\n                (l, index, self) =>\n                  !l.id || self.findIndex((l2) => l2.id === l.id) === index\n              )\n              .reverse();\n            resMerge.toolbar = res.toolbar || resBase.toolbar;\n            resMerge.message = res.message || resBase.message;\n            resMerge.messages = res.messages || resBase.messages;\n            resMerge.tools = (res.tools || [])\n              .concat(resBase.tools || [])\n              .filter(\n                (t, index, self) =>\n                  self.findIndex((t2) => t2.name === t.name) === index\n              );\n            return resMerge;\n          }),\n          catchError((err) => {\n            this.handleError(err, uri);\n            throw err;\n          })\n        );\n      }),\n      catchError((err2) => {\n        this.handleError(err2, uri);\n        throw err2;\n      })\n    );\n  }\n\n  loadContexts(permissions?: string[], hidden?: boolean) {\n    let request;\n    if (this.baseUrl) {\n      request = this.get(permissions, hidden);\n    } else {\n      request = this.getLocalContexts();\n    }\n    request.subscribe((contexts) => {\n      contexts.ours = this.importedContext.concat(contexts.ours);\n      this.contexts$.next(contexts);\n    });\n  }\n\n  loadDefaultContext() {\n    const loadFct = (direct = false) => {\n      if (!direct && this.baseUrl && this.authService.authenticated) {\n        this.getDefault().subscribe(\n          (_context: DetailedContext) => {\n            this.defaultContextUri = _context.uri;\n            this.addContextToList(_context);\n            this.setContext(_context);\n          },\n          () => {\n            this.defaultContextId$.next(undefined);\n            this.loadContext(this.defaultContextUri);\n          }\n        );\n      } else {\n        this.loadContext(this.defaultContextUri);\n      }\n    };\n\n    if (this.route && this.route.options.contextKey) {\n      this.route.queryParams.pipe(debounceTime(100)).subscribe((params) => {\n        const contextParam = params[this.route.options.contextKey as string];\n        let direct = false;\n        if (contextParam) {\n          this.defaultContextUri = contextParam;\n          direct = true;\n        }\n        loadFct(direct);\n      });\n    } else {\n      loadFct();\n    }\n  }\n\n  loadContext(uri: string) {\n    const context = this.context$.value;\n\n    if (context && context.uri === uri) {\n      return;\n    }\n\n    this.getContextByUri(uri)\n      .pipe(first())\n      .subscribe(\n        (_context: DetailedContext) => {\n          this.addContextToList(_context);\n          this.setContext(_context);\n        },\n        () => {\n          if (uri !== this.options.defaultContextUri) {\n            this.loadContext(this.options.defaultContextUri);\n          }\n        }\n      );\n  }\n\n  setContext(context: DetailedContext) {\n    this.handleContextMessage(context);\n    const currentContext = this.context$.value;\n    if (currentContext && context && context.id === currentContext.id) {\n      if (context.map.view.keepCurrentView === undefined) {\n        context.map.view.keepCurrentView = true;\n      }\n      this.context$.next(context);\n      return;\n    }\n\n    if (!context.map) {\n      context.map = { view: {} };\n    }\n\n    Object.assign(context.map.view, this.mapViewFromRoute);\n\n    this.context$.next(context);\n  }\n\n  loadEditedContext(uri: string) {\n    this.getContextByUri(uri).subscribe((_context: DetailedContext) => {\n      this.setEditedContext(_context);\n    });\n  }\n\n  setEditedContext(context: DetailedContext) {\n    this.editedContext$.next(context);\n  }\n\n  getContextFromMap(igoMap: IgoMap, empty?: boolean): DetailedContext {\n    const view = igoMap.ol.getView();\n    const proj = view.getProjection().getCode();\n    const center = new olPoint(view.getCenter()).transform(proj, 'EPSG:4326');\n\n    const context: DetailedContext = {\n      uri: uuid(),\n      title: '',\n      scope: 'private',\n      map: {\n        view: {\n          center: center.getCoordinates() as [number, number],\n          zoom: view.getZoom(),\n          projection: proj,\n          maxZoomOnExtent: igoMap.viewController.maxZoomOnExtent\n        }\n      },\n      layers: [],\n      tools: []\n    };\n\n    const layers: AnyLayer[] = empty\n      ? []\n      : [...igoMap.layerController.treeLayers];\n\n    const baseLayer = igoMap.layerController.baseLayer;\n    if (baseLayer) {\n      layers.unshift(baseLayer);\n    }\n\n    // Remove null for the first level, the LayerGroup is already doing that for it's children\n    context.layers = layers\n      .map((layer) => layer.saveableOptions)\n      .filter(Boolean);\n\n    context.tools = this.tools.map((tool) => {\n      return {\n        id: String(tool.id),\n        global: tool.global\n      } as Tool;\n    });\n\n    return context;\n  }\n\n  getContextFromLayers(\n    igoMap: IgoMap,\n    layers: AnyLayer[],\n    name: string,\n    keepCurrentView?: boolean\n  ): DetailedContext {\n    const view = igoMap.ol.getView();\n    const proj = view.getProjection().getCode();\n    const center = new olPoint(view.getCenter()).transform(proj, 'EPSG:4326');\n\n    const context: DetailedContext = {\n      uri: name,\n      title: name,\n      map: {\n        view: {\n          center: center.getCoordinates() as [number, number],\n          zoom: view.getZoom(),\n          projection: proj,\n          keepCurrentView\n        }\n      },\n      layers: [],\n      toolbar: [],\n      tools: [],\n      extraFeatures: []\n    };\n\n    context.layers = igoMap.layerController.baseLayers.map((l: Layer) => {\n      return {\n        baseLayer: true,\n        sourceOptions: l.options.sourceOptions,\n        title: l.options.title,\n        visible: l.visible\n      };\n    });\n\n    layers.forEach((layer) => {\n      if (isLayerGroup(layer)) {\n        return context.layers.push(layer.options);\n      }\n      if (!(layer.ol.getSource() instanceof olVectorSource)) {\n        const layerOptions = layer.options;\n        layerOptions.zIndex = layer.zIndex;\n        layerOptions.visible = layer.visible;\n        layerOptions.opacity = layer.opacity;\n        delete layerOptions.source;\n        context.layers.push(layerOptions);\n      } else {\n        if (!(layer.ol.getSource() instanceof olVectorSource)) {\n          const catalogLayer = layer.options;\n          catalogLayer.zIndex = layer.zIndex;\n          catalogLayer.visible = layer.visible;\n          catalogLayer.opacity = layer.opacity;\n          delete catalogLayer.source;\n          context.layers.push(catalogLayer);\n        } else {\n          const extraFeatures = this.getExtraFeatures(layer);\n          extraFeatures.name = layer.options.title;\n          extraFeatures.opacity = layer.opacity;\n          extraFeatures.visible = layer.visible;\n          context.extraFeatures.push(extraFeatures);\n        }\n      }\n    });\n\n    context.toolbar = this.toolbar;\n    context.tools = this.tools;\n\n    return context;\n  }\n\n  private getExtraFeatures(layer: Layer): ExtraFeatures {\n    const writer = new GeoJSON();\n    let olFeatures: Feature<Geometry>[];\n    if (layer.ol.getSource() instanceof Cluster) {\n      const clusterSource = layer.ol.getSource() as Cluster;\n      olFeatures = clusterSource.getFeatures();\n      olFeatures = (olFeatures as any).flatMap((cluster: any) =>\n        cluster.get('features')\n      );\n    } else {\n      const source = layer.ol.getSource() as olVectorSource;\n      olFeatures = source.getFeatures();\n    }\n    const cleanedOlFeatures = this.exportService.cleanFeatures(\n      olFeatures,\n      'GeoJSON',\n      '_featureStore'\n    );\n    const features = writer.writeFeatures(cleanedOlFeatures, {\n      dataProjection: 'EPSG:4326',\n      featureProjection: 'EPSG:3857'\n    });\n    return JSON.parse(features);\n  }\n\n  setTools(tools: Tool[]) {\n    this.tools = tools;\n  }\n\n  setToolbar(toolbar: string[]) {\n    this.toolbar = toolbar;\n  }\n\n  private handleContextMessage(context: DetailedContext) {\n    if (\n      this.context$.value &&\n      context.uri &&\n      this.context$.value.uri !== context.uri\n    ) {\n      this.messageService.removeAllAreNotError();\n    }\n\n    context.messages = context.messages ? context.messages : [];\n    context.messages.push(context.message);\n    context.messages.map((message) => {\n      if (message) {\n        this.messageService.message(message as Message);\n      }\n    });\n  }\n\n  private getContextByUri(uri: string): Observable<DetailedContext> {\n    if (this.baseUrl) {\n      let contextToLoad;\n      for (const key of Object.keys(this.contexts$.value)) {\n        contextToLoad = this.contexts$.value[key].find((c) => {\n          return c.uri === uri;\n        });\n        if (contextToLoad) {\n          break;\n        }\n      }\n\n      if (contextToLoad && contextToLoad.imported) {\n        return of(contextToLoad);\n      }\n\n      // TODO : use always id or uri\n      const id = contextToLoad ? contextToLoad.id : uri;\n      return this.getDetails(id);\n    }\n\n    const importedContext = this.contexts$.value.ours.find((currentContext) => {\n      return currentContext.uri === uri && currentContext.imported === true;\n    });\n\n    if (importedContext) {\n      return of(importedContext);\n    } else {\n      return this.getLocalContext(uri);\n    }\n  }\n\n  getContextLayers(map: IgoMap) {\n    return map.layerController.treeLayers;\n  }\n\n  private readParamsFromRoute() {\n    if (!this.route) {\n      return;\n    }\n\n    this.route.queryParams.subscribe((params) => {\n      const centerKey = this.route.options.centerKey;\n      if (centerKey && params[centerKey as string]) {\n        const centerParams = params[centerKey as string];\n        this.mapViewFromRoute.center = centerParams.split(',').map(Number);\n      }\n\n      const projectionKey = this.route.options.projectionKey;\n      if (projectionKey && params[projectionKey as string]) {\n        const projectionParam = params[projectionKey as string];\n        this.mapViewFromRoute.projection = projectionParam;\n      }\n\n      const zoomKey = this.route.options.zoomKey;\n      if (zoomKey && params[zoomKey as string]) {\n        const zoomParam = params[zoomKey as string];\n        this.mapViewFromRoute.zoom = Number(zoomParam);\n      }\n    });\n  }\n\n  private getPath(file: string) {\n    const basePath = this.options.basePath.replace(/\\/$/, '');\n\n    return `${basePath}/${file}`;\n  }\n\n  private handleError(\n    error: HttpErrorResponse,\n    uri: string,\n    permissionError?: boolean\n  ) {\n    const context = this.contexts$.value.ours.find((obj) => obj.uri === uri);\n    const titleContext = context ? context.title : uri;\n    error.error.title = this.languageService.translate.instant(\n      'igo.context.contextManager.invalid.title'\n    );\n\n    error.error.message = this.languageService.translate.instant(\n      'igo.context.contextManager.invalid.text',\n      { value: titleContext }\n    );\n\n    error.error.toDisplay = true;\n\n    if (permissionError) {\n      error.error.title = this.languageService.translate.instant(\n        'igo.context.contextManager.errors.addPermissionTitle'\n      );\n      error.error.message = this.languageService.translate.instant(\n        'igo.context.contextManager.errors.addPermission'\n      );\n    }\n    this.messageService.error(\n      'igo.context.contextManager.errors.addPermission',\n      'igo.context.contextManager.errors.addPermissionTitle'\n    );\n  }\n\n  private handleContextsChange(keepCurrentContext = true) {\n    const context = this.context$.value;\n    const editedContext = this.editedContext$.value;\n    if (!context || context.uri === this.options.defaultContextUri) {\n      keepCurrentContext = false;\n    }\n    if (!keepCurrentContext || !this.findContext(context)) {\n      this.defaultContextUri = undefined;\n      this.loadDefaultContext();\n    } else {\n      this.getContextByUri(context.uri)\n        .pipe(first())\n        .subscribe((newContext) => {\n          this.toolsChanged$.next(newContext);\n        });\n\n      if (this.baseUrl && this.authService.authenticated) {\n        this.getDefault().subscribe();\n      }\n    }\n    const editedFound = this.findContext(editedContext);\n    if (!editedFound || editedFound.permission !== 'write') {\n      this.setEditedContext(undefined);\n    }\n  }\n\n  private addContextToList(context: Context) {\n    const contextFound = this.findContext(context);\n    if (!contextFound) {\n      const contextSimplifie = {\n        id: context.id,\n        uri: context.uri,\n        title: context.title,\n        scope: context.scope,\n        permission: TypePermission[TypePermission.read]\n      };\n\n      if (this.contexts$.value && this.contexts$.value.public) {\n        this.contexts$.value.public.push(contextSimplifie);\n        this.contexts$.next(this.contexts$.value);\n      }\n    }\n  }\n\n  private findContext(context: Context) {\n    if (!context) {\n      return false;\n    }\n\n    const contexts = this.contexts$.value;\n    let found;\n    for (const key of Object.keys(contexts)) {\n      const value = contexts[key];\n      found = value.find(\n        (c) =>\n          (context.id && c.id === context.id) ||\n          (context.uri && c.uri === context.uri)\n      );\n      if (found) {\n        break;\n      }\n    }\n\n    return found;\n  }\n}\n","export class ExportError extends Error {}\n\nexport class ExportInvalidFileError extends ExportError {\n  constructor() {\n    super('Invalid context');\n    Object.setPrototypeOf(this, ExportInvalidFileError.prototype);\n  }\n}\n\nexport class ExportNothingToExportError extends ExportError {\n  constructor() {\n    super('Nothing to export');\n    Object.setPrototypeOf(this, ExportNothingToExportError.prototype);\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { downloadContent } from '@igo2/utils';\n\nimport { Observable, Observer } from 'rxjs';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { ExportNothingToExportError } from './context-export.errors';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContextExportService {\n  export(res: DetailedContext): Observable<void> {\n    return this.exportAsync(res);\n  }\n\n  protected exportAsync(res: DetailedContext): Observable<void> {\n    const doExport = (observer: Observer<void>) => {\n      const nothingToExport = this.nothingToExport(res);\n      if (nothingToExport === true) {\n        observer.error(new ExportNothingToExportError());\n        return;\n      }\n      const contextJSON = JSON.stringify(res);\n      downloadContent(\n        contextJSON,\n        'text/json;charset=utf-8',\n        `${res.uri}.json`\n      );\n      observer.complete();\n    };\n    return new Observable(doExport);\n  }\n\n  protected nothingToExport(res: DetailedContext): boolean {\n    if (res.map === undefined) {\n      return true;\n    }\n    return false;\n  }\n}\n","import { MessageService } from '@igo2/core/message';\n\nimport { ExportNothingToExportError } from './context-export.errors';\n\nexport function handleFileExportError(\n  error: Error,\n  messageService: MessageService\n) {\n  if (error instanceof ExportNothingToExportError) {\n    this.handleNothingToExportError(messageService);\n    return;\n  }\n  messageService.error(\n    'igo.context.contextImportExport.export.failed.text',\n    'igo.context.contextImportExport.export.failed.title'\n  );\n}\n\nexport function handleFileExportSuccess(messageService: MessageService) {\n  messageService.success(\n    'igo.context.contextImportExport.export.success.text',\n    'igo.context.contextImportExport.export.success.title'\n  );\n}\n\nexport function handleNothingToExportError(messageService: MessageService) {\n  messageService.error(\n    'igo.context.contextImportExport.export.nothing.text',\n    'igo.context.contextImportExport.export.nothing.title'\n  );\n}\n","export class ImportError extends Error {}\n\nexport class ImportInvalidFileError extends ImportError {\n  constructor() {\n    super('Invalid file');\n    Object.setPrototypeOf(this, ImportInvalidFileError.prototype);\n  }\n}\n\nexport class ImportUnreadableFileError extends ImportError {\n  constructor() {\n    super('Failed to read file');\n    Object.setPrototypeOf(this, ImportUnreadableFileError.prototype);\n  }\n}\n\nexport class ImportNothingToImportError extends ImportError {\n  constructor() {\n    super('Nothing to import');\n    Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\n  }\n}\n\nexport class ImportSizeError extends ImportError {\n  constructor() {\n    super('File is too large');\n    Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\n  }\n}\n\nexport class ImportSRSError extends ImportError {\n  constructor() {\n    super('Invalid SRS definition');\n    Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\n  }\n}\n","import { MessageService } from '@igo2/core/message';\nimport {\n  ClusterDataSource,\n  ClusterDataSourceOptions,\n  ClusterParam,\n  FeatureDataSource,\n  FeatureDataSourceOptions,\n  IgoMap,\n  QueryableDataSourceOptions,\n  StyleByAttribute,\n  StyleListService,\n  StyleService,\n  VectorLayer,\n  featureRandomStyle,\n  featureRandomStyleFunction\n} from '@igo2/geo';\n\nimport OlFeature from 'ol/Feature';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\n\nimport {\n  DetailedContext,\n  ExtraFeatures\n} from '../../context-manager/shared/context.interface';\nimport { ContextService } from '../../context-manager/shared/context.service';\n\nexport function handleFileImportSuccess(\n  file: File,\n  context: DetailedContext,\n  messageService: MessageService,\n  contextService: ContextService\n) {\n  if (Object.keys(context).length <= 0) {\n    handleNothingToImportError(file, messageService);\n    return;\n  }\n\n  const contextTitle = computeLayerTitleFromFile(file);\n\n  addContextToContextList(context, contextTitle, contextService);\n\n  messageService.success(\n    'igo.context.contextImportExport.import.success.text',\n    'igo.context.contextImportExport.import.success.title',\n    undefined,\n    {\n      value: contextTitle\n    }\n  );\n}\n\nexport function handleFileImportError(\n  file: File,\n  error: Error,\n  messageService: MessageService,\n  sizeMb?: number\n) {\n  sizeMb = sizeMb ? sizeMb : 30;\n  const errMapping = {\n    'Invalid file': handleInvalidFileImportError,\n    'File is too large': handleSizeFileImportError,\n    'Failed to read file': handleUnreadbleFileImportError\n  };\n  errMapping[error.message](file, error, messageService, sizeMb);\n}\n\nexport function handleInvalidFileImportError(\n  file: File,\n  error: Error,\n  messageService: MessageService\n) {\n  messageService.error(\n    'igo.context.contextImportExport.import.invalid.text',\n    'igo.context.contextImportExport.import.invalid.title',\n    undefined,\n    {\n      value: file.name,\n      mimeType: file.type\n    }\n  );\n}\n\nexport function handleSizeFileImportError(\n  file: File,\n  error: Error,\n  messageService: MessageService,\n  sizeMb: number\n) {\n  messageService.error(\n    'igo.context.contextImportExport.import.tooLarge.text',\n    'igo.context.contextImportExport.import.tooLarge.title',\n    undefined,\n    {\n      value: file.name,\n      size: sizeMb\n    }\n  );\n}\n\nexport function handleUnreadbleFileImportError(\n  file: File,\n  error: Error,\n  messageService: MessageService\n) {\n  messageService.error(\n    'igo.context.contextImportExport.import.unreadable.text',\n    'igo.context.contextImportExport.import.unreadable.title',\n    undefined,\n    {\n      value: file.name\n    }\n  );\n}\n\nexport function handleNothingToImportError(\n  file: File,\n  messageService: MessageService\n) {\n  messageService.error(\n    'igo.context.contextImportExport.import.empty.text',\n    'igo.context.contextImportExport.import.empty.title',\n    undefined,\n    { value: file.name }\n  );\n}\n\nexport function addContextToContextList(\n  context: DetailedContext,\n  contextTitle: string,\n  contextService: ContextService\n) {\n  context.title = contextTitle;\n  context.imported = true;\n  contextService.contexts$.value.ours.unshift(context);\n  contextService.contexts$.next(contextService.contexts$.value);\n  contextService.importedContext.unshift(context);\n  contextService.loadContext(context.uri);\n}\n\nexport function getFileExtension(file: File): string {\n  return file.name.split('.').pop().toLowerCase();\n}\n\nexport function computeLayerTitleFromFile(file: File): string {\n  return file.name.substr(0, file.name.lastIndexOf('.'));\n}\n\nexport function addImportedFeaturesToMap(\n  extraFeatures: ExtraFeatures,\n  map: IgoMap\n): VectorLayer {\n  const sourceOptions: FeatureDataSourceOptions & QueryableDataSourceOptions = {\n    type: 'vector',\n    queryable: true\n  };\n\n  const olFeatures = collectFeaturesFromExtraFeatures(extraFeatures);\n  const source = new FeatureDataSource(sourceOptions);\n  source.ol.addFeatures(olFeatures);\n\n  let randomStyle;\n  let editable = false;\n  const featureKeys = olFeatures[0]?.getKeys() ?? [];\n  if (featureKeys.includes('_style') || featureKeys.includes('_mapTitle')) {\n    randomStyle = featureRandomStyleFunction();\n  } else {\n    randomStyle = featureRandomStyle();\n    editable = true;\n  }\n  const layer = new VectorLayer({\n    title: extraFeatures.name,\n    isIgoInternalLayer: true,\n    source,\n    igoStyle: { editable },\n    style: randomStyle,\n    visible: extraFeatures.visible,\n    opacity: extraFeatures.opacity\n  });\n  map.layerController.add(layer);\n\n  return layer;\n}\n\nexport function addImportedFeaturesStyledToMap(\n  extraFeatures: ExtraFeatures,\n  map: IgoMap,\n  styleListService: StyleListService,\n  styleService: StyleService\n): VectorLayer {\n  let style;\n  let distance: number;\n\n  if (styleListService.getStyleList(extraFeatures.name + '.styleByAttribute')) {\n    const styleByAttribute: StyleByAttribute = styleListService.getStyleList(\n      extraFeatures.name + '.styleByAttribute'\n    );\n\n    style = (feature, resolution) => {\n      return styleService.createStyleByAttribute(\n        feature,\n        styleByAttribute,\n        resolution\n      );\n    };\n  } else if (\n    styleListService.getStyleList(extraFeatures.name + '.clusterStyle')\n  ) {\n    const clusterParam: ClusterParam = styleListService.getStyleList(\n      extraFeatures.name + '.clusterParam'\n    );\n    distance = styleListService.getStyleList(extraFeatures.name + '.distance');\n\n    style = (feature, resolution) => {\n      const baseStyle = styleService.createStyle(\n        styleListService.getStyleList(extraFeatures.name + '.clusterStyle'),\n        feature,\n        resolution\n      );\n      return styleService.createClusterStyle(\n        feature,\n        resolution,\n        clusterParam,\n        baseStyle\n      );\n    };\n  } else if (styleListService.getStyleList(extraFeatures.name + '.style')) {\n    style = (feature, resolution) =>\n      styleService.createStyle(\n        styleListService.getStyleList(extraFeatures.name + '.style'),\n        feature,\n        resolution\n      );\n  } else {\n    style = (feature, resolution) =>\n      styleService.createStyle(\n        styleListService.getStyleList('default.style'),\n        feature,\n        resolution\n      );\n  }\n  let source;\n  const olFeatures = collectFeaturesFromExtraFeatures(extraFeatures);\n  if (styleListService.getStyleList(extraFeatures.name + '.clusterStyle')) {\n    const sourceOptions: ClusterDataSourceOptions & QueryableDataSourceOptions =\n      {\n        distance,\n        type: 'cluster',\n        queryable: true\n      };\n    source = new ClusterDataSource(sourceOptions);\n    source.ol.source.addFeatures(olFeatures);\n  } else {\n    const sourceOptions: FeatureDataSourceOptions & QueryableDataSourceOptions =\n      {\n        type: 'vector',\n        queryable: true\n      };\n    source = new FeatureDataSource(sourceOptions);\n    source.ol.addFeatures(olFeatures);\n  }\n\n  const layer = new VectorLayer({\n    title: extraFeatures.name,\n    isIgoInternalLayer: true,\n    source,\n    style,\n    opacity: extraFeatures.opacity,\n    visible: extraFeatures.visible\n  });\n  map.layerController.add(layer);\n\n  return layer;\n}\n\nfunction collectFeaturesFromExtraFeatures(\n  featureCollection: ExtraFeatures\n): OlFeature<OlGeometry>[] {\n  const format = new GeoJSON();\n  const features = format.readFeatures(featureCollection, {\n    dataProjection: 'EPSG:4326',\n    featureProjection: 'EPSG:3857'\n  });\n  return features;\n}\n","import { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { Observable, Observer } from 'rxjs';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport {\n  ImportInvalidFileError,\n  ImportSizeError,\n  ImportUnreadableFileError\n} from './context-import.errors';\nimport { getFileExtension } from './context-import.utils';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContextImportService {\n  static allowedMimeTypes = ['application/json'];\n\n  static allowedExtensions = 'json';\n\n  private clientSideFileSizeMax: number;\n\n  constructor(private config: ConfigService) {\n    const configFileSizeMb = this.config.getConfig(\n      'importExport.clientSideFileSizeMaxMb'\n    );\n    this.clientSideFileSizeMax =\n      (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);\n  }\n\n  import(file: File): Observable<DetailedContext> {\n    return this.importAsync(file);\n  }\n\n  private getFileImporter(\n    file: File\n  ): (\n    file: File,\n    observer: Observer<DetailedContext>,\n    projectionIn: string,\n    projectionOut: string\n  ) => void {\n    const extension = getFileExtension(file);\n    const mimeType = file.type;\n    const allowedMimeTypes = [...ContextImportService.allowedMimeTypes];\n    const allowedExtensions = ContextImportService.allowedExtensions;\n\n    if (\n      allowedMimeTypes.indexOf(mimeType) < 0 &&\n      allowedExtensions.indexOf(extension) < 0\n    ) {\n      return undefined;\n    } else if (\n      mimeType === 'application/json' ||\n      extension === ContextImportService.allowedExtensions\n    ) {\n      return this.importFile;\n    }\n    return undefined;\n  }\n\n  private importAsync(file: File): Observable<DetailedContext> {\n    const doImport = (observer: Observer<DetailedContext>) => {\n      if (file.size >= this.clientSideFileSizeMax) {\n        observer.error(new ImportSizeError());\n        return;\n      }\n      const importer = this.getFileImporter(file);\n      if (importer === undefined) {\n        observer.error(new ImportInvalidFileError());\n        return;\n      }\n\n      importer.call(this, file, observer);\n    };\n\n    return new Observable(doImport);\n  }\n\n  private importFile(file: File, observer: Observer<DetailedContext>) {\n    const reader = new FileReader();\n\n    reader.onload = (event: any) => {\n      try {\n        const context = this.parseContextFromFile(file, event.target.result);\n        observer.next(context);\n      } catch {\n        observer.error(new ImportUnreadableFileError());\n      }\n\n      observer.complete();\n    };\n\n    reader.onerror = () => {\n      observer.error(new ImportUnreadableFileError());\n    };\n\n    reader.readAsText(file, 'UTF-8');\n  }\n\n  private parseContextFromFile(file: File, data: string): DetailedContext {\n    const context: DetailedContext = JSON.parse(data);\n    return context;\n  }\n}\n","import { AsyncPipe, NgFor, NgIf } from '@angular/common';\nimport { Component, Input, OnInit } 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 { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { SpinnerComponent } from '@igo2/common/spinner';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { type AnyLayer, type IgoMap, VectorLayer } from '@igo2/geo';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { ContextService } from '../../context-manager/shared/context.service';\nimport { ContextExportService } from '../shared/context-export.service';\nimport { handleFileExportError } from '../shared/context-export.utils';\nimport { handleFileExportSuccess } from '../shared/context-export.utils';\nimport { ContextImportService } from '../shared/context-import.service';\nimport {\n  handleFileImportError,\n  handleFileImportSuccess\n} from '../shared/context-import.utils';\n\n@Component({\n  selector: 'igo-context-import-export',\n  templateUrl: './context-import-export.component.html',\n  styleUrls: ['./context-import-export.component.scss'],\n  standalone: true,\n  imports: [\n    MatButtonToggleModule,\n    NgIf,\n    FormsModule,\n    MatButtonModule,\n    SpinnerComponent,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatSelectModule,\n    MatOptionModule,\n    MatDividerModule,\n    NgFor,\n    AsyncPipe,\n    IgoLanguageModule\n  ]\n})\nexport class ContextImportExportComponent implements OnInit {\n  public form: UntypedFormGroup;\n  public layers: VectorLayer[];\n  public inputProj = 'EPSG:4326';\n  public loading$ = new BehaviorSubject(false);\n  public forceNaming = false;\n  public layerList: AnyLayer[];\n  public userControlledLayerList: readonly AnyLayer[];\n  public res: DetailedContext;\n  private clientSideFileSizeMax: number;\n  public fileSizeMb: number;\n  public activeImportExport = 'import';\n\n  @Input() map: IgoMap;\n\n  constructor(\n    private contextImportService: ContextImportService,\n    private contextExportService: ContextExportService,\n    private messageService: MessageService,\n    private formBuilder: UntypedFormBuilder,\n    private config: ConfigService,\n    private contextService: ContextService\n  ) {\n    this.buildForm();\n  }\n\n  ngOnInit() {\n    const configFileSizeMb = this.config.getConfig(\n      'importExport.clientSideFileSizeMaxMb'\n    );\n    this.clientSideFileSizeMax =\n      (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);\n    this.fileSizeMb = this.clientSideFileSizeMax / Math.pow(1024, 2);\n\n    this.layerList = this.map.layerController.all;\n    this.userControlledLayerList = this.map.layerController.treeLayers;\n  }\n\n  importFiles(files: File[]) {\n    this.loading$.next(true);\n    for (const file of files) {\n      this.contextImportService\n        .import(file)\n        .pipe(take(1))\n        .subscribe(\n          (context: DetailedContext) => this.onFileImportSuccess(file, context),\n          (error: Error) => this.onFileImportError(file, error),\n          () => {\n            this.loading$.next(false);\n          }\n        );\n    }\n  }\n\n  handleExportFormSubmit(contextOptions) {\n    this.loading$.next(true);\n    this.res = this.contextService.getContextFromLayers(\n      this.map,\n      contextOptions.layers,\n      contextOptions.name,\n      false\n    );\n    this.res.imported = true;\n    this.contextExportService\n      .export(this.res)\n      .pipe(take(1))\n      .subscribe({\n        error: (error: Error) => this.onFileExportError(error),\n        complete: () => {\n          this.onFileExportSuccess();\n          this.loading$.next(false);\n        }\n      });\n  }\n\n  private buildForm() {\n    this.form = this.formBuilder.group({\n      layers: ['', [Validators.required]],\n      name: ['', [Validators.required]]\n    });\n  }\n\n  private onFileImportSuccess(file: File, context: DetailedContext) {\n    handleFileImportSuccess(\n      file,\n      context,\n      this.messageService,\n      this.contextService\n    );\n  }\n\n  private onFileImportError(file: File, error: Error) {\n    this.loading$.next(false);\n    handleFileImportError(file, error, this.messageService, this.fileSizeMb);\n  }\n\n  private onFileExportError(error: Error) {\n    this.loading$.next(false);\n    handleFileExportError(error, this.messageService);\n  }\n\n  private onFileExportSuccess() {\n    handleFileExportSuccess(this.messageService);\n  }\n\n  selectAll(e) {\n    if (e._selected) {\n      this.form.controls.layers.setValue(this.userControlledLayerList);\n      e._selected = true;\n    }\n    if (e._selected === false) {\n      this.form.controls.layers.setValue([]);\n    }\n  }\n\n  onImportExportChange(event) {\n    this.activeImportExport = event.value;\n  }\n}\n","<div class=\"import-export-toggle mat-typography\">\n  <mat-button-toggle-group\n    [value]=\"activeImportExport\"\n    (change)=\"onImportExportChange($event)\"\n  >\n    <mat-button-toggle [value]=\"'import'\">\n      {{ 'igo.geo.importExportForm.importTabTitle' | translate }}\n    </mat-button-toggle>\n    <mat-button-toggle [value]=\"'export'\">\n      {{ 'igo.geo.importExportForm.exportTabTitle' | translate }}\n    </mat-button-toggle>\n  </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"activeImportExport === 'import'\">\n  <form class=\"igo-form\">\n    <div class=\"igo-form-button-group\">\n      <button\n        mat-raised-button\n        type=\"button\"\n        (click)=\"fileInput.click()\"\n        [disabled]=\"loading$ | async\"\n      >\n        {{ 'igo.geo.importExportForm.importButton' | translate }}\n      </button>\n      <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n      <input\n        #fileInput\n        type=\"file\"\n        [style.display]=\"'none'\"\n        (click)=\"fileInput.value = null\"\n        (change)=\"importFiles($any($event.target).files)\"\n      />\n    </div>\n  </form>\n  <section class=\"mat-typography\">\n    <h4>{{ 'igo.geo.importExportForm.importClarifications' | translate }}</h4>\n    <ul>\n      <li>\n        {{\n          'igo.geo.importExportForm.importSizeMax'\n            | translate: { size: fileSizeMb }\n        }}\n      </li>\n    </ul>\n  </section>\n</div>\n\n<form\n  class=\"igo-form\"\n  *ngIf=\"activeImportExport === 'export'\"\n  [formGroup]=\"form\"\n>\n  <div class=\"igo-input-container\">\n    <mat-form-field class=\"example-full-width\">\n      <mat-label>{{\n        'igo.context.contextImportExport.export.exportContextName' | translate\n      }}</mat-label>\n      <input formControlName=\"name\" matInput [value]=\"\" />\n    </mat-form-field>\n  </div>\n  <div class=\"igo-input-container\">\n    <mat-form-field>\n      <mat-label>{{\n        'igo.context.contextImportExport.export.exportPlaceHolder' | translate\n      }}</mat-label>\n      <mat-select formControlName=\"layers\" multiple>\n        <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n          {{\n            'igo.context.contextImportExport.export.exportSelectAll' | translate\n          }}\n        </mat-option>\n        <mat-divider></mat-divider>\n        <mat-option\n          *ngFor=\"let layer of userControlledLayerList\"\n          [value]=\"layer\"\n          >{{ layer.title }}</mat-option\n        >\n      </mat-select>\n    </mat-form-field>\n  </div>\n  <div class=\"igo-form-button-group\">\n    <button\n      mat-raised-button\n      type=\"button\"\n      [disabled]=\"!form.valid || (loading$ | async)\"\n      (click)=\"handleExportFormSubmit(form.value)\"\n    >\n      {{ 'igo.geo.importExportForm.exportButton' | translate }}\n    </button>\n    <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n  </div>\n</form>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ContextImportExportComponent } from './context-import-export/context-import-export.component';\n\n/**\n * @deprecated import the ContextImportExportComponent directly\n */\n@NgModule({\n  imports: [ContextImportExportComponent],\n  exports: [ContextImportExportComponent]\n})\nexport class IgoContextImportExportModule {\n  static forRoot(): ModuleWithProviders<IgoContextImportExportModule> {\n    return {\n      ngModule: IgoContextImportExportModule\n    };\n  }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n  UntypedFormBuilder,\n  UntypedFormGroup\n} 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 { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { Clipboard, ObjectUtils } from '@igo2/utils';\n\nimport { Context } from '../shared/context.interface';\n\n@Component({\n  selector: 'igo-context-form',\n  templateUrl: './context-form.component.html',\n  styleUrls: ['./context-form.component.scss'],\n  standalone: true,\n  imports: [\n    FormsModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    NgIf,\n    MatButtonModule,\n    MatTooltipModule,\n    MatIconModule,\n    IgoLanguageModule\n  ]\n})\nexport class ContextFormComponent implements OnInit {\n  public form: UntypedFormGroup;\n  public prefix: string;\n\n  @Input()\n  get btnSubmitText(): string {\n    return this._btnSubmitText;\n  }\n  set btnSubmitText(value: string) {\n    this._btnSubmitText = value;\n  }\n  private _btnSubmitText: string;\n\n  @Input()\n  get context(): Context {\n    return this._context;\n  }\n  set context(value: Context) {\n    this._context = value;\n    this.buildForm();\n  }\n  private _context: Context;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n  private _disabled = false;\n\n  // TODO: replace any by ContextOptions or Context\n  @Output() submitForm = new EventEmitter<any>();\n  @Output() clone = new EventEmitter<any>();\n  @Output() delete = new EventEmitter<any>();\n\n  constructor(\n    private formBuilder: UntypedFormBuilder,\n    private messageService: MessageService\n  ) {}\n\n  ngOnInit(): void {\n    this.buildForm();\n  }\n\n  public handleFormSubmit(value) {\n    let inputs = Object.assign({}, value);\n    inputs = ObjectUtils.removeNull(inputs);\n    inputs.uri = inputs.uri.replace(' ', '');\n    if (inputs.uri) {\n      inputs.uri = this.prefix + '-' + inputs.uri;\n    } else {\n      inputs.uri = this.prefix;\n    }\n    this.submitForm.emit(inputs);\n  }\n\n  public copyTextToClipboard() {\n    const text = this.prefix + '-' + this.form.value.uri.replace(' ', '');\n    const successful = Clipboard.copy(text);\n    if (successful) {\n      this.messageService.success(\n        'igo.context.contextManager.dialog.copyMsg',\n        'igo.context.contextManager.dialog.copyTitle'\n      );\n    }\n  }\n\n  private buildForm(): void {\n    const context: any = this.context || {};\n\n    const uriSplit = context.uri.split('-');\n    this.prefix = uriSplit.shift();\n    const uri = uriSplit.join('-');\n\n    this.form = this.formBuilder.group({\n      title: [context.title],\n      uri: [uri || ' ']\n    });\n  }\n}\n","<form\n  class=\"igo-form\"\n  [formGroup]=\"form\"\n  (ngSubmit)=\"handleFormSubmit(form.value)\"\n>\n  <mat-form-field class=\"full-width\">\n    <input\n      matInput\n      required\n      maxlength=\"128\"\n      [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n      formControlName=\"title\"\n    />\n    <mat-error>\n      {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n    </mat-error>\n  </mat-form-field>\n\n  <mat-form-field id=\"uriInput\" class=\"full-width\">\n    <span *ngIf=\"prefix\" class=\"prefix\">{{ prefix }}-</span>\n    <span class=\"fieldWrapper\">\n      <input\n        matInput\n        maxlength=\"64\"\n        floatLabel=\"always\"\n        [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n        formControlName=\"uri\"\n      />\n    </span>\n  </mat-form-field>\n\n  <button\n    id=\"copyButton\"\n    type=\"button\"\n    mat-icon-button\n    tooltip-position=\"below\"\n    matTooltipShowDelay=\"500\"\n    [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\n    color=\"primary\"\n    (click)=\"copyTextToClipboard()\"\n  >\n    <mat-icon>content_copy</mat-icon>\n  </button>\n\n  <div class=\"igo-form-button-group\">\n    <button\n      mat-raised-button\n      type=\"submit\"\n      [disabled]=\"!form.valid || disabled\"\n    >\n      {{ 'igo.context.contextManager.form.edit' | translate }}\n    </button>\n  </div>\n</form>\n","import { NgIf } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { ContextFormComponent } from '../context-form/context-form.component';\nimport { Context } from '../shared/context.interface';\n\n@Component({\n  selector: 'igo-context-edit',\n  templateUrl: './context-edit.component.html',\n  standalone: true,\n  imports: [NgIf, ContextFormComponent, IgoLanguageModule]\n})\nexport class ContextEditComponent {\n  @Input()\n  get context(): Context {\n    return this._context;\n  }\n  set context(value: Context) {\n    this._context = value;\n    this.refresh();\n  }\n  private _context: Context;\n\n  @Output() submitForm = new EventEmitter<Context>();\n\n  constructor(private cd: ChangeDetectorRef) {}\n\n  refresh() {\n    this.cd.detectChanges();\n  }\n}\n","<igo-context-form\n  *ngIf=\"context\"\n  [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n  [context]=\"context\"\n  (submitForm)=\"submitForm.emit($event)\"\n>\n</igo-context-form>\n","import {\n  Directive,\n  EventEmitter,\n  HostListener,\n  OnDestroy,\n  OnInit,\n  Output,\n  Self\n} from '@angular/core';\n\nimport { MessageService } from '@igo2/core/message';\n\nimport { Subscription } from 'rxjs';\n\nimport { Context, DetailedContext } from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\nimport { ContextEditComponent } from './context-edit.component';\n\n@Directive({\n  selector: '[igoContextEditBinding]',\n  standalone: true\n})\nexport class ContextEditBindingDirective implements OnInit, OnDestroy {\n  private component: ContextEditComponent;\n  private editedContext$$: Subscription;\n\n  @Output() submitSuccessed = new EventEmitter<Context>();\n\n  @HostListener('submitForm', ['$event'])\n  onEdit(context: Context) {\n    const id = this.component.context.id;\n    this.contextService.update(id, context).subscribe(() => {\n      this.messageService.success(\n        'igo.context.contextManager.dialog.saveMsg',\n        'igo.context.contextManager.dialog.saveTitle',\n        undefined,\n        {\n          value: context.title || this.component.context.title\n        }\n      );\n      this.contextService.setEditedContext(undefined);\n      this.submitSuccessed.emit(context);\n    });\n  }\n\n  constructor(\n    @Self() component: ContextEditComponent,\n    private contextService: ContextService,\n    private messageService: MessageService\n  ) {\n    this.component = component;\n  }\n\n  ngOnInit() {\n    this.editedContext$$ = this.contextService.editedContext$.subscribe(\n      (context) => this.handleEditedContextChange(context)\n    );\n  }\n\n  ngOnDestroy() {\n    this.editedContext$$.unsubscribe();\n  }\n\n  private handleEditedContextChange(context: DetailedContext) {\n    this.component.context = context;\n  }\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport { CollapseDirective } from '@igo2/common/collapsible';\nimport { StopPropagationDirective } from '@igo2/common/stop-propagation';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { StorageService } from '@igo2/core/storage';\n\nimport { TypePermission } from '../shared/context.enum';\nimport { DetailedContext } from '../shared/context.interface';\n\n@Component({\n  selector: 'igo-context-item',\n  templateUrl: './context-item.component.html',\n  styleUrls: ['./context-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    MatListModule,\n    NgClass,\n    NgIf,\n    MatButtonModule,\n    StopPropagationDirective,\n    MatTooltipModule,\n    MatIconModule,\n    CollapseDirective,\n    IgoLanguageModule\n  ]\n})\nexport class ContextItemComponent {\n  public typePermission = TypePermission;\n  public color = 'primary';\n  public collapsed = true;\n\n  @Input() showFavorite = true;\n  @Input() context: DetailedContext;\n  @Input() default: boolean;\n  @Input() selected: boolean;\n\n  @Output() edit = new EventEmitter<DetailedContext>();\n  @Output() delete = new EventEmitter<DetailedContext>();\n  @Output() save = new EventEmitter<DetailedContext>();\n  @Output() clone = new EventEmitter<DetailedContext>();\n  @Output() hide = new EventEmitter<DetailedContext>();\n  @Output() show = new EventEmitter<DetailedContext>();\n  @Output() favorite = new EventEmitter<DetailedContext>();\n  @Output() managePermissions = new EventEmitter<DetailedContext>();\n  @Output() manageTools = new EventEmitter<DetailedContext>();\n\n  get hidden(): boolean {\n    return this.context.hidden;\n  }\n\n  get canShare(): boolean {\n    return this.storageService.get('canShare') === true;\n  }\n\n  constructor(\n    public auth: AuthService,\n    private storageService: StorageService\n  ) {}\n\n  favoriteClick(context: DetailedContext) {\n    this.favorite.emit(context);\n  }\n}\n","<mat-list-item\n  class=\"mat-list-item\"\n  [ngClass]=\"{ 'mat-list-item-light': hidden }\"\n>\n  <button\n    *ngIf=\"auth.authenticated\"\n    matListItemAvatar\n    mat-icon-button\n    igoStopPropagation\n    [matTooltip]=\"\n      auth.authenticated\n        ? ('igo.context.contextManager.favorite' | translate)\n        : ''\n    \"\n    matTooltipShowDelay=\"500\"\n    [color]=\"default ? 'primary' : 'default'\"\n    (click)=\"favoriteClick(context)\"\n  >\n    <mat-icon *ngIf=\"!context.iconImage\">{{\n      context.icon\n        ? context.icon\n        : context.scope === 'public'\n          ? 'public'\n          : 'star'\n    }}</mat-icon>\n    <img *ngIf=\"context.iconImage\" [src]=\"context.iconImage\" />\n  </button>\n  <button\n    matListItemAvatar\n    *ngIf=\"!auth.authenticated && showFavorite\"\n    mat-icon-button\n    igoStopPropagation\n    [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\n    matTooltipShowDelay=\"500\"\n    [color]=\"default ? 'primary' : 'default'\"\n    (click)=\"favoriteClick(context)\"\n  >\n    <mat-icon>star</mat-icon>\n  </button>\n  <span matListItemTitle>{{ context.title }}</span>\n\n  <div\n    *ngIf=\"auth.authenticated\"\n    matListItemMeta\n    igoStopPropagation\n    class=\"igo-actions-container\"\n  >\n    <button\n      *ngIf=\"\n        collapsed &&\n        selected &&\n        (context.permission === typePermission[typePermission.write] ||\n          context.imported)\n      \"\n      class=\"save-button\"\n      mat-icon-button\n      [matTooltip]=\"'igo.context.contextManager.save' | translate\"\n      matTooltipShowDelay=\"500\"\n      [color]=\"color\"\n      (click)=\"save.emit(context)\"\n    >\n      <mat-icon>save</mat-icon>\n    </button>\n\n    <div #actions class=\"igo-actions-expand-container\">\n      <button\n        *ngIf=\"canShare && !context.imported\"\n        mat-icon-button\n        [matTooltip]=\"\n          'igo.context.contextManager.managePermissions' | translate\n        \"\n        matTooltipShowDelay=\"500\"\n        [color]=\"color\"\n        (click)=\"managePermissions.emit(context)\"\n      >\n        <mat-icon>manage_accounts</mat-icon>\n      </button>\n\n      <button\n        *ngIf=\"!context.imported\"\n        class=\"clone-button\"\n        mat-icon-button\n        [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n        matTooltipShowDelay=\"500\"\n        [color]=\"color\"\n        (click)=\"clone.emit(context)\"\n      >\n        <mat-icon>content_copy</mat-icon>\n      </button>\n\n      <button\n        *ngIf=\"\n          context.permission === typePermission[typePermission.write] &&\n          !context.imported\n        \"\n        class=\"edit-button\"\n        mat-icon-button\n        [color]=\"color\"\n        [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n        matTooltipShowDelay=\"500\"\n        (click)=\"edit.emit(context)\"\n      >\n        <mat-icon>edit</mat-icon>\n      </button>\n\n      <button\n        *ngIf=\"!context.hidden && !context.imported\"\n        class=\"hide-button\"\n        mat-icon-button\n        [color]=\"color\"\n        [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n        matTooltipShowDelay=\"500\"\n        (click)=\"hide.emit(context)\"\n      >\n        <mat-icon>visibility</mat-icon>\n      </button>\n\n      <button\n        *ngIf=\"context.hidden && !context.imported\"\n        class=\"hide-button\"\n        mat-icon-button\n        [color]=\"color\"\n        [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n        matTooltipShowDelay=\"500\"\n        (click)=\"show.emit(context)\"\n      >\n        <mat-icon>visibility_off</mat-icon>\n      </button>\n\n      <button\n        *ngIf=\"\n          context.permission === typePermission[typePermission.write] ||\n          context.imported\n        \"\n        class=\"delete-button\"\n        mat-icon-button\n        color=\"warn\"\n        [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\n        matTooltipShowDelay=\"500\"\n        (click)=\"delete.emit(context)\"\n      >\n        <mat-icon>delete</mat-icon>\n      </button>\n    </div>\n\n    <button\n      class=\"actions-button\"\n      mat-icon-button\n      igoCollapse\n      [color]=\"color\"\n      [target]=\"actions\"\n      [collapsed]=\"collapsed\"\n      (click)=\"collapsed = !collapsed\"\n    >\n      <mat-icon>more_horiz</mat-icon>\n    </button>\n  </div>\n</mat-list-item>\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n  MatDialogActions,\n  MatDialogContent,\n  MatDialogRef,\n  MatDialogTitle\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\n@Component({\n  selector: 'igo-bookmark-dialog',\n  templateUrl: './bookmark-dialog.component.html',\n  standalone: true,\n  imports: [\n    MatDialogTitle,\n    MatDialogContent,\n    MatFormFieldModule,\n    MatInputModule,\n    FormsModule,\n    MatDialogActions,\n    MatButtonModule,\n    IgoLanguageModule\n  ]\n})\nexport class BookmarkDialogComponent {\n  public title: string;\n\n  constructor(public dialogRef: MatDialogRef<BookmarkDialogComponent>) {}\n}\n","<h1 mat-dialog-title class=\"mat-typography\">\n  {{ 'igo.context.bookmarkButton.dialog.title' | translate }}\n</h1>\n<div mat-dialog-content class=\"mat-typography\">\n  <mat-form-field>\n    <input\n      matInput\n      required\n      autocomplete=\"off\"\n      maxlength=\"128\"\n      [placeholder]=\"\n        'igo.context.bookmarkButton.dialog.placeholder' | translate\n      \"\n      [(ngModel)]=\"title\"\n    />\n  </mat-form-field>\n</div>\n<div mat-dialog-actions>\n  <button\n    mat-button\n    color=\"primary\"\n    [disabled]=\"!title\"\n    (click)=\"dialogRef.close(title)\"\n  >\n    {{ 'igo.common.confirmDialog.confirmBtn' | translate }}\n  </button>\n  <button mat-button (click)=\"dialogRef.close(false)\">\n    {{ 'igo.common.confirmDialog.cancelBtn' | translate }}\n  </button>\n</div>\n","export enum ContextListControlsEnum {\n  always = 'always',\n  never = 'never',\n  default = 'default'\n}\n","import { AsyncPipe, KeyValuePipe, NgFor, NgIf } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport {\n  ActionStore,\n  ActionbarComponent,\n  ActionbarMode\n} from '@igo2/common/action';\nimport { CollapsibleComponent } from '@igo2/common/collapsible';\nimport { ListComponent, ListItemDirective } from '@igo2/common/list';\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { StorageService } from '@igo2/core/storage';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { BehaviorSubject, ReplaySubject, Subscription, timer } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { debounce } from 'rxjs/operators';\n\nimport { BookmarkDialogComponent } from '../../context-map-button/bookmark-button/bookmark-dialog.component';\nimport { ContextItemComponent } from '../context-item/context-item.component';\nimport {\n  ContextProfils,\n  ContextServiceOptions,\n  ContextUserPermission,\n  ContextsList,\n  DetailedContext\n} from '../shared/context.interface';\nimport { ContextListControlsEnum } from './context-list.enum';\n\n@Component({\n  selector: 'igo-context-list',\n  templateUrl: './context-list.component.html',\n  styleUrls: ['./context-list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ListComponent,\n    NgIf,\n    MatFormFieldModule,\n    MatInputModule,\n    FormsModule,\n    MatButtonModule,\n    MatIconModule,\n    MatTooltipModule,\n    ActionbarComponent,\n    MatMenuModule,\n    NgFor,\n    MatCheckboxModule,\n    CollapsibleComponent,\n    ContextItemComponent,\n    ListItemDirective,\n    AsyncPipe,\n    KeyValuePipe,\n    IgoLanguageModule\n  ]\n})\nexport class ContextListComponent implements OnInit, OnDestroy {\n  public contextConfigs: ContextServiceOptions;\n  private contextsInitial: ContextsList = { ours: [] };\n  contexts$ = new BehaviorSubject<ContextsList>(this.contextsInitial);\n\n  change$ = new ReplaySubject<void>(1);\n\n  private change$$: Subscription;\n\n  @Input()\n  get contexts(): ContextsList {\n    return this._contexts;\n  }\n  set contexts(value: ContextsList) {\n    this._contexts = value;\n    this.next();\n  }\n  private _contexts: ContextsList = { ours: [] };\n\n  @Input() selectedContext: DetailedContext;\n\n  @Input() map: IgoMap;\n\n  @Input()\n  get defaultContextId(): string {\n    return this.contextConfigs\n      ? this._defaultContextId\n      : (this.storageService.get('favorite.context.uri') as string) ||\n          this._defaultContextId;\n  }\n  set defaultContextId(value: string) {\n    this._defaultContextId = value;\n  }\n  private _defaultContextId: string;\n\n  public collapsed: { contextScope }[] = [];\n\n  @Output() select = new EventEmitter<DetailedContext>();\n  @Output() unselect = new EventEmitter<DetailedContext>();\n  @Output() edit = new EventEmitter<DetailedContext>();\n  @Output() delete = new EventEmitter<DetailedContext>();\n  @Output() save = new EventEmitter<DetailedContext>();\n  @Output() clone = new EventEmitter<DetailedContext>();\n  @Output() create = new EventEmitter<{ title: string; empty: boolean }>();\n  @Output() hide = new EventEmitter<DetailedContext>();\n  @Output() show = new EventEmitter<DetailedContext>();\n  @Output() showHiddenContexts = new EventEmitter<boolean>();\n  @Output() favorite = new EventEmitter<DetailedContext>();\n  @Output() managePermissions = new EventEmitter<DetailedContext>();\n  @Output() manageTools = new EventEmitter<DetailedContext>();\n  @Output() filterPermissionsChanged = new EventEmitter<\n    ContextUserPermission[]\n  >();\n\n  public titleMapping = {\n    ours: 'igo.context.contextManager.ourContexts',\n    shared: 'igo.context.contextManager.sharedContexts',\n    public: 'igo.context.contextManager.publicContexts'\n  };\n\n  public users: ContextProfils[];\n  public permissions: ContextUserPermission[] = [];\n\n  public actionStore = new ActionStore([]);\n  public actionbarMode = ActionbarMode.Overlay;\n\n  public color = 'primary';\n\n  public showHidden = false;\n\n  /**\n   * Context filter term\n   */\n  @Input()\n  set term(value: string) {\n    this._term = value;\n    this.next();\n  }\n  get term(): string {\n    return this._term;\n  }\n  public _term = '';\n\n  get sortedAlpha(): boolean {\n    return this._sortedAlpha;\n  }\n  set sortedAlpha(value: boolean) {\n    this._sortedAlpha = value;\n    this.next();\n  }\n  private _sortedAlpha: boolean = undefined;\n\n  public showContextFilter = ContextListControlsEnum.always;\n\n  public thresholdToFilter = 5;\n\n  get isEmpty(): boolean {\n    return (\n      !this.contexts.ours.length &&\n      !this.contexts.public?.length &&\n      !this.contexts.shared?.length\n    );\n  }\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    public configService: ConfigService,\n    public auth: AuthService,\n    private dialog: MatDialog,\n    private languageService: LanguageService,\n    private storageService: StorageService\n  ) {\n    this.contextConfigs = this.configService.getConfig('context');\n  }\n\n  ngOnInit() {\n    this.change$$ = this.change$\n      .pipe(debounce(() => timer(50)))\n      .subscribe(() => {\n        this.contexts$.next(this.filterContextsList(this.contexts));\n      });\n\n    this.actionStore.load([\n      {\n        id: 'emptyContext',\n        title: this.languageService.translate.instant(\n          'igo.context.contextManager.emptyContext'\n        ),\n        icon: 'star',\n        tooltip: this.languageService.translate.instant(\n          'igo.context.contextManager.emptyContextTooltip'\n        ),\n        handler: () => {\n          this.createContext(true);\n        }\n      },\n      {\n        id: 'contextFromMap',\n        title: this.languageService.translate.instant(\n          'igo.context.contextManager.contextMap'\n        ),\n        icon: 'map',\n        tooltip: this.languageService.translate.instant(\n          'igo.context.contextManager.contextMapTooltip'\n        ),\n        handler: () => {\n          this.createContext(false);\n        }\n      }\n    ]);\n  }\n\n  private next() {\n    this.change$.next();\n  }\n\n  private filterContextsList(contexts: ContextsList): ContextsList {\n    if (this.term === '') {\n      if (this.sortedAlpha) {\n        contexts = this.sortContextsList(contexts);\n      }\n      return contexts;\n    } else {\n      const ours = contexts.ours.filter((context) => {\n        const filterNormalized = this.term\n          .toLowerCase()\n          .normalize('NFD')\n          .replace(/[\\u0300-\\u036f]/g, '');\n        const contextTitleNormalized = context.title\n          .toLowerCase()\n          .normalize('NFD')\n          .replace(/[\\u0300-\\u036f]/g, '');\n        return contextTitleNormalized.includes(filterNormalized);\n      });\n\n      let updateContexts: ContextsList = {\n        ours\n      };\n\n      if (this.contexts.public) {\n        const publics = contexts.public.filter((context) => {\n          const filterNormalized = this.term\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '');\n          const contextTitleNormalized = context.title\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '');\n          return contextTitleNormalized.includes(filterNormalized);\n        });\n        updateContexts.public = publics;\n      }\n\n      if (this.contexts.shared) {\n        const shared = contexts.shared.filter((context) => {\n          const filterNormalized = this.term\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '');\n          const contextTitleNormalized = context.title\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '');\n          return contextTitleNormalized.includes(filterNormalized);\n        });\n        updateContexts.shared = shared;\n      }\n\n      if (this.sortedAlpha) {\n        updateContexts = this.sortContextsList(updateContexts);\n      }\n      return updateContexts;\n    }\n  }\n\n  ngOnDestroy() {\n    this.change$$.unsubscribe();\n  }\n\n  public showFilter() {\n    switch (this.showContextFilter) {\n      case ContextListControlsEnum.always:\n        return true;\n      case ContextListControlsEnum.never:\n        return false;\n      default: {\n        let totalLength = this.contexts.ours.length;\n\n        this.contexts.public\n          ? (totalLength += this.contexts.public.length)\n          : (totalLength += 0);\n\n        this.contexts.shared\n          ? (totalLength += this.contexts.shared.length)\n          : (totalLength += 0);\n        if (totalLength >= this.thresholdToFilter) {\n          return true;\n        }\n        return false;\n      }\n    }\n  }\n\n  sortContextsList(contexts: ContextsList) {\n    if (contexts) {\n      const contextsList = JSON.parse(JSON.stringify(contexts));\n      contextsList.ours.sort((a, b) => {\n        if (this.normalize(a.title) < this.normalize(b.title)) {\n          return -1;\n        }\n        if (this.normalize(a.title) > this.normalize(b.title)) {\n          return 1;\n        }\n        return 0;\n      });\n\n      if (contextsList.shared) {\n        contextsList.shared.sort((a, b) => {\n          if (this.normalize(a.title) < this.normalize(b.title)) {\n            return -1;\n          }\n          if (this.normalize(a.title) > this.normalize(b.title)) {\n            return 1;\n          }\n          return 0;\n        });\n      } else if (contextsList.public) {\n        contextsList.public.sort((a, b) => {\n          if (this.normalize(a.title) < this.normalize(b.title)) {\n            return -1;\n          }\n          if (this.normalize(a.title) > this.normalize(b.title)) {\n            return 1;\n          }\n          return 0;\n        });\n      }\n      return contextsList;\n    }\n  }\n\n  normalize(str: string) {\n    return str\n      .normalize('NFD')\n      .replace(/[\\u0300-\\u036f]/g, '')\n      .toLowerCase();\n  }\n\n  toggleSort() {\n    this.sortedAlpha = !this.sortedAlpha;\n  }\n\n  clearFilter() {\n    this.term = '';\n  }\n\n  createContext(empty?: boolean) {\n    this.dialog\n      .open(BookmarkDialogComponent, { disableClose: false })\n      .afterClosed()\n      .pipe(take(1))\n      .subscribe((title: string) => {\n        if (title) {\n          this.create.emit({ title, empty });\n        }\n      });\n  }\n\n  getPermission(user?): ContextUserPermission {\n    if (user) {\n      const permission = this.permissions.find((p) => p.name === user.name);\n      return permission;\n    }\n  }\n\n  handleToggleCategory(user, parent?) {\n    const permission = this.getPermission(user);\n    if (permission) {\n      permission.checked = !permission.checked;\n      this.storageService.set(\n        'contexts.permissions.' + permission.name,\n        permission.checked\n      );\n      permission.indeterminate = false;\n    }\n\n    if (parent) {\n      let indeterminate = false;\n\n      for (const c of parent.childs) {\n        const cPermission = this.getPermission(c);\n        if (cPermission.checked !== permission.checked) {\n          indeterminate = true;\n          break;\n        }\n      }\n      const parentPermission = this.getPermission(parent);\n      if (parentPermission) {\n        parentPermission.checked = permission.checked;\n        this.storageService.set(\n          'contexts.permissions.' + parentPermission.name,\n          permission.checked\n        );\n        parentPermission.indeterminate = indeterminate;\n      }\n    }\n\n    if (user.childs) {\n      for (const c of user.childs) {\n        const childrenPermission = this.getPermission(c);\n        if (\n          childrenPermission &&\n          childrenPermission.checked !== permission.checked\n        ) {\n          childrenPermission.checked = permission.checked;\n          this.storageService.set(\n            'contexts.permissions.' + childrenPermission.name,\n            permission.checked\n          );\n        }\n      }\n    }\n\n    this.filterPermissionsChanged.emit(this.permissions);\n  }\n\n  hideContext(context: DetailedContext) {\n    context.hidden = true;\n    if (!this.showHidden) {\n      const contexts: ContextsList = { ours: [], shared: [], public: [] };\n      contexts.ours = this.contexts.ours.filter((c) => c.id !== context.id);\n      contexts.shared = this.contexts.shared.filter((c) => c.id !== context.id);\n      contexts.public = this.contexts.public.filter((c) => c.id !== context.id);\n      this.contexts = contexts;\n    }\n    this.hide.emit(context);\n  }\n\n  showContext(context: DetailedContext) {\n    context.hidden = false;\n    this.show.emit(context);\n  }\n}\n","<igo-list [navigation]=\"true\">\n  <div class=\"context-filter-container\">\n    <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n      <mat-label>{{\n        'igo.context.contextManager.filterPlaceHolder' | translate\n      }}</mat-label>\n      <input\n        matInput\n        type=\"text\"\n        [placeholder]=\"\n          'igo.context.contextManager.filterPlaceHolder' | translate\n        \"\n        [(ngModel)]=\"term\"\n      />\n      <button\n        mat-icon-button\n        matSuffix\n        class=\"clear-button\"\n        *ngIf=\"term.length\"\n        aria-label=\"Clear\"\n        color=\"warn\"\n        (click)=\"clearFilter()\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </mat-form-field>\n\n    <div class=\"actions-container\">\n      <button\n        class=\"sort-alpha\"\n        [class.--active]=\"sortedAlpha\"\n        mat-icon-button\n        [matTooltip]=\"\n          'igo.context.contextManager.sortAlphabetically' | translate\n        \"\n        matTooltipShowDelay=\"500\"\n        (click)=\"toggleSort()\"\n      >\n        <mat-icon color=\"primary\">sort_by_alpha</mat-icon>\n      </button>\n\n      <igo-actionbar\n        *ngIf=\"auth.authenticated && contextConfigs\"\n        class=\"add-context-button\"\n        [iconColor]=\"color\"\n        [store]=\"actionStore\"\n        [withIcon]=\"true\"\n        icon=\"add\"\n        [withTitle]=\"actionbarMode === 'overlay'\"\n        [horizontal]=\"false\"\n        [mode]=\"actionbarMode\"\n      >\n      </igo-actionbar>\n\n      <button\n        *ngIf=\"auth.authenticated && contextConfigs\"\n        class=\"users-filter\"\n        mat-icon-button\n        [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n        matTooltipShowDelay=\"500\"\n        [matMenuTriggerFor]=\"accountMenu\"\n      >\n        <mat-icon color=\"primary\">fitler_alt</mat-icon>\n      </button>\n      <mat-menu #accountMenu=\"matMenu\">\n        <ng-container *ngFor=\"let user of users\">\n          <button\n            *ngIf=\"!user.childs; else withSubMenu\"\n            mat-menu-item\n            class=\"profil-menu\"\n          >\n            <mat-checkbox\n              [checked]=\"getPermission(user).checked\"\n              [indeterminate]=\"getPermission(user).indeterminate\"\n              (click)=\"$event.stopPropagation()\"\n              (change)=\"handleToggleCategory(user)\"\n            >\n            </mat-checkbox>\n            <span>{{ user.title }}</span>\n          </button>\n          <ng-template #withSubMenu>\n            <button\n              mat-menu-item\n              [matMenuTriggerFor]=\"subAccountMenu\"\n              class=\"profil-menu\"\n            >\n              <mat-checkbox\n                [checked]=\"getPermission(user).checked\"\n                [indeterminate]=\"getPermission(user).indeterminate\"\n                (click)=\"$event.stopPropagation()\"\n                (change)=\"handleToggleCategory(user)\"\n              >\n              </mat-checkbox>\n              <span>{{ user.title }}</span>\n            </button>\n\n            <mat-menu #subAccountMenu=\"matMenu\">\n              <button\n                mat-menu-item\n                *ngFor=\"let child of user.childs\"\n                class=\"profil-menu\"\n              >\n                <mat-checkbox\n                  [checked]=\"getPermission(child).checked\"\n                  (click)=\"$event.stopPropagation()\"\n                  (change)=\"handleToggleCategory(child, user)\"\n                >\n                  {{ child.title }}\n                </mat-checkbox>\n              </button>\n            </mat-menu>\n          </ng-template>\n        </ng-container>\n\n        <button mat-menu-item class=\"profil-menu\">\n          <mat-checkbox\n            [checked]=\"showHidden\"\n            (click)=\"$event.stopPropagation()\"\n            (change)=\"showHiddenContexts.emit()\"\n          >\n          </mat-checkbox>\n          <span>\n            {{ 'igo.context.contextManager.showHidden' | translate }}\n          </span>\n        </button>\n      </mat-menu>\n    </div>\n  </div>\n\n  <ng-template\n    ngFor\n    let-groupContexts\n    [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n  >\n    <igo-collapsible\n      *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n      [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n      [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n      (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n    >\n      <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n        <igo-context-item\n          igoListItem\n          color=\"accent\"\n          [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n          [context]=\"context\"\n          [default]=\"\n            context.id &&\n            this.defaultContextId &&\n            this.defaultContextId === context.id\n          \"\n          (edit)=\"edit.emit(context)\"\n          (delete)=\"delete.emit(context)\"\n          (clone)=\"clone.emit(context)\"\n          (save)=\"save.emit(context)\"\n          (hide)=\"hideContext(context)\"\n          (show)=\"showContext(context)\"\n          (favorite)=\"favorite.emit(context)\"\n          (manageTools)=\"manageTools.emit(context)\"\n          (managePermissions)=\"managePermissions.emit(context)\"\n          (select)=\"select.emit(context)\"\n          (unselect)=\"unselect.emit(context)\"\n        >\n        </igo-context-item>\n      </ng-template>\n    </igo-collapsible>\n\n    <ng-template\n      *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n      ngFor\n      let-context\n      [ngForOf]=\"$any(groupContexts).value\"\n    >\n      <igo-context-item\n        igoListItem\n        color=\"accent\"\n        [showFavorite]=\"\n          configService.getConfig('favoriteContext4NonAuthenticated')\n        \"\n        [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n        [context]=\"context\"\n        [default]=\"\n          contextConfigs\n            ? defaultContextId === context.id\n            : defaultContextId === context.uri\n        \"\n        (favorite)=\"favorite.emit(context)\"\n        (select)=\"select.emit(context)\"\n        (unselect)=\"unselect.emit(context)\"\n      >\n      </igo-context-item>\n    </ng-template>\n  </ng-template>\n\n  <div *ngIf=\"isEmpty\" class=\"no-result\">\n    {{ 'igo.context.contextManager.noResult' | translate }}\n  </div>\n</igo-list>\n","import {\n  ChangeDetectorRef,\n  Directive,\n  HostListener,\n  OnDestroy,\n  OnInit,\n  Self\n} from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { ConfirmDialogService } from '@igo2/common/confirm-dialog';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport { StorageService } from '@igo2/core/storage';\nimport { MapService } from '@igo2/geo';\n\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport {\n  Context,\n  ContextUserPermission,\n  ContextsList,\n  DetailedContext\n} from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\nimport { ContextListComponent } from './context-list.component';\n\n@Directive({\n  selector: '[igoContextListBinding]',\n  standalone: true,\n  providers: [ConfirmDialogService]\n})\nexport class ContextListBindingDirective implements OnInit, OnDestroy {\n  private component: ContextListComponent;\n  private contexts$$: Subscription;\n  private selectedContext$$: Subscription;\n  private defaultContextId$$: Subscription;\n  private previousMessageId;\n\n  @HostListener('select', ['$event'])\n  onSelect(context: Context) {\n    this.contextService.loadContext(context.uri);\n  }\n\n  @HostListener('edit', ['$event'])\n  onEdit(context: Context) {\n    this.contextService.loadEditedContext(context.uri);\n  }\n\n  @HostListener('save', ['$event'])\n  onSave(context: Context) {\n    const map = this.mapService.getMap();\n    const contextFromMap = this.contextService.getContextFromMap(map);\n\n    const msgSuccess = () => {\n      this.messageService.success(\n        'igo.context.contextManager.dialog.saveMsg',\n        'igo.context.contextManager.dialog.saveTitle',\n        undefined,\n        {\n          value: context.title\n        }\n      );\n    };\n\n    if (context.imported) {\n      contextFromMap.title = context.title;\n      this.contextService.delete(context.id, true);\n      this.contextService.create(contextFromMap).subscribe((contextCreated) => {\n        this.contextService.loadContext(contextCreated.uri);\n        msgSuccess();\n      });\n      return;\n    }\n\n    const changes: DetailedContext = {\n      layers: contextFromMap.layers,\n      map: {\n        view: contextFromMap.map.view\n      }\n    };\n\n    this.contextService.update(context.id, changes).subscribe(() => {\n      msgSuccess();\n    });\n  }\n\n  @HostListener('favorite', ['$event'])\n  onFavorite(context: Context) {\n    if (!context.id) {\n      context.id = context.uri;\n    }\n    this.contextService.setDefault(context.id).subscribe(() => {\n      if (this.previousMessageId) {\n        this.messageService.remove(this.previousMessageId);\n      }\n      this.contextService.defaultContextId$.next(context.id);\n      const messageObj = this.messageService.success(\n        'igo.context.contextManager.dialog.favoriteMsg',\n        'igo.context.contextManager.dialog.favoriteTitle',\n        undefined,\n        {\n          value: context.title\n        }\n      );\n      this.previousMessageId = messageObj.toastId;\n      this.cdRef.detectChanges();\n    });\n  }\n\n  @HostListener('manageTools', ['$event'])\n  onManageTools(context: Context) {\n    this.contextService.loadEditedContext(context.uri);\n  }\n\n  @HostListener('managePermissions', ['$event'])\n  onManagePermissions(context: Context) {\n    this.contextService.loadEditedContext(context.uri);\n  }\n\n  @HostListener('delete', ['$event'])\n  onDelete(context: Context) {\n    const translate = this.languageService.translate;\n    this.confirmDialogService\n      .open(\n        translate.instant('igo.context.contextManager.dialog.confirmDelete')\n      )\n      .subscribe((confirm) => {\n        if (confirm) {\n          this.contextService\n            .delete(context.id, context.imported)\n            .subscribe(() => {\n              this.messageService.info(\n                'igo.context.contextManager.dialog.deleteMsg',\n                'igo.context.contextManager.dialog.deleteTitle',\n                undefined,\n                { value: context.title }\n              );\n            });\n        }\n      });\n  }\n\n  @HostListener('clone', ['$event'])\n  onClone(context: DetailedContext) {\n    const properties = {\n      title: context.title + '-copy',\n      uri: context.uri + '-copy'\n    };\n    this.contextService.clone(context.id, properties).subscribe(() => {\n      this.messageService.success(\n        'igo.context.contextManager.dialog.cloneMsg',\n        'igo.context.contextManager.dialog.cloneTitle',\n        undefined,\n        { value: context.title }\n      );\n    });\n  }\n\n  @HostListener('create', ['$event'])\n  onCreate(opts: { title: string; empty: boolean }) {\n    const { title, empty } = opts;\n    const context = this.contextService.getContextFromMap(\n      this.component.map,\n      empty\n    );\n    context.title = title;\n    this.contextService.create(context).subscribe(() => {\n      this.messageService.success(\n        'igo.context.bookmarkButton.dialog.createMsg',\n        'igo.context.bookmarkButton.dialog.createTitle',\n        undefined,\n        { value: context.title }\n      );\n      this.contextService.loadContext(context.uri);\n    });\n  }\n\n  @HostListener('filterPermissionsChanged')\n  loadContexts() {\n    const permissions = ['none'];\n    for (const p of this.component.permissions) {\n      if (p.checked === true || p.indeterminate === true) {\n        permissions.push(p.name);\n      }\n    }\n\n    this.contextService.loadContexts(permissions, this.component.showHidden);\n  }\n\n  @HostListener('showHiddenContexts')\n  showHiddenContexts() {\n    this.component.showHidden = !this.component.showHidden;\n    this.storageService.set('contexts.showHidden', this.component.showHidden);\n    this.loadContexts();\n  }\n\n  @HostListener('show', ['$event'])\n  onShowContext(context: DetailedContext) {\n    this.contextService.showContext(context.id).subscribe();\n  }\n\n  @HostListener('hide', ['$event'])\n  onHideContext(context: DetailedContext) {\n    this.contextService.hideContext(context.id).subscribe();\n  }\n\n  constructor(\n    @Self() component: ContextListComponent,\n    private contextService: ContextService,\n    private mapService: MapService,\n    private languageService: LanguageService,\n    private confirmDialogService: ConfirmDialogService,\n    private messageService: MessageService,\n    private auth: AuthService,\n    private storageService: StorageService,\n    private cdRef: ChangeDetectorRef\n  ) {\n    this.component = component;\n  }\n\n  ngOnInit() {\n    // Override input contexts\n    this.component.contexts = { ours: [] };\n    this.component.showHidden = this.storageService.get(\n      'contexts.showHidden'\n    ) as boolean;\n\n    this.contexts$$ = this.contextService.contexts$.subscribe((contexts) =>\n      this.handleContextsChange(contexts)\n    );\n\n    this.defaultContextId$$ = this.contextService.defaultContextId$.subscribe(\n      (id) => {\n        this.component.defaultContextId = id;\n      }\n    );\n    const storedContextUri = this.storageService.get(\n      'favorite.context.uri'\n    ) as string;\n    if (storedContextUri && !this.auth.authenticated) {\n      this.contextService.defaultContextId$.next(storedContextUri);\n    }\n\n    // See feature-list.component for an explanation about the debounce time\n    this.selectedContext$$ = this.contextService.context$\n      .pipe(debounceTime(100))\n      .subscribe((context) => (this.component.selectedContext = context));\n\n    this.auth.authenticate$.subscribe((authenticate) => {\n      if (authenticate) {\n        this.contextService.getProfilByUser().subscribe((profils) => {\n          this.component.users = profils;\n          this.component.permissions = [];\n          const profilsAcc = this.component.users.reduce((acc, cur) => {\n            acc = acc.concat(cur);\n            acc = cur.childs ? acc.concat(cur.childs) : acc;\n            return acc;\n          }, []);\n\n          for (const user of profilsAcc) {\n            const permission: ContextUserPermission = {\n              name: user.name,\n              checked: this.storageService.get(\n                'contexts.permissions.' + user.name\n              ) as boolean\n            };\n            if (permission.checked === null) {\n              permission.checked = true;\n            }\n            this.component.permissions.push(permission);\n          }\n\n          const permissions = ['none'];\n          for (const p of this.component.permissions) {\n            if (p.checked === true || p.indeterminate === true) {\n              permissions.push(p.name);\n            }\n          }\n\n          this.contextService.loadContexts(\n            permissions,\n            this.component.showHidden\n          );\n        });\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this.contexts$$.unsubscribe();\n    this.selectedContext$$.unsubscribe();\n    this.defaultContextId$$.unsubscribe();\n  }\n\n  private handleContextsChange(contexts: ContextsList) {\n    this.component.contexts = contexts;\n  }\n}\n","import { KeyValuePipe, NgFor, NgIf } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n  UntypedFormBuilder,\n  UntypedFormControl,\n  UntypedFormGroup\n} from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\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 { MatListModule } from '@angular/material/list';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport { CollapsibleComponent } from '@igo2/common/collapsible';\nimport { ListComponent } from '@igo2/common/list';\nimport { StopPropagationDirective } from '@igo2/common/stop-propagation';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport { Subscription } from 'rxjs';\n\nimport { TypePermission } from '../shared/context.enum';\nimport {\n  Context,\n  ContextPermission,\n  ContextPermissionsList,\n  ContextProfils\n} from '../shared/context.interface';\n\n@Component({\n  selector: 'igo-context-permissions',\n  templateUrl: './context-permissions.component.html',\n  styleUrls: ['./context-permissions.component.scss'],\n  standalone: true,\n  imports: [\n    NgIf,\n    MatRadioModule,\n    FormsModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatAutocompleteModule,\n    NgFor,\n    MatOptionModule,\n    MatButtonModule,\n    ListComponent,\n    CollapsibleComponent,\n    MatListModule,\n    MatIconModule,\n    StopPropagationDirective,\n    MatTooltipModule,\n    KeyValuePipe,\n    IgoLanguageModule\n  ]\n})\nexport class ContextPermissionsComponent implements OnInit {\n  public form: UntypedFormGroup;\n\n  @Input()\n  get context(): Context {\n    return this._context;\n  }\n  set context(value: Context) {\n    this._context = value;\n    this.cd.detectChanges();\n  }\n  private _context: Context;\n\n  @Input()\n  get permissions(): ContextPermissionsList {\n    return this._permissions;\n  }\n  set permissions(value: ContextPermissionsList) {\n    this._permissions = value;\n    this.cd.detectChanges();\n  }\n  private _permissions: ContextPermissionsList;\n\n  get profils(): ContextProfils[] {\n    return this._profils;\n  }\n  set profils(value: ContextProfils[]) {\n    this._profils = value;\n    this.cd.detectChanges();\n  }\n  private _profils: ContextProfils[] = [];\n\n  get canWrite(): boolean {\n    return this.context.permission === TypePermission[TypePermission.write];\n  }\n\n  private baseUrlProfils;\n\n  public formControl = new UntypedFormControl();\n  formValueChanges$$: Subscription;\n\n  @Output() addPermission = new EventEmitter<ContextPermission>();\n  @Output() removePermission = new EventEmitter<ContextPermission>();\n  @Output() scopeChanged = new EventEmitter<Context>();\n\n  constructor(\n    private formBuilder: UntypedFormBuilder,\n    private cd: ChangeDetectorRef,\n    private http: HttpClient,\n    public authService: AuthService,\n    private config: ConfigService\n  ) {}\n\n  ngOnInit(): void {\n    this.buildForm();\n\n    this.baseUrlProfils =\n      this.config.getConfig('context.url') + '/profils-users?';\n\n    this.formValueChanges$$ = this.formControl.valueChanges.subscribe(\n      (value) => {\n        if (value.length) {\n          this.http\n            .get(this.baseUrlProfils + 'q=' + value)\n            .subscribe((profils) => {\n              this.profils = profils as ContextProfils[];\n            });\n          this.profils.filter((profil) => {\n            const filterNormalized = value\n              .toLowerCase()\n              .normalize('NFD')\n              .replace(/[\\u0300-\\u036f]/g, '');\n            const profilTitleNormalized = profil.title\n              .toLowerCase()\n              .normalize('NFD')\n              .replace(/[\\u0300-\\u036f]/g, '');\n            const profilNameNormalized = profil.name\n              .toLowerCase()\n              .normalize('NFD')\n              .replace(/[\\u0300-\\u036f]/g, '');\n            const profilNormalized =\n              profilNameNormalized + profilTitleNormalized;\n            return profilNormalized.includes(filterNormalized);\n          });\n        } else {\n          this.profils = [];\n        }\n      }\n    );\n  }\n\n  displayFn(profil?: ContextProfils): string | undefined {\n    return profil ? profil.title : undefined;\n  }\n\n  public handleFormSubmit(value) {\n    this.addPermission.emit(value);\n  }\n\n  private buildForm(): void {\n    this.form = this.formBuilder.group({\n      profil: [],\n      typePermission: ['read']\n    });\n  }\n\n  onProfilSelected(value) {\n    this.form.setValue({\n      profil: value.name,\n      typePermission: this.form.value.typePermission\n    });\n  }\n}\n","<div *ngIf=\"context\">\n  <div *ngIf=\"!canWrite\" class=\"scopeForm\">\n    <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n    <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n  </div>\n\n  <div *ngIf=\"canWrite\" class=\"scopeForm\">\n    <mat-radio-group\n      [(ngModel)]=\"context.scope\"\n      (change)=\"scopeChanged.emit(context)\"\n    >\n      <mat-radio-button value=\"private\">\n        {{ 'igo.context.permission.scope.private' | translate }}\n      </mat-radio-button>\n      <mat-radio-button value=\"protected\">\n        {{ 'igo.context.permission.scope.shared' | translate }}\n      </mat-radio-button>\n      <mat-radio-button *ngIf=\"authService.isAdmin\" value=\"public\">\n        {{ 'igo.context.permission.scope.public' | translate }}\n      </mat-radio-button>\n    </mat-radio-group>\n  </div>\n\n  <form\n    *ngIf=\"context.scope !== 'private' && canWrite\"\n    [formGroup]=\"form\"\n    (ngSubmit)=\"handleFormSubmit(form.value)\"\n  >\n    <mat-form-field class=\"full-width\">\n      <input\n        matInput\n        required\n        [placeholder]=\"'igo.context.permission.user' | translate\"\n        [formControl]=\"formControl\"\n        [matAutocomplete]=\"auto\"\n      />\n      <mat-autocomplete\n        #auto=\"matAutocomplete\"\n        (optionSelected)=\"onProfilSelected($event.option.value)\"\n        [displayWith]=\"displayFn\"\n      >\n        <mat-option *ngFor=\"let profil of this.profils\" [value]=\"profil\">\n          {{ profil.title }}<br />\n          <small class=\"mat-typography\">{{ profil.name }}</small>\n        </mat-option>\n      </mat-autocomplete>\n      <mat-error>\n        {{ 'igo.context.permission.profilRequired' | translate }}\n      </mat-error>\n    </mat-form-field>\n\n    <mat-radio-group formControlName=\"typePermission\">\n      <mat-radio-button value=\"read\">\n        {{ 'igo.context.permission.read' | translate }}\n      </mat-radio-button>\n      <mat-radio-button value=\"write\">\n        {{ 'igo.context.permission.write' | translate }}\n      </mat-radio-button>\n    </mat-radio-group>\n\n    <div class=\"igo-form-button-group\">\n      <button mat-raised-button type=\"submit\" [disabled]=\"!form.valid\">\n        {{ 'igo.context.permission.addBtn' | translate }}\n      </button>\n    </div>\n  </form>\n\n  <igo-list *ngIf=\"permissions && context.scope !== 'private'\">\n    <ng-template ngFor let-groupPermissions [ngForOf]=\"permissions | keyvalue\">\n      <igo-collapsible\n        *ngIf=\"groupPermissions.value.length\"\n        [title]=\"'igo.context.permission.' + groupPermissions.key | translate\"\n      >\n        <ng-template ngFor let-permission [ngForOf]=\"groupPermissions.value\">\n          <mat-list-item>\n            <mat-icon matListItemIcon>person</mat-icon>\n            <h4 matListItemTitle>\n              {{ permission.profilTitle }}\n              <small class=\"mat-typography\">{{ permission.profil }}</small>\n            </h4>\n\n            <div\n              matListItemMeta\n              igoStopPropagation\n              class=\"igo-actions-container\"\n            >\n              <button\n                *ngIf=\"\n                  canWrite ||\n                  permission.profil === authService.decodeToken().user.sourceId\n                \"\n                mat-icon-button\n                [matTooltip]=\"'igo.context.permission.delete' | translate\"\n                matTooltipShowDelay=\"500\"\n                color=\"warn\"\n                (click)=\"removePermission.emit(permission)\"\n              >\n                <mat-icon>delete</mat-icon>\n              </button>\n            </div>\n          </mat-list-item>\n        </ng-template>\n      </igo-collapsible>\n    </ng-template>\n  </igo-list>\n</div>\n","import {\n  ChangeDetectorRef,\n  Directive,\n  HostListener,\n  OnDestroy,\n  OnInit,\n  Self\n} from '@angular/core';\n\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { Subscription } from 'rxjs';\n\nimport {\n  Context,\n  ContextPermission,\n  DetailedContext\n} from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\nimport { ContextPermissionsComponent } from './context-permissions.component';\n\n@Directive({\n  selector: '[igoContextPermissionsBinding]',\n  standalone: true\n})\nexport class ContextPermissionsBindingDirective implements OnInit, OnDestroy {\n  private component: ContextPermissionsComponent;\n  private editedContext$$: Subscription;\n\n  @HostListener('addPermission', ['$event'])\n  onAddPermission(permission: ContextPermission) {\n    if (!permission.profil) {\n      this.messageService.error(\n        'igo.context.contextManager.errors.addPermissionEmpty',\n        'igo.context.contextManager.errors.addPermissionTitle'\n      );\n      return;\n    }\n    const contextId = this.component.context.id;\n    this.contextService\n      .addPermissionAssociation(\n        contextId,\n        permission.profil,\n        permission.typePermission\n      )\n      .subscribe((profils) => {\n        for (const p of profils) {\n          this.component.permissions[permission.typePermission].push(p);\n        }\n        const profil = permission.profil;\n        this.messageService.success(\n          'igo.context.permission.dialog.addMsg',\n          'igo.context.permission.dialog.addTitle',\n          undefined,\n          { value: profil }\n        );\n        this.cd.detectChanges();\n      });\n  }\n\n  @HostListener('removePermission', ['$event'])\n  onRemovePermission(permission: ContextPermission) {\n    const contextId = this.component.context.id;\n    this.contextService\n      .deletePermissionAssociation(contextId, permission.id)\n      .subscribe(() => {\n        const index = this.component.permissions[\n          permission.typePermission\n        ].findIndex((p) => {\n          return p.id === permission.id;\n        });\n        this.component.permissions[permission.typePermission].splice(index, 1);\n\n        const profil = permission.profil;\n        this.messageService.success(\n          'igo.context.permission.dialog.deleteMsg',\n          'igo.context.permission.dialog.deleteTitle',\n          undefined,\n          { value: profil }\n        );\n        this.cd.detectChanges();\n      });\n  }\n\n  @HostListener('scopeChanged', ['$event'])\n  onScopeChanged(context: Context) {\n    const scope = context.scope;\n    this.contextService.update(context.id, { scope }).subscribe(() => {\n      this.messageService.success(\n        'igo.context.permission.dialog.scopeChangedMsg',\n        'igo.context.permission.dialog.scopeChangedTitle',\n        undefined,\n        { value: 'igo.context.permission.scope.' + scope }\n      );\n    });\n  }\n\n  constructor(\n    @Self() component: ContextPermissionsComponent,\n    private contextService: ContextService,\n    private languageService: LanguageService,\n    private messageService: MessageService,\n    private cd: ChangeDetectorRef\n  ) {\n    this.component = component;\n  }\n\n  ngOnInit() {\n    this.editedContext$$ = this.contextService.editedContext$.subscribe(\n      (context) => this.handleEditedContextChange(context)\n    );\n  }\n\n  ngOnDestroy() {\n    this.editedContext$$.unsubscribe();\n    this.contextService.editedContext$.next(undefined);\n  }\n\n  private handleEditedContextChange(context: DetailedContext) {\n    this.component.context = context;\n\n    if (context) {\n      this.contextService\n        .getPermissions(context.id)\n        .subscribe((permissionsArray) => {\n          permissionsArray = permissionsArray || [];\n          const permissions = {\n            read: permissionsArray.filter((p) => {\n              return p.typePermission.toString() === 'read';\n            }),\n            write: permissionsArray.filter((p) => {\n              return p.typePermission.toString() === 'write';\n            })\n          };\n          return (this.component.permissions = permissions);\n        });\n    }\n  }\n}\n","import { Directive, Input, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { RouteService } from '@igo2/core/route';\nimport {\n  LayerService,\n  MapBrowserComponent,\n  StyleListService,\n  StyleService,\n  isLayerGroupOptions,\n  sortLayersByZindex\n} from '@igo2/geo';\nimport type { AnyLayer, AnyLayerOptions, IgoMap } from '@igo2/geo';\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { Subscription } from 'rxjs';\nimport { debounceTime, filter, first } from 'rxjs/operators';\n\nimport {\n  addImportedFeaturesStyledToMap,\n  addImportedFeaturesToMap\n} from '../../context-import-export/shared/context-import.utils';\nimport { DetailedContext } from './context.interface';\nimport { ContextService } from './context.service';\n\n@Directive({\n  selector: '[igoLayerContext]',\n  standalone: true\n})\nexport class LayerContextDirective implements OnInit, OnDestroy {\n  private context$$: Subscription;\n  private queryParams: Params;\n\n  private contextLayers: AnyLayer[] = [];\n\n  @Input() removeLayersOnContextChange = true;\n\n  get map(): IgoMap {\n    return this.component.map;\n  }\n\n  constructor(\n    private component: MapBrowserComponent,\n    private contextService: ContextService,\n    private layerService: LayerService,\n    private configService: ConfigService,\n    private styleListService: StyleListService,\n    private styleService: StyleService,\n    @Optional() private route: RouteService\n  ) {}\n\n  ngOnInit() {\n    this.context$$ = this.contextService.context$\n      .pipe(filter((context) => context !== undefined))\n      .subscribe((context) => this.handleContextChange(context));\n\n    if (\n      this.route &&\n      this.route.options.visibleOnLayersKey &&\n      this.route.options.visibleOffLayersKey &&\n      this.route.options.contextKey\n    ) {\n      this.route.queryParams\n        .pipe(first((params) => !ObjectUtils.isEmpty(params)))\n        .subscribe((params) => {\n          this.queryParams = params;\n        });\n    }\n  }\n\n  ngOnDestroy() {\n    this.context$$.unsubscribe();\n  }\n\n  private handleContextChange(context: DetailedContext) {\n    if (context.layers === undefined) {\n      return;\n    }\n\n    if (this.removeLayersOnContextChange === true) {\n      this.map.layerController.reset();\n    } else {\n      this.map.layerController.remove(...this.contextLayers);\n    }\n    this.contextLayers = [];\n    this.layerService.unavailableLayers = [];\n\n    const importExportOptions = this.configService.getConfig('importExport');\n\n    this.layerService\n      .createLayers(context.layers, context.uri)\n      .subscribe((layers) => {\n        this.handleAddLayers(layers);\n\n        if (context.extraFeatures) {\n          context.extraFeatures.forEach((featureCollection) => {\n            if (!importExportOptions?.importWithStyle) {\n              addImportedFeaturesToMap(featureCollection, this.map);\n            } else {\n              addImportedFeaturesStyledToMap(\n                featureCollection,\n                this.map,\n                this.styleListService,\n                this.styleService\n              );\n            }\n          });\n        }\n      });\n    if (this.configService.getConfig('importExport.allowToStoreLayer', false)) {\n      this.layerService\n        .createAsyncIdbLayers(context.uri)\n        .pipe(debounceTime(500))\n        .subscribe((layers) => this.handleAddLayers(layers));\n    }\n  }\n\n  private getFlattenOptions(options: AnyLayerOptions[]): AnyLayerOptions[] {\n    return options.reduce((accumulator, option) => {\n      if (isLayerGroupOptions(option)) {\n        const children = option.children\n          ? this.getFlattenOptions(option.children)\n          : [];\n        accumulator.push(option, ...children);\n      } else {\n        accumulator.push(option);\n      }\n      return accumulator;\n    }, []);\n  }\n\n  private handleAddLayers(layers: (AnyLayer | undefined)[]) {\n    const layersFiltrered = layers\n      .filter((layer) => layer)\n      .map((layer) => {\n        layer.visible = this.computeLayerVisibilityFromUrl(layer);\n        return layer;\n      });\n\n    const layersSorted = sortLayersByZindex(layersFiltrered, 'asc');\n    this.contextLayers.concat(layersSorted);\n    this.map.layerController.add(...layersSorted);\n  }\n\n  private computeLayerVisibilityFromUrl(layer: AnyLayer): boolean {\n    const params = this.queryParams;\n    const currentContext = this.contextService.context$.value.uri;\n    const currentLayerid: string = layer.id;\n\n    let visible = layer.visible;\n    if (!params || !currentLayerid) {\n      return visible;\n    }\n\n    const contextParams = params[this.route.options.contextKey as string];\n    if (contextParams === currentContext || !contextParams) {\n      let visibleOnLayersParams = '';\n      let visibleOffLayersParams = '';\n      let visiblelayers: string[] = [];\n      let invisiblelayers: string[] = [];\n\n      if (\n        this.route.options.visibleOnLayersKey &&\n        params[this.route.options.visibleOnLayersKey as string]\n      ) {\n        visibleOnLayersParams =\n          params[this.route.options.visibleOnLayersKey as string];\n      }\n      if (\n        this.route.options.visibleOffLayersKey &&\n        params[this.route.options.visibleOffLayersKey as string]\n      ) {\n        visibleOffLayersParams =\n          params[this.route.options.visibleOffLayersKey as string];\n      }\n\n      /* This order is important because to control whichever\n       the order of * param. First whe open and close everything.*/\n      if (visibleOnLayersParams === '*') {\n        visible = true;\n      }\n      if (visibleOffLayersParams === '*') {\n        visible = false;\n      }\n\n      // After, managing named layer by id (context.json OR id from datasource)\n      visiblelayers = visibleOnLayersParams.split(',');\n      invisiblelayers = visibleOffLayersParams.split(',');\n      if (\n        visiblelayers.indexOf(currentLayerid) > -1 ||\n        visiblelayers.indexOf(currentLayerid.toString()) > -1\n      ) {\n        visible = true;\n      }\n      if (\n        invisiblelayers.indexOf(currentLayerid) > -1 ||\n        invisiblelayers.indexOf(currentLayerid.toString()) > -1\n      ) {\n        visible = false;\n      }\n    }\n\n    return visible;\n  }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\n\nimport { MediaService } from '@igo2/core/media';\nimport {\n  MapBrowserComponent,\n  MapControlsOptions,\n  MapScaleLineOptions,\n  MapViewOptions\n} from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ContextMapView, DetailedContext } from './context.interface';\nimport { ContextService } from './context.service';\n\n@Directive({\n  selector: '[igoMapContext]',\n  standalone: true\n})\nexport class MapContextDirective implements OnInit, OnDestroy {\n  private component: MapBrowserComponent;\n  private context$$: Subscription;\n\n  get map(): IgoMap {\n    return this.component.map;\n  }\n\n  constructor(\n    component: MapBrowserComponent,\n    private contextService: ContextService,\n    private mediaService: MediaService\n  ) {\n    this.component = component;\n  }\n\n  ngOnInit() {\n    this.context$$ = this.contextService.context$\n      .pipe(filter((context) => context !== undefined))\n      .subscribe((context) => this.handleContextChange(context));\n  }\n\n  ngOnDestroy() {\n    this.context$$.unsubscribe();\n  }\n\n  private handleContextChange(context: DetailedContext) {\n    if (context.map === undefined) {\n      return;\n    }\n\n    const viewContext: ContextMapView = context.map.view;\n    if (\n      !this.component.view ||\n      viewContext.keepCurrentView !== true ||\n      context.map.view.projection !== this.map.projection\n    ) {\n      this.component.view = viewContext as MapViewOptions;\n    }\n    if (this.component.map.geolocationController) {\n      this.component.map.geolocationController.updateGeolocationOptions(\n        viewContext\n      );\n    }\n\n    const controlsContext: MapControlsOptions = context.map.controls;\n    if (!this.component.controls && controlsContext) {\n      if (this.mediaService.isMobile()) {\n        if (typeof controlsContext.scaleLine !== 'boolean') {\n          const scaleLineOption =\n            controlsContext.scaleLine as MapScaleLineOptions;\n          if (!scaleLineOption.minWidth) {\n            scaleLineOption.minWidth = Math.min(64, scaleLineOption.minWidth);\n            controlsContext.scaleLine = scaleLineOption;\n          }\n        }\n      }\n      this.component.controls = controlsContext;\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ContextEditBindingDirective } from './context-edit/context-edit-binding.directive';\nimport { ContextEditComponent } from './context-edit/context-edit.component';\nimport { ContextFormComponent } from './context-form/context-form.component';\nimport { ContextItemComponent } from './context-item/context-item.component';\nimport { ContextListBindingDirective } from './context-list/context-list-binding.directive';\nimport { ContextListComponent } from './context-list/context-list.component';\nimport { ContextPermissionsBindingDirective } from './context-permissions/context-permissions-binding.directive';\nimport { ContextPermissionsComponent } from './context-permissions/context-permissions.component';\nimport { LayerContextDirective } from './shared/layer-context.directive';\nimport { MapContextDirective } from './shared/map-context.directive';\n\n/**\n * @deprecated import the components/directives directly or CONTEXT_MANAGER_DIRECTIVES for the set\n */\n@NgModule({\n  imports: [\n    ContextListComponent,\n    ContextListBindingDirective,\n    ContextItemComponent,\n    ContextFormComponent,\n    ContextEditComponent,\n    ContextEditBindingDirective,\n    ContextPermissionsComponent,\n    ContextPermissionsBindingDirective,\n    LayerContextDirective,\n    MapContextDirective\n  ],\n  exports: [\n    ContextListComponent,\n    ContextListBindingDirective,\n    ContextItemComponent,\n    ContextFormComponent,\n    ContextEditComponent,\n    ContextEditBindingDirective,\n    ContextPermissionsComponent,\n    ContextPermissionsBindingDirective,\n    LayerContextDirective,\n    MapContextDirective\n  ]\n})\nexport class IgoContextManagerModule {\n  static forRoot(): ModuleWithProviders<IgoContextManagerModule> {\n    return {\n      ngModule: IgoContextManagerModule\n    };\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { take } from 'rxjs/operators';\n\nimport { ContextService } from '../../context-manager/shared/context.service';\nimport { BookmarkDialogComponent } from './bookmark-dialog.component';\n\n@Component({\n  selector: 'igo-bookmark-button',\n  templateUrl: './bookmark-button.component.html',\n  styleUrls: ['./bookmark-button.component.scss'],\n  standalone: true,\n  imports: [MatButtonModule, MatTooltipModule, MatIconModule, IgoLanguageModule]\n})\nexport class BookmarkButtonComponent {\n  @Input()\n  get map(): IgoMap {\n    return this._map;\n  }\n  set map(value: IgoMap) {\n    this._map = value;\n  }\n  private _map: IgoMap;\n\n  @Input()\n  get color(): string {\n    return this._color;\n  }\n  set color(value: string) {\n    this._color = value;\n  }\n  private _color: string;\n\n  constructor(\n    private dialog: MatDialog,\n    private contextService: ContextService,\n    private messageService: MessageService\n  ) {}\n\n  createContext() {\n    this.dialog\n      .open(BookmarkDialogComponent, { disableClose: false })\n      .afterClosed()\n      .pipe(take(1))\n      .subscribe((title) => {\n        if (title) {\n          const context = this.contextService.getContextFromMap(this.map);\n          context.title = title;\n          this.contextService.create(context).subscribe(() => {\n            this.messageService.success(\n              'igo.context.bookmarkButton.dialog.createMsg',\n              'igo.context.bookmarkButton.dialog.createTitle',\n              undefined,\n              { value: context.title }\n            );\n            this.contextService.loadContext(context.uri);\n          });\n        }\n      });\n  }\n}\n","<div class=\"igo-bookmark-button-container\">\n  <button\n    mat-icon-button\n    [matTooltip]=\"'igo.context.bookmarkButton.create' | translate\"\n    matTooltipPosition=\"above\"\n    [color]=\"color\"\n    (click)=\"createContext()\"\n  >\n    <mat-icon>star</mat-icon>\n  </button>\n</div>\n","import { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n  MatDialogActions,\n  MatDialogContent,\n  MatDialogRef,\n  MatDialogTitle\n} from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\n\n@Component({\n  selector: 'igo-poi-dialog',\n  templateUrl: './poi-dialog.component.html',\n  standalone: true,\n  imports: [\n    MatDialogTitle,\n    MatDialogContent,\n    MatFormFieldModule,\n    MatInputModule,\n    FormsModule,\n    MatDialogActions,\n    MatButtonModule,\n    IgoLanguageModule\n  ]\n})\nexport class PoiDialogComponent {\n  public title: string;\n\n  constructor(public dialogRef: MatDialogRef<PoiDialogComponent>) {}\n}\n","<h1 mat-dialog-title class=\"mat-typography\">\n  {{ 'igo.context.poiButton.dialog.title' | translate }}\n</h1>\n<div mat-dialog-content>\n  <mat-form-field>\n    <input\n      matInput\n      required\n      autocomplete=\"off\"\n      [placeholder]=\"'igo.context.poiButton.dialog.placeholder' | translate\"\n      [(ngModel)]=\"title\"\n    />\n  </mat-form-field>\n</div>\n<div mat-dialog-actions>\n  <button\n    mat-button\n    color=\"primary\"\n    [disabled]=\"!title\"\n    (click)=\"dialogRef.close(title)\"\n  >\n    {{ 'igo.common.confirmDialog.confirmBtn' | translate }}\n  </button>\n  <button mat-button (click)=\"dialogRef.close(false)\">\n    {{ 'igo.common.confirmDialog.cancelBtn' | translate }}\n  </button>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { EMPTY, Observable } from 'rxjs';\n\nimport { Poi } from './poi.interface';\n\n@Injectable()\nexport class PoiService {\n  private baseUrl: string;\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService\n  ) {\n    this.baseUrl = this.config.getConfig('context.url');\n  }\n\n  get(): Observable<Poi[]> {\n    if (!this.baseUrl) {\n      return EMPTY;\n    }\n\n    const url = this.baseUrl + '/pois';\n    return this.http.get<Poi[]>(url);\n  }\n\n  delete(id: string): Observable<void> {\n    const url = this.baseUrl + '/pois/' + id;\n    return this.http.delete<void>(url);\n  }\n\n  create(context: Poi): Observable<Poi> {\n    const url = this.baseUrl + '/pois';\n    return this.http.post<Poi>(url, context);\n  }\n}\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { AuthService } from '@igo2/auth';\nimport { ConfirmDialogService } from '@igo2/common/confirm-dialog';\nimport { StopPropagationDirective } from '@igo2/common/stop-propagation';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport type { IgoMap } from '@igo2/geo';\n\nimport * as oleasing from 'ol/easing';\nimport olPoint from 'ol/geom/Point';\nimport * as olproj from 'ol/proj';\n\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { PoiDialogComponent } from './poi-dialog.component';\nimport { Poi } from './shared/poi.interface';\nimport { PoiService } from './shared/poi.service';\n\n@Component({\n  selector: 'igo-poi-button',\n  templateUrl: './poi-button.component.html',\n  styleUrls: ['./poi-button.component.scss'],\n  standalone: true,\n  imports: [\n    MatSelectModule,\n    MatOptionModule,\n    MatButtonModule,\n    StopPropagationDirective,\n    MatIconModule,\n    MatDividerModule,\n    NgFor,\n    IgoLanguageModule\n  ],\n  providers: [PoiService]\n})\nexport class PoiButtonComponent implements OnInit, OnDestroy {\n  @Input()\n  get map(): IgoMap {\n    return this._map;\n  }\n  set map(value: IgoMap) {\n    this._map = value;\n  }\n  private _map: IgoMap;\n\n  @Input()\n  get color(): string {\n    return this._color;\n  }\n  set color(value: string) {\n    this._color = value;\n  }\n  private _color: string;\n\n  public pois: Poi[];\n  private authenticate$$: Subscription;\n\n  constructor(\n    private dialog: MatDialog,\n    private authService: AuthService,\n    private poiService: PoiService,\n    private messageService: MessageService,\n    private languageService: LanguageService,\n    private confirmDialogService: ConfirmDialogService\n  ) {}\n\n  ngOnInit() {\n    this.authenticate$$ = this.authService.authenticate$.subscribe((auth) => {\n      if (auth) {\n        this.getPois();\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this.authenticate$$.unsubscribe();\n  }\n\n  deletePoi(poi: Poi) {\n    if (poi && poi.id) {\n      this.confirmDialogService\n        .open(\n          this.languageService.translate.instant(\n            'igo.context.poiButton.dialog.confirmDelete'\n          )\n        )\n        .subscribe((confirm) => {\n          if (confirm) {\n            this.poiService.delete(poi.id).subscribe(\n              () => {\n                this.messageService.info(\n                  'igo.context.poiButton.dialog.deleteMsg',\n                  'igo.context.poiButton.dialog.deleteTitle',\n                  undefined,\n                  { value: poi.title }\n                );\n                this.pois = this.pois.filter((p) => p.id !== poi.id);\n              },\n              (err) => {\n                err.error.title = 'DELETE Pois';\n                this.messageService.showError(err);\n              }\n            );\n          }\n        });\n    }\n  }\n\n  private getPois() {\n    this.poiService\n      .get()\n      .pipe(take(1))\n      .subscribe(\n        (rep) => {\n          this.pois = rep;\n        },\n        (err) => {\n          err.error.title = 'GET Pois';\n          this.messageService.showError(err);\n        }\n      );\n  }\n\n  createPoi() {\n    const view = this.map.ol.getView();\n    const proj = view.getProjection().getCode();\n    const center: any = new olPoint(view.getCenter()).transform(\n      proj,\n      'EPSG:4326'\n    );\n\n    const poi: Poi = {\n      title: '',\n      x: center.getCoordinates()[0],\n      y: center.getCoordinates()[1],\n      zoom: view.getZoom()\n    };\n\n    this.dialog\n      .open(PoiDialogComponent, { disableClose: false })\n      .afterClosed()\n      .subscribe((title) => {\n        if (title) {\n          poi.title = title;\n          this.poiService.create(poi).subscribe(\n            (newPoi) => {\n              this.messageService.success(\n                'igo.context.poiButton.dialog.createMsg',\n                'igo.context.poiButton.dialog.createTitle',\n                undefined,\n                { value: poi.title }\n              );\n              poi.id = newPoi.id;\n              this.pois.push(poi);\n            },\n            (err) => {\n              err.error.title = 'POST Pois';\n              this.messageService.showError(err);\n            }\n          );\n        }\n      });\n  }\n\n  zoomOnPoi(id) {\n    const poi = this.pois.find((p) => p.id === id);\n\n    const center = olproj.fromLonLat(\n      [Number(poi.x), Number(poi.y)],\n      this.map.projection\n    );\n\n    this.map.ol.getView().animate({\n      center,\n      zoom: poi.zoom,\n      duration: 500,\n      easing: oleasing.easeOut\n    });\n  }\n}\n","<mat-select\n  [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n  floatPlaceholder=\"never\"\n>\n  <mat-option (click)=\"createPoi()\" class=\"poi-option\">\n    <div class=\"titlePoi\">\n      {{ 'igo.context.poiButton.create' | translate }}\n    </div>\n    <button\n      igoStopPropagation\n      mat-icon-button\n      color=\"primary\"\n      (click)=\"createPoi()\"\n    >\n      <mat-icon>add-circle</mat-icon>\n    </button>\n  </mat-option>\n  <mat-divider></mat-divider>\n  <mat-option\n    *ngFor=\"let poi of pois\"\n    class=\"poi-option\"\n    [value]=\"poi.id\"\n    (click)=\"zoomOnPoi(poi.id)\"\n  >\n    <div class=\"titlePoi\">{{ poi.title }}</div>\n    <button\n      mat-icon-button\n      igoStopPropagation\n      color=\"warn\"\n      (click)=\"deletePoi(poi)\"\n    >\n      <mat-icon>delete</mat-icon>\n    </button>\n  </mat-option>\n</mat-select>\n","import {\n  AnimationTriggerMetadata,\n  animate,\n  state,\n  style,\n  transition,\n  trigger\n} from '@angular/animations';\n\nexport function userButtonSlideInOut(): AnimationTriggerMetadata {\n  return trigger('userButtonState', [\n    state(\n      'collapse',\n      style({\n        width: '0',\n        overflow: 'hidden',\n        display: 'none'\n      })\n    ),\n    state(\n      'expand',\n      style({\n        overflow: 'hidden',\n        display: 'display'\n      })\n    ),\n    transition('collapse => expand', animate('200ms')),\n    transition('expand => collapse', animate('200ms'))\n  ]);\n}\n","import { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n  MatDialogActions,\n  MatDialogContent,\n  MatDialogRef,\n  MatDialogTitle\n} from '@angular/material/dialog';\n\nimport { AuthService } from '@igo2/auth';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { StorageService } from '@igo2/core/storage';\n\n@Component({\n  selector: 'igo-user-dialog',\n  templateUrl: './user-dialog.component.html',\n  standalone: true,\n  imports: [\n    MatDialogTitle,\n    MatDialogContent,\n    MatButtonModule,\n    MatDialogActions,\n    IgoLanguageModule\n  ]\n})\nexport class UserDialogComponent {\n  public user;\n  public exp;\n\n  constructor(\n    public dialogRef: MatDialogRef<UserDialogComponent>,\n    private auth: AuthService,\n    private storageService: StorageService\n  ) {\n    const decodeToken = this.auth.decodeToken();\n    this.user = decodeToken?.user;\n    this.exp = new Date(decodeToken.exp * 1000).toLocaleString();\n  }\n\n  clearPreferences() {\n    this.storageService.clear();\n  }\n}\n","<h1 mat-dialog-title class=\"mat-typography\">\n  {{ 'igo.context.userButton.infoTitle' | translate }}\n</h1>\n<div mat-dialog-content class=\"mat-typography\">\n  <p>\n    {{ 'igo.context.userButton.dialog.user' | translate }}: {{ user.sourceId }}\n  </p>\n  <p>\n    {{ 'igo.context.userButton.dialog.email' | translate }}: {{ user.email }}\n  </p>\n  <p>{{ 'igo.context.userButton.dialog.expiration' | translate }}: {{ exp }}</p>\n  <button mat-stroked-button color=\"primary\" (click)=\"clearPreferences()\">\n    {{ 'igo.context.userButton.dialog.clearPreferences' | translate }}\n  </button>\n  <br />\n</div>\n<div mat-dialog-actions style=\"justify-content: center\">\n  <button mat-raised-button color=\"primary\" (click)=\"dialogRef.close(false)\">\n    OK\n  </button>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { PoiButtonComponent } from '../poi-button/poi-button.component';\nimport { userButtonSlideInOut } from './user-button.animation';\nimport { UserDialogComponent } from './user-dialog.component';\n\n@Component({\n  selector: 'igo-user-button',\n  templateUrl: './user-button.component.html',\n  styleUrls: ['./user-button.component.scss'],\n  animations: [userButtonSlideInOut()],\n  standalone: true,\n  imports: [\n    NgIf,\n    PoiButtonComponent,\n    MatButtonModule,\n    MatTooltipModule,\n    MatIconModule,\n    IgoLanguageModule\n  ]\n})\nexport class UserButtonComponent {\n  @Input()\n  get map(): IgoMap {\n    return this._map;\n  }\n  set map(value: IgoMap) {\n    this._map = value;\n  }\n  private _map: IgoMap;\n\n  @Input()\n  get color(): string {\n    return this._color;\n  }\n  set color(value: string) {\n    this._color = value;\n  }\n  private _color: string;\n\n  public expand = false;\n  public visible = false;\n  public hasApi = false;\n\n  constructor(\n    private dialog: MatDialog,\n    private config: ConfigService,\n    public auth: AuthService\n  ) {\n    this.visible = this.config.getConfig('auth') ? true : false;\n    this.hasApi = this.config.getConfig('context.url') !== undefined;\n  }\n\n  accountClick() {\n    if (this.auth.authenticated) {\n      this.expand = !this.expand;\n    } else {\n      this.auth.logout();\n    }\n  }\n\n  logout() {\n    this.expand = false;\n    this.auth.logout();\n  }\n\n  infoUser() {\n    this.dialog.open(UserDialogComponent, { disableClose: false });\n  }\n}\n","<div *ngIf=\"visible\" class=\"igo-user-button-container\">\n  <div\n    class=\"igo-user-button-more-container\"\n    [@userButtonState]=\"expand ? 'expand' : 'collapse'\"\n  >\n    <igo-poi-button *ngIf=\"hasApi\" [color]=\"color\" [map]=\"map\"></igo-poi-button>\n\n    <button\n      mat-icon-button\n      [matTooltip]=\"'igo.context.userButton.infoTitle' | translate\"\n      matTooltipPosition=\"above\"\n      [color]=\"color\"\n      (click)=\"infoUser()\"\n    >\n      <mat-icon>info</mat-icon>\n    </button>\n\n    <button\n      mat-icon-button\n      [matTooltip]=\"'igo.context.userButton.logout' | translate\"\n      matTooltipPosition=\"above\"\n      [color]=\"color\"\n      (click)=\"logout()\"\n    >\n      <mat-icon>power_settings_new</mat-icon>\n    </button>\n  </div>\n\n  <button\n    mat-icon-button\n    [color]=\"auth.authenticated ? color : 'warn'\"\n    (click)=\"accountClick()\"\n  >\n    <mat-icon>account_box</mat-icon>\n  </button>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { BookmarkButtonComponent } from './bookmark-button/bookmark-button.component';\nimport { BookmarkDialogComponent } from './bookmark-button/bookmark-dialog.component';\nimport { PoiButtonComponent } from './poi-button/poi-button.component';\nimport { PoiService } from './poi-button/shared/poi.service';\nimport { UserButtonComponent } from './user-button/user-button.component';\n\n/**\n * @deprecated import the components/directives directly or CONTEXT_MAP_BUTTON_DIRECTIVES for the set\n */\n@NgModule({\n  imports: [\n    BookmarkButtonComponent,\n    BookmarkDialogComponent,\n    PoiButtonComponent,\n    UserButtonComponent\n  ],\n  exports: [\n    BookmarkButtonComponent,\n    PoiButtonComponent,\n    UserButtonComponent,\n    BookmarkDialogComponent\n  ],\n  providers: [PoiService]\n})\nexport class IgoContextMapButtonModule {\n  static forRoot(): ModuleWithProviders<IgoContextMapButtonModule> {\n    return {\n      ngModule: IgoContextMapButtonModule\n    };\n  }\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { RouteService } from '@igo2/core/route';\nimport { WMSDataSourceOptions, isLayerItem } from '@igo2/geo';\nimport type { IgoMap, Layer } from '@igo2/geo';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { ContextService } from '../../context-manager/shared/context.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ShareMapService {\n  private language = '';\n\n  constructor(\n    private contextService: ContextService,\n    @Optional() private route: RouteService\n  ) {\n    this.route.queryParams.subscribe((params) => {\n      if (params['lang']) {\n        this.language = params['lang'];\n      }\n    });\n  }\n\n  getUrlWithApi(formValues) {\n    return this.language\n      ? `${location.origin + location.pathname}?context=${\n          formValues.uri\n        }&lang=${this.language}`\n      : `${location.origin + location.pathname}?context=${formValues.uri}`;\n  }\n\n  createContextShared(map: IgoMap, formValues) {\n    const context = this.contextService.getContextFromMap(map);\n    context.scope = 'public';\n    context.title = formValues.title;\n    context.uri = formValues.uri;\n    return this.contextService.create(context);\n  }\n\n  updateContextShared(map: IgoMap, formValues, id: string) {\n    const context = this.contextService.getContextFromMap(map);\n    return this.contextService.update(id, {\n      title: formValues.title,\n      map: context.map\n    } as DetailedContext);\n  }\n\n  getUrlWithoutApi(map: IgoMap, publicShareOption) {\n    if (\n      !this.route ||\n      !this.route.options.visibleOnLayersKey ||\n      !this.route.options.visibleOffLayersKey ||\n      !map.viewController.getZoom()\n    ) {\n      return;\n    }\n    const llc = publicShareOption.layerlistControls.querystring;\n\n    let visibleKey = this.route.options.visibleOnLayersKey;\n    let invisibleKey = this.route.options.visibleOffLayersKey;\n    const layers = map.layerController.all.filter((layer) =>\n      isLayerItem(layer)\n    ) as Layer[];\n\n    const visibleLayers = layers.filter(\n      (lay) => lay.visible && !lay.isIgoInternalLayer\n    );\n    const invisibleLayers = layers.filter(\n      (lay) => !lay.visible && !lay.isIgoInternalLayer\n    );\n\n    if (visibleLayers.length === 0) {\n      visibleKey = '';\n    }\n    if (invisibleLayers.length === 0) {\n      invisibleKey = '';\n    }\n\n    let layersUrl = '';\n    let layersToLoop = [];\n    if (visibleLayers.length > invisibleLayers.length) {\n      layersUrl = `${visibleKey}=*&${invisibleKey}=`;\n      layersToLoop = invisibleLayers;\n    } else {\n      layersUrl = `${invisibleKey}=*&${visibleKey}=`;\n      layersToLoop = visibleLayers;\n    }\n\n    for (const layer of layersToLoop) {\n      if (layer.id) {\n        layersUrl += layer.id + ',';\n      }\n    }\n    const contextLayersID = [];\n    const contextLayers = this.contextService.context$.value.layers;\n    for (const contextLayer of contextLayers) {\n      if (\n        typeof contextLayer.id !== 'undefined' ||\n        typeof (contextLayer as any).source !== 'undefined'\n      ) {\n        contextLayersID.push(\n          contextLayer.id || (contextLayer as any).source.id\n        );\n      }\n    }\n\n    const addedLayersQueryParamsWms = this.makeLayersByService(\n      layers,\n      contextLayersID,\n      'wms'\n    );\n    const addedLayersQueryParamsWmts = this.makeLayersByService(\n      layers,\n      contextLayersID,\n      'wmts'\n    );\n    const addedLayersQueryParamsArcgisRest = this.makeLayersByService(\n      layers,\n      contextLayersID,\n      'arcgisrest'\n    );\n    const addedLayersQueryParamsImageArcgisRest = this.makeLayersByService(\n      layers,\n      contextLayersID,\n      'imagearcgisrest'\n    );\n    const addedLayersQueryParamsTileArcgisRest = this.makeLayersByService(\n      layers,\n      contextLayersID,\n      'tilearcgisrest'\n    );\n\n    layersUrl = layersUrl.substr(0, layersUrl.length - 1);\n\n    const zoomKey = this.route.options.zoomKey;\n    const centerKey = this.route.options.centerKey;\n    const contextKey = this.route.options.contextKey;\n\n    const zoom = `${zoomKey}=${map.viewController.getZoom()}`;\n    const arrayCenter = map.viewController.getCenter('EPSG:4326') || [];\n    const long = arrayCenter[0].toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\n    const lat = arrayCenter[1].toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\n    const center = `${centerKey}=${long},${lat}`.replace(/.00000/g, '');\n    let context = '';\n    if (this.contextService.context$.value) {\n      context = `${contextKey}=${this.contextService.context$.value.uri}`;\n    }\n\n    let url = this.language\n      ? `${location.origin}${location.pathname}?${context}&${zoom}&${center}&${layersUrl}&${llc}&${addedLayersQueryParamsWms}&${llc}&${addedLayersQueryParamsWmts}&${addedLayersQueryParamsArcgisRest}&${addedLayersQueryParamsImageArcgisRest}&${addedLayersQueryParamsTileArcgisRest}&lang=${this.language}`\n      : `${location.origin}${location.pathname}?${context}&${zoom}&${center}&${layersUrl}&${llc}&${addedLayersQueryParamsWms}&${llc}&${addedLayersQueryParamsWmts}&${addedLayersQueryParamsArcgisRest}&${addedLayersQueryParamsImageArcgisRest}&${addedLayersQueryParamsTileArcgisRest}`;\n    for (let i = 0; i < 5; i++) {\n      url = url.replace(/&&/g, '&');\n      url = url.endsWith('&') ? url.slice(0, -1) : url;\n    }\n    url = url.endsWith('&') ? url.slice(0, -1) : url;\n    url = url.replace('?&wm', '&wm');\n    url = url.replace('?&', '?');\n\n    return url;\n  }\n\n  private makeLayersByService(\n    layers: Layer[],\n    contextLayersID: any[],\n    typeService: string\n  ): string {\n    const addedLayersByService = [];\n    for (const layer of layers.filter(\n      (l) => l.dataSource.options?.type === typeService\n    )) {\n      if (contextLayersID.indexOf(layer.id) === -1) {\n        let linkUrl = encodeURIComponent((layer.dataSource.options as any).url);\n        let addedLayer = '';\n        let layerVersion: string;\n        switch (layer.dataSource.options.type.toLowerCase()) {\n          case 'wms': {\n            const datasourceOptions = layer.dataSource\n              .options as WMSDataSourceOptions;\n            addedLayer = encodeURIComponent(datasourceOptions.params.LAYERS);\n            layerVersion =\n              datasourceOptions.params.VERSION === '1.3.0'\n                ? layerVersion\n                : datasourceOptions.params.VERSION;\n            break;\n          }\n          case 'wmts':\n          case 'arcgisrest':\n          case 'imagearcgisrest':\n          case 'tilearcgisrest':\n            addedLayer = encodeURIComponent(\n              (layer.dataSource.options as any).layer\n            );\n            break;\n        }\n        const addedLayerPosition = `${addedLayer}:igoz${layer.zIndex}`;\n\n        let version = '';\n        if (layerVersion) {\n          const operator =\n            (layer.dataSource.options as any).url.indexOf('?') === -1\n              ? '?'\n              : '&';\n          version = encodeURIComponent(`${operator}VERSION=${layerVersion}`);\n        }\n        linkUrl = `${linkUrl}${version}`;\n\n        if (\n          !addedLayersByService.find((definedUrl) => definedUrl.url === linkUrl)\n        ) {\n          addedLayersByService.push({\n            url: linkUrl,\n            layers: [addedLayerPosition]\n          });\n        } else {\n          addedLayersByService.forEach((service) => {\n            if (service.url === linkUrl) {\n              service.layers.push(addedLayerPosition);\n            }\n          });\n        }\n      }\n    }\n\n    let addedLayersQueryParams = '';\n    if (addedLayersByService.length >= 1) {\n      let linkUrlKey;\n      let layersKey;\n      /*\n      const linkUrlKey = (typeService === 'wms') ? this.route.options.wmsUrlKey :\n        (typeService === 'wmts') ? this.route.options.wmtsUrlKey : '' ;\n      const layersKey = (typeService === 'wms') ? this.route.options.wmsLayersKey :\n        (typeService === 'wmts') ? this.route.options.wmtsLayersKey : '' ;\n*/\n      switch (typeService.toLowerCase()) {\n        case 'wms':\n          linkUrlKey = this.route.options.wmsUrlKey;\n          layersKey = this.route.options.wmsLayersKey;\n          break;\n        case 'wmts':\n          linkUrlKey = this.route.options.wmtsUrlKey;\n          layersKey = this.route.options.wmtsLayersKey;\n          break;\n        case 'arcgisrest':\n          linkUrlKey = this.route.options.arcgisUrlKey;\n          layersKey = this.route.options.arcgisLayersKey;\n          break;\n        case 'imagearcgisrest':\n          linkUrlKey = this.route.options.iarcgisUrlKey;\n          layersKey = this.route.options.iarcgisLayersKey;\n          break;\n        case 'tilearcgisrest':\n          linkUrlKey = this.route.options.tarcgisUrlKey;\n          layersKey = this.route.options.tarcgisLayersKey;\n          break;\n        default:\n          linkUrlKey = '';\n          layersKey = '';\n      }\n\n      let linkUrlQueryParams = '';\n      let layersQueryParams = '';\n      addedLayersByService.forEach((service) => {\n        linkUrlQueryParams += `${service.url},`;\n        layersQueryParams += `(${service.layers.join(',')}),`;\n      });\n      linkUrlQueryParams = linkUrlQueryParams.endsWith(',')\n        ? linkUrlQueryParams.slice(0, -1)\n        : linkUrlQueryParams;\n      layersQueryParams = layersQueryParams.endsWith(',')\n        ? layersQueryParams.slice(0, -1)\n        : layersQueryParams;\n      addedLayersQueryParams = `${linkUrlKey}=${linkUrlQueryParams}&${layersKey}=${layersQueryParams}`;\n    }\n\n    return addedLayersQueryParams;\n  }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n  UntypedFormBuilder,\n  UntypedFormGroup\n} 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 { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\nimport { LanguageService } from '@igo2/core/language';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport type { IgoMap } from '@igo2/geo';\nimport { Clipboard, uuid } from '@igo2/utils';\n\nimport { ShareMapService } from '../shared/share-map.service';\n\n@Component({\n  selector: 'igo-share-map-api',\n  templateUrl: './share-map-api.component.html',\n  styleUrls: ['./share-map-api.component.scss'],\n  standalone: true,\n  imports: [\n    FormsModule,\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    NgIf,\n    MatButtonModule,\n    MatTooltipModule,\n    MatIconModule,\n    IgoLanguageModule\n  ]\n})\nexport class ShareMapApiComponent implements OnInit {\n  public form: UntypedFormGroup;\n\n  @Input() map: IgoMap;\n\n  public url: string;\n  public userId: string;\n  public idContextShared: string;\n\n  constructor(\n    private languageService: LanguageService,\n    private messageService: MessageService,\n    private auth: AuthService,\n    private shareMapService: ShareMapService,\n    private formBuilder: UntypedFormBuilder\n  ) {}\n\n  ngOnInit(): void {\n    this.auth.authenticate$.subscribe(() => {\n      const decodeToken = this.auth.decodeToken();\n      this.userId = decodeToken?.user?.id.toString();\n      this.buildForm();\n    });\n  }\n\n  createUrl(values: any = {}) {\n    const inputs = Object.assign({}, values);\n    inputs.uri = this.userId ? `${this.userId}-${values.uri}` : values.uri;\n    this.url = this.shareMapService.getUrlWithApi(inputs);\n    this.shareMapService.createContextShared(this.map, inputs).subscribe(\n      (rep) => {\n        this.idContextShared = rep.id;\n        this.messageService.success(\n          'igo.context.contextManager.dialog.saveMsg',\n          'igo.context.contextManager.dialog.saveTitle',\n          undefined,\n          { value: inputs.title }\n        );\n      },\n      (err) => {\n        err.error.title = this.languageService.translate.instant(\n          'igo.context.shareMap.errorTitle'\n        );\n        this.messageService.showError(err);\n      }\n    );\n  }\n\n  updateContextShared(values: any = {}) {\n    const inputs = Object.assign({}, values);\n    inputs.uri = this.userId ? `${this.userId}-${values.uri}` : values.uri;\n    this.shareMapService\n      .updateContextShared(this.map, inputs, this.idContextShared)\n      .subscribe(\n        () => {\n          this.messageService.success(\n            'igo.context.contextManager.dialog.saveMsg',\n            'igo.context.contextManager.dialog.saveTitle',\n            undefined,\n            { value: inputs.title }\n          );\n        },\n        (err) => {\n          err.error.title = this.languageService.translate.instant(\n            'igo.context.shareMap.errorTitle'\n          );\n          this.messageService.showError(err);\n        }\n      );\n  }\n\n  copyTextToClipboard(textArea) {\n    const successful = Clipboard.copy(textArea);\n    if (successful) {\n      this.messageService.success(\n        'igo.context.shareMap.dialog.copyMsg',\n        'igo.context.shareMap.dialog.copyTitle'\n      );\n    }\n  }\n\n  buildForm(): void {\n    this.url = undefined;\n    const id = uuid();\n    let title = 'Partage ';\n    title += this.userId ? `(${this.userId}-${id})` : `(${id})`;\n    this.form = this.formBuilder.group({\n      title: [title],\n      uri: [id]\n    });\n  }\n}\n","<form class=\"igo-form\" [formGroup]=\"form\" (ngSubmit)=\"createUrl(form.value)\">\n  <div class=\"igo-input-container\">\n    <mat-form-field>\n      <input\n        matInput\n        required\n        [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n        formControlName=\"title\"\n      />\n      <mat-error>\n        {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n\n  <div id=\"uriInput\" class=\"igo-input-container\">\n    <mat-form-field>\n      <span *ngIf=\"userId\" class=\"prefix\">{{ userId }}-</span>\n      <span class=\"fieldWrapper\">\n        <input\n          matInput\n          required\n          [readonly]=\"!userId\"\n          [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n          formControlName=\"uri\"\n        />\n      </span>\n      <mat-error>\n        {{ 'igo.context.contextManager.form.uriRequired' | translate }}\n      </mat-error>\n    </mat-form-field>\n  </div>\n\n  <div class=\"igo-form-button-group\">\n    <button\n      *ngIf=\"!url\"\n      mat-raised-button\n      type=\"submit\"\n      [disabled]=\"!form.valid\"\n    >\n      {{ 'igo.context.shareMap.button' | translate }}\n    </button>\n    <button\n      *ngIf=\"url\"\n      mat-raised-button\n      type=\"button\"\n      (click)=\"updateContextShared(form.value)\"\n    >\n      {{ 'igo.context.shareMap.refreshBtn' | translate }}\n    </button>\n  </div>\n</form>\n\n<div *ngIf=\"url\" class=\"igo-input-container linkToShare\">\n  <mat-form-field>\n    <textarea\n      #textArea\n      matInput\n      readonly\n      rows=\"3\"\n      class=\"textAreaWithButton\"\n      [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\n      [value]=\"url\"\n    ></textarea>\n    <button\n      mat-icon-button\n      tooltip-position=\"below\"\n      matTooltipShowDelay=\"500\"\n      [matTooltip]=\"'igo.context.shareMap.copy' | translate\"\n      color=\"primary\"\n      (click)=\"copyTextToClipboard(textArea)\"\n    >\n      <mat-icon>content_copy</mat-icon>\n    </button>\n  </mat-form-field>\n  <div></div>\n</div>\n","import { NgIf } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit\n} from '@angular/core';\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';\n\nimport { CustomHtmlComponent } from '@igo2/common/custom-html';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\nimport type { IgoMap } from '@igo2/geo';\nimport { Clipboard } from '@igo2/utils';\n\nimport { Subscription, combineLatest } from 'rxjs';\n\nimport { ShareMapService } from '../shared/share-map.service';\n\n@Component({\n  selector: 'igo-share-map-url',\n  templateUrl: './share-map-url.component.html',\n  styleUrls: ['./share-map-url.component.scss'],\n  standalone: true,\n  imports: [\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n    MatIconModule,\n    NgIf,\n    CustomHtmlComponent,\n    IgoLanguageModule\n  ]\n})\nexport class ShareMapUrlComponent implements AfterViewInit, OnInit, OnDestroy {\n  private mapState$$: Subscription;\n\n  @Input() map: IgoMap;\n\n  public url: string;\n  public publicShareOption = {\n    layerlistControls: { querystring: '' }\n  };\n\n  constructor(\n    private messageService: MessageService,\n    private shareMapService: ShareMapService,\n    private cdRef: ChangeDetectorRef\n  ) {}\n\n  ngOnInit(): void {\n    this.resetUrl();\n    this.mapState$$ = combineLatest([\n      this.map.viewController.state$,\n      this.map.status$\n    ]).subscribe(() => {\n      this.resetUrl();\n      this.cdRef.detectChanges();\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.resetUrl();\n  }\n\n  ngOnDestroy(): void {\n    this.mapState$$.unsubscribe();\n  }\n\n  resetUrl() {\n    this.url = this.shareMapService.getUrlWithoutApi(\n      this.map,\n      this.publicShareOption\n    );\n  }\n\n  copyTextToClipboard(textArea) {\n    const successful = Clipboard.copy(textArea);\n    if (successful) {\n      this.messageService.success(\n        'igo.context.shareMap.dialog.copyMsg',\n        'igo.context.shareMap.dialog.copyTitle'\n      );\n    }\n  }\n}\n","<div class=\"igo-input-container linkToShare\">\n  <mat-form-field>\n    <textarea\n      #textArea\n      matInput\n      readonly\n      rows=\"3\"\n      [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\n      [value]=\"url\"\n    ></textarea>\n  </mat-form-field>\n\n  <div class=\"igo-form-button-group\">\n    <button mat-raised-button (click)=\"copyTextToClipboard(textArea)\">\n      <mat-icon>content_copy</mat-icon>\n      {{ 'igo.context.shareMap.copy' | translate }}\n    </button>\n  </div>\n  <div>\n    <br />\n    <section class=\"mat-typography\">\n      <div\n        *ngIf=\"('igo.context.shareMap.htmlClarifications' | translate) === ''\"\n      >\n        <h4 *ngIf=\"('igo.context.shareMap.included' | translate) !== ''\">\n          {{ 'igo.context.shareMap.included' | translate }}\n        </h4>\n        <ul>\n          <li *ngIf=\"('igo.context.shareMap.context' | translate) !== ''\">\n            {{ 'igo.context.shareMap.context' | translate }}\n          </li>\n          <li *ngIf=\"('igo.context.shareMap.center' | translate) !== ''\">\n            {{ 'igo.context.shareMap.center' | translate }}\n          </li>\n          <li *ngIf=\"('igo.context.shareMap.zoom' | translate) !== ''\">\n            {{ 'igo.context.shareMap.zoom' | translate }}\n          </li>\n          <li *ngIf=\"('igo.context.shareMap.addedLayers' | translate) !== ''\">\n            {{ 'igo.context.shareMap.addedLayers' | translate }}\n          </li>\n          <li\n            *ngIf=\"('igo.context.shareMap.visibleInvisible' | translate) !== ''\"\n          >\n            {{ 'igo.context.shareMap.visibleInvisible' | translate }}\n          </li>\n        </ul>\n\n        <h4 *ngIf=\"('igo.context.shareMap.excluded' | translate) !== ''\">\n          {{ 'igo.context.shareMap.excluded' | translate }}\n        </h4>\n        <ul>\n          <li *ngIf=\"('igo.context.shareMap.order' | translate) !== ''\">\n            {{ 'igo.context.shareMap.order' | translate }}\n          </li>\n          <li *ngIf=\"('igo.context.shareMap.opacity' | translate) !== ''\">\n            {{ 'igo.context.shareMap.opacity' | translate }}\n          </li>\n          <li *ngIf=\"('igo.context.shareMap.filterOgc' | translate) !== ''\">\n            {{ 'igo.context.shareMap.filterOgc' | translate }}\n          </li>\n          <li *ngIf=\"('igo.context.shareMap.filterTime' | translate) !== ''\">\n            {{ 'igo.context.shareMap.filterTime' | translate }}\n          </li>\n        </ul>\n      </div>\n      <igo-custom-html\n        class=\"shareCustomPadding\"\n        *ngIf=\"('igo.context.shareMap.htmlClarifications' | translate) !== ''\"\n        class=\"mat-typography\"\n        [html]=\"'igo.context.shareMap.htmlClarifications' | translate\"\n      >\n      </igo-custom-html>\n    </section>\n  </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { ShareMapApiComponent } from './share-map-api.component';\nimport { ShareMapUrlComponent } from './share-map-url.component';\n\n@Component({\n  selector: 'igo-share-map',\n  templateUrl: './share-map.component.html',\n  styleUrls: ['./share-map.component.scss'],\n  standalone: true,\n  imports: [\n    NgIf,\n    MatTabsModule,\n    ShareMapApiComponent,\n    ShareMapUrlComponent,\n    IgoLanguageModule\n  ]\n})\nexport class ShareMapComponent {\n  @Input() map: IgoMap;\n\n  public hasApi = false;\n\n  constructor(private config: ConfigService) {\n    this.hasApi = this.config.getConfig('context.url') ? true : false;\n  }\n}\n","<mat-tab-group *ngIf=\"hasApi\">\n  <mat-tab [label]=\"'igo.context.shareMap.shareWithApi' | translate\">\n    <igo-share-map-api [map]=\"map\"></igo-share-map-api>\n  </mat-tab>\n  <mat-tab [label]=\"'igo.context.shareMap.shareWithUrl' | translate\">\n    <igo-share-map-url [map]=\"map\"></igo-share-map-url>\n  </mat-tab>\n</mat-tab-group>\n\n<igo-share-map-url *ngIf=\"!hasApi\" [map]=\"map\"></igo-share-map-url>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ShareMapApiComponent } from './share-map/share-map-api.component';\nimport { ShareMapUrlComponent } from './share-map/share-map-url.component';\nimport { ShareMapComponent } from './share-map/share-map.component';\n\nexport const SHARE_MAP_DIRECTIVES = [\n  ShareMapComponent,\n  ShareMapUrlComponent,\n  ShareMapApiComponent\n] as const;\n\n/**\n * @deprecated import the components/directives directly or SHARE_MAP_DIRECTIVES for the set\n */\n@NgModule({\n  imports: [ShareMapComponent, ShareMapUrlComponent, ShareMapApiComponent],\n  exports: [ShareMapComponent, ShareMapUrlComponent, ShareMapApiComponent]\n})\nexport class IgoShareMapModule {\n  static forRoot(): ModuleWithProviders<IgoShareMapModule> {\n    return {\n      ngModule: IgoShareMapModule\n    };\n  }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Title } from '@angular/platform-browser';\n\nimport { getEntityTitle } from '@igo2/common/entity';\nimport { FlexibleComponent, FlexibleState } from '@igo2/common/flexible';\nimport { PanelComponent } from '@igo2/common/panel';\nimport { Tool } from '@igo2/common/tool';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport type { Media } from '@igo2/core/media';\nimport {\n  Feature,\n  FeatureDetailsComponent,\n  FeatureMotion,\n  moveToOlFeatures\n} from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\n\n@Component({\n  selector: 'igo-sidenav',\n  templateUrl: './sidenav.component.html',\n  styleUrls: ['./sidenav.component.scss'],\n  standalone: true,\n  imports: [\n    MatSidenavModule,\n    FlexibleComponent,\n    PanelComponent,\n    NgIf,\n    MatButtonModule,\n    MatTooltipModule,\n    MatIconModule,\n    FeatureDetailsComponent,\n    IgoLanguageModule\n  ]\n})\nexport class SidenavComponent {\n  private format = new olFormatGeoJSON();\n  @Input()\n  get map(): IgoMap {\n    return this._map;\n  }\n  set map(value: IgoMap) {\n    this._map = value;\n  }\n  private _map: IgoMap;\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: boolean) {\n    this._opened = value;\n  }\n  private _opened: boolean;\n\n  @Input()\n  get feature(): Feature {\n    return this._feature;\n  }\n  set feature(value: Feature) {\n    this._feature = value;\n  }\n  private _feature: Feature;\n\n  @Input()\n  get tool(): Tool {\n    return this._tool;\n  }\n  set tool(value: Tool) {\n    this._tool = value;\n  }\n  private _tool: Tool;\n\n  @Input()\n  get media(): Media {\n    return this._media;\n  }\n  set media(value: Media) {\n    this._media = value;\n  }\n  private _media: Media;\n\n  @Input()\n  get title(): string {\n    return this._title;\n  }\n  set title(value: string) {\n    if (value) {\n      this._title = value;\n    }\n  }\n  private _title: string;\n\n  public topPanelState: FlexibleState = 'initial';\n\n  get featureTitle(): string {\n    return this.feature ? getEntityTitle(this.feature) : undefined;\n  }\n\n  constructor(public titleService: Title) {\n    this._title = this.titleService.getTitle();\n  }\n\n  zoomToFeatureExtent() {\n    if (this.feature.geometry) {\n      const olFeature = this.format.readFeature(this.feature, {\n        dataProjection: this.feature.projection,\n        featureProjection: this.map.viewProjection\n      });\n      moveToOlFeatures(\n        this.map.viewController,\n        [olFeature],\n        FeatureMotion.Zoom\n      );\n    }\n  }\n\n  toggleTopPanel() {\n    if (this.topPanelState === 'initial') {\n      this.topPanelState = 'expanded';\n    } else {\n      this.topPanelState = 'initial';\n    }\n  }\n}\n","<mat-sidenav #sidenav igoSidenavShim mode=\"side\" [opened]=\"opened\">\n  <div class=\"igo-sidenav-content\">\n    <igo-flexible\n      #topPanel\n      initial=\"50%\"\n      initialMobile=\"100%\"\n      expanded=\"calc(100% - 58px)\"\n      [state]=\"topPanelState\"\n    >\n      <div class=\"igo-content\">\n        <igo-panel [title]=\"tool ? (tool.title | translate) : title\">\n          <button\n            mat-icon-button\n            panelLeftButton\n            tooltip-position=\"below\"\n            matTooltipShowDelay=\"500\"\n            [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\n            *ngIf=\"tool\"\n          >\n            <mat-icon>arrow_back</mat-icon>\n          </button>\n\n          <button\n            mat-icon-button\n            panelRightButton\n            tooltip-position=\"below\"\n            matTooltipShowDelay=\"500\"\n            [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\n            *ngIf=\"tool\"\n          >\n            <mat-icon>menu</mat-icon>\n          </button>\n        </igo-panel>\n      </div>\n\n      <div igoFlexibleFill class=\"igo-content\">\n        <igo-panel [title]=\"featureTitle\" *ngIf=\"feature && media !== 'mobile'\">\n          <button\n            mat-icon-button\n            panelLeftButton\n            class=\"igo-icon-button\"\n            (click)=\"toggleTopPanel()\"\n          >\n            <mat-icon>{{\n              ['collapsed', 'initial'].indexOf(topPanel.state) >= 0\n                ? 'arrow_downward'\n                : 'arrow_upward'\n            }}</mat-icon>\n          </button>\n\n          <button\n            mat-icon-button\n            panelRightButton\n            class=\"igo-icon-button\"\n            (click)=\"zoomToFeatureExtent()\"\n            *ngIf=\"feature.geometry\"\n          >\n            <mat-icon>zoom_in</mat-icon>\n          </button>\n\n          <igo-feature-details\n            [feature]=\"feature\"\n            *ngIf=\"['collapsed', 'initial'].indexOf(topPanel.state) >= 0\"\n          >\n          </igo-feature-details>\n        </igo-panel>\n      </div>\n    </igo-flexible>\n  </div>\n</mat-sidenav>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { SidenavComponent } from './sidenav.component';\n\n/**\n * @deprecated import the SidenavComponent directly\n */\n@NgModule({\n  imports: [SidenavComponent],\n  exports: [SidenavComponent]\n})\nexport class IgoSidenavModule {\n  static forRoot(): ModuleWithProviders<IgoSidenavModule> {\n    return {\n      ngModule: IgoSidenavModule\n    };\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { IgoContextImportExportModule } from './context-import-export/context-import-export.module';\nimport { IgoContextManagerModule } from './context-manager/context-manager.module';\nimport { IgoContextMapButtonModule } from './context-map-button/context-map-button.module';\nimport { IgoShareMapModule } from './share-map/share-map.module';\nimport { IgoSidenavModule } from './sidenav/sidenav.module';\n\n/**\n * @deprecated import the components/directives directly or SHARE_MAP_DIRECTIVES for the set\n */\n@NgModule({\n  declarations: [],\n  exports: [\n    IgoContextImportExportModule,\n    IgoContextManagerModule,\n    IgoContextMapButtonModule,\n    IgoShareMapModule,\n    IgoSidenavModule\n  ]\n})\nexport class IgoContextModule {\n  static forRoot(): ModuleWithProviders<IgoContextModule> {\n    return {\n      ngModule: IgoContextModule\n    };\n  }\n}\n","import {\n  ContextEditBindingDirective,\n  ContextEditComponent\n} from './context-edit';\nimport { ContextFormComponent } from './context-form';\nimport { ContextItemComponent } from './context-item';\nimport {\n  ContextListBindingDirective,\n  ContextListComponent\n} from './context-list';\nimport {\n  ContextPermissionsBindingDirective,\n  ContextPermissionsComponent\n} from './context-permissions';\nimport { LayerContextDirective, MapContextDirective } from './shared';\n\nexport const CONTEXT_MANAGER_DIRECTIVES = [\n  ContextListComponent,\n  ContextListBindingDirective,\n  ContextItemComponent,\n  ContextFormComponent,\n  ContextEditComponent,\n  ContextEditBindingDirective,\n  ContextPermissionsComponent,\n  ContextPermissionsBindingDirective,\n  MapContextDirective,\n  LayerContextDirective\n] as const;\n","import {\n  BookmarkButtonComponent,\n  BookmarkDialogComponent\n} from './bookmark-button';\nimport { PoiButtonComponent } from './poi-button';\nimport { UserButtonComponent } from './user-button';\n\nexport const CONTEXT_MAP_BUTTON_DIRECTIVES = [\n  BookmarkButtonComponent,\n  BookmarkDialogComponent,\n  PoiButtonComponent,\n  UserButtonComponent\n] as const;\n","/*\n * Public API Surface of context\n */\n\nexport * from './lib/context.module';\nexport * from './lib/context-import-export/context-import-export.module';\nexport * from './lib/context-manager/context-manager.module';\nexport * from './lib/context-map-button/context-map-button.module';\nexport * from './lib/share-map/share-map.module';\nexport * from './lib/sidenav/sidenav.module';\n\nexport * from './lib/context-import-export';\nexport * from './lib/context-manager';\nexport * from './lib/context-map-button';\nexport * from './lib/environment';\nexport * from './lib/share-map';\nexport * from './lib/sidenav';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i4","i5","i7","i1","i1.ContextImportService","i2.ContextExportService","i6.ContextService","i8","i9","i10","i14","i2","i6","i1.ContextEditComponent","i2.ContextService","i11","i12","i13","i1.ContextListComponent","i1.ContextPermissionsComponent","i3.PoiService","i1.ContextService","i4.ShareMapService","i2.ShareMapService","olFormatGeoJSON"],"mappings":"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"}