@igo2/context 20.1.0 → 21.0.0-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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-context.mjs","sources":["../../../packages/context/src/lib/share-map/shared/share-map.interface.ts","../../../packages/context/src/lib/share-map/shared/share-map-definitions.ts","../../../packages/context/src/lib/share-map/shared/share-map.utils.ts","../../../packages/context/src/lib/share-map/shared/share-map-encoder.ts","../../../packages/context/src/lib/share-map/shared/share-map-legacy.service.ts","../../../packages/context/src/lib/share-map/shared/share-map-parser.ts","../../../packages/context/src/lib/share-map/shared/share-map.service.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/shared/context.enum.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-edit/context-edit.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.html","../../../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-permissions/context-permission-item/context-permission-item.component.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permission-item/context-permission-item.component.html","../../../packages/context/src/lib/context-manager/context-permissions/context-permission.service.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-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/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":["import { RouteServiceOptions } from '@igo2/core/route';\nimport { LayerGroupOptions, LayerOptions } from '@igo2/geo';\n\nexport const ServiceType = [\n 'wms',\n 'wmts',\n 'arcgisrest',\n 'imagearcgisrest',\n 'tilearcgisrest'\n] as const;\nexport type ServiceType = (typeof ServiceType)[number];\n\nexport enum ServiceTypeEnum {\n wms = 0,\n wmts = 1,\n arcgisrest = 2,\n imagearcgisrest = 3,\n tilearcgisrest = 4\n}\n\nconst BaseLayerParamsKeys = [\n 'visible',\n 'opacity',\n 'zIndex',\n 'parentId'\n] as const;\n\nexport const LayerParamsKeys = [\n 'id',\n 'index',\n 'names',\n 'type',\n 'version',\n 'queryString',\n ...BaseLayerParamsKeys\n] as const;\nexport type LayerParamsKeys = (typeof LayerParamsKeys)[number];\n\nexport const GroupParamsKeys = [\n 'title',\n 'id',\n 'expanded',\n ...BaseLayerParamsKeys\n] as const;\nexport type GroupParamsKeys = (typeof GroupParamsKeys)[number];\n\nconst PositionParamsKeys = [\n 'center',\n 'zoom',\n 'rotation',\n 'projection'\n] as const;\ntype PositionParamsKeys = (typeof PositionParamsKeys)[number];\n\nexport interface ShareMapKeysDefinitions {\n urlsKey: string;\n contextKey: string;\n languageKey: string;\n pos: DefinitionKeyParams<PositionParamsKeys>;\n layers: DefinitionKeyParams<LayerParamsKeys>;\n groups: DefinitionKeyParams<GroupParamsKeys>;\n}\n\nexport interface DefinitionKeyParams<T extends string> extends BaseKeyParams {\n params: DefinitionParams<T>;\n}\n\nexport type DefinitionParams<T extends string = string> = Record<\n T,\n BaseKeyParams | undefined\n>;\n\nexport interface BaseKeyParams {\n key: string;\n parse?: (value: string) => unknown;\n stringify?: (value: unknown) => string;\n}\n\nexport interface PositionParams {\n center?: [number, number];\n zoom?: number;\n rotation?: number;\n projection?: string;\n}\n\nexport interface LayerProperties {\n zIndex: number;\n visibility: boolean;\n type: ServiceType;\n opacity: number;\n parentId: string;\n}\n\nexport interface UrlParsedParam {\n position: PositionParams;\n layersOptions: LayerOptions[];\n context: string;\n}\n\nexport type LayerParams = BaseLayerParams & {\n index: number;\n names?: string;\n type?: string;\n};\n\nexport type GroupParams = BaseLayerParams &\n Pick<LayerGroupOptions, 'title' | 'id'> & { expanded?: boolean };\n\ntype BaseLayerParams = Pick<\n LayerOptions,\n 'visible' | 'opacity' | 'zIndex' | 'parentId' | 'id'\n>;\n\nexport interface ShareMapRouteKeysOptions extends RouteServiceOptions {\n context: string;\n urls: string;\n position: string;\n layers: string;\n groups: string;\n center: string;\n zoom: string;\n projection: string;\n rotation: string;\n opacity: string;\n}\n\nexport const SHARE_MAP_KEYS_DEFAULT_OPTIONS: ShareMapRouteKeysOptions = {\n context: 'ctx',\n urls: 'urls',\n position: 'pos',\n layers: 'layers',\n groups: 'groups',\n center: 'ctr',\n zoom: 'z',\n projection: 'p',\n rotation: 'r',\n opacity: 'o'\n};\n","import {\n ServiceTypeEnum,\n ShareMapKeysDefinitions,\n ShareMapRouteKeysOptions\n} from './share-map.interface';\n\nexport function shareMapKeyDefs(\n options: ShareMapRouteKeysOptions\n): ShareMapKeysDefinitions {\n return {\n contextKey: options.context,\n urlsKey: options.urls,\n languageKey: options.languageKey,\n pos: {\n key: options.position,\n params: {\n zoom: {\n key: options.zoom,\n parse: (params) => parseIntergerParam(params, options.zoom)\n },\n center: {\n key: '@',\n parse: parseCenter,\n stringify: stringifyCenter\n },\n rotation: {\n key: options.rotation,\n parse: (params) => parseRotation(params, options.rotation),\n stringify: formatNumber\n },\n projection: {\n key: options.projection,\n parse: (params) => extractParam(params, options.projection)\n }\n }\n },\n layers: {\n key: options.layers,\n params: {\n index: undefined,\n id: {\n key: 'id',\n parse: (params) => extractParam(params, 'id'),\n stringify: (value: string) => `${value}`\n },\n names: {\n key: 'n',\n parse: (params) => {\n const param = extractParam(params, 'n');\n if (!param) return undefined;\n const unbracketed = param.slice(1, -1);\n return decodeURIComponent(unbracketed);\n },\n stringify: (value: string) => `[${encodeURIComponent(value)}]`\n },\n opacity: {\n key: 'o',\n parse: (params) => parseFloatParam(params, 'o')\n },\n visible: {\n key: 'v',\n parse: (params) => parseBooleanParam(params, 'v'),\n stringify: stringifyBoolean\n },\n type: {\n key: 't',\n parse: (params) => parseLayerType(params, 't'),\n stringify: stringifyType\n },\n zIndex: {\n key: 'z',\n parse: (params) => parseIntergerParam(params, 'z')\n },\n parentId: {\n key: 'pid',\n parse: (params) => extractParam(params, 'pid')\n },\n version: {\n key: 'vrn',\n parse: (params) => extractParam(params, 'vrn')\n },\n queryString: {\n key: 'q',\n parse: (params) => extractParam(params, 'q')\n }\n }\n },\n groups: {\n key: options.groups,\n params: {\n id: {\n key: 'id',\n parse: (params) => extractIdParam(params, 'id')\n },\n parentId: {\n key: 'pid',\n parse: (params) => extractIdParam(params, 'pid')\n },\n title: {\n key: 't',\n parse: (params) => {\n const param = extractParam(params, 't');\n return param ? decodeURIComponent(param) : undefined;\n },\n stringify: (value: string) => encodeURIComponent(value)\n },\n visible: {\n key: 'v',\n parse: (params) => parseBooleanParam(params, 'v'),\n stringify: stringifyBoolean\n },\n opacity: {\n key: 'o',\n parse: (params) => parseFloatParam(params, 'o')\n },\n zIndex: {\n key: 'z',\n parse: (params) => parseIntergerParam(params, 'z')\n },\n expanded: {\n key: 'e',\n parse: (params) => parseBooleanParam(params, 'e'),\n stringify: stringifyBoolean\n }\n }\n }\n };\n}\n\nfunction stringifyBoolean(value: boolean): string {\n return value ? '1' : '0';\n}\n\nfunction parseBoolean(params: string): boolean {\n return !!parseInt(params);\n}\n\nfunction stringifyType(value: keyof typeof ServiceTypeEnum): string {\n return String(ServiceTypeEnum[value]);\n}\n\nfunction parseLayerType(\n params: string,\n key: string\n): keyof typeof ServiceTypeEnum {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n const type = Number(param);\n\n return ServiceTypeEnum[type] as keyof typeof ServiceTypeEnum;\n}\n\nfunction stringifyCenter(values: [number, number]): string {\n return values.map(formatNumber).join(',');\n}\n\nfunction parseCenter(params: string | undefined): [number, number] | undefined {\n if (!params?.startsWith('@')) {\n return;\n }\n const paramsSplitted = params.split(',');\n const index = paramsSplitted.findIndex((param) => param.startsWith('@'));\n return [\n Number(paramsSplitted[index].slice(1)),\n Number(paramsSplitted[index + 1])\n ];\n}\n\nfunction parseRotation(params: string | undefined, key: string): number {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n const degree = parseInteger(param);\n return (degree * Math.PI) / 180;\n}\n\nfunction parseIntergerParam(params: string | undefined, key: string): number {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n return parseInteger(param);\n}\n\nfunction parseBooleanParam(params: string | undefined, key: string): boolean {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n return parseBoolean(param);\n}\n\nfunction parseFloatParam(params: string | undefined, key: string): number {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n return parseFloat(param);\n}\n\nfunction extractParam(\n params: string | undefined,\n suffix: string\n): string | undefined {\n return params\n ?.split(',')\n .find((param) => param.endsWith(suffix))\n ?.slice(0, -suffix.length);\n}\n\nfunction extractIdParam(\n params: string,\n suffix: 'id' | 'pid'\n): string | undefined {\n const paramsSplited = params.split(',');\n // Find the parameter that ends with exact id/pid and isn't part of another word\n const param = paramsSplited.find((param) => {\n const key = param.slice(-suffix.length);\n\n if (key !== suffix) {\n return false;\n }\n\n if (suffix === 'pid') {\n return true;\n }\n\n const prefixChar = param.slice(-suffix.length - 1, -suffix.length);\n return prefixChar !== 'p';\n });\n return param?.slice(0, -suffix.length);\n}\n\nfunction parseInteger(value: string) {\n return parseInt(value, 10);\n}\n\nfunction formatNumber(value: number) {\n return value.toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\n}\n","import { Params } from '@angular/router';\n\nimport { RouteServiceOptions } from '@igo2/core/route';\nimport {\n AnyDataSourceOptions,\n AnyLayerOptions,\n QueryFormat,\n QueryableDataSourceOptions,\n isLayerGroupOptions\n} from '@igo2/geo';\n\nimport { ServiceType, ShareMapKeysDefinitions } from './share-map.interface';\n\nexport function buildDataSourceOptions(\n type: ServiceType,\n url: string,\n layers: string[],\n version: string\n): AnyDataSourceOptions {\n const isLayerType = [\n 'wmts',\n 'arcgisrest',\n 'imagearcgisrest',\n 'tilearcgisrest'\n ].includes(type);\n const arcgisClause =\n type === 'arcgisrest' ||\n type === 'imagearcgisrest' ||\n type === 'tilearcgisrest';\n const params =\n type === 'wms' ? { LAYERS: layers.join(','), VERSION: version } : undefined;\n\n const layer = isLayerType ? layers.join(',') : undefined;\n const baseParams = {\n type: type,\n url,\n params,\n layer,\n version: type === 'wmts' ? '1.0.0' : undefined\n };\n\n if (arcgisClause) {\n return {\n ...baseParams,\n queryable: true,\n queryFormat: QueryFormat.ESRIJSON\n } as QueryableDataSourceOptions;\n }\n\n return baseParams;\n}\n\nexport function getFlattenOptions(\n options: AnyLayerOptions[]\n): AnyLayerOptions[] {\n return options.reduce((accumulator, option) => {\n if (isLayerGroupOptions(option)) {\n const children = option.children\n ? getFlattenOptions(option.children)\n : [];\n accumulator.push(option, ...children);\n } else {\n accumulator.push(option);\n }\n return accumulator;\n }, []);\n}\n\n/**\n * Checks if the provided query parameters contain legacy parameter pairs\n * (e.g., layers and URLs) that indicate older configuration formats.\n */\nexport function hasLegacyParams(\n params: Params,\n optionsLegacy: RouteServiceOptions\n): boolean {\n const {\n layersKey,\n wmsUrlKey,\n wmsLayersKey,\n wmtsUrlKey,\n wmtsLayersKey,\n arcgisUrlKey,\n arcgisLayersKey,\n iarcgisUrlKey,\n iarcgisLayersKey,\n tarcgisUrlKey,\n tarcgisLayersKey\n } = optionsLegacy;\n\n // Define valid legacy parameter pairs\n const legacyPairs: [string | undefined, string | undefined][] = [\n [layersKey, wmsUrlKey],\n [wmsLayersKey, wmsUrlKey],\n [wmtsLayersKey, wmtsUrlKey],\n [arcgisLayersKey, arcgisUrlKey],\n [iarcgisLayersKey, iarcgisUrlKey],\n [tarcgisLayersKey, tarcgisUrlKey]\n ].filter(([layer, url]) => layer && url) as [string, string][];\n\n // Check if any legacy pair exists in the query parameters\n return legacyPairs.some(\n ([layer, url]) => getParamValue(params, layer) && getParamValue(params, url)\n );\n}\n\nexport function hasModernShareParams(\n params: Params,\n keysDefinitions: ShareMapKeysDefinitions\n): boolean {\n const { contextKey, groups } = keysDefinitions;\n const hasGroups = !!getParamValue(params, groups.key);\n const hasContext = !!getParamValue(params, contextKey);\n\n return hasContext || hasGroups;\n}\n\nexport function getParamValue(params: Params, key: string): string | undefined {\n const value = params[key];\n return value !== '' ? value : undefined;\n}\n","import {\n AnyDataSourceOptions,\n AnyLayer,\n AnyLayerOptions,\n ID_GROUP_PREFIX,\n IgoMap,\n Layer,\n LayerGroup,\n LayerId,\n MapViewController,\n WMSDataSourceOptions,\n findParentId,\n getLayerOptionIdentifier,\n isLayerGroup,\n isLayerGroupOptions,\n isLayerItem\n} from '@igo2/geo';\nimport { ObjectUtils, OptionalRequired } from '@igo2/utils';\n\nimport type { DetailedContext } from '../../context-manager';\nimport {\n BaseKeyParams,\n DefinitionParams,\n GroupParams,\n LayerParams,\n PositionParams,\n ServiceType,\n ShareMapKeysDefinitions\n} from './share-map.interface';\nimport { getFlattenOptions } from './share-map.utils';\n\nexport class ShareMapEncoder {\n private context: DetailedContext | undefined;\n language: string;\n\n constructor(\n private SHARE_MAP_DEFS: ShareMapKeysDefinitions,\n private document: Document\n ) {}\n\n generateUrl(map: IgoMap, context: DetailedContext): string {\n this.context = context;\n\n const layers = [\n map.layerController.baseLayer,\n ...map.layerController.layersFlattened\n ].filter(Boolean);\n\n const urlParams = this.getBaseUrlConfig(map.viewController);\n this.buildQueryUrl(layers, urlParams);\n\n const [baseUrl] = this.document.location.href.split('?');\n const queryString = urlParams.toString();\n return queryString !== '' ? `${baseUrl}?${queryString}` : baseUrl;\n }\n\n /**\n * Replaces local group IDs with unique IDs to avoid conflicts and have short URL.\n * This is necessary for sharing the map context.\n */\n private replaceGroupLocalIds(layers: AnyLayer[]): void {\n const idMap = new Map<LayerId, LayerId>();\n const existingIds = new Set(\n layers.map((layer) => layer.id).filter(Boolean)\n );\n\n // eslint-disable-next-line prefer-const\n let counter = 1;\n layers.forEach((layer) => {\n if (layer.id && layer.id.toString().includes(ID_GROUP_PREFIX)) {\n const newId = this.getUniqueId(existingIds, counter);\n idMap.set(layer.id, newId);\n layer.options.id = newId;\n }\n });\n }\n\n private getUniqueId(existingIds: Set<string | number>, counter: number) {\n while (existingIds.has(String(counter))) {\n counter++;\n }\n existingIds.add(String(counter));\n return counter;\n }\n\n private getCurrentContext(): {\n layers: AnyLayerOptions[];\n center?: [number, number];\n projection?: string;\n zoom?: number;\n rotation?: number;\n } {\n return ObjectUtils.removeUndefined({\n layers: this.context?.layers,\n center: this.context?.map.view.center,\n projection: this.context?.map.view.projection,\n zoom: this.context?.map.view.zoom,\n rotation: this.context?.map.view.rotation\n });\n }\n\n /**\n * Filters layers to include only LayerGroups or LayerItems with a valid ServiceType.\n */\n private isLayerSharable(layers: AnyLayer[]): AnyLayer[] {\n return layers.filter(\n (layer) =>\n isLayerGroup(layer) ||\n (isLayerItem(layer) &&\n ServiceType.includes(layer.dataSource?.options?.type as ServiceType))\n );\n }\n\n /**\n * Extracts only LayerGroup items from the filtered layers.\n */\n private getLayerGroups(layers: AnyLayer[]): LayerGroup[] {\n return layers.filter(isLayerGroup) as LayerGroup[];\n }\n\n /**\n * Extracts only LayerItem items from the filtered layers.\n */\n private getLayerItems(layers: AnyLayer[]): Layer[] {\n return layers.filter(isLayerItem) as Layer[];\n }\n\n private buildQueryUrl(layers: AnyLayer[], urlParams: URLSearchParams) {\n const layersSharable = this.isLayerSharable(layers);\n this.replaceGroupLocalIds(layersSharable);\n const layersChanged = this.getFilteredMapLayers(layersSharable);\n\n const groups = this.getLayerGroups(layersChanged);\n const groupsQueryValue = this.buildGroupsQueryValue(groups);\n\n const layersByService = this.generateLayersOptionsByService(\n this.getLayerItems(layersChanged)\n );\n const [urls, layerParams] = this.buildLayersQueryValues(layersByService);\n\n if (urls.length > 0) {\n urlParams.set(this.SHARE_MAP_DEFS.urlsKey, urls.join(','));\n }\n if (layerParams.length > 0) {\n urlParams.set(this.SHARE_MAP_DEFS.layers.key, layerParams.join(';'));\n }\n if (groupsQueryValue) {\n urlParams.set(this.SHARE_MAP_DEFS.groups.key, groupsQueryValue);\n }\n }\n\n /**\n * Retrieves the current context layers and maps them by identifier.\n */\n private getContextLayersMap(): Map<string, AnyLayerOptions> {\n const ctxLayers = this.getCurrentContext()?.layers || [];\n const ctxFlattened = getFlattenOptions(ctxLayers);\n\n return new Map(\n ctxFlattened.map((lctx) => {\n const identifier = getLayerOptionIdentifier(lctx);\n return [identifier, lctx] as const;\n })\n );\n }\n\n /**\n * Filters layers and context layers based on visibility, opacity, and expanded state.\n */\n private getFilteredMapLayers(filteredLayers: AnyLayer[]): AnyLayer[] {\n const ctxLayersMap = this.getContextLayersMap();\n\n return filteredLayers.filter((layer) => {\n const mapLayerIdentifier = getLayerOptionIdentifier(layer.options);\n if (!mapLayerIdentifier) return false;\n const ctxLayer = ctxLayersMap.get(mapLayerIdentifier);\n if (!ctxLayer) return true;\n\n const visibilityChange = layer.visible !== (ctxLayer.visible ?? true);\n const opacityChange = layer.opacity !== (ctxLayer.opacity ?? 1);\n const layerParentId = this.getIdsNestedParent(layer)?.join('.');\n const ctxParentId =\n ctxLayer.parentId ?? findParentId(this.context.layers, ctxLayer);\n const parentIdChange = ctxParentId !== layerParentId;\n\n let expandedChange = false;\n let titleChange = false;\n if (isLayerGroup(layer) && isLayerGroupOptions(ctxLayer)) {\n // Check if the layer group was assign an local id\n // If so, we don't support any change for this case\n if (String(ctxLayer.id).includes(ID_GROUP_PREFIX)) {\n return false;\n }\n expandedChange = (ctxLayer.expanded ?? false) !== layer.expanded;\n titleChange = (ctxLayer.title ?? false) !== layer.title;\n }\n\n return (\n visibilityChange ||\n opacityChange ||\n expandedChange ||\n titleChange ||\n parentIdChange\n );\n });\n }\n\n private getIdsNestedParent(\n node: Layer | LayerGroup,\n ids?: LayerId[]\n ): LayerId[] | undefined {\n if (!node.parent) return ids;\n\n if (node.parent) {\n if (!ids) {\n ids = [node.parent.id];\n } else {\n ids.unshift(node.parent.id);\n }\n return this.getIdsNestedParent(node.parent, ids);\n }\n\n return ids;\n }\n\n private generateLayersOptionsByService(\n layers: Layer[]\n ): [url: string, layers: LayerParams[]][] {\n const layersByUrl = new Map<string, LayerParams[]>();\n\n layers.forEach((layer) => {\n const [url, params] = this.generateLayerOption(layer);\n if (!layersByUrl.has(url)) {\n layersByUrl.set(url, [params]);\n } else {\n layersByUrl.get(url)!.push(params);\n }\n });\n\n let customIndex = 0;\n return Array.from(layersByUrl.entries()).map(([url, layerParams]) => {\n const hasNoId = layerParams.some((p) => !p.id);\n if (hasNoId) {\n layerParams.forEach((params) => {\n if (!params.id) {\n params.index = customIndex;\n }\n });\n customIndex++;\n }\n return [url, layerParams];\n });\n }\n\n private generateLayerOption(\n layer: Layer\n ): [url: string, layers: LayerParams] {\n const dataSourceOptions = layer.dataSource.options as AnyDataSourceOptions;\n return [\n this.concatUrlWithVersion(dataSourceOptions),\n this.getLayerParams(layer)\n ];\n }\n\n private getLayerNames(dataSourceOptions: AnyDataSourceOptions): string {\n const type = dataSourceOptions.type.toLowerCase() as ServiceType;\n if (type === 'wms') {\n const params = (dataSourceOptions as Partial<WMSDataSourceOptions>)\n .params;\n return params.LAYERS;\n }\n\n return 'layer' in dataSourceOptions ? dataSourceOptions.layer : '';\n }\n\n private getWmsVersion(\n dataSourceOptions: AnyDataSourceOptions\n ): string | undefined {\n const params = (dataSourceOptions as Partial<WMSDataSourceOptions>)?.params;\n return params?.VERSION && params.VERSION !== '1.3.0'\n ? params.VERSION\n : undefined;\n }\n\n private concatUrlWithVersion(\n dataSourceOptions: AnyDataSourceOptions\n ): string {\n const url = dataSourceOptions.url;\n\n if ((dataSourceOptions.type.toLowerCase() as ServiceType) === 'wms') {\n const version = this.getWmsVersion(dataSourceOptions);\n if (version) {\n const operator = url.includes('?') ? '&' : '?';\n const { version: versionDef } = this.SHARE_MAP_DEFS.layers.params;\n return `${url}${operator}${versionDef.key}=${version}`;\n }\n }\n\n return dataSourceOptions.url;\n }\n\n private getLayerParams(layer: Layer): LayerParams {\n const dataSourceOptions = layer.dataSource.options;\n const isExisting = this.context?.layers\n ? this.hasLayerId(this.context.layers, layer.id)\n : false;\n return {\n index: undefined,\n ...(isExisting\n ? { id: layer.id }\n : {\n names: this.getLayerNames(dataSourceOptions),\n type: dataSourceOptions?.type\n }),\n opacity: this.getOpacity(layer.opacity),\n parentId: layer.parent?.id,\n visible: this.getVisibility(layer.visible),\n zIndex: layer.zIndex\n };\n }\n\n /** Recursive */\n private hasLayerId(\n layersOptions: AnyLayerOptions[],\n targetId: string | number\n ): boolean {\n if (targetId == null) return false;\n return layersOptions.some((l) => {\n if (l.id == null) return false;\n if (!isLayerGroupOptions(l)) {\n return String(l.id) === String(targetId);\n }\n\n if (isLayerGroupOptions(l) && Array.isArray(l.children)) {\n return this.hasLayerId(l.children, targetId);\n }\n return false;\n });\n }\n\n private getOpacity(opacity: number): number | undefined {\n return opacity === 1 ? undefined : opacity;\n }\n\n private getVisibility(visibility: boolean | undefined): boolean {\n return !!visibility;\n }\n\n private buildLayersQueryValues(\n layersByService: [url: string, params: LayerParams[]][]\n ): [urls: string[], layerParams: string[]] {\n const urls: string[] = [];\n const layerParams: string[] = [];\n for (const [url, layer] of layersByService) {\n let needUrl = false;\n\n for (const param of layer) {\n layerParams.push(this.stringifyLayerParams(param));\n if (param.id == null) {\n needUrl = true;\n }\n }\n\n // If some layer have no id push the url service.\n if (needUrl) {\n urls.push(url);\n }\n }\n\n return [urls, layerParams];\n }\n\n private stringifyLayerParams(params: LayerParams): string {\n const { index, ...restParams } = params;\n\n const stringifiedParams = this.stringifyDefinitions(\n restParams,\n this.SHARE_MAP_DEFS.layers.params\n );\n\n return restParams.id != null\n ? `${stringifiedParams}`\n : `${index},${stringifiedParams}`;\n }\n\n private getBaseUrlConfig(viewController: MapViewController): URLSearchParams {\n const { pos, contextKey, languageKey } = this.SHARE_MAP_DEFS;\n const href = this.document.location.href;\n const urlParams = this.getSanitizedParams(href);\n\n if (pos) {\n const positionStringified = this.stringifyPosition(\n this.getPosition(viewController)\n );\n urlParams.set(pos.key, positionStringified);\n }\n const contextUri = this.context?.uri;\n if (contextUri) urlParams.set(contextKey, contextUri);\n\n if (this.language && !urlParams.has(languageKey))\n urlParams.set(languageKey, this.language);\n\n return urlParams;\n }\n\n getSanitizedParams(baseUrl: string): URLSearchParams {\n const [, queryString] = baseUrl.split('?');\n const params = new URLSearchParams(queryString);\n\n const keys = this.extractKeys(this.SHARE_MAP_DEFS);\n keys.forEach((key) => {\n params.delete(key);\n });\n\n return params;\n }\n\n private extractKeys(defs: ShareMapKeysDefinitions): string[] {\n const keys: string[] = [];\n for (const key in defs) {\n if (Object.prototype.hasOwnProperty.call(defs, key)) {\n const value = defs[key];\n if (typeof value === 'string') {\n keys.push(value);\n } else if (typeof value === 'object' && value !== null) {\n keys.push(value.key);\n }\n }\n }\n\n return keys;\n }\n\n private getPosition(viewController: MapViewController): PositionParams {\n return ObjectUtils.removeUndefined({\n center: viewController.getCenter('EPSG:4326'),\n zoom: this.getZoom(viewController),\n rotation: this.getRotation(viewController),\n projection: this.getProjection(viewController)\n });\n }\n\n private getProjection(viewController: MapViewController): string | undefined {\n const ctxProjection = this.getCurrentContext().projection;\n const mapProjection = viewController.getOlProjection().getCode();\n return ctxProjection === mapProjection ? undefined : mapProjection;\n }\n\n private getZoom(viewController: MapViewController): number | undefined {\n const mapZoom = viewController.getZoom();\n const ctxZoom = this.getCurrentContext().zoom;\n return ctxZoom === mapZoom ? undefined : mapZoom;\n }\n\n private getRotation(viewController: MapViewController): number | undefined {\n const rotationRadians = viewController.getRotation();\n const rotationDegree = (rotationRadians * 180) / Math.PI;\n const ctxRotation = this.getCurrentContext().rotation;\n return rotationDegree === ctxRotation || rotationDegree === 0\n ? undefined\n : rotationDegree;\n }\n\n private stringifyPosition(position: PositionParams): string {\n const definitions = this.SHARE_MAP_DEFS.pos.params;\n const { center, ...restPosition } = position;\n const stringifiedParams = this.stringifyDefinitions(\n restPosition,\n definitions\n );\n\n const result = [\n `${definitions.center.key}${definitions.center.stringify(center)}`,\n stringifiedParams\n ].filter(Boolean);\n\n return result.join(',');\n }\n\n private stringifyDefinitions(\n values: Record<string, unknown>,\n definitions: DefinitionParams\n ): string | undefined {\n const result = Object.keys(ObjectUtils.removeUndefined(values))\n .map((key) => {\n const { key: defKey, stringify } = definitions[key] as BaseKeyParams;\n const value = stringify ? stringify(values[key]) : values[key];\n return `${value}${defKey}`;\n })\n .join(',');\n return result === '' ? undefined : result;\n }\n\n private buildGroupsQueryValue(layers: LayerGroup[]): string | undefined {\n if (layers.length === 0) return undefined;\n\n return layers\n .map((layer) => {\n const params = this.getLayerGroupParams(layer);\n return this.stringifyGroupParams(params);\n })\n .join(';');\n }\n\n private getLayerGroupParams(layer: LayerGroup): GroupParams {\n return {\n id: layer.id,\n title: layer.title,\n zIndex: layer.zIndex,\n parentId: layer.parent?.id,\n visible: this.getVisibility(layer.visible),\n opacity: this.getOpacity(layer.opacity),\n expanded: layer.expanded\n } satisfies OptionalRequired<GroupParams>;\n }\n\n private stringifyGroupParams(params: GroupParams): string {\n return this.stringifyDefinitions(params, this.SHARE_MAP_DEFS.groups.params);\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Params } from '@angular/router';\n\nimport { RouteServiceOptions } from '@igo2/core/route';\nimport { LayerOptions, generateIdFromSourceOptions } from '@igo2/geo';\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { PositionParams, ServiceType } from './share-map.interface';\nimport { buildDataSourceOptions } from './share-map.utils';\n\ninterface SharedLayerConfig {\n layers: string[];\n zIndex: number | undefined;\n}\n\nexport class ShareMapLegacyParser {\n constructor(private options: RouteServiceOptions) {}\n\n parseUrl(params: Params): LayerOptions[] | undefined {\n const layerOptions = ServiceType.flatMap((type) =>\n this.readLayersQueryParamsByType(params, type)\n ).filter(Boolean);\n\n return layerOptions;\n }\n\n parsePosition(params: Params): PositionParams {\n const center = params[this.options.centerKey];\n const projection = params[this.options.projectionKey];\n const zoom = params[this.options.zoomKey];\n const rotation = params[this.options.rotationKey];\n\n return ObjectUtils.removeUndefined({\n center: center?.split(',').map(Number),\n projection,\n zoom: zoom ? Number(zoom) : undefined,\n rotation: rotation ? Number(rotation) : undefined\n });\n }\n\n private readLayersQueryParamsByType(\n params: Params,\n type: ServiceType\n ): LayerOptions[] | undefined {\n const [nameParamLayersKey, urlsKey] = this.getQueryKeyByType(params, type);\n if (!nameParamLayersKey || !urlsKey) {\n return undefined;\n }\n\n const layersByService: string[] = params[nameParamLayersKey].split('),(');\n const urls: string[] = params[urlsKey].split(',');\n\n return urls\n .map((urlSrc, index) => {\n // Sanitize URL and extract version\n const [url, version] = this.sanitizeUrl(urlSrc);\n\n const layersConfig = this.extractLayersByService(\n this.removeParenthesis(layersByService[index])\n );\n\n // Generate layer options for the current service\n return this.extractLayersOptions(\n layersConfig,\n url,\n type,\n version,\n params\n );\n })\n .flat();\n }\n\n private getQueryKeyByType(\n params: Params,\n type: string\n ): [nameParamLayersKey: string | undefined, urlsKey: string | undefined] {\n let nameParamLayersKey;\n let urlsKey;\n\n const {\n layersKey,\n wmsUrlKey,\n wmsLayersKey,\n wmtsUrlKey,\n wmtsLayersKey,\n arcgisUrlKey,\n arcgisLayersKey,\n iarcgisUrlKey,\n iarcgisLayersKey,\n tarcgisUrlKey,\n tarcgisLayersKey\n } = this.options;\n\n switch (type) {\n case 'wms':\n if ((params[layersKey] || params[wmsLayersKey]) && params[wmsUrlKey]) {\n urlsKey = wmsUrlKey;\n nameParamLayersKey = params[wmsLayersKey] ? wmsLayersKey : layersKey;\n }\n break;\n case 'wmts':\n if (params[wmtsLayersKey] && params[wmtsUrlKey]) {\n urlsKey = wmtsUrlKey;\n nameParamLayersKey = wmtsLayersKey;\n }\n break;\n case 'arcgisrest':\n if (params[arcgisLayersKey] && params[arcgisUrlKey]) {\n urlsKey = arcgisUrlKey;\n nameParamLayersKey = arcgisLayersKey;\n }\n break;\n case 'imagearcgisrest':\n if (params[iarcgisLayersKey] && params[iarcgisUrlKey]) {\n urlsKey = iarcgisUrlKey;\n nameParamLayersKey = iarcgisLayersKey;\n }\n break;\n case 'tilearcgisrest':\n if (params[tarcgisLayersKey] && params[tarcgisUrlKey]) {\n urlsKey = tarcgisUrlKey;\n nameParamLayersKey = tarcgisLayersKey;\n }\n break;\n }\n if (!nameParamLayersKey || !urlsKey) {\n return [undefined, undefined];\n }\n\n return [nameParamLayersKey, urlsKey];\n }\n\n private sanitizeUrl(url: string): [url: string, version: string | undefined] {\n const version =\n this.getQueryParam('version', url.toLocaleLowerCase()) || undefined;\n\n if (version) {\n const versionRegex = new RegExp(`[?&]version=${version}`, 'i');\n url = url.replace(versionRegex, '').replace(/[?&]$/, '');\n }\n\n if (url.endsWith('?')) {\n url = url.substring(0, url.length - 1);\n }\n return [url, version];\n }\n\n private getQueryParam(name: string, url: string): string | undefined {\n let paramValue;\n if (url.includes('?')) {\n const httpParams = new HttpParams({ fromString: url.split('?')[1] });\n paramValue = httpParams.get(name);\n }\n return paramValue;\n }\n\n private extractLayersByService(layersByService: string): SharedLayerConfig[] {\n if (!layersByService.includes(':igoz')) {\n return [\n {\n layers: layersByService.split(','),\n zIndex: null\n }\n ];\n }\n\n const layers = layersByService.match(\n /([^(),:]+(?:,[^(),:]+)*(:[^(),:]+(?:[:][^(),:]+)*)?)/g\n );\n\n return layers.map((layer) => {\n const [names, zIndex] = layer.split(':igoz');\n return {\n layers: names.split(','),\n zIndex: parseInt(zIndex)\n };\n });\n }\n\n private removeParenthesis(value: string) {\n if (value.startsWith('(')) {\n value = value.substr(1);\n }\n\n if (value.endsWith(')')) {\n value = value.slice(0, -1);\n }\n\n return value;\n }\n\n private extractLayersOptions(\n layersConfig: SharedLayerConfig[],\n url: string,\n type: ServiceType,\n version: string,\n params: Params\n ): LayerOptions[] {\n return layersConfig.map((layerConfig) => {\n const sourceOptions = buildDataSourceOptions(\n type,\n url,\n layerConfig.layers,\n version\n );\n const id = generateIdFromSourceOptions(sourceOptions);\n\n const visible = this.computeLayerVisibilityFromUrl(params, id);\n\n return ObjectUtils.removeUndefined({\n id,\n visible: visible,\n zIndex: layerConfig.zIndex,\n sourceOptions\n });\n });\n }\n\n private computeLayerVisibilityFromUrl(\n params: Params,\n currentLayerid: string\n ): boolean {\n const queryParams = params;\n let visible = true;\n if (!queryParams || !currentLayerid) {\n return visible;\n }\n let visibleOnLayersParams = '';\n let visibleOffLayersParams = '';\n let visiblelayers: string[] = [];\n let invisiblelayers: string[] = [];\n if (queryParams['visiblelayers']) {\n visibleOnLayersParams = queryParams['visiblelayers'];\n }\n if (queryParams['invisiblelayers']) {\n visibleOffLayersParams = queryParams['invisiblelayers'];\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 return visible;\n }\n}\n","import { Params } from '@angular/router';\n\nimport { RouteServiceOptions } from '@igo2/core/route';\nimport {\n type AnyLayerOptions,\n type LayerGroupOptions,\n type LayerOptions\n} from '@igo2/geo';\nimport { ObjectUtils, OptionalRequired } from '@igo2/utils';\n\nimport { ShareMapLegacyParser } from './share-map-legacy.service';\nimport {\n LayerProperties,\n PositionParams,\n ServiceType,\n ShareMapKeysDefinitions\n} from './share-map.interface';\nimport {\n buildDataSourceOptions,\n getParamValue,\n hasLegacyParams,\n hasModernShareParams\n} from './share-map.utils';\n\ntype BaseLayerOptionsParsed = Pick<\n LayerOptions,\n 'visible' | 'zIndex' | 'opacity' | 'parentId'\n> &\n Partial<Pick<LayerOptions, 'id'>>;\n\ntype LayerOptionsParsed = BaseLayerOptionsParsed &\n Pick<LayerOptions, 'sourceOptions'>;\n\ntype LayerGroupOptionsParserd = BaseLayerOptionsParsed &\n Pick<LayerGroupOptions, 'id' | 'title' | 'expanded' | 'type'>;\n\nexport class ShareMapParser {\n legacy: ShareMapLegacyParser;\n\n constructor(\n private keysDefinitions: ShareMapKeysDefinitions,\n private legacyOptions: RouteServiceOptions\n ) {\n this.legacy = new ShareMapLegacyParser(legacyOptions);\n }\n\n parseLayers(params: Params): AnyLayerOptions[] | undefined {\n if (\n !hasModernShareParams(params, this.keysDefinitions) &&\n hasLegacyParams(params, this.legacyOptions)\n ) {\n return this.legacy.parseUrl(params);\n }\n\n const {\n urlsKey,\n layers: layersDef,\n groups: groupsDef\n } = this.keysDefinitions;\n\n const layersArray = this.splitParam(\n getParamValue(params, layersDef.key),\n ';'\n );\n const urlsArray = this.splitParam(getParamValue(params, urlsKey), ',');\n const groupsArray = this.splitParam(\n getParamValue(params, groupsDef.key),\n ';'\n );\n\n const groupsOptions = groupsArray.map((layer) => this.parseGroup(layer));\n const layersOptions = layersArray\n .map((layer) => this.parseLayer(layer, urlsArray))\n .filter(Boolean);\n return [...groupsOptions, ...layersOptions];\n }\n\n private splitParam(value: string | undefined, delimiter: string): string[] {\n return value ? value.split(delimiter) : [];\n }\n\n parsePosition(params: Params): PositionParams | undefined {\n const position = decodeURIComponent(params[this.keysDefinitions.pos.key]);\n if (!position) {\n return this.legacy.parsePosition(params);\n }\n\n const { center, zoom, rotation, projection } =\n this.keysDefinitions.pos.params;\n\n return ObjectUtils.removeUndefined({\n center: center.parse(position) as [number, number],\n zoom: zoom.parse(position) as number,\n rotation: rotation.parse(position) as number,\n projection: projection.parse(position) as string\n } satisfies OptionalRequired<PositionParams>);\n }\n\n private parseLayer(\n layer: string,\n urls: string[]\n ): LayerOptionsParsed | undefined {\n const { zIndex, visibility, type, opacity, parentId } =\n this.extractLayerProperties(layer);\n const base = {\n visible: visibility,\n zIndex,\n opacity,\n parentId\n } satisfies BaseLayerOptionsParsed;\n\n const layerNames = this.extractLayerNames(layer);\n\n if (layerNames) {\n const urlIndex = this.extractUrlIndex(layer);\n if (urlIndex === undefined) return undefined;\n\n const url = urls[urlIndex];\n const version = this.extractVersionFromUrl(url);\n\n const sourceOptions = buildDataSourceOptions(\n type,\n url,\n layerNames,\n version\n );\n\n return ObjectUtils.removeUndefined({\n id: undefined,\n sourceOptions,\n ...base\n } satisfies OptionalRequired<LayerOptionsParsed>);\n }\n\n const id = this.extractLayerId(layer);\n if (!id) return undefined;\n return ObjectUtils.removeUndefined({\n id,\n sourceOptions: undefined,\n ...base\n } satisfies OptionalRequired<LayerOptionsParsed>);\n }\n\n private parseGroup(properties: string): LayerGroupOptionsParserd {\n const { params } = this.keysDefinitions.groups;\n return ObjectUtils.removeUndefined({\n id: params.id.parse(properties) as string,\n title: params.title.parse(properties) as string,\n zIndex: params.zIndex.parse(properties) as number,\n visible: params.visible.parse(properties) as boolean,\n opacity: params.opacity.parse(properties) as number,\n parentId: params.parentId.parse(properties) as string,\n expanded: params.expanded.parse(properties) as boolean,\n type: 'group'\n } satisfies OptionalRequired<LayerGroupOptionsParserd>);\n }\n\n private extractVersionFromUrl(url: string): string | undefined {\n const versionDef = this.keysDefinitions.layers.params.version;\n return versionDef.parse(url) as string;\n }\n\n private extractLayerId(layer: string): string | undefined {\n const { id } = this.keysDefinitions.layers.params;\n const regex = new RegExp(`([a-zA-Z0-9_]+)${id.key}\\\\b`);\n const match = layer.match(regex);\n return match ? match[1] : undefined;\n }\n\n private extractUrlIndex(layer: string): number | undefined {\n const { index } = this.keysDefinitions.layers.params;\n const regex = index ? new RegExp(`([\\\\d.]+)${index}`) : /([\\d.]+)/;\n const match = layer.match(regex);\n return match ? parseInt(match[1], 10) : undefined;\n }\n\n private extractLayerNames(layer: string): string[] | undefined {\n const { names } = this.keysDefinitions.layers.params;\n const pattern = new RegExp(`\\\\[.*?\\\\]${names.key}`, 'g');\n\n const matches = layer.match(pattern);\n if (!matches) return undefined;\n\n return matches\n .map((match) =>\n decodeURIComponent(match.slice(1, -`]${names.key}`.length))\n )\n .join('\\n')\n .split(',');\n }\n\n private extractLayerProperties(properties: string): LayerProperties {\n const { params } = this.keysDefinitions.layers;\n return {\n zIndex: params.zIndex.parse(properties) as number,\n visibility: params.visible.parse(properties) as boolean,\n type: params.type.parse(properties) as ServiceType,\n opacity: params.opacity.parse(properties) as number,\n parentId: params.parentId.parse(properties) as string\n } satisfies OptionalRequired<LayerProperties>;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { RouteService, RouteServiceOptions } from '@igo2/core/route';\nimport { AnyLayerOptions, IgoMap } from '@igo2/geo';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { shareMapKeyDefs } from './share-map-definitions';\nimport { ShareMapEncoder } from './share-map-encoder';\nimport { ShareMapParser } from './share-map-parser';\nimport {\n PositionParams,\n SHARE_MAP_KEYS_DEFAULT_OPTIONS,\n ShareMapKeysDefinitions,\n ShareMapRouteKeysOptions\n} from './share-map.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShareMapService {\n routeService = inject(RouteService);\n document = inject<Document>(DOCUMENT);\n\n get language(): string {\n return this._language;\n }\n set language(value: string) {\n this._language = value;\n if (this.encoder) {\n this.encoder.language = value;\n }\n }\n private _language = '';\n\n options: ShareMapRouteKeysOptions;\n optionsLegacy: RouteServiceOptions;\n keysDefinitions: ShareMapKeysDefinitions;\n private encoder: ShareMapEncoder;\n private parser: ShareMapParser;\n\n constructor() {\n this.options = SHARE_MAP_KEYS_DEFAULT_OPTIONS;\n this.optionsLegacy = this.routeService.legacyOptions;\n this.keysDefinitions = shareMapKeyDefs({\n ...SHARE_MAP_KEYS_DEFAULT_OPTIONS,\n languageKey: this.routeService.options.languageKey\n });\n\n this.encoder = new ShareMapEncoder(this.keysDefinitions, this.document);\n\n this.parser = new ShareMapParser(\n this.keysDefinitions,\n this.routeService.legacyOptions\n );\n\n this.routeService.queryParams.subscribe((params) => {\n const language = params[this.keysDefinitions.languageKey];\n if (language) {\n this.language = language;\n }\n });\n }\n\n generateUrl(map: IgoMap, context: DetailedContext): string {\n return this.encoder.generateUrl(map, context);\n }\n\n parsePosition(params: Params): PositionParams | undefined {\n return this.parser.parsePosition(params);\n }\n\n parseLayers(params: Params): AnyLayerOptions[] | undefined {\n return this.parser.parseLayers(params);\n }\n\n sanitizeBaseUrl(baseUrl: string): string {\n const params = this.encoder.getSanitizedParams(baseUrl);\n const [base] = baseUrl.split('?');\n const queryString = params.toString();\n return queryString !== '' ? `${base}?${queryString}&` : `${base}?`;\n }\n\n getContext(params: Params): string | undefined {\n return (\n params[this.options.context] ?? params[this.optionsLegacy.contextKey]\n );\n }\n\n getZoom(params: Params): number | undefined {\n return this.parsePosition(params).zoom;\n }\n\n getUrlWithApi(formValues) {\n const loc = this.document.location;\n const origin = loc.origin;\n const pathname = loc.pathname;\n const search = loc.search;\n const params = new URLSearchParams(search);\n params.set('context', formValues.uri);\n if (this.language) {\n params.set('lang', this.language);\n }\n return `${origin}${pathname}?${params.toString()}`;\n }\n\n hasPositionParams(params: Params): boolean {\n const { projectionKey, rotationKey, zoomKey, centerKey } =\n this.optionsLegacy;\n const { pos } = this.keysDefinitions;\n\n return Boolean(\n params[pos.key] ||\n params[projectionKey] ||\n params[rotationKey] ||\n params[zoomKey] ||\n params[centerKey]\n );\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } 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 { ShareMapService } from '../../share-map/shared/share-map.service';\nimport {\n Context,\n ContextDetailedChanges,\n ContextMapView,\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 private http = inject(HttpClient);\n private authService = inject(AuthService);\n private languageService = inject(LanguageService);\n private config = inject(ConfigService);\n private messageService = inject(MessageService);\n private storageService = inject(StorageService);\n private exportService = inject(ExportService);\n private shareMapService = inject(ShareMapService);\n private route = inject(RouteService, { optional: true });\n\n public context$ = new BehaviorSubject<DetailedContext>(undefined);\n public contexts$ = new BehaviorSubject<ContextsList>({ ours: [] });\n public defaultContextId$ = new BehaviorSubject<number | 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 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 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: number): 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 getDetailsByUri(uri: string): Observable<DetailedContext> {\n const url = `${this.baseUrl}/contexts/uri/${uri}/details`;\n return this.http.get<DetailedContext>(url).pipe(\n catchError((res) => {\n this.handleError(res, uri);\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 | number): Observable<string | number | undefined> {\n if (this.authService.authenticated) {\n const url = this.baseUrl + '/contexts/default';\n return this.http.post<string>(url, { defaultContextId: id });\n } else {\n return this.setDefaultLocalStorage(id);\n }\n }\n\n private setDefaultLocalStorage(\n id: string | number\n ): Observable<string | number | undefined> {\n const selectedId = this.storageService.get('favorite.context.uri');\n if (selectedId === id) {\n this.storageService.remove('favorite.context.uri');\n } else {\n this.storageService.set('favorite.context.uri', id);\n }\n return of(selectedId === id ? undefined : id);\n }\n\n hideContext(id: number) {\n const url = this.baseUrl + '/contexts/' + id + '/hide';\n return this.http.post(url, {});\n }\n\n showContext(id: number) {\n const url = this.baseUrl + '/contexts/' + id + '/show';\n return this.http.post(url, {});\n }\n\n delete(id: number, 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 this.loadContext(this.defaultContextUri);\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 = 'write';\n } else {\n contextCreated.permission = '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: number, 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 = 'write';\n this.contexts$.value.ours.unshift(contextCloned);\n this.contexts$.next(this.contexts$.value);\n return contextCloned;\n })\n );\n }\n\n update(\n id: number,\n context: DetailedContext\n ): Observable<ContextDetailedChanges> {\n const url = this.baseUrl + '/contexts/' + id;\n return this.http.patch<ContextDetailedChanges>(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(\n contextId: string,\n toolId: string\n ): Observable<unknown> {\n const url = `${this.baseUrl}/contexts/${contextId}/tools/${toolId}`;\n return this.http.delete(url);\n }\n\n // ======================================================================\n\n getLocalContexts(): Observable<ContextsList> {\n const url = this.getPath(this.options.contextListFile);\n return this.http.get<Context[]>(url).pipe(\n map((res) => {\n return { ours: res } satisfies ContextsList;\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 next: (_context) => {\n this.defaultContextUri = _context.uri;\n this.addContextToList(_context);\n this.setContext(_context);\n },\n error: () => {\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) {\n this.route.queryParams.pipe(debounceTime(100)).subscribe((params) => {\n const contextParam = this.shareMapService.getContext(params);\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: tool.id,\n name: tool.name,\n global: tool.global\n };\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 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 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.flatMap((cluster) => cluster.get('features'));\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 return contextToLoad\n ? this.getDetails(contextToLoad.id)\n : this.getDetailsByUri(uri);\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 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 | number,\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: Context = {\n id: context.id,\n uri: context.uri,\n title: context.title,\n scope: context.scope,\n permission: '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, inject } 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 private config = inject(ConfigService);\n\n static allowedMimeTypes = ['application/json'];\n\n static allowedExtensions = 'json';\n\n private clientSideFileSizeMax: number;\n\n constructor() {\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) => {\n try {\n const context = this.parseContextFromFile(\n file,\n event.target.result as string\n );\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 } from '@angular/common';\nimport { Component, OnInit, inject, input } 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 FormsModule,\n MatButtonModule,\n SpinnerComponent,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n MatDividerModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class ContextImportExportComponent implements OnInit {\n private contextImportService = inject(ContextImportService);\n private contextExportService = inject(ContextExportService);\n private messageService = inject(MessageService);\n private formBuilder = inject(UntypedFormBuilder);\n private config = inject(ConfigService);\n private contextService = inject(ContextService);\n\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 readonly map = input<IgoMap>(undefined);\n\n constructor() {\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\">\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@if (activeImportExport === 'import') {\n <div>\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\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\" />\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>\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\n@if (activeImportExport === 'export') {\n <form class=\"igo-form\" [formGroup]=\"form\">\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'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\">{{ layer.title }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\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\" />\n </div>\n </form>\n}\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 { Clipboard } from '@angular/cdk/clipboard';\nimport { Component, computed, inject, input, output } from '@angular/core';\nimport {\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormBuilder\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 { 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 MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n IgoLanguageModule\n ]\n})\nexport class ContextFormComponent {\n private clipboard = inject(Clipboard);\n private formBuilder = inject(UntypedFormBuilder);\n private messageService = inject(MessageService);\n\n public prefix: string;\n\n readonly btnSubmitText = input<string>();\n readonly context = input<Context>();\n readonly disabled = input(false);\n\n readonly submitForm = output<unknown>();\n readonly clone = output<unknown>();\n readonly delete = output<unknown>();\n\n // WORKAROUND, the context-form is shown before the editedContext emit and we got change detection problem\n readonly form = computed<FormGroup | undefined>(() => {\n const context = this.context();\n if (context) {\n return this.buildForm(context);\n }\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 = this.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(context: Context): FormGroup {\n const uriSplit = context.uri.split('-');\n this.prefix = uriSplit.shift();\n const uri = uriSplit.join('-');\n\n return this.formBuilder.group({\n title: [context.title],\n uri: [uri || ' ']\n });\n }\n}\n","@let form = this.form();\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 @if (prefix) {\n <span class=\"prefix\">{{ prefix }}-</span>\n }\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 matButton=\"elevated\"\n type=\"submit\"\n [disabled]=\"form.invalid || disabled()\"\n >\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n</form>\n","export const TypePermission = ['read', 'write'] as const;\nexport type TypePermission = (typeof TypePermission)[number];\n\nexport enum Scope {\n public,\n protected,\n private\n}\n","import {\n Directive,\n OnDestroy,\n OnInit,\n inject,\n input,\n output\n} from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\nimport {\n ID_GROUP_PREFIX,\n LayerService,\n MapBrowserComponent,\n StyleListService,\n StyleService,\n isLayerGroupOptions,\n mergeLayersOptions,\n sortLayersByZindex\n} from '@igo2/geo';\nimport type { AnyLayer, AnyLayerOptions, IgoMap, LayerId } from '@igo2/geo';\nimport { ObjectUtils, uuid } from '@igo2/utils';\n\nimport { Subscription } from 'rxjs';\nimport { debounceTime, filter, switchMap } from 'rxjs/operators';\n\nimport {\n addImportedFeaturesStyledToMap,\n addImportedFeaturesToMap\n} from '../../context-import-export/shared/context-import.utils';\nimport { ShareMapService } from '../../share-map/shared/share-map.service';\nimport { DetailedContext } from './context.interface';\nimport { ContextService } from './context.service';\n\n@Directive({\n selector: '[igoLayerContext]'\n})\nexport class LayerContextDirective implements OnInit, OnDestroy {\n private component = inject(MapBrowserComponent);\n private contextService = inject(ContextService);\n private layerService = inject(LayerService);\n private configService = inject(ConfigService);\n private styleListService = inject(StyleListService);\n private styleService = inject(StyleService);\n private shareMapService = inject(ShareMapService);\n\n private context$$: Subscription;\n private queryParams: Params;\n\n private contextLayers: AnyLayer[] = [];\n\n readonly removeLayersOnContextChange = input<boolean>(true);\n\n readonly contextLayersLoaded = output<boolean>();\n\n get map(): IgoMap {\n return this.component.map();\n }\n\n ngOnInit() {\n this.context$$ = this.shareMapService.routeService.queryParams\n .pipe(\n switchMap((params) => {\n this.queryParams = params ?? {};\n return this.contextService.context$.pipe(\n filter((context) => context !== undefined)\n );\n })\n )\n .subscribe((context) => this.handleContextChange(context));\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 /**\n * Assign an id to each layer group if it doesn't have one.\n * This is needed to be able to detect layer groups in the context that doesn't have and id and be able to ignore them in the share\n */\n if (context.layers?.length) {\n addIdToGroups(context.layers);\n }\n\n const contextLayers = this.handleContextWithSharedUrl(\n ObjectUtils.copyDeep(context)\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(contextLayers, 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 this.contextLayersLoaded.emit(true);\n });\n if (this.configService.getConfig('importExport.allowToStoreLayer', false)) {\n this.layerService\n .createAsyncIdbLayers(context.uri)\n .pipe(debounceTime(500))\n .subscribe((layers) => this.handleAddLayers(layers));\n }\n }\n\n private 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 = layer.id;\n\n let visible = layer.visible;\n if (!params || !currentLayerid) {\n return visible;\n }\n const contextParams = this.shareMapService.getContext(params);\n\n if (contextParams === currentContext || !contextParams) {\n let visibleOnLayersParams = '';\n let visibleOffLayersParams = '';\n let visiblelayers: LayerId[] = [];\n let invisiblelayers: LayerId[] = [];\n const visibleOnLayers =\n params[this.shareMapService.routeService.options.visibleOnLayersKey];\n\n const visibleOffLayers =\n params[this.shareMapService.routeService.options.visibleOffLayersKey];\n\n if (visibleOnLayers) {\n visibleOnLayersParams = visibleOnLayers;\n }\n if (visibleOffLayers) {\n visibleOffLayersParams = visibleOffLayers;\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 private handleContextWithSharedUrl(\n context: DetailedContext\n ): AnyLayerOptions[] {\n if (!this.queryParams) {\n return context.layers;\n }\n\n const { layers, uri } = context;\n const contextValue = this.shareMapService.getContext(this.queryParams);\n\n if (!contextValue || contextValue === uri) {\n const layersOptions = this.shareMapService.parseLayers(this.queryParams);\n if (layersOptions.length) {\n return mergeLayersOptions([...layers], layersOptions);\n }\n }\n return layers;\n }\n}\n\n/** Recursive */\nfunction addIdToGroups(layerOptions: AnyLayerOptions[]): void {\n for (const options of layerOptions) {\n if (isLayerGroupOptions(options) && !options.id) {\n options.id = ID_GROUP_PREFIX + uuid();\n if (Array.isArray(options.children)) {\n addIdToGroups(options.children);\n }\n }\n }\n}\n","import { Directive, OnDestroy, OnInit, inject } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { MediaService } from '@igo2/core/media';\nimport {\n MapBrowserComponent,\n MapControlsOptions,\n MapScaleLineOptions\n} from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { Subscription } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\nimport { ShareMapService } from '../../share-map/shared/share-map.service';\nimport { ContextMapView, DetailedContext } from './context.interface';\nimport { ContextService } from './context.service';\n\n@Directive({\n selector: '[igoMapContext]'\n})\nexport class MapContextDirective implements OnInit, OnDestroy {\n private contextService = inject(ContextService);\n private mediaService = inject(MediaService);\n private shareMapService = inject(ShareMapService);\n\n private component: MapBrowserComponent;\n private context$$: Subscription;\n\n get map(): IgoMap {\n return this.component.map();\n }\n\n private queryParams: Params;\n\n constructor() {\n const component = inject(MapBrowserComponent);\n\n this.component = component;\n }\n\n ngOnInit() {\n this.context$$ = this.shareMapService.routeService.queryParams\n .pipe(\n switchMap((params) => {\n this.queryParams = params ?? {};\n return this.contextService.context$.pipe(\n filter((context) => context !== undefined)\n );\n })\n )\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 const shouldOverrideView =\n !this.component.view() ||\n viewContext.keepCurrentView !== true ||\n context.map.view.projection !== this.map.projection;\n\n if (\n this.shareMapService.hasPositionParams(this.queryParams) &&\n shouldOverrideView\n ) {\n const positions = this.shareMapService.parsePosition(this.queryParams);\n this.component.setView({ ...viewContext, ...positions });\n } else if (shouldOverrideView) {\n this.component.setView(viewContext);\n }\n\n const map = this.component.map();\n if (map.geolocationController) {\n map.geolocationController.updateGeolocationOptions(viewContext);\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 {\n ChangeDetectionStrategy,\n Component,\n inject,\n output\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { ContextFormComponent } from '../context-form/context-form.component';\nimport { ContextService } from '../shared';\nimport { Context } from '../shared/context.interface';\n\n@Component({\n selector: 'igo-context-edit',\n imports: [ContextFormComponent, IgoLanguageModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './context-edit.component.html'\n})\nexport class ContextEditComponent {\n private contextService = inject(ContextService);\n private messageService = inject(MessageService);\n\n readonly context = toSignal(this.contextService.editedContext$);\n\n readonly submitSuccessed = output<Context>();\n\n onEdit(context: Context) {\n const id = this.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.context().title\n }\n );\n const currentContext = this.contextService.context$.value;\n if (currentContext && currentContext.id === id) {\n currentContext.title = context.title;\n currentContext.uri = context.uri;\n }\n this.contextService.setEditedContext(undefined);\n this.submitSuccessed.emit(context);\n });\n }\n}\n","@if (context()) {\n <igo-context-form\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context()\"\n (submitForm)=\"onEdit($event)\"\n />\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\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 MatButtonModule,\n StopPropagationDirective,\n MatTooltipModule,\n MatIconModule,\n MatMenuModule,\n IgoLanguageModule\n ],\n host: {\n '[class.igo-list-item-focused]': 'this.isMenuOpen'\n }\n})\nexport class ContextItemComponent {\n auth = inject(AuthService);\n private storageService = inject(StorageService);\n\n typePermission = TypePermission;\n color = 'primary';\n collapsed = true;\n\n readonly showFavorite = input(true);\n readonly context = input<DetailedContext>(undefined);\n readonly default = input<boolean>(undefined);\n readonly selected = input<boolean>(undefined);\n readonly isDesktop = input<boolean>(undefined);\n\n readonly edit = output<DetailedContext>();\n readonly delete = output<DetailedContext>();\n readonly save = output<DetailedContext>();\n readonly clone = output<DetailedContext>();\n readonly hide = output<DetailedContext>();\n readonly show = output<DetailedContext>();\n readonly favorite = output<DetailedContext>();\n readonly managePermissions = output<DetailedContext>();\n readonly manageTools = output<DetailedContext>();\n readonly share = output<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 get isMenuOpen(): boolean {\n return this.itemActionsMenuTrigger()?.menuOpen ?? false;\n }\n\n itemActionsMenuTrigger = viewChild(MatMenuTrigger);\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 @if (auth.authenticated) {\n <button\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 @if (!context().iconImage) {\n <mat-icon>{{\n context().icon\n ? context().icon\n : context().scope === 'public'\n ? 'public'\n : 'star'\n }}</mat-icon>\n } @else {\n <img\n [src]=\"context().iconImage\"\n alt=\"Icône pour le favori de contexte\"\n />\n }\n </button>\n } @else if (showFavorite()) {\n <button\n matListItemAvatar\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 }\n\n <span matListItemTitle>{{ context().title }}</span>\n\n @if (auth.authenticated) {\n <div\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n [class.--not-desktop]=\"!isDesktop()\"\n [class.--selected]=\"selected()\"\n >\n @if (\n collapsed &&\n selected() &&\n (context().permission === 'write' || context().imported)\n ) {\n <button\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\n <button\n class=\"actions-button\"\n mat-icon-button\n [color]=\"color\"\n [matMenuTriggerFor]=\"itemActionsMenu\"\n #itemActionsMenuTrigger=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #itemActionsMenu=\"matMenu\">\n @if (!context().imported) {\n @if (canShare) {\n <button\n mat-menu-item\n [matTooltip]=\"\n 'igo.context.contextManager.managePermissions' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"managePermissions.emit(context())\"\n >\n <mat-icon>manage_accounts</mat-icon\n ><span>{{\n 'igo.context.contextManager.managePermissions' | translate\n }}</span>\n </button>\n }\n\n <button\n class=\"clone-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"clone.emit(context())\"\n >\n <mat-icon>content_copy</mat-icon>\n <span>{{ 'igo.context.contextManager.clone' | translate }}</span>\n </button>\n\n @if (context().permission === 'write') {\n <button\n class=\"edit-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(context())\"\n >\n <mat-icon>edit</mat-icon>\n <span>{{ 'igo.context.contextManager.edit' | translate }}</span>\n </button>\n }\n\n @if (!context().hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(context())\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'igo.context.contextManager.hide' | translate }}</span>\n </button>\n }\n\n @if (context().hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(context())\"\n >\n <mat-icon>visibility_off</mat-icon>\n <span>{{ 'igo.context.contextManager.show' | translate }}</span>\n </button>\n }\n\n <button\n mat-menu-item\n class=\"share-button\"\n [matTooltip]=\"'igo.context.contextManager.share' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"share.emit(context())\"\n >\n <mat-icon>share</mat-icon>\n <span>{{ 'igo.context.contextManager.share' | translate }}</span>\n </button>\n }\n\n @if (context().permission === 'write' || context().imported) {\n <button\n class=\"delete-button\"\n mat-menu-item\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 <span>{{ 'igo.context.contextManager.delete' | translate }}</span>\n </button>\n }\n </mat-menu>\n </div>\n }\n</mat-list-item>\n","import { Component, inject } 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 dialogRef = inject<MatDialogRef<BookmarkDialogComponent>>(MatDialogRef);\n\n public title: string;\n}\n","<h1 mat-dialog-title>\n {{ 'igo.context.bookmarkButton.dialog.title' | translate }}\n</h1>\n<div mat-dialog-content>\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 { Clipboard } from '@angular/cdk/clipboard';\nimport { AsyncPipe, KeyValue, KeyValuePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input,\n model,\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 { ConfirmDialogService } from '@igo2/common/confirm-dialog';\nimport {\n IgoIconComponent,\n SORT_ALPHA_OFF_ICON,\n SORT_ALPHA_ON_ICON\n} from '@igo2/common/icon';\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 { MessageService } from '@igo2/core/message';\nimport { StorageService } from '@igo2/core/storage';\nimport { type IgoMap, MapService, isLayerItemOptions } from '@igo2/geo';\n\nimport { BehaviorSubject, ReplaySubject, Subscription, timer } from 'rxjs';\nimport { debounceTime, switchMap, take, tap } from 'rxjs/operators';\nimport { debounce } from 'rxjs/operators';\n\nimport { BookmarkDialogComponent } from '../../context-map-button/bookmark-button/bookmark-dialog.component';\nimport { ShareMapService } from '../../share-map/shared/share-map.service';\nimport { ContextItemComponent } from '../context-item/context-item.component';\nimport { ContextUserPermission } from '../context-permissions/context-permission.interface';\nimport {\n Context,\n ContextDetailedChanges,\n ContextProfils,\n ContextServiceOptions,\n ContextsList,\n DetailedContext\n} from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\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 MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n ActionbarComponent,\n MatMenuModule,\n MatCheckboxModule,\n CollapsibleComponent,\n ContextItemComponent,\n ListItemDirective,\n AsyncPipe,\n KeyValuePipe,\n IgoLanguageModule,\n IgoIconComponent\n ]\n})\nexport class ContextListComponent implements OnInit, OnDestroy {\n configService = inject(ConfigService);\n auth = inject(AuthService);\n private contextService = inject(ContextService);\n private shareMapService = inject(ShareMapService);\n private clipboard = inject(Clipboard);\n private messageService = inject(MessageService);\n private mapService = inject(MapService);\n private confirmDialogService = inject(ConfirmDialogService);\n private dialog = inject(MatDialog);\n private languageService = inject(LanguageService);\n private storageService = inject(StorageService);\n\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 private previousMessageId: number;\n\n sortAlphaOnIcon = SORT_ALPHA_ON_ICON;\n sortAlphaOffIcon = SORT_ALPHA_OFF_ICON;\n\n @Input() isDesktop: boolean;\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 readonly selectedContext = model<DetailedContext>(undefined);\n\n readonly map = input<IgoMap>(undefined);\n\n @Input()\n get defaultContextId(): string | number {\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 | number) {\n this._defaultContextId = value;\n }\n private _defaultContextId: string | number;\n\n public collapsed: { contextScope }[] = [];\n\n readonly select = output<DetailedContext>();\n readonly unselect = output<DetailedContext>();\n readonly edit = output<DetailedContext>();\n readonly delete = output<DetailedContext>();\n readonly save = output<DetailedContext>();\n readonly clone = output<DetailedContext>();\n readonly create = output<{\n title: string;\n empty: boolean;\n }>();\n readonly hide = output<DetailedContext>();\n readonly show = output<DetailedContext>();\n readonly showHiddenContexts = output<boolean>();\n readonly favorite = output<DetailedContext>();\n readonly managePermissions = output<DetailedContext>();\n readonly manageTools = output<DetailedContext>();\n readonly filterPermissionsChanged = output<ContextUserPermission[]>();\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 private contexts$$: Subscription;\n private selectedContext$$: Subscription;\n private defaultContextId$$: Subscription;\n\n constructor() {\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 // Override input contexts\n this.contexts = { ours: [] };\n this.showHidden = this.storageService.get('contexts.showHidden') as boolean;\n\n this.contexts$$ = this.contextService.contexts$.subscribe(\n (contexts) => (this.contexts = contexts)\n );\n\n this.defaultContextId$$ = this.contextService.defaultContextId$.subscribe(\n (id) => {\n this.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) => {\n this.setSelected(context);\n });\n\n this.auth.authenticate$.subscribe((authenticate) => {\n if (authenticate) {\n this.contextService.getProfilByUser().subscribe((profils) => {\n this.users = profils;\n this.permissions = [];\n const profilsAcc = this.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.permissions.push(permission);\n }\n\n const permissions = ['none'];\n for (const p of this.permissions) {\n if (p.checked === true || p.indeterminate === true) {\n permissions.push(p.name);\n }\n }\n\n this.contextService.loadContexts(permissions, this.showHidden);\n });\n }\n });\n }\n\n ngOnDestroy() {\n this.change$$.unsubscribe();\n this.contexts$$.unsubscribe();\n this.selectedContext$$.unsubscribe();\n this.defaultContextId$$.unsubscribe();\n }\n\n setSelected(context: DetailedContext) {\n this.selectedContext.set(context);\n }\n\n // Comparator function to sort by context.title\n sortByKeyPriority = (\n a: KeyValue<string, DetailedContext[]>,\n b: KeyValue<string, DetailedContext[]>\n ): number => {\n const ORDER = ['ours', 'shared', 'public'];\n return ORDER.indexOf(a.key) - ORDER.indexOf(b.key);\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 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.onCreate({ 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.onFilterPermissionsChanged();\n }\n\n showContext(context: DetailedContext) {\n context.hidden = false;\n this.contextService.showContext(context.id).subscribe();\n\n this.show.emit(context);\n }\n\n onSelect(context: DetailedContext) {\n this.contextService.loadContext(context.uri);\n this.select.emit(context);\n }\n\n isContextSelected(context: DetailedContext): boolean {\n const selectedContext = this.selectedContext();\n if (!selectedContext) return false;\n\n return context?.id\n ? selectedContext.id === context.id\n : selectedContext.uri === context.uri;\n }\n\n onShareContext(context: DetailedContext) {\n const currentContext = this.contextService.context$.value;\n const { toolKey, sidenavKey, languageKey } =\n this.shareMapService.routeService.options;\n const { context: contextKey } = this.shareMapService.options;\n const baseOrigin = this.shareMapService.sanitizeBaseUrl(\n this.shareMapService.document.location.href\n );\n\n const url =\n context.uri === currentContext.uri\n ? this.shareMapService.generateUrl(\n this.map(),\n this.contextService.context$.value\n )\n : `${baseOrigin}${contextKey}=${context.uri}`;\n\n const params: string[] = [];\n\n const currentLanguage = this.shareMapService.language;\n if (currentLanguage && !url.includes(`${languageKey}=`))\n params.push(`${languageKey}=${currentLanguage}`);\n\n if (!url.includes(`${toolKey}=`)) params.push(`${toolKey}=${'mapTools'}`);\n if (!url.includes(`${sidenavKey}=`)) params.push(`${sidenavKey}=1`);\n\n const fullUrl = params.length ? `${url}&${params.join('&')}` : url;\n const successful = this.clipboard.copy(fullUrl);\n if (!successful) return;\n\n this.messageService.success(\n 'igo.context.shareMap.dialog.copyMsg',\n 'igo.context.shareMap.dialog.copyTitle'\n );\n }\n\n onEdit(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n this.edit.emit(context);\n }\n\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\n .update(context.id, changes)\n .pipe(\n tap((changes) => {\n this.handleContextChanges(changes);\n msgSuccess();\n }),\n switchMap(() => this.contextService.getDetails(context.id)),\n tap((fullContext) => {\n this.contextService.context$.value.layers = fullContext.layers;\n }),\n take(1)\n )\n .subscribe();\n\n this.save.emit(context);\n }\n\n private handleContextChanges(changes: ContextDetailedChanges): void {\n const map = this.mapService.getMap();\n changes.layers.created.forEach((layerCreated) => {\n const layer = isLayerItemOptions(layerCreated)\n ? map.layerController.getBySourceId(layerCreated.sourceOptions.id)\n : map.layerController.getByTitle(layerCreated.title);\n if (layer) {\n layer.id = layerCreated.id;\n }\n });\n }\n\n onFavorite(context: Context) {\n if (!context.id) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.id = context.uri as any;\n }\n\n this.contextService.setDefault(context.id).subscribe((defaultId) => {\n if (this.previousMessageId) {\n this.messageService.remove(this.previousMessageId);\n }\n\n this.contextService.defaultContextId$.next(defaultId);\n if (defaultId != null && String(defaultId) === String(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 }\n\n this.favorite.emit(context);\n });\n }\n\n onManageTools(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n this.manageTools.emit(context);\n }\n\n onManagePermissions(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n this.managePermissions.emit(context);\n }\n\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 this.delete.emit(context);\n }\n });\n }\n\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 this.clone.emit(context);\n }\n\n onCreate(opts: { title: string; empty: boolean }) {\n const { title, empty } = opts;\n const context = this.contextService.getContextFromMap(this.map(), empty);\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 this.create.emit(opts);\n }\n\n onFilterPermissionsChanged() {\n const permissions = ['none'];\n for (const p of this.permissions) {\n if (p.checked === true || p.indeterminate === true) {\n permissions.push(p.name);\n }\n }\n\n this.contextService.loadContexts(permissions, this.showHidden);\n\n this.filterPermissionsChanged.emit(this.permissions);\n }\n\n onShowHiddenContexts() {\n this.showHidden = !this.showHidden;\n this.storageService.set('contexts.showHidden', this.showHidden);\n this.onFilterPermissionsChanged();\n this.showHiddenContexts.emit(this.showHidden);\n }\n\n onHideContext(context: DetailedContext) {\n this.contextService.hideContext(context.id).subscribe();\n\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(\n (c) => c.id !== context.id\n );\n contexts.public = this.contexts.public?.filter(\n (c) => c.id !== context.id\n );\n this.contexts = contexts;\n }\n this.hide.emit(context);\n }\n}\n","<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n @if (showFilter()) {\n <mat-form-field>\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 @if (term.length) {\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n\n <div class=\"actions-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n sortedAlpha\n ? ('igo.context.contextManager.sortDefault' | translate)\n : ('igo.context.contextManager.sortAlphabetically' | translate)\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <igo-icon\n color=\"primary\"\n [icon]=\"sortedAlpha ? sortAlphaOnIcon : sortAlphaOffIcon\"\n />\n </button>\n\n @if (auth.authenticated && contextConfigs) {\n <igo-actionbar\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\n <button\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\">filter_alt</mat-icon>\n </button>\n }\n <mat-menu #accountMenu=\"matMenu\">\n @for (user of users; track user.name) {\n @if (!user.childs) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n } @else {\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 <span>{{ user.title }}</span>\n </button>\n <mat-menu #subAccountMenu=\"matMenu\">\n @for (child of user.childs; track child.name) {\n <button mat-menu-item class=\"profil-menu\">\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 }\n </mat-menu>\n }\n }\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onShowHiddenContexts()\"\n />\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n @for (\n groupContexts of $any(contexts$ | async) | keyvalue: sortByKeyPriority;\n track groupContexts\n ) {\n @if ($any(groupContexts).value.length) {\n @if (auth.authenticated) {\n <igo-collapsible\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"\n collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\n \"\n >\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"\n selectedContext() && selectedContext().uri === context.uri\n \"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n [isDesktop]=\"isDesktop\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (manageTools)=\"onManageTools(context)\"\n (managePermissions)=\"onManagePermissions(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n (share)=\"onShareContext(context)\"\n />\n }\n </igo-collapsible>\n } @else {\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"isContextSelected(context)\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n [isDesktop]=\"isDesktop\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n />\n }\n }\n }\n }\n\n @if (isEmpty) {\n <div class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n }\n</igo-list>\n","import { Component, computed, input, output } 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 { User } from '@igo2/auth';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport {\n IAnyContextPermission,\n IContextPermissionUser\n} from '../context-permission.interface';\n\n@Component({\n selector: 'igo-context-permission-item',\n imports: [\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatTooltipModule,\n IgoLanguageModule\n ],\n templateUrl: './context-permission-item.component.html',\n styleUrl: './context-permission-item.component.scss'\n})\nexport class ContextPermissionItemComponent {\n permission = input.required<IAnyContextPermission>();\n canWrite = input.required<boolean>();\n user = input<User>();\n\n type = computed(() => {\n const permission = this.permission();\n return isContextPermissionUser(permission)\n ? this.isUserExtranet(permission)\n ? 'Extranet'\n : 'Intranet'\n : 'Profil';\n });\n icon = computed(() => {\n const permission = this.permission();\n return permission.profilType === 'user'\n ? this.isUserExtranet(permission)\n ? 'person'\n : 'person_shield'\n : 'badge';\n });\n canDelete = computed(() => {\n const permission = this.permission();\n return (\n this.canWrite() ||\n (isContextPermissionUser(permission) &&\n permission.user.externalId === this.user().id)\n );\n });\n\n delete = output<IAnyContextPermission>();\n\n isContextPermissionUser = isContextPermissionUser;\n\n isUserExtranet(permission: IAnyContextPermission): boolean {\n return (\n isContextPermissionUser(permission) &&\n permission.userSource.includes('extranet')\n );\n }\n\n onDelete(): void {\n this.delete.emit(this.permission());\n }\n}\n\nfunction isContextPermissionUser(\n permission: IAnyContextPermission\n): permission is IContextPermissionUser {\n return (permission as IContextPermissionUser).userId != null;\n}\n","@let permission = this.permission();\n\n<mat-list-item>\n <mat-icon matListItemIcon [matTooltip]=\"type()\">\n {{ icon() }}\n </mat-icon>\n\n <span matListItemTitle [matTooltip]=\"permission.title\">\n {{ permission.title }}\n </span>\n\n <span matListItemLine>{{ type() }}</span>\n <div matListItemMeta class=\"igo-actions-container\">\n @if (canDelete()) {\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\n matTooltipShowDelay=\"500\"\n color=\"warn\"\n (click)=\"onDelete()\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n</mat-list-item>\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { Observable, catchError } from 'rxjs';\n\nimport { IAnyContextPermission } from './context-permission.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextPermissionService {\n private http = inject(HttpClient);\n private config = inject(ConfigService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private baseUrl: string;\n\n constructor() {\n const options = this.config.getConfig('context');\n this.baseUrl = options?.url ?? '';\n }\n\n getAll(id: number): Observable<IAnyContextPermission[]> {\n const url = this.baseUrl + '/contexts/' + id + '/permissions';\n return this.http.get<IAnyContextPermission[]>(url);\n }\n\n add(\n contextId: number,\n permission: IAnyContextPermission\n ): Observable<IAnyContextPermission> {\n const url = `${this.baseUrl}/contexts/${contextId}/permissions`;\n\n return this.http.post<IAnyContextPermission>(url, permission).pipe(\n catchError((res) => {\n this.handleError(res, true);\n throw res;\n })\n );\n }\n\n delete(contextId: number, permissionId: number): Observable<void> {\n const url = `${this.baseUrl}/contexts/${contextId}/permissions/${permissionId}`;\n return this.http.delete<void>(url);\n }\n\n private handleError(error: HttpErrorResponse, permissionError?: boolean) {\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","import { HttpClient } from '@angular/common/http';\nimport {\n Component,\n DestroyRef,\n OnInit,\n computed,\n inject,\n model,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { Subscription, map, of, switchMap, tap } from 'rxjs';\n\nimport { ContextService } from '../shared';\nimport { Context } from '../shared/context.interface';\nimport { ContextPermissionItemComponent } from './context-permission-item/context-permission-item.component';\nimport {\n ContextUserOrProfils,\n IAnyContextPermission\n} from './context-permission.interface';\nimport { ContextPermissionService } from './context-permission.service';\n\n@Component({\n selector: 'igo-context-permissions',\n templateUrl: './context-permissions.component.html',\n styleUrls: ['./context-permissions.component.scss'],\n imports: [\n CollapsibleComponent,\n FormsModule,\n IgoLanguageModule,\n ListComponent,\n MatAutocompleteModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatOptionModule,\n MatRadioModule,\n MatTooltipModule,\n ReactiveFormsModule,\n ContextPermissionItemComponent\n ]\n})\nexport class ContextPermissionsComponent implements OnInit {\n private formBuilder = inject(UntypedFormBuilder);\n private http = inject(HttpClient);\n authService = inject(AuthService);\n private config = inject(ConfigService);\n private contextService = inject(ContextService);\n private contextPermissionService = inject(ContextPermissionService);\n private messageService = inject(MessageService);\n private destroyRef = inject(DestroyRef); // Modern way to handle cleanup\n public form: UntypedFormGroup;\n\n readonly context = model<Context>();\n readonly permissions = model<IAnyContextPermission[]>();\n readonly permissionsRead = computed(() =>\n this.permissions().filter(\n (permission) => permission.typePermission === 'read'\n )\n );\n readonly permissionsWrite = computed(() =>\n this.permissions().filter(\n (permission) => permission.typePermission === 'write'\n )\n );\n\n profils = signal<ContextUserOrProfils[]>([]);\n\n canWrite = computed(() => this.context().permission === 'write');\n\n private baseUrlProfils;\n\n public formControl = new UntypedFormControl();\n formValueChanges$$: Subscription;\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.getProfils(value).subscribe((profils) =>\n this.profils.set(profils)\n );\n } else {\n this.profils.set([]);\n }\n }\n );\n\n this.handleEditedContextChange();\n }\n\n displayFn(profil?: ContextUserOrProfils): string | undefined {\n return profil ? profil.title : undefined;\n }\n\n handleFormSubmit(value: IAnyContextPermission) {\n const contextId = this.context().id;\n this.contextPermissionService\n .add(contextId, value)\n .subscribe((permission) => {\n this.permissions.update((permissions) => {\n permissions.push(permission);\n return [...permissions];\n });\n this.messageService.success(\n 'igo.context.permission.dialog.addMsg',\n 'igo.context.permission.dialog.addTitle',\n undefined,\n { value: permission.title }\n );\n });\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n id: null,\n userExternalId: null,\n profilId: null,\n typePermission: ['read']\n });\n }\n\n onProfilSelected(value: ContextUserOrProfils) {\n this.form.setValue({\n id: value.id,\n userExternalId: value.type === 'user' ? value.id : null,\n profilId: value.type === 'profil' ? value.id : null,\n typePermission: this.form.value.typePermission\n });\n }\n\n onRemovePermission(permission: IAnyContextPermission) {\n const contextId = this.context().id;\n this.contextPermissionService\n .delete(contextId, permission.id)\n .subscribe(() => {\n this.permissions.update((permissions) => {\n const index = permissions.findIndex((p) => {\n return p.id === permission.id;\n });\n permissions.splice(index, 1);\n return [...permissions];\n });\n\n this.messageService.success(\n 'igo.context.permission.dialog.deleteMsg',\n 'igo.context.permission.dialog.deleteTitle',\n undefined,\n { value: permission.title }\n );\n });\n }\n\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 private handleEditedContextChange() {\n this.contextService.editedContext$\n .pipe(\n // 1. Cleanly handle the context update\n tap((context) => this.context.set(context)),\n\n // 2. Switch to the permissions call, or return an empty array if context is null\n switchMap((context) => {\n if (!context) return of([]);\n return this.contextPermissionService.getAll(context.id);\n }),\n\n // 3. Automatically unsubscribe when component is destroyed\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((permissions) => {\n this.permissions.set(permissions);\n });\n }\n\n private getProfils(value: string) {\n return this.http\n .get<ContextUserOrProfils[]>(this.baseUrlProfils + 'q=' + value)\n .pipe(\n map((profils) => {\n const search = normalizeStr(value);\n return profils.filter((p) =>\n normalizeStr(p.name + p.title).includes(search)\n );\n })\n );\n }\n}\n\nconst normalizeStr = (str: string): string =>\n str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n","@let user = authService.user;\n\n@if (context()) {\n <div>\n @if (!canWrite()) {\n <div class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n } @else {\n <div class=\"scopeForm\">\n <mat-radio-group\n [(ngModel)]=\"context().scope\"\n (change)=\"onScopeChanged(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 @if (authService.isAdmin) {\n <mat-radio-button value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n }\n </mat-radio-group>\n </div>\n }\n @if (context().scope !== 'private') {\n @if (canWrite()) {\n <form [formGroup]=\"form\" (ngSubmit)=\"handleFormSubmit(form.value)\">\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 @for (profil of this.profils(); track profil) {\n <mat-option [value]=\"profil\">\n {{ profil.title }}<br />\n <small>{{ profil.name }}</small>\n </mat-option>\n }\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\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 <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n </form>\n }\n @if (permissions()) {\n <igo-list>\n @if (permissionsRead().length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'read' | translate\"\n >\n @for (permission of permissionsRead(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n @if (permissionsWrite().length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'write' | translate\"\n >\n @for (permission of permissionsWrite(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n </igo-list>\n }\n }\n </div>\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\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 { ContextListComponent } from './context-list/context-list.component';\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 ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextPermissionsComponent,\n LayerContextDirective,\n MapContextDirective\n ],\n exports: [\n ContextListComponent,\n ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextPermissionsComponent,\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, inject } 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 private dialog = inject(MatDialog);\n private contextService = inject(ContextService);\n private messageService = inject(MessageService);\n\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 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, inject } 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 dialogRef = inject<MatDialogRef<PoiDialogComponent>>(MatDialogRef);\n\n public title: string;\n}\n","<h1 mat-dialog-title>\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 matButton (click)=\"dialogRef.close(false)\">\n {{ 'igo.common.confirmDialog.cancelBtn' | translate }}\n </button>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } 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 http = inject(HttpClient);\n private config = inject(ConfigService);\n\n private baseUrl: string;\n\n constructor() {\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 { Component, Input, OnDestroy, OnInit, inject } 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';\nimport { MatTooltipModule } from '@angular/material/tooltip';\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 IgoLanguageModule,\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatOptionModule,\n MatSelectModule,\n MatTooltipModule,\n StopPropagationDirective\n ],\n providers: [PoiService]\n})\nexport class PoiButtonComponent implements OnInit, OnDestroy {\n private dialog = inject(MatDialog);\n private authService = inject(AuthService);\n private poiService = inject(PoiService);\n private messageService = inject(MessageService);\n private languageService = inject(LanguageService);\n private confirmDialogService = inject(ConfirmDialogService);\n selected: Poi;\n\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 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 = new olPoint(view.getCenter()).transform(proj, 'EPSG:4326');\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 panelClass=\"poi-select-panel\"\n class=\"poi-select\"\n [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n floatPlaceholder=\"never\"\n [(value)]=\"selected\"\n>\n <mat-select-trigger>\n {{ selected?.title || '' }}\n </mat-select-trigger>\n <mat-option (click)=\"createPoi()\" class=\"poi-option\">\n <div\n class=\"poi-option-row\"\n [matTooltip]=\"'igo.context.poiButton.create' | translate\"\n matTooltipPosition=\"above\"\n >\n <div class=\"poi-option-text\">\n {{ 'igo.context.poiButton.create' | translate }}\n </div>\n <div class=\"poi-option-button\">\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 </div>\n </div>\n </mat-option>\n <mat-divider />\n @for (poi of pois; track poi) {\n <mat-option class=\"poi-option\" [value]=\"poi\" (click)=\"zoomOnPoi(poi.id)\">\n <div class=\"poi-option-row\">\n <div\n class=\"poi-option-text\"\n [matTooltip]=\"poi.title\"\n matTooltipPosition=\"above\"\n >\n {{ poi.title }}\n </div>\n <div class=\"poi-option-button\">\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 </div>\n </div>\n </mat-option>\n }\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 })\n ),\n state(\n 'expand',\n style({\n overflow: 'hidden'\n })\n ),\n transition('collapse => expand', animate('200ms')),\n transition('expand => collapse', animate('200ms'))\n ]);\n}\n","import { Component, inject } 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 dialogRef = inject<MatDialogRef<UserDialogComponent>>(MatDialogRef);\n private auth = inject(AuthService);\n private storageService = inject(StorageService);\n\n public user;\n public exp;\n\n constructor() {\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>\n {{ 'igo.context.userButton.infoTitle' | translate }}\n</h1>\n<div mat-dialog-content>\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 matButton=\"elevated\" color=\"primary\" (click)=\"dialogRef.close(false)\">\n OK\n </button>\n</div>\n","import { Component, Input, inject } 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 PoiButtonComponent,\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n IgoLanguageModule\n ]\n})\nexport class UserButtonComponent {\n private dialog = inject(MatDialog);\n private config = inject(ConfigService);\n auth = inject(AuthService);\n\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 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","@if (visible) {\n <div class=\"igo-user-button-container\">\n <div\n class=\"igo-user-button-more-container\"\n [@userButtonState]=\"expand ? 'expand' : 'collapse'\"\n >\n @if (hasApi) {\n <igo-poi-button [color]=\"color\" [map]=\"map\" />\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 <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 <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}\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 { Clipboard } from '@angular/cdk/clipboard';\nimport {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\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';\n\nimport { Subscription, combineLatest } from 'rxjs';\n\nimport { ContextService } from '../../context-manager/shared/context.service';\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 IgoLanguageModule,\n CustomHtmlComponent\n ]\n})\nexport class ShareMapUrlComponent implements OnInit, OnDestroy {\n private clipboard = inject(Clipboard);\n private messageService = inject(MessageService);\n private shareMapService = inject(ShareMapService);\n private contextService = inject(ContextService);\n private cdRef = inject(ChangeDetectorRef);\n\n private mapState$$: Subscription;\n\n readonly map = input<IgoMap>(undefined);\n\n public url: string;\n\n ngOnInit(): void {\n this.generateUrl();\n this.mapState$$ = combineLatest([\n this.map().viewController.state$,\n this.map().status$\n ]).subscribe(() => {\n this.generateUrl();\n this.cdRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.mapState$$?.unsubscribe();\n }\n\n generateUrl(): void {\n this.url = this.shareMapService.generateUrl(\n this.map(),\n this.contextService.context$.value\n );\n }\n\n copyTextToClipboard(textArea: HTMLTextAreaElement) {\n const successful = this.clipboard.copy(textArea.value);\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\">\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-share-map-url-content\">\n <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" (click)=\"copyTextToClipboard(textArea)\">\n <mat-icon>content_copy</mat-icon>\n {{ 'igo.context.shareMap.copy' | translate }}\n </button>\n </div>\n\n <div>\n <br />\n <section>\n @if (('igo.context.shareMap.htmlClarifications' | translate) === '') {\n <div>\n @if (('igo.context.shareMap.included' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.included' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.context' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.context' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.center' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.center' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.zoom' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.zoom' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.addedLayers' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.addedLayers' | translate }}\n </li>\n }\n @if (\n ('igo.context.shareMap.visibleInvisible' | translate) !== ''\n ) {\n <li>\n {{ 'igo.context.shareMap.visibleInvisible' | translate }}\n </li>\n }\n </ul>\n @if (('igo.context.shareMap.excluded' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.excluded' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.order' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.order' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.opacity' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.opacity' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterOgc' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterOgc' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterTime' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterTime' | translate }}\n </li>\n }\n </ul>\n </div>\n }\n @if (('igo.context.shareMap.htmlClarifications' | translate) !== '') {\n <igo-custom-html\n class=\"shareCustomPadding\"\n [html]=\"'igo.context.shareMap.htmlClarifications' | translate\"\n />\n }\n </section>\n </div>\n </div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport type { IgoMap } from '@igo2/geo';\n\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: [MatTabsModule, ShareMapUrlComponent]\n})\nexport class ShareMapComponent {\n readonly map = input<IgoMap>(undefined);\n}\n","<igo-share-map-url [map]=\"map()\" />\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\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] 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],\n exports: [ShareMapComponent, ShareMapUrlComponent]\n})\nexport class IgoShareMapModule {\n static forRoot(): ModuleWithProviders<IgoShareMapModule> {\n return {\n ngModule: IgoShareMapModule\n };\n }\n}\n","import { Component, Input, inject } 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 MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n FeatureDetailsComponent,\n IgoLanguageModule\n ]\n})\nexport class SidenavComponent {\n titleService = inject(Title);\n\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() {\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(this.map.viewController, olFeature, FeatureMotion.Zoom);\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 @if (tool) {\n <button\n mat-icon-button\n panelLeftButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n }\n\n @if (tool) {\n <button\n mat-icon-button\n panelRightButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n }\n </igo-panel>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature && media !== 'mobile') {\n <igo-panel [title]=\"featureTitle\">\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 @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon>zoom_in</mat-icon>\n </button>\n }\n @if (['collapsed', 'initial'].indexOf(topPanel.state) >= 0) {\n <igo-feature-details [feature]=\"feature\" />\n }\n </igo-panel>\n }\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 { ContextEditComponent } from './context-edit';\nimport { ContextFormComponent } from './context-form';\nimport { ContextItemComponent } from './context-item';\nimport { ContextListComponent } from './context-list';\nimport { ContextPermissionsComponent } from './context-permissions';\nimport { LayerContextDirective, MapContextDirective } from './shared';\n\nexport const CONTEXT_MANAGER_DIRECTIVES = [\n ContextListComponent,\n ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextPermissionsComponent,\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":["i2","i3","i4","i5","i6","i7","i8","i9","i1","catchError","tap","switchMap","map","olFormatGeoJSON"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-context.mjs","sources":["../../../packages/context/src/lib/share-map/shared/share-map.interface.ts","../../../packages/context/src/lib/share-map/shared/share-map-definitions.ts","../../../packages/context/src/lib/share-map/shared/share-map.utils.ts","../../../packages/context/src/lib/share-map/shared/share-map-encoder.ts","../../../packages/context/src/lib/share-map/shared/share-map-legacy.service.ts","../../../packages/context/src/lib/share-map/shared/share-map-parser.ts","../../../packages/context/src/lib/share-map/shared/share-map.service.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/shared/context.enum.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-edit/context-edit.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.html","../../../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-permissions/context-permission-item/context-permission-item.component.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permission-item/context-permission-item.component.html","../../../packages/context/src/lib/context-manager/context-permissions/context-permission.service.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-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/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":["import { RouteServiceOptions } from '@igo2/core/route';\nimport { LayerGroupOptions, LayerOptions } from '@igo2/geo';\n\nexport const ServiceType = [\n 'wms',\n 'wmts',\n 'arcgisrest',\n 'imagearcgisrest',\n 'tilearcgisrest'\n] as const;\nexport type ServiceType = (typeof ServiceType)[number];\n\nexport enum ServiceTypeEnum {\n wms = 0,\n wmts = 1,\n arcgisrest = 2,\n imagearcgisrest = 3,\n tilearcgisrest = 4\n}\n\nconst BaseLayerParamsKeys = [\n 'visible',\n 'opacity',\n 'zIndex',\n 'parentId'\n] as const;\n\nexport const LayerParamsKeys = [\n 'id',\n 'index',\n 'names',\n 'type',\n 'version',\n 'queryString',\n ...BaseLayerParamsKeys\n] as const;\nexport type LayerParamsKeys = (typeof LayerParamsKeys)[number];\n\nexport const GroupParamsKeys = [\n 'title',\n 'id',\n 'expanded',\n ...BaseLayerParamsKeys\n] as const;\nexport type GroupParamsKeys = (typeof GroupParamsKeys)[number];\n\nconst PositionParamsKeys = [\n 'center',\n 'zoom',\n 'rotation',\n 'projection'\n] as const;\ntype PositionParamsKeys = (typeof PositionParamsKeys)[number];\n\nexport interface ShareMapKeysDefinitions {\n urlsKey: string;\n contextKey: string;\n languageKey: string;\n pos: DefinitionKeyParams<PositionParamsKeys>;\n layers: DefinitionKeyParams<LayerParamsKeys>;\n groups: DefinitionKeyParams<GroupParamsKeys>;\n}\n\nexport interface DefinitionKeyParams<T extends string> extends BaseKeyParams {\n params: DefinitionParams<T>;\n}\n\nexport type DefinitionParams<T extends string = string> = Record<\n T,\n BaseKeyParams | undefined\n>;\n\nexport interface BaseKeyParams {\n key: string;\n parse?: (value: string) => unknown;\n stringify?: (value: unknown) => string;\n}\n\nexport interface PositionParams {\n center?: [number, number];\n zoom?: number;\n rotation?: number;\n projection?: string;\n}\n\nexport interface LayerProperties {\n zIndex: number;\n visibility: boolean;\n type: ServiceType;\n opacity: number;\n parentId: string;\n}\n\nexport interface UrlParsedParam {\n position: PositionParams;\n layersOptions: LayerOptions[];\n context: string;\n}\n\nexport type LayerParams = BaseLayerParams & {\n index: number;\n names?: string;\n type?: string;\n};\n\nexport type GroupParams = BaseLayerParams &\n Pick<LayerGroupOptions, 'title' | 'id'> & { expanded?: boolean };\n\ntype BaseLayerParams = Pick<\n LayerOptions,\n 'visible' | 'opacity' | 'zIndex' | 'parentId' | 'id'\n>;\n\nexport interface ShareMapRouteKeysOptions extends RouteServiceOptions {\n context: string;\n urls: string;\n position: string;\n layers: string;\n groups: string;\n center: string;\n zoom: string;\n projection: string;\n rotation: string;\n opacity: string;\n}\n\nexport const SHARE_MAP_KEYS_DEFAULT_OPTIONS: ShareMapRouteKeysOptions = {\n context: 'ctx',\n urls: 'urls',\n position: 'pos',\n layers: 'layers',\n groups: 'groups',\n center: 'ctr',\n zoom: 'z',\n projection: 'p',\n rotation: 'r',\n opacity: 'o'\n};\n","import {\n ServiceTypeEnum,\n ShareMapKeysDefinitions,\n ShareMapRouteKeysOptions\n} from './share-map.interface';\n\nexport function shareMapKeyDefs(\n options: ShareMapRouteKeysOptions\n): ShareMapKeysDefinitions {\n return {\n contextKey: options.context,\n urlsKey: options.urls,\n languageKey: options.languageKey,\n pos: {\n key: options.position,\n params: {\n zoom: {\n key: options.zoom,\n parse: (params) => parseIntergerParam(params, options.zoom)\n },\n center: {\n key: '@',\n parse: parseCenter,\n stringify: stringifyCenter\n },\n rotation: {\n key: options.rotation,\n parse: (params) => parseRotation(params, options.rotation),\n stringify: formatNumber\n },\n projection: {\n key: options.projection,\n parse: (params) => extractParam(params, options.projection)\n }\n }\n },\n layers: {\n key: options.layers,\n params: {\n index: undefined,\n id: {\n key: 'id',\n parse: (params) => extractParam(params, 'id'),\n stringify: (value: string) => `${value}`\n },\n names: {\n key: 'n',\n parse: (params) => {\n const param = extractParam(params, 'n');\n if (!param) return undefined;\n const unbracketed = param.slice(1, -1);\n return decodeURIComponent(unbracketed);\n },\n stringify: (value: string) => `[${encodeURIComponent(value)}]`\n },\n opacity: {\n key: 'o',\n parse: (params) => parseFloatParam(params, 'o')\n },\n visible: {\n key: 'v',\n parse: (params) => parseBooleanParam(params, 'v'),\n stringify: stringifyBoolean\n },\n type: {\n key: 't',\n parse: (params) => parseLayerType(params, 't'),\n stringify: stringifyType\n },\n zIndex: {\n key: 'z',\n parse: (params) => parseIntergerParam(params, 'z')\n },\n parentId: {\n key: 'pid',\n parse: (params) => extractParam(params, 'pid')\n },\n version: {\n key: 'vrn',\n parse: (params) => extractParam(params, 'vrn')\n },\n queryString: {\n key: 'q',\n parse: (params) => extractParam(params, 'q')\n }\n }\n },\n groups: {\n key: options.groups,\n params: {\n id: {\n key: 'id',\n parse: (params) => extractIdParam(params, 'id')\n },\n parentId: {\n key: 'pid',\n parse: (params) => extractIdParam(params, 'pid')\n },\n title: {\n key: 't',\n parse: (params) => {\n const param = extractParam(params, 't');\n return param ? decodeURIComponent(param) : undefined;\n },\n stringify: (value: string) => encodeURIComponent(value)\n },\n visible: {\n key: 'v',\n parse: (params) => parseBooleanParam(params, 'v'),\n stringify: stringifyBoolean\n },\n opacity: {\n key: 'o',\n parse: (params) => parseFloatParam(params, 'o')\n },\n zIndex: {\n key: 'z',\n parse: (params) => parseIntergerParam(params, 'z')\n },\n expanded: {\n key: 'e',\n parse: (params) => parseBooleanParam(params, 'e'),\n stringify: stringifyBoolean\n }\n }\n }\n };\n}\n\nfunction stringifyBoolean(value: boolean): string {\n return value ? '1' : '0';\n}\n\nfunction parseBoolean(params: string): boolean {\n return !!parseInt(params);\n}\n\nfunction stringifyType(value: keyof typeof ServiceTypeEnum): string {\n return String(ServiceTypeEnum[value]);\n}\n\nfunction parseLayerType(\n params: string,\n key: string\n): keyof typeof ServiceTypeEnum {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n const type = Number(param);\n\n return ServiceTypeEnum[type] as keyof typeof ServiceTypeEnum;\n}\n\nfunction stringifyCenter(values: [number, number]): string {\n return values.map(formatNumber).join(',');\n}\n\nfunction parseCenter(params: string | undefined): [number, number] | undefined {\n if (!params?.startsWith('@')) {\n return;\n }\n const paramsSplitted = params.split(',');\n const index = paramsSplitted.findIndex((param) => param.startsWith('@'));\n return [\n Number(paramsSplitted[index].slice(1)),\n Number(paramsSplitted[index + 1])\n ];\n}\n\nfunction parseRotation(params: string | undefined, key: string): number {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n const degree = parseInteger(param);\n return (degree * Math.PI) / 180;\n}\n\nfunction parseIntergerParam(params: string | undefined, key: string): number {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n return parseInteger(param);\n}\n\nfunction parseBooleanParam(params: string | undefined, key: string): boolean {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n return parseBoolean(param);\n}\n\nfunction parseFloatParam(params: string | undefined, key: string): number {\n const param = extractParam(params, key);\n if (!param) {\n return;\n }\n return parseFloat(param);\n}\n\nfunction extractParam(\n params: string | undefined,\n suffix: string\n): string | undefined {\n return params\n ?.split(',')\n .find((param) => param.endsWith(suffix))\n ?.slice(0, -suffix.length);\n}\n\nfunction extractIdParam(\n params: string,\n suffix: 'id' | 'pid'\n): string | undefined {\n const paramsSplited = params.split(',');\n // Find the parameter that ends with exact id/pid and isn't part of another word\n const param = paramsSplited.find((param) => {\n const key = param.slice(-suffix.length);\n\n if (key !== suffix) {\n return false;\n }\n\n if (suffix === 'pid') {\n return true;\n }\n\n const prefixChar = param.slice(-suffix.length - 1, -suffix.length);\n return prefixChar !== 'p';\n });\n return param?.slice(0, -suffix.length);\n}\n\nfunction parseInteger(value: string) {\n return parseInt(value, 10);\n}\n\nfunction formatNumber(value: number) {\n return value.toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\n}\n","import { Params } from '@angular/router';\n\nimport { RouteServiceOptions } from '@igo2/core/route';\nimport {\n AnyDataSourceOptions,\n AnyLayerOptions,\n QueryFormat,\n QueryableDataSourceOptions,\n isLayerGroupOptions\n} from '@igo2/geo';\n\nimport { ServiceType, ShareMapKeysDefinitions } from './share-map.interface';\n\nexport function buildDataSourceOptions(\n type: ServiceType,\n url: string,\n layers: string[],\n version: string\n): AnyDataSourceOptions {\n const isLayerType = [\n 'wmts',\n 'arcgisrest',\n 'imagearcgisrest',\n 'tilearcgisrest'\n ].includes(type);\n const arcgisClause =\n type === 'arcgisrest' ||\n type === 'imagearcgisrest' ||\n type === 'tilearcgisrest';\n const params =\n type === 'wms' ? { LAYERS: layers.join(','), VERSION: version } : undefined;\n\n const layer = isLayerType ? layers.join(',') : undefined;\n const baseParams = {\n type: type,\n url,\n params,\n layer,\n version: type === 'wmts' ? '1.0.0' : undefined\n };\n\n if (arcgisClause) {\n return {\n ...baseParams,\n queryable: true,\n queryFormat: QueryFormat.ESRIJSON\n } as QueryableDataSourceOptions;\n }\n\n return baseParams;\n}\n\nexport function getFlattenOptions(\n options: AnyLayerOptions[]\n): AnyLayerOptions[] {\n return options.reduce((accumulator, option) => {\n if (isLayerGroupOptions(option)) {\n const children = option.children\n ? getFlattenOptions(option.children)\n : [];\n accumulator.push(option, ...children);\n } else {\n accumulator.push(option);\n }\n return accumulator;\n }, []);\n}\n\n/**\n * Checks if the provided query parameters contain legacy parameter pairs\n * (e.g., layers and URLs) that indicate older configuration formats.\n */\nexport function hasLegacyParams(\n params: Params,\n optionsLegacy: RouteServiceOptions\n): boolean {\n const {\n layersKey,\n wmsUrlKey,\n wmsLayersKey,\n wmtsUrlKey,\n wmtsLayersKey,\n arcgisUrlKey,\n arcgisLayersKey,\n iarcgisUrlKey,\n iarcgisLayersKey,\n tarcgisUrlKey,\n tarcgisLayersKey\n } = optionsLegacy;\n\n // Define valid legacy parameter pairs\n const legacyPairs: [string | undefined, string | undefined][] = [\n [layersKey, wmsUrlKey],\n [wmsLayersKey, wmsUrlKey],\n [wmtsLayersKey, wmtsUrlKey],\n [arcgisLayersKey, arcgisUrlKey],\n [iarcgisLayersKey, iarcgisUrlKey],\n [tarcgisLayersKey, tarcgisUrlKey]\n ].filter(([layer, url]) => layer && url) as [string, string][];\n\n // Check if any legacy pair exists in the query parameters\n return legacyPairs.some(\n ([layer, url]) => getParamValue(params, layer) && getParamValue(params, url)\n );\n}\n\nexport function hasModernShareParams(\n params: Params,\n keysDefinitions: ShareMapKeysDefinitions\n): boolean {\n const { contextKey, groups } = keysDefinitions;\n const hasGroups = !!getParamValue(params, groups.key);\n const hasContext = !!getParamValue(params, contextKey);\n\n return hasContext || hasGroups;\n}\n\nexport function getParamValue(params: Params, key: string): string | undefined {\n const value = params[key];\n return value !== '' ? value : undefined;\n}\n","import {\n AnyDataSourceOptions,\n AnyLayer,\n AnyLayerOptions,\n ID_GROUP_PREFIX,\n IgoMap,\n Layer,\n LayerGroup,\n LayerId,\n MapViewController,\n WMSDataSourceOptions,\n findParentId,\n getLayerOptionIdentifier,\n isLayerGroup,\n isLayerGroupOptions,\n isLayerItem\n} from '@igo2/geo';\nimport { ObjectUtils, OptionalRequired } from '@igo2/utils';\n\nimport type { DetailedContext } from '../../context-manager';\nimport {\n BaseKeyParams,\n DefinitionParams,\n GroupParams,\n LayerParams,\n PositionParams,\n ServiceType,\n ShareMapKeysDefinitions\n} from './share-map.interface';\nimport { getFlattenOptions } from './share-map.utils';\n\nexport class ShareMapEncoder {\n private context: DetailedContext | undefined;\n language: string;\n\n constructor(\n private SHARE_MAP_DEFS: ShareMapKeysDefinitions,\n private document: Document\n ) {}\n\n generateUrl(map: IgoMap, context: DetailedContext): string {\n this.context = context;\n\n const layers = [\n map.layerController.baseLayer,\n ...map.layerController.layersFlattened\n ].filter(Boolean);\n\n const urlParams = this.getBaseUrlConfig(map.viewController);\n this.buildQueryUrl(layers, urlParams);\n\n const [baseUrl] = this.document.location.href.split('?');\n const queryString = urlParams.toString();\n return queryString !== '' ? `${baseUrl}?${queryString}` : baseUrl;\n }\n\n /**\n * Replaces local group IDs with unique IDs to avoid conflicts and have short URL.\n * This is necessary for sharing the map context.\n */\n private replaceGroupLocalIds(layers: AnyLayer[]): void {\n const idMap = new Map<LayerId, LayerId>();\n const existingIds = new Set(\n layers.map((layer) => layer.id).filter(Boolean)\n );\n\n // eslint-disable-next-line prefer-const\n let counter = 1;\n layers.forEach((layer) => {\n if (layer.id && layer.id.toString().includes(ID_GROUP_PREFIX)) {\n const newId = this.getUniqueId(existingIds, counter);\n idMap.set(layer.id, newId);\n layer.options.id = newId;\n }\n });\n }\n\n private getUniqueId(existingIds: Set<string | number>, counter: number) {\n while (existingIds.has(String(counter))) {\n counter++;\n }\n existingIds.add(String(counter));\n return counter;\n }\n\n private getCurrentContext(): {\n layers: AnyLayerOptions[];\n center?: [number, number];\n projection?: string;\n zoom?: number;\n rotation?: number;\n } {\n return ObjectUtils.removeUndefined({\n layers: this.context?.layers,\n center: this.context?.map.view.center,\n projection: this.context?.map.view.projection,\n zoom: this.context?.map.view.zoom,\n rotation: this.context?.map.view.rotation\n });\n }\n\n /**\n * Filters layers to include only LayerGroups or LayerItems with a valid ServiceType.\n */\n private isLayerSharable(layers: AnyLayer[]): AnyLayer[] {\n return layers.filter(\n (layer) =>\n isLayerGroup(layer) ||\n (isLayerItem(layer) &&\n ServiceType.includes(layer.dataSource?.options?.type as ServiceType))\n );\n }\n\n /**\n * Extracts only LayerGroup items from the filtered layers.\n */\n private getLayerGroups(layers: AnyLayer[]): LayerGroup[] {\n return layers.filter(isLayerGroup) as LayerGroup[];\n }\n\n /**\n * Extracts only LayerItem items from the filtered layers.\n */\n private getLayerItems(layers: AnyLayer[]): Layer[] {\n return layers.filter(isLayerItem) as Layer[];\n }\n\n private buildQueryUrl(layers: AnyLayer[], urlParams: URLSearchParams) {\n const layersSharable = this.isLayerSharable(layers);\n this.replaceGroupLocalIds(layersSharable);\n const layersChanged = this.getFilteredMapLayers(layersSharable);\n\n const groups = this.getLayerGroups(layersChanged);\n const groupsQueryValue = this.buildGroupsQueryValue(groups);\n\n const layersByService = this.generateLayersOptionsByService(\n this.getLayerItems(layersChanged)\n );\n const [urls, layerParams] = this.buildLayersQueryValues(layersByService);\n\n if (urls.length > 0) {\n urlParams.set(this.SHARE_MAP_DEFS.urlsKey, urls.join(','));\n }\n if (layerParams.length > 0) {\n urlParams.set(this.SHARE_MAP_DEFS.layers.key, layerParams.join(';'));\n }\n if (groupsQueryValue) {\n urlParams.set(this.SHARE_MAP_DEFS.groups.key, groupsQueryValue);\n }\n }\n\n /**\n * Retrieves the current context layers and maps them by identifier.\n */\n private getContextLayersMap(): Map<string, AnyLayerOptions> {\n const ctxLayers = this.getCurrentContext()?.layers || [];\n const ctxFlattened = getFlattenOptions(ctxLayers);\n\n return new Map(\n ctxFlattened.map((lctx) => {\n const identifier = getLayerOptionIdentifier(lctx);\n return [identifier, lctx] as const;\n })\n );\n }\n\n /**\n * Filters layers and context layers based on visibility, opacity, and expanded state.\n */\n private getFilteredMapLayers(filteredLayers: AnyLayer[]): AnyLayer[] {\n const ctxLayersMap = this.getContextLayersMap();\n\n return filteredLayers.filter((layer) => {\n const mapLayerIdentifier = getLayerOptionIdentifier(layer.options);\n if (!mapLayerIdentifier) return false;\n const ctxLayer = ctxLayersMap.get(mapLayerIdentifier);\n if (!ctxLayer) return true;\n\n const visibilityChange = layer.visible !== (ctxLayer.visible ?? true);\n const opacityChange = layer.opacity !== (ctxLayer.opacity ?? 1);\n const layerParentId = this.getIdsNestedParent(layer)?.join('.');\n const ctxParentId =\n ctxLayer.parentId ?? findParentId(this.context.layers, ctxLayer);\n const parentIdChange = ctxParentId !== layerParentId;\n\n let expandedChange = false;\n let titleChange = false;\n if (isLayerGroup(layer) && isLayerGroupOptions(ctxLayer)) {\n // Check if the layer group was assign an local id\n // If so, we don't support any change for this case\n if (String(ctxLayer.id).includes(ID_GROUP_PREFIX)) {\n return false;\n }\n expandedChange = (ctxLayer.expanded ?? false) !== layer.expanded;\n titleChange = (ctxLayer.title ?? false) !== layer.title;\n }\n\n return (\n visibilityChange ||\n opacityChange ||\n expandedChange ||\n titleChange ||\n parentIdChange\n );\n });\n }\n\n private getIdsNestedParent(\n node: Layer | LayerGroup,\n ids?: LayerId[]\n ): LayerId[] | undefined {\n if (!node.parent) return ids;\n\n if (node.parent) {\n if (!ids) {\n ids = [node.parent.id];\n } else {\n ids.unshift(node.parent.id);\n }\n return this.getIdsNestedParent(node.parent, ids);\n }\n\n return ids;\n }\n\n private generateLayersOptionsByService(\n layers: Layer[]\n ): [url: string, layers: LayerParams[]][] {\n const layersByUrl = new Map<string, LayerParams[]>();\n\n layers.forEach((layer) => {\n const [url, params] = this.generateLayerOption(layer);\n if (!layersByUrl.has(url)) {\n layersByUrl.set(url, [params]);\n } else {\n layersByUrl.get(url)!.push(params);\n }\n });\n\n let customIndex = 0;\n return Array.from(layersByUrl.entries()).map(([url, layerParams]) => {\n const hasNoId = layerParams.some((p) => !p.id);\n if (hasNoId) {\n layerParams.forEach((params) => {\n if (!params.id) {\n params.index = customIndex;\n }\n });\n customIndex++;\n }\n return [url, layerParams];\n });\n }\n\n private generateLayerOption(\n layer: Layer\n ): [url: string, layers: LayerParams] {\n const dataSourceOptions = layer.dataSource.options as AnyDataSourceOptions;\n return [\n this.concatUrlWithVersion(dataSourceOptions),\n this.getLayerParams(layer)\n ];\n }\n\n private getLayerNames(dataSourceOptions: AnyDataSourceOptions): string {\n const type = dataSourceOptions.type.toLowerCase() as ServiceType;\n if (type === 'wms') {\n const params = (dataSourceOptions as Partial<WMSDataSourceOptions>)\n .params;\n return params.LAYERS;\n }\n\n return 'layer' in dataSourceOptions ? dataSourceOptions.layer : '';\n }\n\n private getWmsVersion(\n dataSourceOptions: AnyDataSourceOptions\n ): string | undefined {\n const params = (dataSourceOptions as Partial<WMSDataSourceOptions>)?.params;\n return params?.VERSION && params.VERSION !== '1.3.0'\n ? params.VERSION\n : undefined;\n }\n\n private concatUrlWithVersion(\n dataSourceOptions: AnyDataSourceOptions\n ): string {\n const url = dataSourceOptions.url;\n\n if ((dataSourceOptions.type.toLowerCase() as ServiceType) === 'wms') {\n const version = this.getWmsVersion(dataSourceOptions);\n if (version) {\n const operator = url.includes('?') ? '&' : '?';\n const { version: versionDef } = this.SHARE_MAP_DEFS.layers.params;\n return `${url}${operator}${versionDef.key}=${version}`;\n }\n }\n\n return dataSourceOptions.url;\n }\n\n private getLayerParams(layer: Layer): LayerParams {\n const dataSourceOptions = layer.dataSource.options;\n const isExisting = this.context?.layers\n ? this.hasLayerId(this.context.layers, layer.id)\n : false;\n return {\n index: undefined,\n ...(isExisting\n ? { id: layer.id }\n : {\n names: this.getLayerNames(dataSourceOptions),\n type: dataSourceOptions?.type\n }),\n opacity: this.getOpacity(layer.opacity),\n parentId: layer.parent?.id,\n visible: this.getVisibility(layer.visible),\n zIndex: layer.zIndex\n };\n }\n\n /** Recursive */\n private hasLayerId(\n layersOptions: AnyLayerOptions[],\n targetId: string | number\n ): boolean {\n if (targetId == null) return false;\n return layersOptions.some((l) => {\n if (l.id == null) return false;\n if (!isLayerGroupOptions(l)) {\n return String(l.id) === String(targetId);\n }\n\n if (isLayerGroupOptions(l) && Array.isArray(l.children)) {\n return this.hasLayerId(l.children, targetId);\n }\n return false;\n });\n }\n\n private getOpacity(opacity: number): number | undefined {\n return opacity === 1 ? undefined : opacity;\n }\n\n private getVisibility(visibility: boolean | undefined): boolean {\n return !!visibility;\n }\n\n private buildLayersQueryValues(\n layersByService: [url: string, params: LayerParams[]][]\n ): [urls: string[], layerParams: string[]] {\n const urls: string[] = [];\n const layerParams: string[] = [];\n for (const [url, layer] of layersByService) {\n let needUrl = false;\n\n for (const param of layer) {\n layerParams.push(this.stringifyLayerParams(param));\n if (param.id == null) {\n needUrl = true;\n }\n }\n\n // If some layer have no id push the url service.\n if (needUrl) {\n urls.push(url);\n }\n }\n\n return [urls, layerParams];\n }\n\n private stringifyLayerParams(params: LayerParams): string {\n const { index, ...restParams } = params;\n\n const stringifiedParams = this.stringifyDefinitions(\n restParams,\n this.SHARE_MAP_DEFS.layers.params\n );\n\n return restParams.id != null\n ? `${stringifiedParams}`\n : `${index},${stringifiedParams}`;\n }\n\n private getBaseUrlConfig(viewController: MapViewController): URLSearchParams {\n const { pos, contextKey, languageKey } = this.SHARE_MAP_DEFS;\n const href = this.document.location.href;\n const urlParams = this.getSanitizedParams(href);\n\n if (pos) {\n const positionStringified = this.stringifyPosition(\n this.getPosition(viewController)\n );\n urlParams.set(pos.key, positionStringified);\n }\n const contextUri = this.context?.uri;\n if (contextUri) urlParams.set(contextKey, contextUri);\n\n if (this.language && !urlParams.has(languageKey))\n urlParams.set(languageKey, this.language);\n\n return urlParams;\n }\n\n getSanitizedParams(baseUrl: string): URLSearchParams {\n const [, queryString] = baseUrl.split('?');\n const params = new URLSearchParams(queryString);\n\n const keys = this.extractKeys(this.SHARE_MAP_DEFS);\n keys.forEach((key) => {\n params.delete(key);\n });\n\n return params;\n }\n\n private extractKeys(defs: ShareMapKeysDefinitions): string[] {\n const keys: string[] = [];\n for (const key in defs) {\n if (Object.prototype.hasOwnProperty.call(defs, key)) {\n const value = defs[key];\n if (typeof value === 'string') {\n keys.push(value);\n } else if (typeof value === 'object' && value !== null) {\n keys.push(value.key);\n }\n }\n }\n\n return keys;\n }\n\n private getPosition(viewController: MapViewController): PositionParams {\n return ObjectUtils.removeUndefined({\n center: viewController.getCenter('EPSG:4326'),\n zoom: this.getZoom(viewController),\n rotation: this.getRotation(viewController),\n projection: this.getProjection(viewController)\n });\n }\n\n private getProjection(viewController: MapViewController): string | undefined {\n const ctxProjection = this.getCurrentContext().projection;\n const mapProjection = viewController.getOlProjection().getCode();\n return ctxProjection === mapProjection ? undefined : mapProjection;\n }\n\n private getZoom(viewController: MapViewController): number | undefined {\n const mapZoom = viewController.getZoom();\n const ctxZoom = this.getCurrentContext().zoom;\n return ctxZoom === mapZoom ? undefined : mapZoom;\n }\n\n private getRotation(viewController: MapViewController): number | undefined {\n const rotationRadians = viewController.getRotation();\n const rotationDegree = (rotationRadians * 180) / Math.PI;\n const ctxRotation = this.getCurrentContext().rotation;\n return rotationDegree === ctxRotation || rotationDegree === 0\n ? undefined\n : rotationDegree;\n }\n\n private stringifyPosition(position: PositionParams): string {\n const definitions = this.SHARE_MAP_DEFS.pos.params;\n const { center, ...restPosition } = position;\n const stringifiedParams = this.stringifyDefinitions(\n restPosition,\n definitions\n );\n\n const result = [\n `${definitions.center.key}${definitions.center.stringify(center)}`,\n stringifiedParams\n ].filter(Boolean);\n\n return result.join(',');\n }\n\n private stringifyDefinitions(\n values: Record<string, unknown>,\n definitions: DefinitionParams\n ): string | undefined {\n const result = Object.keys(ObjectUtils.removeUndefined(values))\n .map((key) => {\n const { key: defKey, stringify } = definitions[key] as BaseKeyParams;\n const value = stringify ? stringify(values[key]) : values[key];\n return `${value}${defKey}`;\n })\n .join(',');\n return result === '' ? undefined : result;\n }\n\n private buildGroupsQueryValue(layers: LayerGroup[]): string | undefined {\n if (layers.length === 0) return undefined;\n\n return layers\n .map((layer) => {\n const params = this.getLayerGroupParams(layer);\n return this.stringifyGroupParams(params);\n })\n .join(';');\n }\n\n private getLayerGroupParams(layer: LayerGroup): GroupParams {\n return {\n id: layer.id,\n title: layer.title,\n zIndex: layer.zIndex,\n parentId: layer.parent?.id,\n visible: this.getVisibility(layer.visible),\n opacity: this.getOpacity(layer.opacity),\n expanded: layer.expanded\n } satisfies OptionalRequired<GroupParams>;\n }\n\n private stringifyGroupParams(params: GroupParams): string {\n return this.stringifyDefinitions(params, this.SHARE_MAP_DEFS.groups.params);\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Params } from '@angular/router';\n\nimport { RouteServiceOptions } from '@igo2/core/route';\nimport { LayerOptions, generateIdFromSourceOptions } from '@igo2/geo';\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { PositionParams, ServiceType } from './share-map.interface';\nimport { buildDataSourceOptions } from './share-map.utils';\n\ninterface SharedLayerConfig {\n layers: string[];\n zIndex: number | undefined;\n}\n\nexport class ShareMapLegacyParser {\n constructor(private options: RouteServiceOptions) {}\n\n parseUrl(params: Params): LayerOptions[] | undefined {\n const layerOptions = ServiceType.flatMap((type) =>\n this.readLayersQueryParamsByType(params, type)\n ).filter(Boolean);\n\n return layerOptions;\n }\n\n parsePosition(params: Params): PositionParams {\n const center = params[this.options.centerKey];\n const projection = params[this.options.projectionKey];\n const zoom = params[this.options.zoomKey];\n const rotation = params[this.options.rotationKey];\n\n return ObjectUtils.removeUndefined({\n center: center?.split(',').map(Number),\n projection,\n zoom: zoom ? Number(zoom) : undefined,\n rotation: rotation ? Number(rotation) : undefined\n });\n }\n\n private readLayersQueryParamsByType(\n params: Params,\n type: ServiceType\n ): LayerOptions[] | undefined {\n const [nameParamLayersKey, urlsKey] = this.getQueryKeyByType(params, type);\n if (!nameParamLayersKey || !urlsKey) {\n return undefined;\n }\n\n const layersByService: string[] = params[nameParamLayersKey].split('),(');\n const urls: string[] = params[urlsKey].split(',');\n\n return urls\n .map((urlSrc, index) => {\n // Sanitize URL and extract version\n const [url, version] = this.sanitizeUrl(urlSrc);\n\n const layersConfig = this.extractLayersByService(\n this.removeParenthesis(layersByService[index])\n );\n\n // Generate layer options for the current service\n return this.extractLayersOptions(\n layersConfig,\n url,\n type,\n version,\n params\n );\n })\n .flat();\n }\n\n private getQueryKeyByType(\n params: Params,\n type: string\n ): [nameParamLayersKey: string | undefined, urlsKey: string | undefined] {\n let nameParamLayersKey;\n let urlsKey;\n\n const {\n layersKey,\n wmsUrlKey,\n wmsLayersKey,\n wmtsUrlKey,\n wmtsLayersKey,\n arcgisUrlKey,\n arcgisLayersKey,\n iarcgisUrlKey,\n iarcgisLayersKey,\n tarcgisUrlKey,\n tarcgisLayersKey\n } = this.options;\n\n switch (type) {\n case 'wms':\n if ((params[layersKey] || params[wmsLayersKey]) && params[wmsUrlKey]) {\n urlsKey = wmsUrlKey;\n nameParamLayersKey = params[wmsLayersKey] ? wmsLayersKey : layersKey;\n }\n break;\n case 'wmts':\n if (params[wmtsLayersKey] && params[wmtsUrlKey]) {\n urlsKey = wmtsUrlKey;\n nameParamLayersKey = wmtsLayersKey;\n }\n break;\n case 'arcgisrest':\n if (params[arcgisLayersKey] && params[arcgisUrlKey]) {\n urlsKey = arcgisUrlKey;\n nameParamLayersKey = arcgisLayersKey;\n }\n break;\n case 'imagearcgisrest':\n if (params[iarcgisLayersKey] && params[iarcgisUrlKey]) {\n urlsKey = iarcgisUrlKey;\n nameParamLayersKey = iarcgisLayersKey;\n }\n break;\n case 'tilearcgisrest':\n if (params[tarcgisLayersKey] && params[tarcgisUrlKey]) {\n urlsKey = tarcgisUrlKey;\n nameParamLayersKey = tarcgisLayersKey;\n }\n break;\n }\n if (!nameParamLayersKey || !urlsKey) {\n return [undefined, undefined];\n }\n\n return [nameParamLayersKey, urlsKey];\n }\n\n private sanitizeUrl(url: string): [url: string, version: string | undefined] {\n const version =\n this.getQueryParam('version', url.toLocaleLowerCase()) || undefined;\n\n if (version) {\n const versionRegex = new RegExp(`[?&]version=${version}`, 'i');\n url = url.replace(versionRegex, '').replace(/[?&]$/, '');\n }\n\n if (url.endsWith('?')) {\n url = url.substring(0, url.length - 1);\n }\n return [url, version];\n }\n\n private getQueryParam(name: string, url: string): string | undefined {\n let paramValue;\n if (url.includes('?')) {\n const httpParams = new HttpParams({ fromString: url.split('?')[1] });\n paramValue = httpParams.get(name);\n }\n return paramValue;\n }\n\n private extractLayersByService(layersByService: string): SharedLayerConfig[] {\n if (!layersByService.includes(':igoz')) {\n return [\n {\n layers: layersByService.split(','),\n zIndex: null\n }\n ];\n }\n\n const layers = layersByService.match(\n /([^(),:]+(?:,[^(),:]+)*(:[^(),:]+(?:[:][^(),:]+)*)?)/g\n );\n\n return layers.map((layer) => {\n const [names, zIndex] = layer.split(':igoz');\n return {\n layers: names.split(','),\n zIndex: parseInt(zIndex)\n };\n });\n }\n\n private removeParenthesis(value: string) {\n if (value.startsWith('(')) {\n value = value.substr(1);\n }\n\n if (value.endsWith(')')) {\n value = value.slice(0, -1);\n }\n\n return value;\n }\n\n private extractLayersOptions(\n layersConfig: SharedLayerConfig[],\n url: string,\n type: ServiceType,\n version: string,\n params: Params\n ): LayerOptions[] {\n return layersConfig.map((layerConfig) => {\n const sourceOptions = buildDataSourceOptions(\n type,\n url,\n layerConfig.layers,\n version\n );\n const id = generateIdFromSourceOptions(sourceOptions);\n\n const visible = this.computeLayerVisibilityFromUrl(params, id);\n\n return ObjectUtils.removeUndefined({\n id,\n visible: visible,\n zIndex: layerConfig.zIndex,\n sourceOptions\n });\n });\n }\n\n private computeLayerVisibilityFromUrl(\n params: Params,\n currentLayerid: string\n ): boolean {\n const queryParams = params;\n let visible = true;\n if (!queryParams || !currentLayerid) {\n return visible;\n }\n let visibleOnLayersParams = '';\n let visibleOffLayersParams = '';\n if (queryParams['visiblelayers']) {\n visibleOnLayersParams = queryParams['visiblelayers'];\n }\n if (queryParams['invisiblelayers']) {\n visibleOffLayersParams = queryParams['invisiblelayers'];\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 const visiblelayers = visibleOnLayersParams.split(',');\n const 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 return visible;\n }\n}\n","import { Params } from '@angular/router';\n\nimport { RouteServiceOptions } from '@igo2/core/route';\nimport {\n type AnyLayerOptions,\n type LayerGroupOptions,\n type LayerOptions\n} from '@igo2/geo';\nimport { ObjectUtils, OptionalRequired } from '@igo2/utils';\n\nimport { ShareMapLegacyParser } from './share-map-legacy.service';\nimport {\n LayerProperties,\n PositionParams,\n ServiceType,\n ShareMapKeysDefinitions\n} from './share-map.interface';\nimport {\n buildDataSourceOptions,\n getParamValue,\n hasLegacyParams,\n hasModernShareParams\n} from './share-map.utils';\n\ntype BaseLayerOptionsParsed = Pick<\n LayerOptions,\n 'visible' | 'zIndex' | 'opacity' | 'parentId'\n> &\n Partial<Pick<LayerOptions, 'id'>>;\n\ntype LayerOptionsParsed = BaseLayerOptionsParsed &\n Pick<LayerOptions, 'sourceOptions'>;\n\ntype LayerGroupOptionsParserd = BaseLayerOptionsParsed &\n Pick<LayerGroupOptions, 'id' | 'title' | 'expanded' | 'type'>;\n\nexport class ShareMapParser {\n legacy: ShareMapLegacyParser;\n\n constructor(\n private keysDefinitions: ShareMapKeysDefinitions,\n private legacyOptions: RouteServiceOptions\n ) {\n this.legacy = new ShareMapLegacyParser(legacyOptions);\n }\n\n parseLayers(params: Params): AnyLayerOptions[] | undefined {\n if (\n !hasModernShareParams(params, this.keysDefinitions) &&\n hasLegacyParams(params, this.legacyOptions)\n ) {\n return this.legacy.parseUrl(params);\n }\n\n const {\n urlsKey,\n layers: layersDef,\n groups: groupsDef\n } = this.keysDefinitions;\n\n const layersArray = this.splitParam(\n getParamValue(params, layersDef.key),\n ';'\n );\n const urlsArray = this.splitParam(getParamValue(params, urlsKey), ',');\n const groupsArray = this.splitParam(\n getParamValue(params, groupsDef.key),\n ';'\n );\n\n const groupsOptions = groupsArray.map((layer) => this.parseGroup(layer));\n const layersOptions = layersArray\n .map((layer) => this.parseLayer(layer, urlsArray))\n .filter(Boolean);\n return [...groupsOptions, ...layersOptions];\n }\n\n private splitParam(value: string | undefined, delimiter: string): string[] {\n return value ? value.split(delimiter) : [];\n }\n\n parsePosition(params: Params): PositionParams | undefined {\n const position = decodeURIComponent(params[this.keysDefinitions.pos.key]);\n if (!position) {\n return this.legacy.parsePosition(params);\n }\n\n const { center, zoom, rotation, projection } =\n this.keysDefinitions.pos.params;\n\n return ObjectUtils.removeUndefined({\n center: center.parse(position) as [number, number],\n zoom: zoom.parse(position) as number,\n rotation: rotation.parse(position) as number,\n projection: projection.parse(position) as string\n } satisfies OptionalRequired<PositionParams>);\n }\n\n private parseLayer(\n layer: string,\n urls: string[]\n ): LayerOptionsParsed | undefined {\n const { zIndex, visibility, type, opacity, parentId } =\n this.extractLayerProperties(layer);\n const base = {\n visible: visibility,\n zIndex,\n opacity,\n parentId\n } satisfies BaseLayerOptionsParsed;\n\n const layerNames = this.extractLayerNames(layer);\n\n if (layerNames) {\n const urlIndex = this.extractUrlIndex(layer);\n if (urlIndex === undefined) return undefined;\n\n const url = urls[urlIndex];\n const version = this.extractVersionFromUrl(url);\n\n const sourceOptions = buildDataSourceOptions(\n type,\n url,\n layerNames,\n version\n );\n\n return ObjectUtils.removeUndefined({\n id: undefined,\n sourceOptions,\n ...base\n } satisfies OptionalRequired<LayerOptionsParsed>);\n }\n\n const id = this.extractLayerId(layer);\n if (!id) return undefined;\n return ObjectUtils.removeUndefined({\n id,\n sourceOptions: undefined,\n ...base\n } satisfies OptionalRequired<LayerOptionsParsed>);\n }\n\n private parseGroup(properties: string): LayerGroupOptionsParserd {\n const { params } = this.keysDefinitions.groups;\n return ObjectUtils.removeUndefined({\n id: params.id.parse(properties) as string,\n title: params.title.parse(properties) as string,\n zIndex: params.zIndex.parse(properties) as number,\n visible: params.visible.parse(properties) as boolean,\n opacity: params.opacity.parse(properties) as number,\n parentId: params.parentId.parse(properties) as string,\n expanded: params.expanded.parse(properties) as boolean,\n type: 'group'\n } satisfies OptionalRequired<LayerGroupOptionsParserd>);\n }\n\n private extractVersionFromUrl(url: string): string | undefined {\n const versionDef = this.keysDefinitions.layers.params.version;\n return versionDef.parse(url) as string;\n }\n\n private extractLayerId(layer: string): string | undefined {\n const { id } = this.keysDefinitions.layers.params;\n const regex = new RegExp(`([a-zA-Z0-9_]+)${id.key}\\\\b`);\n const match = layer.match(regex);\n return match ? match[1] : undefined;\n }\n\n private extractUrlIndex(layer: string): number | undefined {\n const { index } = this.keysDefinitions.layers.params;\n const regex = index ? new RegExp(`([\\\\d.]+)${index}`) : /([\\d.]+)/;\n const match = layer.match(regex);\n return match ? parseInt(match[1], 10) : undefined;\n }\n\n private extractLayerNames(layer: string): string[] | undefined {\n const { names } = this.keysDefinitions.layers.params;\n const pattern = new RegExp(`\\\\[.*?\\\\]${names.key}`, 'g');\n\n const matches = layer.match(pattern);\n if (!matches) return undefined;\n\n return matches\n .map((match) =>\n decodeURIComponent(match.slice(1, -`]${names.key}`.length))\n )\n .join('\\n')\n .split(',');\n }\n\n private extractLayerProperties(properties: string): LayerProperties {\n const { params } = this.keysDefinitions.layers;\n return {\n zIndex: params.zIndex.parse(properties) as number,\n visibility: params.visible.parse(properties) as boolean,\n type: params.type.parse(properties) as ServiceType,\n opacity: params.opacity.parse(properties) as number,\n parentId: params.parentId.parse(properties) as string\n } satisfies OptionalRequired<LayerProperties>;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { RouteService, RouteServiceOptions } from '@igo2/core/route';\nimport { AnyLayerOptions, IgoMap } from '@igo2/geo';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { shareMapKeyDefs } from './share-map-definitions';\nimport { ShareMapEncoder } from './share-map-encoder';\nimport { ShareMapParser } from './share-map-parser';\nimport {\n PositionParams,\n SHARE_MAP_KEYS_DEFAULT_OPTIONS,\n ShareMapKeysDefinitions,\n ShareMapRouteKeysOptions\n} from './share-map.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShareMapService {\n routeService = inject(RouteService);\n document = inject<Document>(DOCUMENT);\n\n get language(): string {\n return this._language;\n }\n set language(value: string) {\n this._language = value;\n if (this.encoder) {\n this.encoder.language = value;\n }\n }\n private _language = '';\n\n options: ShareMapRouteKeysOptions;\n optionsLegacy: RouteServiceOptions;\n keysDefinitions: ShareMapKeysDefinitions;\n private encoder: ShareMapEncoder;\n private parser: ShareMapParser;\n\n constructor() {\n this.options = SHARE_MAP_KEYS_DEFAULT_OPTIONS;\n this.optionsLegacy = this.routeService.legacyOptions;\n this.keysDefinitions = shareMapKeyDefs({\n ...SHARE_MAP_KEYS_DEFAULT_OPTIONS,\n languageKey: this.routeService.options.languageKey\n });\n\n this.encoder = new ShareMapEncoder(this.keysDefinitions, this.document);\n\n this.parser = new ShareMapParser(\n this.keysDefinitions,\n this.routeService.legacyOptions\n );\n\n this.routeService.queryParams.subscribe((params) => {\n const language = params[this.keysDefinitions.languageKey];\n if (language) {\n this.language = language;\n }\n });\n }\n\n generateUrl(map: IgoMap, context: DetailedContext): string {\n return this.encoder.generateUrl(map, context);\n }\n\n parsePosition(params: Params): PositionParams | undefined {\n return this.parser.parsePosition(params);\n }\n\n parseLayers(params: Params): AnyLayerOptions[] | undefined {\n return this.parser.parseLayers(params);\n }\n\n sanitizeBaseUrl(baseUrl: string): string {\n const params = this.encoder.getSanitizedParams(baseUrl);\n const [base] = baseUrl.split('?');\n const queryString = params.toString();\n return queryString !== '' ? `${base}?${queryString}&` : `${base}?`;\n }\n\n getContext(params: Params): string | undefined {\n return (\n params[this.options.context] ?? params[this.optionsLegacy.contextKey]\n );\n }\n\n getZoom(params: Params): number | undefined {\n return this.parsePosition(params).zoom;\n }\n\n getUrlWithApi(formValues) {\n const loc = this.document.location;\n const origin = loc.origin;\n const pathname = loc.pathname;\n const search = loc.search;\n const params = new URLSearchParams(search);\n params.set('context', formValues.uri);\n if (this.language) {\n params.set('lang', this.language);\n }\n return `${origin}${pathname}?${params.toString()}`;\n }\n\n hasPositionParams(params: Params): boolean {\n const { projectionKey, rotationKey, zoomKey, centerKey } =\n this.optionsLegacy;\n const { pos } = this.keysDefinitions;\n\n return Boolean(\n params[pos.key] ||\n params[projectionKey] ||\n params[rotationKey] ||\n params[zoomKey] ||\n params[centerKey]\n );\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } 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 { ShareMapService } from '../../share-map/shared/share-map.service';\nimport {\n Context,\n ContextDetailedChanges,\n ContextMapView,\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 private http = inject(HttpClient);\n private authService = inject(AuthService);\n private languageService = inject(LanguageService);\n private config = inject(ConfigService);\n private messageService = inject(MessageService);\n private storageService = inject(StorageService);\n private exportService = inject(ExportService);\n private shareMapService = inject(ShareMapService);\n private route = inject(RouteService, { optional: true });\n\n public context$ = new BehaviorSubject<DetailedContext>(undefined);\n public contexts$ = new BehaviorSubject<ContextsList>({ ours: [] });\n public defaultContextId$ = new BehaviorSubject<number | 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 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 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: number): 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 getDetailsByUri(uri: string): Observable<DetailedContext> {\n const url = `${this.baseUrl}/contexts/uri/${uri}/details`;\n return this.http.get<DetailedContext>(url).pipe(\n catchError((res) => {\n this.handleError(res, uri);\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 | number): Observable<string | number | undefined> {\n if (this.authService.authenticated) {\n const url = this.baseUrl + '/contexts/default';\n return this.http.post<string>(url, { defaultContextId: id });\n } else {\n return this.setDefaultLocalStorage(id);\n }\n }\n\n private setDefaultLocalStorage(\n id: string | number\n ): Observable<string | number | undefined> {\n const selectedId = this.storageService.get('favorite.context.uri');\n if (selectedId === id) {\n this.storageService.remove('favorite.context.uri');\n } else {\n this.storageService.set('favorite.context.uri', id);\n }\n return of(selectedId === id ? undefined : id);\n }\n\n hideContext(id: number) {\n const url = this.baseUrl + '/contexts/' + id + '/hide';\n return this.http.post(url, {});\n }\n\n showContext(id: number) {\n const url = this.baseUrl + '/contexts/' + id + '/show';\n return this.http.post(url, {});\n }\n\n delete(id: number, 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 this.loadContext(this.defaultContextUri);\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 = 'write';\n } else {\n contextCreated.permission = '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: number, 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 = 'write';\n this.contexts$.value.ours.unshift(contextCloned);\n this.contexts$.next(this.contexts$.value);\n return contextCloned;\n })\n );\n }\n\n update(\n id: number,\n context: DetailedContext\n ): Observable<ContextDetailedChanges> {\n const url = this.baseUrl + '/contexts/' + id;\n return this.http.patch<ContextDetailedChanges>(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(\n contextId: string,\n toolId: string\n ): Observable<unknown> {\n const url = `${this.baseUrl}/contexts/${contextId}/tools/${toolId}`;\n return this.http.delete(url);\n }\n\n // ======================================================================\n\n getLocalContexts(): Observable<ContextsList> {\n const url = this.getPath(this.options.contextListFile);\n return this.http.get<Context[]>(url).pipe(\n map((res) => {\n return { ours: res } satisfies ContextsList;\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 next: (_context) => {\n this.defaultContextUri = _context.uri;\n this.addContextToList(_context);\n this.setContext(_context);\n },\n error: () => {\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) {\n this.route.queryParams.pipe(debounceTime(100)).subscribe((params) => {\n const contextParam = this.shareMapService.getContext(params);\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: tool.id,\n name: tool.name,\n global: tool.global\n };\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 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 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.flatMap((cluster) => cluster.get('features'));\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 return contextToLoad\n ? this.getDetails(contextToLoad.id)\n : this.getDetailsByUri(uri);\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 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 | number,\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: Context = {\n id: context.id,\n uri: context.uri,\n title: context.title,\n scope: context.scope,\n permission: '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, inject } 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 private config = inject(ConfigService);\n\n static allowedMimeTypes = ['application/json'];\n\n static allowedExtensions = 'json';\n\n private clientSideFileSizeMax: number;\n\n constructor() {\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) => {\n try {\n const context = this.parseContextFromFile(\n file,\n event.target.result as string\n );\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 } from '@angular/common';\nimport { Component, OnInit, inject, input } 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 FormsModule,\n MatButtonModule,\n SpinnerComponent,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatOptionModule,\n MatDividerModule,\n AsyncPipe,\n IgoLanguageModule\n ]\n})\nexport class ContextImportExportComponent implements OnInit {\n private contextImportService = inject(ContextImportService);\n private contextExportService = inject(ContextExportService);\n private messageService = inject(MessageService);\n private formBuilder = inject(UntypedFormBuilder);\n private config = inject(ConfigService);\n private contextService = inject(ContextService);\n\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 readonly map = input<IgoMap>(undefined);\n\n constructor() {\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\">\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@if (activeImportExport === 'import') {\n <div>\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\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\" />\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>\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\n@if (activeImportExport === 'export') {\n <form class=\"igo-form\" [formGroup]=\"form\">\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'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\">{{ layer.title }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\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\" />\n </div>\n </form>\n}\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 { Clipboard } from '@angular/cdk/clipboard';\nimport { Component, computed, inject, input, output } from '@angular/core';\nimport {\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormBuilder\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 { 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 MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n IgoLanguageModule\n ]\n})\nexport class ContextFormComponent {\n private clipboard = inject(Clipboard);\n private formBuilder = inject(UntypedFormBuilder);\n private messageService = inject(MessageService);\n\n public prefix: string;\n\n readonly btnSubmitText = input<string>();\n readonly context = input<Context>();\n readonly disabled = input(false);\n\n readonly submitForm = output<unknown>();\n readonly clone = output<unknown>();\n readonly delete = output<unknown>();\n\n // WORKAROUND, the context-form is shown before the editedContext emit and we got change detection problem\n readonly form = computed<FormGroup | undefined>(() => {\n const context = this.context();\n if (context) {\n return this.buildForm(context);\n }\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 = this.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(context: Context): FormGroup {\n const uriSplit = context.uri.split('-');\n this.prefix = uriSplit.shift();\n const uri = uriSplit.join('-');\n\n return this.formBuilder.group({\n title: [context.title],\n uri: [uri || ' ']\n });\n }\n}\n","@let form = this.form();\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 @if (prefix) {\n <span class=\"prefix\">{{ prefix }}-</span>\n }\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 matButton=\"elevated\"\n type=\"submit\"\n [disabled]=\"form.invalid || disabled()\"\n >\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n</form>\n","export const TypePermission = ['read', 'write'] as const;\nexport type TypePermission = (typeof TypePermission)[number];\n\nexport enum Scope {\n public,\n protected,\n private\n}\n","import {\n Directive,\n OnDestroy,\n OnInit,\n inject,\n input,\n output\n} from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { ConfigService } from '@igo2/core/config';\nimport {\n ID_GROUP_PREFIX,\n LayerService,\n MapBrowserComponent,\n StyleListService,\n StyleService,\n isLayerGroupOptions,\n mergeLayersOptions,\n sortLayersByZindex\n} from '@igo2/geo';\nimport type { AnyLayer, AnyLayerOptions, IgoMap, LayerId } from '@igo2/geo';\nimport { ObjectUtils, uuid } from '@igo2/utils';\n\nimport { Subscription } from 'rxjs';\nimport { debounceTime, filter, switchMap } from 'rxjs/operators';\n\nimport {\n addImportedFeaturesStyledToMap,\n addImportedFeaturesToMap\n} from '../../context-import-export/shared/context-import.utils';\nimport { ShareMapService } from '../../share-map/shared/share-map.service';\nimport { DetailedContext } from './context.interface';\nimport { ContextService } from './context.service';\n\n@Directive({\n selector: '[igoLayerContext]'\n})\nexport class LayerContextDirective implements OnInit, OnDestroy {\n private component = inject(MapBrowserComponent);\n private contextService = inject(ContextService);\n private layerService = inject(LayerService);\n private configService = inject(ConfigService);\n private styleListService = inject(StyleListService);\n private styleService = inject(StyleService);\n private shareMapService = inject(ShareMapService);\n\n private context$$: Subscription;\n private queryParams: Params;\n\n private contextLayers: AnyLayer[] = [];\n\n readonly removeLayersOnContextChange = input<boolean>(true);\n\n readonly contextLayersLoaded = output<boolean>();\n\n get map(): IgoMap {\n return this.component.map();\n }\n\n ngOnInit() {\n this.context$$ = this.shareMapService.routeService.queryParams\n .pipe(\n switchMap((params) => {\n this.queryParams = params ?? {};\n return this.contextService.context$.pipe(\n filter((context) => context !== undefined)\n );\n })\n )\n .subscribe((context) => this.handleContextChange(context));\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 /**\n * Assign an id to each layer group if it doesn't have one.\n * This is needed to be able to detect layer groups in the context that doesn't have and id and be able to ignore them in the share\n */\n if (context.layers?.length) {\n addIdToGroups(context.layers);\n }\n\n const contextLayers = this.handleContextWithSharedUrl(\n ObjectUtils.copyDeep(context)\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(contextLayers, 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 this.contextLayersLoaded.emit(true);\n });\n if (this.configService.getConfig('importExport.allowToStoreLayer', false)) {\n this.layerService\n .createAsyncIdbLayers(context.uri)\n .pipe(debounceTime(500))\n .subscribe((layers) => this.handleAddLayers(layers));\n }\n }\n\n private 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 = layer.id;\n\n let visible = layer.visible;\n if (!params || !currentLayerid) {\n return visible;\n }\n const contextParams = this.shareMapService.getContext(params);\n\n if (contextParams === currentContext || !contextParams) {\n let visibleOnLayersParams = '';\n let visibleOffLayersParams = '';\n const visibleOnLayers =\n params[this.shareMapService.routeService.options.visibleOnLayersKey];\n\n const visibleOffLayers =\n params[this.shareMapService.routeService.options.visibleOffLayersKey];\n\n if (visibleOnLayers) {\n visibleOnLayersParams = visibleOnLayers;\n }\n if (visibleOffLayers) {\n visibleOffLayersParams = visibleOffLayers;\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 const visiblelayers: LayerId[] = visibleOnLayersParams.split(',');\n const invisiblelayers: LayerId[] = 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 private handleContextWithSharedUrl(\n context: DetailedContext\n ): AnyLayerOptions[] {\n if (!this.queryParams) {\n return context.layers;\n }\n\n const { layers, uri } = context;\n const contextValue = this.shareMapService.getContext(this.queryParams);\n\n if (!contextValue || contextValue === uri) {\n const layersOptions = this.shareMapService.parseLayers(this.queryParams);\n if (layersOptions.length) {\n return mergeLayersOptions([...layers], layersOptions);\n }\n }\n return layers;\n }\n}\n\n/** Recursive */\nfunction addIdToGroups(layerOptions: AnyLayerOptions[]): void {\n for (const options of layerOptions) {\n if (isLayerGroupOptions(options) && !options.id) {\n options.id = ID_GROUP_PREFIX + uuid();\n if (Array.isArray(options.children)) {\n addIdToGroups(options.children);\n }\n }\n }\n}\n","import { Directive, OnDestroy, OnInit, inject } from '@angular/core';\nimport { Params } from '@angular/router';\n\nimport { MediaService } from '@igo2/core/media';\nimport {\n MapBrowserComponent,\n MapControlsOptions,\n MapScaleLineOptions\n} from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { Subscription } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\nimport { ShareMapService } from '../../share-map/shared/share-map.service';\nimport { ContextMapView, DetailedContext } from './context.interface';\nimport { ContextService } from './context.service';\n\n@Directive({\n selector: '[igoMapContext]'\n})\nexport class MapContextDirective implements OnInit, OnDestroy {\n private contextService = inject(ContextService);\n private mediaService = inject(MediaService);\n private shareMapService = inject(ShareMapService);\n\n private component: MapBrowserComponent;\n private context$$: Subscription;\n\n get map(): IgoMap {\n return this.component.map();\n }\n\n private queryParams: Params;\n\n constructor() {\n const component = inject(MapBrowserComponent);\n\n this.component = component;\n }\n\n ngOnInit() {\n this.context$$ = this.shareMapService.routeService.queryParams\n .pipe(\n switchMap((params) => {\n this.queryParams = params ?? {};\n return this.contextService.context$.pipe(\n filter((context) => context !== undefined)\n );\n })\n )\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 const shouldOverrideView =\n !this.component.view() ||\n viewContext.keepCurrentView !== true ||\n context.map.view.projection !== this.map.projection;\n\n if (\n this.shareMapService.hasPositionParams(this.queryParams) &&\n shouldOverrideView\n ) {\n const positions = this.shareMapService.parsePosition(this.queryParams);\n this.component.setView({ ...viewContext, ...positions });\n } else if (shouldOverrideView) {\n this.component.setView(viewContext);\n }\n\n const map = this.component.map();\n if (map.geolocationController) {\n map.geolocationController.updateGeolocationOptions(viewContext);\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 {\n ChangeDetectionStrategy,\n Component,\n inject,\n output\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { ContextFormComponent } from '../context-form/context-form.component';\nimport { ContextService } from '../shared';\nimport { Context } from '../shared/context.interface';\n\n@Component({\n selector: 'igo-context-edit',\n imports: [ContextFormComponent, IgoLanguageModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './context-edit.component.html'\n})\nexport class ContextEditComponent {\n private contextService = inject(ContextService);\n private messageService = inject(MessageService);\n\n readonly context = toSignal(this.contextService.editedContext$);\n\n readonly submitSuccessed = output<Context>();\n\n onEdit(context: Context) {\n const id = this.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.context().title\n }\n );\n const currentContext = this.contextService.context$.value;\n if (currentContext && currentContext.id === id) {\n currentContext.title = context.title;\n currentContext.uri = context.uri;\n }\n this.contextService.setEditedContext(undefined);\n this.submitSuccessed.emit(context);\n });\n }\n}\n","@if (context()) {\n <igo-context-form\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context()\"\n (submitForm)=\"onEdit($event)\"\n />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n output,\n viewChild\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { AuthService } from '@igo2/auth';\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 MatButtonModule,\n StopPropagationDirective,\n MatTooltipModule,\n MatIconModule,\n MatMenuModule,\n IgoLanguageModule\n ],\n host: {\n '[class.igo-list-item-focused]': 'this.isMenuOpen'\n }\n})\nexport class ContextItemComponent {\n auth = inject(AuthService);\n private storageService = inject(StorageService);\n\n typePermission = TypePermission;\n color = 'primary';\n collapsed = true;\n\n readonly showFavorite = input(true);\n readonly context = input<DetailedContext>(undefined);\n readonly default = input<boolean>(undefined);\n readonly selected = input<boolean>(undefined);\n readonly isDesktop = input<boolean>(undefined);\n\n readonly edit = output<DetailedContext>();\n readonly delete = output<DetailedContext>();\n readonly save = output<DetailedContext>();\n readonly clone = output<DetailedContext>();\n readonly hide = output<DetailedContext>();\n readonly show = output<DetailedContext>();\n readonly favorite = output<DetailedContext>();\n readonly managePermissions = output<DetailedContext>();\n readonly manageTools = output<DetailedContext>();\n readonly share = output<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 get isMenuOpen(): boolean {\n return this.itemActionsMenuTrigger()?.menuOpen ?? false;\n }\n\n itemActionsMenuTrigger = viewChild(MatMenuTrigger);\n\n favoriteClick(context: DetailedContext) {\n this.favorite.emit(context);\n }\n}\n","<mat-list-item class=\"mat-list-item\" [class.mat-list-item-light]=\"hidden\">\n @if (auth.authenticated) {\n <button\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 @if (!context().iconImage) {\n <mat-icon>{{\n context().icon\n ? context().icon\n : context().scope === 'public'\n ? 'public'\n : 'star'\n }}</mat-icon>\n } @else {\n <img\n [src]=\"context().iconImage\"\n alt=\"Icône pour le favori de contexte\"\n />\n }\n </button>\n } @else if (showFavorite()) {\n <button\n matListItemAvatar\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 }\n\n <span matListItemTitle>{{ context().title }}</span>\n\n @if (auth.authenticated) {\n <div\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n [class.--not-desktop]=\"!isDesktop()\"\n [class.--selected]=\"selected()\"\n >\n @if (\n collapsed &&\n selected() &&\n (context().permission === 'write' || context().imported)\n ) {\n <button\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\n <button\n class=\"actions-button\"\n mat-icon-button\n [color]=\"color\"\n [matMenuTriggerFor]=\"itemActionsMenu\"\n #itemActionsMenuTrigger=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #itemActionsMenu=\"matMenu\">\n @if (!context().imported) {\n @if (canShare) {\n <button\n mat-menu-item\n [matTooltip]=\"\n 'igo.context.contextManager.managePermissions' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"managePermissions.emit(context())\"\n >\n <mat-icon>manage_accounts</mat-icon\n ><span>{{\n 'igo.context.contextManager.managePermissions' | translate\n }}</span>\n </button>\n }\n\n <button\n class=\"clone-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"clone.emit(context())\"\n >\n <mat-icon>content_copy</mat-icon>\n <span>{{ 'igo.context.contextManager.clone' | translate }}</span>\n </button>\n\n @if (context().permission === 'write') {\n <button\n class=\"edit-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(context())\"\n >\n <mat-icon>edit</mat-icon>\n <span>{{ 'igo.context.contextManager.edit' | translate }}</span>\n </button>\n }\n\n @if (!context().hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(context())\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'igo.context.contextManager.hide' | translate }}</span>\n </button>\n }\n\n @if (context().hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(context())\"\n >\n <mat-icon>visibility_off</mat-icon>\n <span>{{ 'igo.context.contextManager.show' | translate }}</span>\n </button>\n }\n\n <button\n mat-menu-item\n class=\"share-button\"\n [matTooltip]=\"'igo.context.contextManager.share' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"share.emit(context())\"\n >\n <mat-icon>share</mat-icon>\n <span>{{ 'igo.context.contextManager.share' | translate }}</span>\n </button>\n }\n\n @if (context().permission === 'write' || context().imported) {\n <button\n class=\"delete-button\"\n mat-menu-item\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 <span>{{ 'igo.context.contextManager.delete' | translate }}</span>\n </button>\n }\n </mat-menu>\n </div>\n }\n</mat-list-item>\n","import { Component, inject } 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 dialogRef = inject<MatDialogRef<BookmarkDialogComponent>>(MatDialogRef);\n\n public title: string;\n}\n","<h1 mat-dialog-title>\n {{ 'igo.context.bookmarkButton.dialog.title' | translate }}\n</h1>\n<div mat-dialog-content>\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 { Clipboard } from '@angular/cdk/clipboard';\nimport { AsyncPipe, KeyValue, KeyValuePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n inject,\n input,\n model,\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 { ConfirmDialogService } from '@igo2/common/confirm-dialog';\nimport {\n IgoIconComponent,\n SORT_ALPHA_OFF_ICON,\n SORT_ALPHA_ON_ICON\n} from '@igo2/common/icon';\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 { MessageService } from '@igo2/core/message';\nimport { StorageService } from '@igo2/core/storage';\nimport { type IgoMap, MapService, isLayerItemOptions } from '@igo2/geo';\n\nimport { BehaviorSubject, ReplaySubject, Subscription, timer } from 'rxjs';\nimport { debounceTime, switchMap, take, tap } from 'rxjs/operators';\nimport { debounce } from 'rxjs/operators';\n\nimport { BookmarkDialogComponent } from '../../context-map-button/bookmark-button/bookmark-dialog.component';\nimport { ShareMapService } from '../../share-map/shared/share-map.service';\nimport { ContextItemComponent } from '../context-item/context-item.component';\nimport { ContextUserPermission } from '../context-permissions/context-permission.interface';\nimport {\n Context,\n ContextDetailedChanges,\n ContextProfils,\n ContextServiceOptions,\n ContextsList,\n DetailedContext\n} from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\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 MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n ActionbarComponent,\n MatMenuModule,\n MatCheckboxModule,\n CollapsibleComponent,\n ContextItemComponent,\n ListItemDirective,\n AsyncPipe,\n KeyValuePipe,\n IgoLanguageModule,\n IgoIconComponent\n ]\n})\nexport class ContextListComponent implements OnInit, OnDestroy {\n configService = inject(ConfigService);\n auth = inject(AuthService);\n private contextService = inject(ContextService);\n private shareMapService = inject(ShareMapService);\n private clipboard = inject(Clipboard);\n private messageService = inject(MessageService);\n private mapService = inject(MapService);\n private confirmDialogService = inject(ConfirmDialogService);\n private dialog = inject(MatDialog);\n private languageService = inject(LanguageService);\n private storageService = inject(StorageService);\n\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 private previousMessageId: number;\n\n sortAlphaOnIcon = SORT_ALPHA_ON_ICON;\n sortAlphaOffIcon = SORT_ALPHA_OFF_ICON;\n\n readonly isDesktop = input<boolean>(undefined);\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 readonly selectedContext = model<DetailedContext>(undefined);\n\n readonly map = input<IgoMap>(undefined);\n\n @Input()\n get defaultContextId(): string | number {\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 | number) {\n this._defaultContextId = value;\n }\n private _defaultContextId: string | number;\n\n public collapsed: { contextScope }[] = [];\n\n readonly select = output<DetailedContext>();\n readonly unselect = output<DetailedContext>();\n readonly edit = output<DetailedContext>();\n readonly delete = output<DetailedContext>();\n readonly save = output<DetailedContext>();\n readonly clone = output<DetailedContext>();\n readonly create = output<{\n title: string;\n empty: boolean;\n }>();\n readonly hide = output<DetailedContext>();\n readonly show = output<DetailedContext>();\n readonly showHiddenContexts = output<boolean>();\n readonly favorite = output<DetailedContext>();\n readonly managePermissions = output<DetailedContext>();\n readonly manageTools = output<DetailedContext>();\n readonly filterPermissionsChanged = output<ContextUserPermission[]>();\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 private contexts$$: Subscription;\n private selectedContext$$: Subscription;\n private defaultContextId$$: Subscription;\n\n constructor() {\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 // Override input contexts\n this.contexts = { ours: [] };\n this.showHidden = this.storageService.get('contexts.showHidden') as boolean;\n\n this.contexts$$ = this.contextService.contexts$.subscribe(\n (contexts) => (this.contexts = contexts)\n );\n\n this.defaultContextId$$ = this.contextService.defaultContextId$.subscribe(\n (id) => {\n this.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) => {\n this.setSelected(context);\n });\n\n this.auth.authenticate$.subscribe((authenticate) => {\n if (authenticate) {\n this.contextService.getProfilByUser().subscribe((profils) => {\n this.users = profils;\n this.permissions = [];\n const profilsAcc = this.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.permissions.push(permission);\n }\n\n const permissions = ['none'];\n for (const p of this.permissions) {\n if (p.checked === true || p.indeterminate === true) {\n permissions.push(p.name);\n }\n }\n\n this.contextService.loadContexts(permissions, this.showHidden);\n });\n }\n });\n }\n\n ngOnDestroy() {\n this.change$$.unsubscribe();\n this.contexts$$.unsubscribe();\n this.selectedContext$$.unsubscribe();\n this.defaultContextId$$.unsubscribe();\n }\n\n setSelected(context: DetailedContext) {\n this.selectedContext.set(context);\n }\n\n // Comparator function to sort by context.title\n sortByKeyPriority = (\n a: KeyValue<string, DetailedContext[]>,\n b: KeyValue<string, DetailedContext[]>\n ): number => {\n const ORDER = ['ours', 'shared', 'public'];\n return ORDER.indexOf(a.key) - ORDER.indexOf(b.key);\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 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.onCreate({ 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.onFilterPermissionsChanged();\n }\n\n showContext(context: DetailedContext) {\n context.hidden = false;\n this.contextService.showContext(context.id).subscribe();\n\n this.show.emit(context);\n }\n\n onSelect(context: DetailedContext) {\n this.contextService.loadContext(context.uri);\n this.select.emit(context);\n }\n\n isContextSelected(context: DetailedContext): boolean {\n const selectedContext = this.selectedContext();\n if (!selectedContext) return false;\n\n return context?.id\n ? selectedContext.id === context.id\n : selectedContext.uri === context.uri;\n }\n\n onShareContext(context: DetailedContext) {\n const currentContext = this.contextService.context$.value;\n const { toolKey, sidenavKey, languageKey } =\n this.shareMapService.routeService.options;\n const { context: contextKey } = this.shareMapService.options;\n const baseOrigin = this.shareMapService.sanitizeBaseUrl(\n this.shareMapService.document.location.href\n );\n\n const url =\n context.uri === currentContext.uri\n ? this.shareMapService.generateUrl(\n this.map(),\n this.contextService.context$.value\n )\n : `${baseOrigin}${contextKey}=${context.uri}`;\n\n const params: string[] = [];\n\n const currentLanguage = this.shareMapService.language;\n if (currentLanguage && !url.includes(`${languageKey}=`))\n params.push(`${languageKey}=${currentLanguage}`);\n\n if (!url.includes(`${toolKey}=`)) params.push(`${toolKey}=${'mapTools'}`);\n if (!url.includes(`${sidenavKey}=`)) params.push(`${sidenavKey}=1`);\n\n const fullUrl = params.length ? `${url}&${params.join('&')}` : url;\n const successful = this.clipboard.copy(fullUrl);\n if (!successful) return;\n\n this.messageService.success(\n 'igo.context.shareMap.dialog.copyMsg',\n 'igo.context.shareMap.dialog.copyTitle'\n );\n }\n\n onEdit(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n this.edit.emit(context);\n }\n\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\n .update(context.id, changes)\n .pipe(\n tap((changes) => {\n this.handleContextChanges(changes);\n msgSuccess();\n }),\n switchMap(() => this.contextService.getDetails(context.id)),\n tap((fullContext) => {\n this.contextService.context$.value.layers = fullContext.layers;\n }),\n take(1)\n )\n .subscribe();\n\n this.save.emit(context);\n }\n\n private handleContextChanges(changes: ContextDetailedChanges): void {\n const map = this.mapService.getMap();\n changes.layers.created.forEach((layerCreated) => {\n const layer = isLayerItemOptions(layerCreated)\n ? map.layerController.getBySourceId(layerCreated.sourceOptions.id)\n : map.layerController.getByTitle(layerCreated.title);\n if (layer) {\n layer.id = layerCreated.id;\n }\n });\n }\n\n onFavorite(context: Context) {\n if (!context.id) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context.id = context.uri as any;\n }\n\n this.contextService.setDefault(context.id).subscribe((defaultId) => {\n if (this.previousMessageId) {\n this.messageService.remove(this.previousMessageId);\n }\n\n this.contextService.defaultContextId$.next(defaultId);\n if (defaultId != null && String(defaultId) === String(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 }\n\n this.favorite.emit(context);\n });\n }\n\n onManageTools(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n this.manageTools.emit(context);\n }\n\n onManagePermissions(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n this.managePermissions.emit(context);\n }\n\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 this.delete.emit(context);\n }\n });\n }\n\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 this.clone.emit(context);\n }\n\n onCreate(opts: { title: string; empty: boolean }) {\n const { title, empty } = opts;\n const context = this.contextService.getContextFromMap(this.map(), empty);\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 this.create.emit(opts);\n }\n\n onFilterPermissionsChanged() {\n const permissions = ['none'];\n for (const p of this.permissions) {\n if (p.checked === true || p.indeterminate === true) {\n permissions.push(p.name);\n }\n }\n\n this.contextService.loadContexts(permissions, this.showHidden);\n\n this.filterPermissionsChanged.emit(this.permissions);\n }\n\n onShowHiddenContexts() {\n this.showHidden = !this.showHidden;\n this.storageService.set('contexts.showHidden', this.showHidden);\n this.onFilterPermissionsChanged();\n this.showHiddenContexts.emit(this.showHidden);\n }\n\n onHideContext(context: DetailedContext) {\n this.contextService.hideContext(context.id).subscribe();\n\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(\n (c) => c.id !== context.id\n );\n contexts.public = this.contexts.public?.filter(\n (c) => c.id !== context.id\n );\n this.contexts = contexts;\n }\n this.hide.emit(context);\n }\n}\n","<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n @if (showFilter()) {\n <mat-form-field>\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 @if (term.length) {\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n\n <div class=\"actions-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n sortedAlpha\n ? ('igo.context.contextManager.sortDefault' | translate)\n : ('igo.context.contextManager.sortAlphabetically' | translate)\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <igo-icon\n color=\"primary\"\n [icon]=\"sortedAlpha ? sortAlphaOnIcon : sortAlphaOffIcon\"\n />\n </button>\n\n @if (auth.authenticated && contextConfigs) {\n <igo-actionbar\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\n <button\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\">filter_alt</mat-icon>\n </button>\n }\n <mat-menu #accountMenu=\"matMenu\">\n @for (user of users; track user.name) {\n @if (!user.childs) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n } @else {\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 <span>{{ user.title }}</span>\n </button>\n <mat-menu #subAccountMenu=\"matMenu\">\n @for (child of user.childs; track child.name) {\n <button mat-menu-item class=\"profil-menu\">\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 }\n </mat-menu>\n }\n }\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onShowHiddenContexts()\"\n />\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n @for (\n groupContexts of $any(contexts$ | async) | keyvalue: sortByKeyPriority;\n track groupContexts\n ) {\n @if ($any(groupContexts).value.length) {\n @if (auth.authenticated) {\n <igo-collapsible\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"\n collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\n \"\n >\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"\n selectedContext() && selectedContext().uri === context.uri\n \"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (manageTools)=\"onManageTools(context)\"\n (managePermissions)=\"onManagePermissions(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n (share)=\"onShareContext(context)\"\n />\n }\n </igo-collapsible>\n } @else {\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"isContextSelected(context)\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n />\n }\n }\n }\n }\n\n @if (isEmpty) {\n <div class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n }\n</igo-list>\n","import { Component, computed, input, output } 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 { User } from '@igo2/auth';\nimport { IgoLanguageModule } from '@igo2/core/language';\n\nimport {\n IAnyContextPermission,\n IContextPermissionUser\n} from '../context-permission.interface';\n\n@Component({\n selector: 'igo-context-permission-item',\n imports: [\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatTooltipModule,\n IgoLanguageModule\n ],\n templateUrl: './context-permission-item.component.html',\n styleUrl: './context-permission-item.component.scss'\n})\nexport class ContextPermissionItemComponent {\n permission = input.required<IAnyContextPermission>();\n canWrite = input.required<boolean>();\n user = input<User>();\n\n type = computed(() => {\n const permission = this.permission();\n return isContextPermissionUser(permission)\n ? this.isUserExtranet(permission)\n ? 'Extranet'\n : 'Intranet'\n : 'Profil';\n });\n icon = computed(() => {\n const permission = this.permission();\n return permission.profilType === 'user'\n ? this.isUserExtranet(permission)\n ? 'person'\n : 'person_shield'\n : 'badge';\n });\n canDelete = computed(() => {\n const permission = this.permission();\n return (\n this.canWrite() ||\n (isContextPermissionUser(permission) &&\n permission.user.externalId === this.user().id)\n );\n });\n\n delete = output<IAnyContextPermission>();\n\n isContextPermissionUser = isContextPermissionUser;\n\n isUserExtranet(permission: IAnyContextPermission): boolean {\n return (\n isContextPermissionUser(permission) &&\n permission.userSource.includes('extranet')\n );\n }\n\n onDelete(): void {\n this.delete.emit(this.permission());\n }\n}\n\nfunction isContextPermissionUser(\n permission: IAnyContextPermission\n): permission is IContextPermissionUser {\n return (permission as IContextPermissionUser).userId != null;\n}\n","@let permission = this.permission();\n\n<mat-list-item>\n <mat-icon matListItemIcon [matTooltip]=\"type()\">\n {{ icon() }}\n </mat-icon>\n\n <span matListItemTitle [matTooltip]=\"permission.title\">\n {{ permission.title }}\n </span>\n\n <span matListItemLine>{{ type() }}</span>\n <div matListItemMeta class=\"igo-actions-container\">\n @if (canDelete()) {\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\n matTooltipShowDelay=\"500\"\n color=\"warn\"\n (click)=\"onDelete()\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n</mat-list-item>\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { Observable, catchError } from 'rxjs';\n\nimport { IAnyContextPermission } from './context-permission.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextPermissionService {\n private http = inject(HttpClient);\n private config = inject(ConfigService);\n private languageService = inject(LanguageService);\n private messageService = inject(MessageService);\n private baseUrl: string;\n\n constructor() {\n const options = this.config.getConfig('context');\n this.baseUrl = options?.url ?? '';\n }\n\n getAll(id: number): Observable<IAnyContextPermission[]> {\n const url = this.baseUrl + '/contexts/' + id + '/permissions';\n return this.http.get<IAnyContextPermission[]>(url);\n }\n\n add(\n contextId: number,\n permission: IAnyContextPermission\n ): Observable<IAnyContextPermission> {\n const url = `${this.baseUrl}/contexts/${contextId}/permissions`;\n\n return this.http.post<IAnyContextPermission>(url, permission).pipe(\n catchError((res) => {\n this.handleError(res, true);\n throw res;\n })\n );\n }\n\n delete(contextId: number, permissionId: number): Observable<void> {\n const url = `${this.baseUrl}/contexts/${contextId}/permissions/${permissionId}`;\n return this.http.delete<void>(url);\n }\n\n private handleError(error: HttpErrorResponse, permissionError?: boolean) {\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","import { HttpClient } from '@angular/common/http';\nimport {\n Component,\n DestroyRef,\n OnInit,\n computed,\n inject,\n model,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { ConfigService } from '@igo2/core/config';\nimport { IgoLanguageModule } from '@igo2/core/language';\nimport { MessageService } from '@igo2/core/message';\n\nimport { Subscription, map, of, switchMap, tap } from 'rxjs';\n\nimport { ContextService } from '../shared';\nimport { Context } from '../shared/context.interface';\nimport { ContextPermissionItemComponent } from './context-permission-item/context-permission-item.component';\nimport {\n ContextUserOrProfils,\n IAnyContextPermission\n} from './context-permission.interface';\nimport { ContextPermissionService } from './context-permission.service';\n\n@Component({\n selector: 'igo-context-permissions',\n templateUrl: './context-permissions.component.html',\n styleUrls: ['./context-permissions.component.scss'],\n imports: [\n CollapsibleComponent,\n FormsModule,\n IgoLanguageModule,\n ListComponent,\n MatAutocompleteModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatOptionModule,\n MatRadioModule,\n MatTooltipModule,\n ReactiveFormsModule,\n ContextPermissionItemComponent\n ]\n})\nexport class ContextPermissionsComponent implements OnInit {\n private formBuilder = inject(UntypedFormBuilder);\n private http = inject(HttpClient);\n authService = inject(AuthService);\n private config = inject(ConfigService);\n private contextService = inject(ContextService);\n private contextPermissionService = inject(ContextPermissionService);\n private messageService = inject(MessageService);\n private destroyRef = inject(DestroyRef); // Modern way to handle cleanup\n public form: UntypedFormGroup;\n\n readonly context = model<Context>();\n readonly permissions = model<IAnyContextPermission[]>();\n readonly permissionsRead = computed(() =>\n this.permissions().filter(\n (permission) => permission.typePermission === 'read'\n )\n );\n readonly permissionsWrite = computed(() =>\n this.permissions().filter(\n (permission) => permission.typePermission === 'write'\n )\n );\n\n profils = signal<ContextUserOrProfils[]>([]);\n\n canWrite = computed(() => this.context().permission === 'write');\n\n private baseUrlProfils;\n\n public formControl = new UntypedFormControl();\n formValueChanges$$: Subscription;\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.getProfils(value).subscribe((profils) =>\n this.profils.set(profils)\n );\n } else {\n this.profils.set([]);\n }\n }\n );\n\n this.handleEditedContextChange();\n }\n\n displayFn(profil?: ContextUserOrProfils): string | undefined {\n return profil ? profil.title : undefined;\n }\n\n handleFormSubmit(value: IAnyContextPermission) {\n const contextId = this.context().id;\n this.contextPermissionService\n .add(contextId, value)\n .subscribe((permission) => {\n this.permissions.update((permissions) => {\n permissions.push(permission);\n return [...permissions];\n });\n this.messageService.success(\n 'igo.context.permission.dialog.addMsg',\n 'igo.context.permission.dialog.addTitle',\n undefined,\n { value: permission.title }\n );\n });\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n id: null,\n userExternalId: null,\n profilId: null,\n typePermission: ['read']\n });\n }\n\n onProfilSelected(value: ContextUserOrProfils) {\n this.form.setValue({\n id: value.id,\n userExternalId: value.type === 'user' ? value.id : null,\n profilId: value.type === 'profil' ? value.id : null,\n typePermission: this.form.value.typePermission\n });\n }\n\n onRemovePermission(permission: IAnyContextPermission) {\n const contextId = this.context().id;\n this.contextPermissionService\n .delete(contextId, permission.id)\n .subscribe(() => {\n this.permissions.update((permissions) => {\n const index = permissions.findIndex((p) => {\n return p.id === permission.id;\n });\n permissions.splice(index, 1);\n return [...permissions];\n });\n\n this.messageService.success(\n 'igo.context.permission.dialog.deleteMsg',\n 'igo.context.permission.dialog.deleteTitle',\n undefined,\n { value: permission.title }\n );\n });\n }\n\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 private handleEditedContextChange() {\n this.contextService.editedContext$\n .pipe(\n // 1. Cleanly handle the context update\n tap((context) => this.context.set(context)),\n\n // 2. Switch to the permissions call, or return an empty array if context is null\n switchMap((context) => {\n if (!context) return of([]);\n return this.contextPermissionService.getAll(context.id);\n }),\n\n // 3. Automatically unsubscribe when component is destroyed\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((permissions) => {\n this.permissions.set(permissions);\n });\n }\n\n private getProfils(value: string) {\n return this.http\n .get<ContextUserOrProfils[]>(this.baseUrlProfils + 'q=' + value)\n .pipe(\n map((profils) => {\n const search = normalizeStr(value);\n return profils.filter((p) =>\n normalizeStr(p.name + p.title).includes(search)\n );\n })\n );\n }\n}\n\nconst normalizeStr = (str: string): string =>\n str\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n","@let user = authService.user;\n\n@if (context()) {\n <div>\n @if (!canWrite()) {\n <div class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n } @else {\n <div class=\"scopeForm\">\n <mat-radio-group\n [(ngModel)]=\"context().scope\"\n (change)=\"onScopeChanged(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 @if (authService.isAdmin) {\n <mat-radio-button value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n }\n </mat-radio-group>\n </div>\n }\n @if (context().scope !== 'private') {\n @if (canWrite()) {\n <form [formGroup]=\"form\" (ngSubmit)=\"handleFormSubmit(form.value)\">\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 @for (profil of this.profils(); track profil) {\n <mat-option [value]=\"profil\">\n {{ profil.title }}<br />\n <small>{{ profil.name }}</small>\n </mat-option>\n }\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\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 <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n </form>\n }\n @if (permissions()) {\n <igo-list>\n @if (permissionsRead().length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'read' | translate\"\n >\n @for (permission of permissionsRead(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n @if (permissionsWrite().length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'write' | translate\"\n >\n @for (permission of permissionsWrite(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n </igo-list>\n }\n }\n </div>\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\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 { ContextListComponent } from './context-list/context-list.component';\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 ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextPermissionsComponent,\n LayerContextDirective,\n MapContextDirective\n ],\n exports: [\n ContextListComponent,\n ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextPermissionsComponent,\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, inject } 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 private dialog = inject(MatDialog);\n private contextService = inject(ContextService);\n private messageService = inject(MessageService);\n\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 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, inject } 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 dialogRef = inject<MatDialogRef<PoiDialogComponent>>(MatDialogRef);\n\n public title: string;\n}\n","<h1 mat-dialog-title>\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 matButton (click)=\"dialogRef.close(false)\">\n {{ 'igo.common.confirmDialog.cancelBtn' | translate }}\n </button>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } 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 http = inject(HttpClient);\n private config = inject(ConfigService);\n\n private baseUrl: string;\n\n constructor() {\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 { Component, Input, OnDestroy, OnInit, inject } 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';\nimport { MatTooltipModule } from '@angular/material/tooltip';\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 IgoLanguageModule,\n MatButtonModule,\n MatDividerModule,\n MatIconModule,\n MatOptionModule,\n MatSelectModule,\n MatTooltipModule,\n StopPropagationDirective\n ],\n providers: [PoiService]\n})\nexport class PoiButtonComponent implements OnInit, OnDestroy {\n private dialog = inject(MatDialog);\n private authService = inject(AuthService);\n private poiService = inject(PoiService);\n private messageService = inject(MessageService);\n private languageService = inject(LanguageService);\n private confirmDialogService = inject(ConfirmDialogService);\n selected: Poi;\n\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 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 = new olPoint(view.getCenter()).transform(proj, 'EPSG:4326');\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 panelClass=\"poi-select-panel\"\n class=\"poi-select\"\n [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n floatPlaceholder=\"never\"\n [(value)]=\"selected\"\n>\n <mat-select-trigger>\n {{ selected?.title || '' }}\n </mat-select-trigger>\n <mat-option (click)=\"createPoi()\" class=\"poi-option\">\n <div\n class=\"poi-option-row\"\n [matTooltip]=\"'igo.context.poiButton.create' | translate\"\n matTooltipPosition=\"above\"\n >\n <div class=\"poi-option-text\">\n {{ 'igo.context.poiButton.create' | translate }}\n </div>\n <div class=\"poi-option-button\">\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 </div>\n </div>\n </mat-option>\n <mat-divider />\n @for (poi of pois; track poi) {\n <mat-option class=\"poi-option\" [value]=\"poi\" (click)=\"zoomOnPoi(poi.id)\">\n <div class=\"poi-option-row\">\n <div\n class=\"poi-option-text\"\n [matTooltip]=\"poi.title\"\n matTooltipPosition=\"above\"\n >\n {{ poi.title }}\n </div>\n <div class=\"poi-option-button\">\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 </div>\n </div>\n </mat-option>\n }\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 })\n ),\n state(\n 'expand',\n style({\n overflow: 'hidden'\n })\n ),\n transition('collapse => expand', animate('200ms')),\n transition('expand => collapse', animate('200ms'))\n ]);\n}\n","import { Component, inject } 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 dialogRef = inject<MatDialogRef<UserDialogComponent>>(MatDialogRef);\n private auth = inject(AuthService);\n private storageService = inject(StorageService);\n\n public user;\n public exp;\n\n constructor() {\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>\n {{ 'igo.context.userButton.infoTitle' | translate }}\n</h1>\n<div mat-dialog-content>\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 matButton=\"elevated\" color=\"primary\" (click)=\"dialogRef.close(false)\">\n OK\n </button>\n</div>\n","import { Component, Input, inject } 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 PoiButtonComponent,\n MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n IgoLanguageModule\n ]\n})\nexport class UserButtonComponent {\n private dialog = inject(MatDialog);\n private config = inject(ConfigService);\n auth = inject(AuthService);\n\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 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","@if (visible) {\n <div class=\"igo-user-button-container\">\n <div\n class=\"igo-user-button-more-container\"\n [@userButtonState]=\"expand ? 'expand' : 'collapse'\"\n >\n @if (hasApi) {\n <igo-poi-button [color]=\"color\" [map]=\"map\" />\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 <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 <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}\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 { Clipboard } from '@angular/cdk/clipboard';\nimport {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n inject,\n input\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';\n\nimport { Subscription, combineLatest } from 'rxjs';\n\nimport { ContextService } from '../../context-manager/shared/context.service';\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 IgoLanguageModule,\n CustomHtmlComponent\n ]\n})\nexport class ShareMapUrlComponent implements OnInit, OnDestroy {\n private clipboard = inject(Clipboard);\n private messageService = inject(MessageService);\n private shareMapService = inject(ShareMapService);\n private contextService = inject(ContextService);\n private cdRef = inject(ChangeDetectorRef);\n\n private mapState$$: Subscription;\n\n readonly map = input<IgoMap>(undefined);\n\n public url: string;\n\n ngOnInit(): void {\n this.generateUrl();\n this.mapState$$ = combineLatest([\n this.map().viewController.state$,\n this.map().status$\n ]).subscribe(() => {\n this.generateUrl();\n this.cdRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.mapState$$?.unsubscribe();\n }\n\n generateUrl(): void {\n this.url = this.shareMapService.generateUrl(\n this.map(),\n this.contextService.context$.value\n );\n }\n\n copyTextToClipboard(textArea: HTMLTextAreaElement) {\n const successful = this.clipboard.copy(textArea.value);\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\">\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-share-map-url-content\">\n <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" (click)=\"copyTextToClipboard(textArea)\">\n <mat-icon>content_copy</mat-icon>\n {{ 'igo.context.shareMap.copy' | translate }}\n </button>\n </div>\n\n <div>\n <br />\n <section>\n @if (('igo.context.shareMap.htmlClarifications' | translate) === '') {\n <div>\n @if (('igo.context.shareMap.included' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.included' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.context' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.context' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.center' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.center' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.zoom' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.zoom' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.addedLayers' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.addedLayers' | translate }}\n </li>\n }\n @if (\n ('igo.context.shareMap.visibleInvisible' | translate) !== ''\n ) {\n <li>\n {{ 'igo.context.shareMap.visibleInvisible' | translate }}\n </li>\n }\n </ul>\n @if (('igo.context.shareMap.excluded' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.excluded' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.order' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.order' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.opacity' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.opacity' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterOgc' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterOgc' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterTime' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterTime' | translate }}\n </li>\n }\n </ul>\n </div>\n }\n @if (('igo.context.shareMap.htmlClarifications' | translate) !== '') {\n <igo-custom-html\n class=\"shareCustomPadding\"\n [html]=\"'igo.context.shareMap.htmlClarifications' | translate\"\n />\n }\n </section>\n </div>\n </div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport type { IgoMap } from '@igo2/geo';\n\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: [MatTabsModule, ShareMapUrlComponent]\n})\nexport class ShareMapComponent {\n readonly map = input<IgoMap>(undefined);\n}\n","<igo-share-map-url [map]=\"map()\" />\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\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] 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],\n exports: [ShareMapComponent, ShareMapUrlComponent]\n})\nexport class IgoShareMapModule {\n static forRoot(): ModuleWithProviders<IgoShareMapModule> {\n return {\n ngModule: IgoShareMapModule\n };\n }\n}\n","import { Component, Input, inject } 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 MatButtonModule,\n MatTooltipModule,\n MatIconModule,\n FeatureDetailsComponent,\n IgoLanguageModule\n ]\n})\nexport class SidenavComponent {\n titleService = inject(Title);\n\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() {\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(this.map.viewController, olFeature, FeatureMotion.Zoom);\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 @if (tool) {\n <button\n mat-icon-button\n panelLeftButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n }\n\n @if (tool) {\n <button\n mat-icon-button\n panelRightButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n }\n </igo-panel>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature && media !== 'mobile') {\n <igo-panel [title]=\"featureTitle\">\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 @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon>zoom_in</mat-icon>\n </button>\n }\n @if (['collapsed', 'initial'].indexOf(topPanel.state) >= 0) {\n <igo-feature-details [feature]=\"feature\" />\n }\n </igo-panel>\n }\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 { ContextEditComponent } from './context-edit';\nimport { ContextFormComponent } from './context-form';\nimport { ContextItemComponent } from './context-item';\nimport { ContextListComponent } from './context-list';\nimport { ContextPermissionsComponent } from './context-permissions';\nimport { LayerContextDirective, MapContextDirective } from './shared';\n\nexport const CONTEXT_MANAGER_DIRECTIVES = [\n ContextListComponent,\n ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextPermissionsComponent,\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":["i2","i3","i4","i5","i6","i7","i8","i9","i1","catchError","tap","switchMap","map","olFormatGeoJSON"],"mappings":"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"}
|