@igo2/context 18.0.0 → 18.0.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/fesm2022/igo2-context.mjs +118 -118
  2. package/fesm2022/igo2-context.mjs.map +1 -1
  3. package/package.json +12 -14
  4. package/esm2022/igo2-context.mjs +0 -5
  5. package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +0 -156
  6. package/esm2022/lib/context-import-export/context-import-export.module.mjs +0 -24
  7. package/esm2022/lib/context-import-export/index.mjs +0 -3
  8. package/esm2022/lib/context-import-export/shared/context-export.errors.mjs +0 -15
  9. package/esm2022/lib/context-import-export/shared/context-export.interface.mjs +0 -2
  10. package/esm2022/lib/context-import-export/shared/context-export.service.mjs +0 -38
  11. package/esm2022/lib/context-import-export/shared/context-export.utils.mjs +0 -15
  12. package/esm2022/lib/context-import-export/shared/context-import.errors.mjs +0 -33
  13. package/esm2022/lib/context-import-export/shared/context-import.service.mjs +0 -82
  14. package/esm2022/lib/context-import-export/shared/context-import.utils.mjs +0 -148
  15. package/esm2022/lib/context-import-export/shared/index.mjs +0 -8
  16. package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +0 -56
  17. package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +0 -35
  18. package/esm2022/lib/context-manager/context-edit/index.mjs +0 -3
  19. package/esm2022/lib/context-manager/context-form/context-form.component.mjs +0 -117
  20. package/esm2022/lib/context-manager/context-form/index.mjs +0 -2
  21. package/esm2022/lib/context-manager/context-item/context-item.component.mjs +0 -96
  22. package/esm2022/lib/context-manager/context-item/index.mjs +0 -2
  23. package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +0 -259
  24. package/esm2022/lib/context-manager/context-list/context-list.component.mjs +0 -424
  25. package/esm2022/lib/context-manager/context-list/context-list.enum.mjs +0 -7
  26. package/esm2022/lib/context-manager/context-list/index.mjs +0 -3
  27. package/esm2022/lib/context-manager/context-manager.directive.mjs +0 -19
  28. package/esm2022/lib/context-manager/context-manager.module.mjs +0 -77
  29. package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +0 -109
  30. package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +0 -170
  31. package/esm2022/lib/context-manager/context-permissions/index.mjs +0 -3
  32. package/esm2022/lib/context-manager/index.mjs +0 -8
  33. package/esm2022/lib/context-manager/shared/context.enum.mjs +0 -13
  34. package/esm2022/lib/context-manager/shared/context.interface.mjs +0 -2
  35. package/esm2022/lib/context-manager/shared/context.service.mjs +0 -616
  36. package/esm2022/lib/context-manager/shared/index.mjs +0 -6
  37. package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +0 -176
  38. package/esm2022/lib/context-manager/shared/map-context.directive.mjs +0 -68
  39. package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +0 -69
  40. package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +0 -37
  41. package/esm2022/lib/context-map-button/bookmark-button/index.mjs +0 -3
  42. package/esm2022/lib/context-map-button/context-map-button.directive.mjs +0 -10
  43. package/esm2022/lib/context-map-button/context-map-button.module.mjs +0 -48
  44. package/esm2022/lib/context-map-button/index.mjs +0 -5
  45. package/esm2022/lib/context-map-button/poi-button/index.mjs +0 -4
  46. package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +0 -160
  47. package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +0 -37
  48. package/esm2022/lib/context-map-button/poi-button/shared/index.mjs +0 -3
  49. package/esm2022/lib/context-map-button/poi-button/shared/poi.interface.mjs +0 -2
  50. package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +0 -38
  51. package/esm2022/lib/context-map-button/user-button/index.mjs +0 -3
  52. package/esm2022/lib/context-map-button/user-button/user-button.animation.mjs +0 -17
  53. package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +0 -82
  54. package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +0 -43
  55. package/esm2022/lib/context.module.mjs +0 -42
  56. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  57. package/esm2022/lib/environment/index.mjs +0 -2
  58. package/esm2022/lib/share-map/index.mjs +0 -6
  59. package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +0 -111
  60. package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +0 -78
  61. package/esm2022/lib/share-map/share-map/share-map.component.mjs +0 -35
  62. package/esm2022/lib/share-map/share-map.module.mjs +0 -31
  63. package/esm2022/lib/share-map/shared/index.mjs +0 -2
  64. package/esm2022/lib/share-map/shared/share-map.service.mjs +0 -223
  65. package/esm2022/lib/sidenav/index.mjs +0 -2
  66. package/esm2022/lib/sidenav/sidenav.component.mjs +0 -122
  67. package/esm2022/lib/sidenav/sidenav.module.mjs +0 -24
  68. package/esm2022/public_api.mjs +0 -16
@@ -1 +1 @@
1
- {"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\n if (this.configService.getConfig('offline')?.enable) {\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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"}
1
+ {"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 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 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 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 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 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 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 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\n if (this.configService.getConfig('offline')?.enable) {\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 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 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 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 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 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 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 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 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 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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"}