@regionerne/gis-komponent 0.0.3 β†’ 0.0.4

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.
@@ -164,6 +164,7 @@ class LayerSelectorComponent {
164
164
  _mapFilteredLayerGroupsKeyName = 'mapFilteredLayerGroups';
165
165
  _layerIdsToDisplayInMapKeyName = 'layerIdsToDisplayInMap';
166
166
  _layerHelper = inject(LayerHelperService);
167
+ _bypassLayersCache = true; // TO DO - remove this when we fully implement the caching
167
168
  ngOnChanges() {
168
169
  if (this.profile) {
169
170
  this.allLayerGroups = this.profile.layerGroups
@@ -172,7 +173,7 @@ class LayerSelectorComponent {
172
173
  sortOrder: idx }))
173
174
  .filter(g => g.layers.length > 0);
174
175
  const cachedFilteredLayergroups = localStorage.getItem(this._mapFilteredLayerGroupsKeyName);
175
- if (cachedFilteredLayergroups) {
176
+ if (!this._bypassLayersCache && cachedFilteredLayergroups) {
176
177
  const parsedFilteredLayerGroups = JSON.parse(cachedFilteredLayergroups);
177
178
  if (parsedFilteredLayerGroups.length != this.allLayerGroups.length) {
178
179
  //If layer groups changed in the backend, then use those
@@ -1 +1 @@
1
- {"version":3,"file":"regionerne-gis-komponent.mjs","sources":["../../../projects/gis-komponent/src/lib/config/config.ts","../../../projects/gis-komponent/src/lib/services/profile.service.ts","../../../projects/gis-komponent/src/lib/controls/LogoControl/logoControl.ts","../../../projects/gis-komponent/src/lib/controls/CopyrightControl/copyRightControl.ts","../../../projects/gis-komponent/src/lib/services/layerHelper.service.ts","../../../projects/gis-komponent/src/lib/components/layer-selector/layer-selector.component.ts","../../../projects/gis-komponent/src/lib/components/layer-selector/layer-selector.component.html","../../../projects/gis-komponent/src/lib/services/komponentSettingsHelper.service.ts","../../../projects/gis-komponent/src/lib/components/gis-komponent/gis-komponent.component.ts","../../../projects/gis-komponent/src/lib/components/gis-komponent/gis-komponent.component.html","../../../projects/gis-komponent/src/lib/config/library-provider.ts","../../../projects/gis-komponent/src/public-api.ts","../../../projects/gis-komponent/src/regionerne-gis-komponent.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface GISKomponentConfig {\n apiBaseUrl: string;\n}\n\nexport const GISKOMPONENT_CONFIG = new InjectionToken<GISKomponentConfig>('GisKomponentConfig');\n","import { inject } from '@angular/core';\nimport { GISKOMPONENT_CONFIG } from '../config/config';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { IProfileDetailed } from '../models/IProfile';\n\nexport class ProfileService {\n\n private config = inject(GISKOMPONENT_CONFIG);\n private _baseUrl = this.config.apiBaseUrl;\n private _http = inject(HttpClient);\n\n getByIdentifier(identifier: string): Observable<IProfileDetailed> {\n const url = `${this._baseUrl}/api/profile/identifier/${identifier}`;\n return this._http.get<IProfileDetailed>(url);\n }\n}","// logo-control.ts\nimport { Control } from 'ol/control';\n\nexport class LogoControl extends Control {\n constructor(url: string) {\n const element = document.createElement('div');\n element.className = 'ol-logo ol-unselectable ol-control';\n\n if (url) {\n const img = document.createElement('img');\n img.src = url;\n img.alt = 'Logo';\n element.appendChild(img);\n } else {\n element.style.display = 'none';\n }\n\n super({ element });\n }\n}\n","import { Control } from 'ol/control';\n\nexport class CopyrightControl extends Control {\n constructor(text: string) {\n const element = document.createElement('div');\n element.className = 'ol-copyright ol-unselectable ol-control';\n element.innerText = text;\n\n super({ element });\n\n if (!text) {\n element.style.display = 'none';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport BaseLayer from 'ol/layer/Base';\nimport Map from 'ol/Map';\nimport OLLayerGroup from 'ol/layer/Group';\nimport { LayerSelectorGroup } from '../models/profile';\nimport { ILayer } from '../models/ILayer';\n\nInjectable({\n providedIn: 'root'\n})\nexport class LayerHelperService {\n\n private readonly _layerDbIdKey: string = 'layerDbId';\n private readonly _layerGroupDbIdKey: string = 'layerGroupDbId';\n private readonly _mapFilteredLayerGroupsKeyName: string = 'mapFilteredLayerGroups';\n private readonly _layerIdsToDisplayInMapKeyName: string = 'layerIdsToDisplayInMap';\n\n setDbId(layer: BaseLayer, id: number): void {\n layer.set(this._layerDbIdKey, id);\n }\n\n getDbId(layer: BaseLayer): number {\n const dbId = layer.get(this._layerDbIdKey) ?? -1;\n return +dbId;\n }\n\n setLayerGroupDbId(layer: BaseLayer, id: number): void {\n layer.set(this._layerGroupDbIdKey, id);\n }\n\n getLayerGroupDbId(layer: BaseLayer): number {\n const dbId = layer.get(this._layerGroupDbIdKey) ?? -1;\n return +dbId;\n }\n\n applyCachedLayersToDisplayInMap(map: Map): void {\n const layerIdsCachedToDisplay = localStorage.getItem(this._layerIdsToDisplayInMapKeyName)?.split(',');\n if (layerIdsCachedToDisplay) {\n map.getLayers().getArray().forEach(layergroup => {\n if (layergroup instanceof OLLayerGroup) {\n layergroup.getLayers().getArray().forEach(l => {\n if (!layerIdsCachedToDisplay.some(id => l.get(this._layerDbIdKey) == id)) {\n const current = l.getVisible();\n if (current) {\n l.setVisible(!current);\n }\n }\n })\n }\n })\n } \n }\n \n\n toggleLayer(map: Map, layer: ILayer, filteredLayerGroups: LayerSelectorGroup[]): void {\n map.getLayers().getArray().forEach(layergroup => {\n if (layergroup instanceof OLLayerGroup) {\n layergroup.getLayers().getArray().forEach(l => {\n if (l.get(this._layerDbIdKey) === layer.id) {\n const current = l.getVisible();\n l.setVisible(!current);\n layer.visible = !current;\n //console.log('set '+ layer.id +' to visible '+layer.displayInMap);\n localStorage.setItem(this._mapFilteredLayerGroupsKeyName, JSON.stringify(filteredLayerGroups));\n localStorage.setItem(this._layerIdsToDisplayInMapKeyName, filteredLayerGroups\n .flatMap(lg => lg.layers)\n .filter(lg => lg.visible)\n .map(lg => lg.id).join(','));\n }\n })}}\n );\n }\n}","import { Component, ElementRef, inject, Input, OnChanges, ViewChild } from '@angular/core';\nimport { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { LayerSelectorGroup, Profile } from '../../models/profile';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatInputModule } from '@angular/material/input';\nimport Map from 'ol/Map';\nimport { LayerHelperService } from '../../services/layerHelper.service';\nimport ol_control_Control from 'ol/control/Control';\nimport { ILayer } from '../../models/ILayer';\n\n@Component({\n selector: 'lib-layer-selector',\n templateUrl: './layer-selector.component.html',\n styleUrls: ['./layer-selector.component.scss'],\n imports: [ MatFormFieldModule, CommonModule, MatIconModule, FormsModule, DragDropModule, \n MatExpansionModule, MatInputModule ]\n})\nexport class LayerSelectorComponent implements OnChanges {\n @ViewChild('layerSelectorIcon', { static: false }) set contentIcon(content: ElementRef) {\n this._layerSelectorIcon = content;\n }\n @ViewChild('layerSelectorBody', { static: false }) set contentBody(content: ElementRef) {\n this._layerSelectorBody = content;\n }\n @Input() map!: Map;\n @Input() profile!: Profile;\n searchText = '';\n allLayerGroups: LayerSelectorGroup[] = [];\n filteredLayerGroups: LayerSelectorGroup[] = [];\n showSelector: boolean = false;\n private _layerSelectorIcon!: ElementRef;\n private _layerSelectorIconControl!: ol_control_Control;\n private _layerSelectorBody!: ElementRef;\n private _layerSelectorBodyControl!: ol_control_Control;\n private readonly _mapFilteredLayerGroupsKeyName: string = 'mapFilteredLayerGroups';\n private readonly _layerIdsToDisplayInMapKeyName: string = 'layerIdsToDisplayInMap';\n private readonly _layerHelper: LayerHelperService = inject(LayerHelperService);\n\n ngOnChanges(): void {\n if (this.profile) {\n this.allLayerGroups = this.profile.layerGroups\n .map((lg, idx) => ({... lg, layers: lg.layers\n .filter((l: { activeInSelector: boolean; }) => l.activeInSelector), \n sortOrder: idx}))\n .filter(g => g.layers.length > 0); \n const cachedFilteredLayergroups = localStorage.getItem(this._mapFilteredLayerGroupsKeyName);\n\n if (cachedFilteredLayergroups) {\n const parsedFilteredLayerGroups = JSON.parse(cachedFilteredLayergroups);\n if (parsedFilteredLayerGroups.length != this.allLayerGroups.length) {\n //If layer groups changed in the backend, then use those\n this.filteredLayerGroups = this.setfilteredGroups(); \n } else {\n this.filteredLayerGroups = parsedFilteredLayerGroups;\n this._setVisibleLayersFromCache(parsedFilteredLayerGroups);\n }\n } else {\n this.filteredLayerGroups = this.setfilteredGroups(); \n }\n localStorage.setItem(this._layerIdsToDisplayInMapKeyName, this.filteredLayerGroups\n .flatMap(lg => lg.layers)\n .filter(lg => lg.visible)\n .map(lg => lg.id).join(','));\n this._initializeMapIconControl();\n }\n }\n\n toggleLayer(layer: ILayer): void {\n this._layerHelper.toggleLayer(this.map, layer, this.filteredLayerGroups);\n }\n\n toggleLayerSelector(): void {\n this.showSelector = !this.showSelector;\n if (this.showSelector) {\n this._addMapBodyControl();\n } else {\n this._removeMapBodyControl();\n }\n }\n\n setfilteredGroups(): LayerSelectorGroup[] {\n const text = this.searchText.toLowerCase();\n return this.allLayerGroups\n .map((g, idx) => {\n if (!text) {\n return { ...g, expanded: false, sortOrder: idx }; // collapsed by default\n }\n const filteredItems = g.layers.filter(l => l.name.toLowerCase().includes(text));\n return {\n ...g,\n expanded: filteredItems.length > 0,\n sortOrder: idx,\n layers: filteredItems\n };\n })\n .filter(g => g.layers.length > 0)\n .sort((a, b) => a.sortOrder - b.sortOrder);\n }\n\n dropGroup(event: CdkDragDrop<LayerSelectorGroup[]>) {\n moveItemInArray(this.filteredLayerGroups, event.previousIndex, event.currentIndex);\n this.updateGroupSortOrders();\n localStorage.setItem(this._mapFilteredLayerGroupsKeyName, JSON.stringify(this.filteredLayerGroups));\n }\n\n dropLayer(event: CdkDragDrop<ILayer[]>, group: LayerSelectorGroup) {\n if (event.previousContainer === event.container) {\n moveItemInArray(group.layers, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n }\n this.updateLayerSortOrders(group);\n localStorage.setItem(this._mapFilteredLayerGroupsKeyName, JSON.stringify(this.filteredLayerGroups));\n }\n\n clearSearchText(): void {\n this.searchText = '';\n this.filteredLayerGroups = this.setfilteredGroups();\n }\n\n updateGroupSortOrders() {\n this.filteredLayerGroups.forEach((g, idx) => (g.sortOrder = idx));\n }\n\n updateLayerSortOrders(group: LayerSelectorGroup) {\n group.layers.forEach((layer, idx) => (layer.sortOrder = idx));\n }\n\n private _initializeMapIconControl(): void {\n this.map.removeControl(this._layerSelectorIconControl);\n const element = this._layerSelectorIcon.nativeElement;\n this._layerSelectorIconControl = new ol_control_Control({ element: element });\n this.map.addControl(this._layerSelectorIconControl);\n }\n\n private _addMapBodyControl(): void {\n this.map.removeControl(this._layerSelectorBodyControl);\n const element = this._layerSelectorBody.nativeElement;\n this._layerSelectorBodyControl = new ol_control_Control({ element: element });\n this.map.addControl(this._layerSelectorBodyControl);\n }\n\n private _removeMapBodyControl(): void {\n this.map.removeControl(this._layerSelectorBodyControl);\n }\n\n private _setVisibleLayersFromCache(cachedFilteredLayergroups: LayerSelectorGroup[]): void {\n this.allLayerGroups.forEach(group => group.layers.forEach(layer => {\n const cachedLayer = cachedFilteredLayergroups.find(gr => gr.id === group.id)?.layers?.find(l => l.id === layer.id);\n layer.visible = cachedLayer?.visible ?? layer.visible;\n }))\n }\n\n}\n","<div #layerSelectorIcon class=\"ol-unselectable ol-control layer-selector-icon\">\n <mat-icon (click)=\"toggleLayerSelector()\">layers</mat-icon>\n</div>\n<div #layerSelectorBody [class.display-none]=\"!showSelector\" class=\"ol-unselectable ol-control layer-selector-body\">\n <div class=\"search-section\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <mat-label>Filtrer</mat-label>\n <input \n matInput \n type=\"text\" \n [(ngModel)]=\"searchText\" \n (ngModelChange)=\"filteredLayerGroups=setfilteredGroups()\"\n placeholder=\"Skriv for at filtrere...\"\n />\n </mat-form-field>\n <mat-icon (click)=\"clearSearchText()\">undo</mat-icon>\n </div>\n \n <div\n cdkDropList\n [cdkDropListData]=\"filteredLayerGroups\"\n (cdkDropListDropped)=\"dropGroup($event)\"\n class=\"item-list\">\n @for (group of filteredLayerGroups; track group.id; let gIndex = $index) {\n <div class=\"group\" cdkDrag cdkDragPreviewDisabled>\n <mat-expansion-panel [(expanded)]=\"group.expanded\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n @if (group.expanded) {\n <mat-icon>arrow_upward</mat-icon>\n }\n @if (!group.expanded) {\n <mat-icon>arrow_downward</mat-icon> \n }\n {{ group.name }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <!-- This is only shown during drag -->\n <!-- <div *cdkDragPreview class=\"drag-preview\">\n {{ group.name }}\n </div> -->\n\n <!-- Placeholder to avoid jump -->\n <!-- <div *cdkDragPlaceholder class=\"drag-placeholder\"></div> -->\n\n <div\n cdkDropList\n [cdkDropListData]=\"group.layers\"\n (cdkDropListDropped)=\"dropLayer($event, group)\"\n class=\"item-list\">\n @for (layer of group.layers; track layer.id; let iIndex = $index) {\n <div class=\"item\" cdkDrag cdkDragPreviewDisabled>\n <mat-icon class=\"drag-indicator\">drag_indicator</mat-icon>\n <span>{{ layer.name }}</span>\n @if (layer.visible) {\n <mat-icon (click)=\"toggleLayer(layer)\" class=\"power-on\">power</mat-icon>(tΓ¦nd)\n }\n @if (!layer.visible) {\n <mat-icon (click)=\"toggleLayer(layer)\" class=\"power-off\">power</mat-icon>(sluk)\n }\n </div>\n }\n </div>\n </mat-expansion-panel>\n </div>\n }\n </div>\n</div>\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { GisKomponentSettings } from '../models/GisKomponentSettings';\nimport { GeoServer } from '../models/geoserver';\nimport { Observable } from 'rxjs';\nimport WKT from 'ol/format/WKT'\n// @ts-ignore\nimport * as SLDReader from '@nieuwlandgeo/sldreader';\n\nimport Map from 'ol/Map';\nimport ol_layer_Vector from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { extend } from 'ol/extent';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KomponentSettingsHelperService {\n\n private readonly _httpClient = inject(HttpClient);\n\n loadThem(settings: GisKomponentSettings, workpace: string, geoserver: GeoServer, map: Map): void {\n this.getStyleLoader(settings.style, workpace, geoserver).subscribe({\n next: loadedStyle => {\n const parser = new WKT();\n\n const features = settings.geometries.map(g => parser.readFeature(g.geometry, { featureProjection: 'EPSG:25832', dataProjection: 'EPSG:25832'}));\n console.log(\"πŸš€ ~ KomponentSettingsHelperService ~ loadThem ~ SLDReader:\", SLDReader)\n debugger;\n const sldObject = SLDReader.Reader(loadedStyle);\n const sldLayer = SLDReader.getLayer(sldObject);\n const sldStyles = SLDReader.getStyle(sldLayer);\n const sldFeatureStyle = sldStyles.featuretypestyles[0];\n const olStyle = SLDReader.createOlStyle(sldFeatureStyle.rules[0], 'Polygon');\n const layer = new ol_layer_Vector({\n source: new VectorSource(),\n style: olStyle\n });\n layer.getSource()?.addFeatures(features.filter(f => !!f));\n map.addLayer(layer);\n const extent = features.filter(f => !!f).reduce((e, f) => extend(e, f.getGeometry()!.getExtent()!), features[0]?.getGeometry()!.getExtent()!);\n map.getView().fit(extent);\n console.log(\"πŸš€ ~ KomponentSettingsHelperService ~ loadThem ~ style:\", sldObject)\n }\n });\n }\n\n private getStyleLoader(styleName: string, workspace: string, geoserver: GeoServer): Observable<string> {\n const headerstring = `${geoserver.userName}:${geoserver.password}`;\n const encoded = btoa(headerstring); \n const headers = new HttpHeaders().set('Authorization', `Basic ${encoded}`);\n const url = `${geoserver.url}/rest/workspaces/${workspace}/styles/${styleName}.sld`;\n return this._httpClient.get(url, { headers, responseType: 'text' });\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, input, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport Map from 'ol/Map';\nimport View from 'ol/View';\nimport TileLayer from 'ol/layer/Tile';\nimport ol_layer_Vector from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport ImageWMS from 'ol/source/ImageWMS';\nimport WMTSCapabilities from 'ol/format/WMTSCapabilities';\nimport Draw from 'ol/interaction/Draw';\nimport Translate from 'ol/interaction/Translate';\nimport ImageLayer from 'ol/layer/Image';\nimport { ProfileService } from '../../services/profile.service';\nimport LayerGroup from 'ol/layer/Group';\nimport { ILayer } from \"../../models/ILayer\";\n import { MatSelectModule } from '@angular/material/select';\nimport { MatListModule } from '@angular/material/list';\nimport { HttpClient } from '@angular/common/http';\nimport ol_control_mouse from 'ol/control/MousePosition';\nimport ol_control_scale from 'ol/control/ScaleLine';\nimport BaseLayer from 'ol/layer/Base';\nimport { register } from 'ol/proj/proj4';\nimport proj4 from 'proj4';\nimport { LogoControl } from '../../controls/LogoControl/logoControl';\nimport { CopyrightControl } from '../../controls/CopyrightControl/copyRightControl';\nimport { TileWMS } from 'ol/source';\nimport { combineLatest, map, Observable, of } from 'rxjs';\nimport WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';\nimport { LayerHelperService } from '../../services/layerHelper.service';\nimport { IProfile, IProfileDetailed } from '../../models/IProfile';\nimport { Profile } from '../../models/profile';\nimport { LayerSelectorComponent } from \"../layer-selector/layer-selector.component\";\nimport { GisKomponentSettings } from '../../models/GisKomponentSettings';\nimport { KomponentSettingsHelperService } from '../../services/komponentSettingsHelper.service';\nimport 'ol/ol.css';\n\n@Component({\n selector: 'gis-komponent',\n templateUrl: './gis-komponent.component.html',\n styleUrls: ['./gis-komponent.component.scss'],\n imports: [CommonModule, MatIconModule, MatListModule, MatSelectModule, LayerSelectorComponent],\n providers: [LayerHelperService]\n})\nexport class GisKomponentComponent implements OnInit {\n\n private readonly _profileService = inject(ProfileService);\n private readonly _http = inject(HttpClient);\n private readonly _layerHelper = inject(LayerHelperService);\n @Input() identifier!: string;\n @Input() settings: GisKomponentSettings | undefined;\n map!: Map;\n toolbarCollapsed = false;\n layerPanelCollapsed = false;\n activeObjectsCollapsed = false;\n conflictsCollapsed = false;\n showConflicts = false;\n showObjects = false;\n profiles: IProfile[] = [];\n selectedProfile!: IProfileDetailed;\n private readonly _komponentSettingsHelper = inject(KomponentSettingsHelperService);\n\n layers: { name: string, visible: boolean, activeInSelector: boolean, legendUrl: string }[] = [];\n\n // activeObjects = [\n // { name: 'Objekt A', size: '22 m2' },\n // { name: 'Objekt B', size: '108,4 m2' }\n // ];\n\n private source = new VectorSource({ wrapX: false});\n private layer = new ol_layer_Vector({ source: this.source});\n private draw = new Draw({ source: this.source, type: 'Polygon'});\n private move = new Translate({ layers: [this.layer] });\n private mousePositionCtrl = new ol_control_mouse({ projection: 'EPSG:25832' }); \n private scaleCtrl = new ol_control_scale({\n units: 'metric',\n bar: true,\n steps: 4,\n text: true,\n minWidth: 120\n });\n \n profileSelected(profileIdentifier: string): void {\n this._profileService.getByIdentifier(profileIdentifier).subscribe({\n next: profile => { \n this.selectedProfile = profile; \n const view: View = new View({\n center: [profile.centerX, profile.centerY],\n extent: [profile.minX, profile.minX, profile.maxX, profile.maxY],\n zoom: profile.zoom ?? 8,\n maxZoom: profile.maxZoom ?? undefined,\n minZoom: profile.minZoom ?? undefined,\n projection: 'EPSG:25832'\n });\n\n\n this._getCapabilitiesObject(profile).subscribe({\n next: capabilityObject => { \n const layers: BaseLayer[] = [...profile.layerGroups.map((lg: { layers: any[]; id: number; }) => \n new LayerGroup({\n layers: lg.layers\n .filter(layer => layer.activeInSelector)\n .map(l => this._mapLayer(l, capabilityObject, 'EPSG:25832', lg.id)) // for now, we default to EPSG:25832. \n })\n )\n ];\n this.map.setLayers(layers);\n if (this.settings && profile.styleRepositoryWorkspace && profile.styleRepositoryGeoserver) {\n this._komponentSettingsHelper.loadThem(this.settings, profile.styleRepositoryWorkspace, profile.styleRepositoryGeoserver, this.map);\n }\n this._layerHelper.applyCachedLayersToDisplayInMap(this.map);\n }\n });\n \n this._handleShowMouseCoordinates(profile.showCoordinates);\n this._handleShowScale(profile.showScale);\n this._setLogo(profile.logoUrl);\n this._setCopyRight(profile.copyrightMessage);\n this.map.setView(view);\n }}); \n }\n\n private _getCapabilitiesObject(profile: Profile): Observable<Record<string, any>> {\n // Find all WMTS-layers and get their base url's for retrieving the capabilities. Make sure every url is only called once by removing duplicates\n const getCapabilitiesUrls = [... new Set(profile.layerGroups.flatMap(lg => lg.layers).filter(lg => lg.layerType === 'WMTS').map(lg => lg.baseUrl))];\n const parser = new WMTSCapabilities();\n const capabilities$ = getCapabilitiesUrls.map(url => this._http.get(`${url}/gwc/service/wmts?request=GetCapabilities`, {responseType: 'text'}).pipe(map(result => \n ({\n url,\n sourceObject: parser.read(result)\n }))));\n // To make it easier to find the appropriate object, I convert the array to an object of a key/value type.\n return capabilities$.length == 0 ? of({} as Record<string, any>) :\n combineLatest(capabilities$).pipe(map(allCapabilities => \n allCapabilities.reduce((obj, item) => {\n obj[item.url] = item.sourceObject;\n return obj;\n }, {} as Record<string, any>)\n ));\n }\n\n private _mapLayer(layer: ILayer, wmtsOptions: Record<string, any>, projection: string, layerGroupDbId: number): BaseLayer {\n const params: { [x: string]: any } = {\n layers: layer.layers,\n }\n if (layer.token) {\n params[layer.authKeyName] = layer.token;\n }\n layer.wmsParameters.forEach(param => {\n params[param.key] = param.value\n });\n\n let result: BaseLayer;\n switch (layer.layerType) {\n case 'WMS':\n result = new ImageLayer({ \n source: new ImageWMS({ \n url: layer.baseUrl,\n params\n }), \n }); \n break;\n case 'TILEWMS':\n result = new TileLayer({\n source: new TileWMS({\n url: layer.baseUrl,\n params, \n })\n });\n break;\n case 'WMTS':\n // Create WMST options from the capabilities loaded from the getCapabilities called.\n const options = optionsFromCapabilities(wmtsOptions[layer.baseUrl], {\n layer: layer.layers,\n matrixSet: layer.projection || projection\n });\n result = new TileLayer({\n source: new WMTS(options!)\n });\n break;\n }\n \n if (layer.minZoom) {\n result.setMinZoom(layer.minZoom); \n }\n if (layer.maxZoom) {\n result.setMaxZoom(layer.maxZoom);\n } \n if (layer.maxX && layer.minX && layer.maxY && layer.minY) {\n result.setExtent([layer.minX, layer.minX, layer.maxX, layer.maxY]);\n }\n this._layerHelper.setDbId(result, layer.id);\n this._layerHelper.setLayerGroupDbId(result, layerGroupDbId);\n return result;\n }\n\n private _setLogo(url: string): void {\n const logoCtrl = new LogoControl(url);\n this.map.addControl(logoCtrl);\n }\n\n private _setCopyRight(message: string): void {\n const copyrightCtrl = new CopyrightControl(message);\n this.map.addControl(copyrightCtrl);\n }\n\n private _handleShowMouseCoordinates(showCoords: boolean): void {\n if (showCoords) {\n this.map.addControl(this.mousePositionCtrl);\n } else {\n this.map.removeControl(this.mousePositionCtrl);\n }\n }\n\n private _handleShowScale(showScale: boolean): void {\n if (showScale) {\n this.map.addControl(this.scaleCtrl);\n } else {\n this.map.removeControl(this.scaleCtrl);\n }\n }\n\n ngOnInit(): void {\n this.profileSelected(this.identifier);\n proj4.defs(\"EPSG:25832\", \"+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs +type=crs\");\n register(proj4);\n // const projection = getProjection(\"EPSG:25832\");\n this.map = new Map({\n target: 'map',\n });\n this.draw.setActive(false);\n this.move.setActive(false);\n this.map.addInteraction(this.draw);\n this.map.addInteraction(this.move);\n }\n\n toggleDraw(): void {\n this.move.setActive(false);\n this.draw.setActive(!this.draw.getActive());\n }\n\n toggleShowConflicts(): void {\n this.showConflicts = !this.showConflicts;\n }\n\n toggleShowObjects(): void {\n this.showObjects = !this.showObjects;\n }\n\n toggleMove(): void {\n this.draw.setActive(false);\n this.move.setActive(true);\n }\n toggleToolbar(): void {\n this.toolbarCollapsed = !this.toolbarCollapsed;\n }\n\n toggleLayerPanel(): void {\n this.layerPanelCollapsed = !this.layerPanelCollapsed;\n }\n\n toggleActiveObjectsCollapsed(): void { \n this.activeObjectsCollapsed = !this.activeObjectsCollapsed;\n }\n}\n"," <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\"></lib-layer-selector>\n\n<div class=\"map-container\">\n\n <!-- Objektvisning -->\n <!-- @if (showObjects) {\n <div class=\"object-panel\" [class.collapsed]=\"activeObjectsCollapsed\">\n <div class=\"header\" (click)=\"toggleActiveObjectsCollapsed()\">\n <span>Aktive objekter ({{activeObjects.length}})</span>\n <mat-icon>{{ activeObjectsCollapsed ? 'expand_more' : 'expand_less' }}</mat-icon>\n </div>\n @if (!activeObjectsCollapsed){\n <ul>\n <li *ngFor=\"let obj of activeObjects\">{{ obj.name }} ({{obj.size}})</li>\n </ul>\n }\n </div>\n } -->\n\n <!-- Konflikter -->\n @if (showConflicts) {\n\n <div class=\"conflict-panel\" [class.collapsed]=\"conflictsCollapsed\">\n <div class=\"header\">\n <span>Konflikter (3)</span>\n <mat-icon>{{ activeObjectsCollapsed ? 'expand_more' : 'expand_less' }}</mat-icon> -->\n </div>\n <mat-list>\n <mat-list-item>\n <span matListItemTitle>Lag #1</span>\n <span matListItemLine><mat-icon>highlight</mat-icon> Objekt #1</span>\n </mat-list-item>\n <mat-list-item>\n <span matListItemTitle>Lag #2 (svarer ikke)</span>\n </mat-list-item>\n <mat-list-item>\n <span matListItemTitle>Lag #3</span>\n <span matListItemLine><mat-icon>highlight</mat-icon> Objekt #1</span>\n <span matListItemLine><mat-icon>highlight</mat-icon> Objekt #2</span>\n </mat-list-item>\n </mat-list>\n </div>\n \n } \n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n","import { Provider } from '@angular/core';\nimport { GISKOMPONENT_CONFIG, GISKomponentConfig } from './config';\n\nexport function provideLibrary(config: GISKomponentConfig): Provider[] {\n return [ \n { provide: GISKOMPONENT_CONFIG, useValue: config }\n ];\n}","/*\n * Public API Surface of gis-komponent\n */\n\nexport * from './lib/components/gis-komponent/gis-komponent.component';\nexport * from './lib/config/library-provider';\nexport * from './lib/services/profile.service';\nexport * from './lib/services/layerHelper.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LayerGroup","i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,mBAAmB,GAAG,IAAI,cAAc,CAAqB,oBAAoB,CAAC;;MCAlF,cAAc,CAAA;AAEf,IAAA,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACpC,IAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAElC,IAAA,eAAe,CAAC,UAAkB,EAAA;QAC9B,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,wBAAA,EAA2B,UAAU,CAAA,CAAE;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,GAAG,CAAC;;AAEnD;;AChBD;AAGM,MAAO,WAAY,SAAQ,OAAO,CAAA;AACtC,IAAA,WAAA,CAAY,GAAW,EAAA;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,QAAA,OAAO,CAAC,SAAS,GAAG,oCAAoC;QAExD,IAAI,GAAG,EAAE;YACP,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,YAAA,GAAG,CAAC,GAAG,GAAG,GAAG;AACb,YAAA,GAAG,CAAC,GAAG,GAAG,MAAM;AAChB,YAAA,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;;aACnB;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;;AAGhC,QAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;;AAErB;;ACjBK,MAAO,gBAAiB,SAAQ,OAAO,CAAA;AAC3C,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,QAAA,OAAO,CAAC,SAAS,GAAG,yCAAyC;AAC7D,QAAA,OAAO,CAAC,SAAS,GAAG,IAAI;AAExB,QAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;QAElB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;;;AAGnC;;ACPD,UAAU,CAAC;AACP,IAAA,UAAU,EAAE;AACf,CAAA,CAAC;MACW,kBAAkB,CAAA;IAEV,aAAa,GAAW,WAAW;IACnC,kBAAkB,GAAW,gBAAgB;IAC7C,8BAA8B,GAAW,wBAAwB;IACjE,8BAA8B,GAAW,wBAAwB;IAElF,OAAO,CAAC,KAAgB,EAAE,EAAU,EAAA;QAChC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;;AAGrC,IAAA,OAAO,CAAC,KAAgB,EAAA;AACpB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI;;IAGhB,iBAAiB,CAAC,KAAgB,EAAE,EAAU,EAAA;QAC1C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;;AAG1C,IAAA,iBAAiB,CAAC,KAAgB,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAK,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI;;AAGhB,IAAA,+BAA+B,CAAC,GAAQ,EAAA;AACpC,QAAA,MAAM,uBAAuB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;QACrG,IAAI,uBAAuB,EAAE;YACxB,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AAC7C,gBAAA,IAAI,UAAU,YAAY,YAAY,EAAE;oBACpC,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;wBAC1C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE;AACtE,4BAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE;4BAC9B,IAAI,OAAO,EAAE;AACT,gCAAA,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;;;AAGlC,qBAAC,CAAC;;AAEV,aAAC,CAAC;;;AAKV,IAAA,WAAW,CAAC,GAAQ,EAAE,KAAa,EAAE,mBAAyC,EAAA;QAC1E,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AAC5C,YAAA,IAAI,UAAU,YAAY,YAAY,EAAE;gBACxC,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;AAC1C,oBAAA,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE;AAC5C,wBAAA,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE;AAC9B,wBAAA,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;AACtB,wBAAA,KAAK,CAAC,OAAO,GAAG,CAAC,OAAO;;AAExB,wBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAC9F,wBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE;6BACrD,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM;6BACvB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO;AACvB,6BAAA,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAEpC,iBAAC,CAAC;;AAAC,SAAC,CACP;;AAER;;MCnDY,sBAAsB,CAAA;IACjC,IAAuD,WAAW,CAAC,OAAmB,EAAA;AACpF,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;;IAEnC,IAAuD,WAAW,CAAC,OAAmB,EAAA;AACpF,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;;AAE1B,IAAA,GAAG;AACH,IAAA,OAAO;IAChB,UAAU,GAAG,EAAE;IACf,cAAc,GAAyB,EAAE;IACzC,mBAAmB,GAAyB,EAAE;IAC9C,YAAY,GAAY,KAAK;AACrB,IAAA,kBAAkB;AAClB,IAAA,yBAAyB;AACzB,IAAA,kBAAkB;AAClB,IAAA,yBAAyB;IAChB,8BAA8B,GAAW,wBAAwB;IACjE,8BAA8B,GAAW,wBAAwB;AACjE,IAAA,YAAY,GAAuB,MAAM,CAAC,kBAAkB,CAAC;IAE9E,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,iBAAA,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,EAAC,GAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;qBACpC,MAAM,CAAC,CAAC,CAAiC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAClE,gBAAA,SAAS,EAAE,GAAG,EAAC,CAAC;AACjB,iBAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,MAAM,yBAAyB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC;YAE3F,IAAI,yBAAyB,EAAE;gBAC7B,MAAM,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC;gBACvE,IAAI,yBAAyB,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;;AAElE,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE;;qBAC9C;AACL,oBAAA,IAAI,CAAC,mBAAmB,GAAG,yBAAyB;AACpD,oBAAA,IAAI,CAAC,0BAA0B,CAAC,yBAAyB,CAAC;;;iBAEvD;AACL,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE;;YAErD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC;iBAC5D,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM;iBACvB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO;AACvB,iBAAA,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,yBAAyB,EAAE;;;AAIpC,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC;;IAG1E,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;AACtC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,kBAAkB,EAAE;;aACpB;YACL,IAAI,CAAC,qBAAqB,EAAE;;;IAIhC,iBAAiB,GAAA;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAC1C,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;YACd,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;;YAEnD,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/E,OAAO;AACL,gBAAA,GAAG,CAAC;AACJ,gBAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;AAClC,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,MAAM,EAAE;aACT;AACH,SAAC;AACA,aAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC/B,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;;AAG9C,IAAA,SAAS,CAAC,KAAwC,EAAA;AAChD,QAAA,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;QAClF,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;;IAGrG,SAAS,CAAC,KAA4B,EAAE,KAAyB,EAAA;QAC/D,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC/C,YAAA,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;;aACjE;YACL,iBAAiB,CACf,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAC5B,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB;;AAEH,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACjC,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;;IAGrG,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE;;IAGrD,qBAAqB,GAAA;QACnB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;;AAGnE,IAAA,qBAAqB,CAAC,KAAyB,EAAA;QAC7C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;;IAGvD,yBAAyB,GAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACtD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;AACrD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;;IAG7C,kBAAkB,GAAA;QACxB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;AACtD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;AACrD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;;IAG7C,qBAAqB,GAAA;QAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;;AAGhD,IAAA,0BAA0B,CAAC,yBAA+C,EAAA;AAChF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACjE,YAAA,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;YAClH,KAAK,CAAC,OAAO,GAAG,WAAW,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO;SACtD,CAAC,CAAC;;wGA1IM,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,ECrBnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+jFAoEA,EDlDa,MAAA,EAAA,CAAA,y0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,0SAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACrF,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,ydAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAEzB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,oBAAoB,EAAA,OAAA,EAGrB,CAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc;wBACrF,kBAAkB,EAAE,cAAc,CAAE,EAAA,QAAA,EAAA,+jFAAA,EAAA,MAAA,EAAA,CAAA,y0KAAA,CAAA,EAAA;8BAGiB,WAAW,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAGM,WAAW,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAGxC,GAAG,EAAA,CAAA;sBAAX;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;MEZU,8BAA8B,CAAA;AAEtB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjD,IAAA,QAAQ,CAAC,QAA8B,EAAE,QAAgB,EAAE,SAAoB,EAAE,GAAQ,EAAA;AACrF,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC;YAC/D,IAAI,EAAE,WAAW,IAAG;AAChB,gBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAExB,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAC,CAAC,CAAC;AAC/I,gBAAA,OAAO,CAAC,GAAG,CAAC,6DAA6D,EAAE,SAAS,CAAC;AACrF,gBAAA;gBACA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC9C,MAAM,eAAe,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtD,gBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;AAC5E,gBAAA,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;oBAC9B,MAAM,EAAE,IAAI,YAAY,EAAE;AAC1B,oBAAA,KAAK,EAAE;AACV,iBAAA,CAAC;AACF,gBAAA,KAAK,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAG,CAAC,SAAS,EAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAG,CAAC,SAAS,EAAG,CAAC;gBAC7I,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACzB,gBAAA,OAAO,CAAC,GAAG,CAAC,yDAAyD,EAAE,SAAS,CAAC;;AAExF,SAAA,CAAC;;AAGE,IAAA,cAAc,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAoB,EAAA;QAC7E,MAAM,YAAY,GAAG,CAAA,EAAG,SAAS,CAAC,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAC,QAAQ,CAAA,CAAE;AAClE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,MAAA,EAAS,OAAO,CAAA,CAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAC,GAAG,CAAA,iBAAA,EAAoB,SAAS,CAAA,QAAA,EAAW,SAAS,CAAA,IAAA,CAAM;AACnF,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;;wGAnC9D,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF3B,MAAM,EAAA,CAAA;;4FAET,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MC4BY,qBAAqB,CAAA;AAEf,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AACxC,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACjD,IAAA,UAAU;AACV,IAAA,QAAQ;AACjB,IAAA,GAAG;IACH,gBAAgB,GAAG,KAAK;IACxB,mBAAmB,GAAG,KAAK;IAC3B,sBAAsB,GAAG,KAAK;IAC9B,kBAAkB,GAAG,KAAK;IAC1B,aAAa,GAAG,KAAK;IACrB,WAAW,GAAG,KAAK;IACnB,QAAQ,GAAe,EAAE;AACzB,IAAA,eAAe;AACE,IAAA,wBAAwB,GAAG,MAAM,CAAC,8BAA8B,CAAC;IAElF,MAAM,GAAuF,EAAE;;;;;IAOvF,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;AAC1C,IAAA,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;AACnD,IAAA,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC;AACxD,IAAA,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9C,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IACtE,SAAS,GAAG,IAAI,gBAAgB,CAAC;AACvC,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AAEF,IAAA,eAAe,CAAC,iBAAyB,EAAA;QACrC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,EAAE,OAAO,IAAG;AACd,gBAAA,IAAI,CAAC,eAAe,GAAG,OAAO;AAC9B,gBAAA,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC;oBAC1B,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;AAC1C,oBAAA,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AAChE,oBAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;AACvB,oBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;AACrC,oBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;AACrC,oBAAA,UAAU,EAAE;AACb,iBAAA,CAAC;AAGF,gBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;oBAC7C,IAAI,EAAE,gBAAgB,IAAG;AACvB,wBAAA,MAAM,MAAM,GAAgB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAkC,KACzF,IAAIA,YAAU,CAAC;gCACb,MAAM,EAAE,EAAE,CAAC;qCACV,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB;qCACtC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AACpE,6BAAA,CAAC;yBAEL;AACD,wBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1B,wBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,wBAAwB,IAAI,OAAO,CAAC,wBAAwB,EAAE;4BACzF,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,CAAC;;wBAEnI,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE9D,iBAAA,CAAC;AAEF,gBAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,eAAe,CAAC;AACzD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AAC9B,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC5C,gBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;;AACxB,SAAA,CAAC;;AAGC,IAAA,sBAAsB,CAAC,OAAgB,EAAA;;QAEzC,MAAM,mBAAmB,GAAG,CAAC,GAAI,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACnJ,QAAA,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE;AACrC,QAAA,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,CAAA,yCAAA,CAA2C,EAAE,EAAC,YAAY,EAAE,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAC3J;YACC,GAAG;AACH,YAAA,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;SACjC,CAAC,CAAC,CAAC,CAAC;;AAEP,QAAA,OAAO,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,EAAyB,CAAC;YAC9D,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,IACnD,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;gBACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY;AACjC,gBAAA,OAAO,GAAG;AACZ,aAAC,EAAE,EAAyB,CAAC,CAC9B,CAAC;;AAGF,IAAA,SAAS,CAAC,KAAa,EAAE,WAAgC,EAAE,UAAkB,EAAE,cAAsB,EAAA;AAC3G,QAAA,MAAM,MAAM,GAAyB;YACnC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB;AACD,QAAA,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK;;AAEzC,QAAA,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAG;YAClC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK;AACjC,SAAC,CAAC;AAEF,QAAA,IAAI,MAAiB;AACrB,QAAA,QAAQ,KAAK,CAAC,SAAS;AACrB,YAAA,KAAK,KAAK;gBACR,MAAM,GAAG,IAAI,UAAU,CAAC;oBACxB,MAAM,EAAE,IAAI,QAAQ,CAAC;wBACnB,GAAG,EAAE,KAAK,CAAC,OAAO;wBAClB;qBACC,CAAC;AACH,iBAAA,CAAC;gBACF;AACF,YAAA,KAAK,SAAS;gBACZ,MAAM,GAAG,IAAI,SAAS,CAAC;oBACrB,MAAM,EAAE,IAAI,OAAO,CAAC;wBAClB,GAAG,EAAE,KAAK,CAAC,OAAO;wBAClB,MAAM;qBACP;AACF,iBAAA,CAAC;gBACF;AACF,YAAA,KAAK,MAAM;;gBAET,MAAM,OAAO,GAAG,uBAAuB,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;oBAClE,KAAK,EAAE,KAAK,CAAC,MAAM;AACnB,oBAAA,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI;AAChC,iBAAA,CAAC;gBACF,MAAM,GAAG,IAAI,SAAS,CAAC;AACrB,oBAAA,MAAM,EAAE,IAAI,IAAI,CAAC,OAAQ;AAC1B,iBAAA,CAAC;gBACF;;AAGJ,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;;AAElC,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;;AAElC,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YACxD,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;;QAEpE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC;AAC3D,QAAA,OAAO,MAAM;;AAGP,IAAA,QAAQ,CAAC,GAAW,EAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAGvB,IAAA,aAAa,CAAC,OAAe,EAAA;AACnC,QAAA,MAAM,aAAa,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;;AAG5B,IAAA,2BAA2B,CAAC,UAAmB,EAAA;QACrD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;;aACtC;YACL,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;AAI1C,IAAA,gBAAgB,CAAC,SAAkB,EAAA;QACzC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;;aAC9B;YACL,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;;;IAI1C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,QAAA,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,6DAA6D,CAAC;QACvF,QAAQ,CAAC,KAAK,CAAC;;AAEf,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;AACjB,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGpC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;IAG7C,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa;;IAG1C,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW;;IAGtC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;IAE3B,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;;IAGhD,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB;;IAGtD,4BAA4B,GAAA;AAC1B,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB;;wGA1NjD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAFrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,CAAC,kBAAkB,CAAC,0BC1CjC,wsDAgDA,EAAA,MAAA,EAAA,CAAA,u0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPa,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,+BAAE,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGnF,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGf,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,sBAAsB,CAAC,EACpF,SAAA,EAAA,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,wsDAAA,EAAA,MAAA,EAAA,CAAA,u0DAAA,CAAA,EAAA;8BAOtB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;AE/CG,SAAU,cAAc,CAAC,MAA0B,EAAA;IACrD,OAAO;AACH,QAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM;KACnD;AACL;;ACPA;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"regionerne-gis-komponent.mjs","sources":["../../../projects/gis-komponent/src/lib/config/config.ts","../../../projects/gis-komponent/src/lib/services/profile.service.ts","../../../projects/gis-komponent/src/lib/controls/LogoControl/logoControl.ts","../../../projects/gis-komponent/src/lib/controls/CopyrightControl/copyRightControl.ts","../../../projects/gis-komponent/src/lib/services/layerHelper.service.ts","../../../projects/gis-komponent/src/lib/components/layer-selector/layer-selector.component.ts","../../../projects/gis-komponent/src/lib/components/layer-selector/layer-selector.component.html","../../../projects/gis-komponent/src/lib/services/komponentSettingsHelper.service.ts","../../../projects/gis-komponent/src/lib/components/gis-komponent/gis-komponent.component.ts","../../../projects/gis-komponent/src/lib/components/gis-komponent/gis-komponent.component.html","../../../projects/gis-komponent/src/lib/config/library-provider.ts","../../../projects/gis-komponent/src/public-api.ts","../../../projects/gis-komponent/src/regionerne-gis-komponent.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface GISKomponentConfig {\n apiBaseUrl: string;\n}\n\nexport const GISKOMPONENT_CONFIG = new InjectionToken<GISKomponentConfig>('GisKomponentConfig');\n","import { inject } from '@angular/core';\nimport { GISKOMPONENT_CONFIG } from '../config/config';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { IProfileDetailed } from '../models/IProfile';\n\nexport class ProfileService {\n\n private config = inject(GISKOMPONENT_CONFIG);\n private _baseUrl = this.config.apiBaseUrl;\n private _http = inject(HttpClient);\n\n getByIdentifier(identifier: string): Observable<IProfileDetailed> {\n const url = `${this._baseUrl}/api/profile/identifier/${identifier}`;\n return this._http.get<IProfileDetailed>(url);\n }\n}","// logo-control.ts\nimport { Control } from 'ol/control';\n\nexport class LogoControl extends Control {\n constructor(url: string) {\n const element = document.createElement('div');\n element.className = 'ol-logo ol-unselectable ol-control';\n\n if (url) {\n const img = document.createElement('img');\n img.src = url;\n img.alt = 'Logo';\n element.appendChild(img);\n } else {\n element.style.display = 'none';\n }\n\n super({ element });\n }\n}\n","import { Control } from 'ol/control';\n\nexport class CopyrightControl extends Control {\n constructor(text: string) {\n const element = document.createElement('div');\n element.className = 'ol-copyright ol-unselectable ol-control';\n element.innerText = text;\n\n super({ element });\n\n if (!text) {\n element.style.display = 'none';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport BaseLayer from 'ol/layer/Base';\nimport Map from 'ol/Map';\nimport OLLayerGroup from 'ol/layer/Group';\nimport { LayerSelectorGroup } from '../models/profile';\nimport { ILayer } from '../models/ILayer';\n\nInjectable({\n providedIn: 'root'\n})\nexport class LayerHelperService {\n\n private readonly _layerDbIdKey: string = 'layerDbId';\n private readonly _layerGroupDbIdKey: string = 'layerGroupDbId';\n private readonly _mapFilteredLayerGroupsKeyName: string = 'mapFilteredLayerGroups';\n private readonly _layerIdsToDisplayInMapKeyName: string = 'layerIdsToDisplayInMap';\n\n setDbId(layer: BaseLayer, id: number): void {\n layer.set(this._layerDbIdKey, id);\n }\n\n getDbId(layer: BaseLayer): number {\n const dbId = layer.get(this._layerDbIdKey) ?? -1;\n return +dbId;\n }\n\n setLayerGroupDbId(layer: BaseLayer, id: number): void {\n layer.set(this._layerGroupDbIdKey, id);\n }\n\n getLayerGroupDbId(layer: BaseLayer): number {\n const dbId = layer.get(this._layerGroupDbIdKey) ?? -1;\n return +dbId;\n }\n\n applyCachedLayersToDisplayInMap(map: Map): void {\n const layerIdsCachedToDisplay = localStorage.getItem(this._layerIdsToDisplayInMapKeyName)?.split(',');\n if (layerIdsCachedToDisplay) {\n map.getLayers().getArray().forEach(layergroup => {\n if (layergroup instanceof OLLayerGroup) {\n layergroup.getLayers().getArray().forEach(l => {\n if (!layerIdsCachedToDisplay.some(id => l.get(this._layerDbIdKey) == id)) {\n const current = l.getVisible();\n if (current) {\n l.setVisible(!current);\n }\n }\n })\n }\n })\n } \n }\n \n\n toggleLayer(map: Map, layer: ILayer, filteredLayerGroups: LayerSelectorGroup[]): void {\n map.getLayers().getArray().forEach(layergroup => {\n if (layergroup instanceof OLLayerGroup) {\n layergroup.getLayers().getArray().forEach(l => {\n if (l.get(this._layerDbIdKey) === layer.id) {\n const current = l.getVisible();\n l.setVisible(!current);\n layer.visible = !current;\n //console.log('set '+ layer.id +' to visible '+layer.displayInMap);\n localStorage.setItem(this._mapFilteredLayerGroupsKeyName, JSON.stringify(filteredLayerGroups));\n localStorage.setItem(this._layerIdsToDisplayInMapKeyName, filteredLayerGroups\n .flatMap(lg => lg.layers)\n .filter(lg => lg.visible)\n .map(lg => lg.id).join(','));\n }\n })}}\n );\n }\n}","import { Component, ElementRef, inject, Input, OnChanges, ViewChild } from '@angular/core';\nimport { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { LayerSelectorGroup, Profile } from '../../models/profile';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatInputModule } from '@angular/material/input';\nimport Map from 'ol/Map';\nimport { LayerHelperService } from '../../services/layerHelper.service';\nimport ol_control_Control from 'ol/control/Control';\nimport { ILayer } from '../../models/ILayer';\n\n@Component({\n selector: 'lib-layer-selector',\n templateUrl: './layer-selector.component.html',\n styleUrls: ['./layer-selector.component.scss'],\n imports: [ MatFormFieldModule, CommonModule, MatIconModule, FormsModule, DragDropModule, \n MatExpansionModule, MatInputModule ]\n})\nexport class LayerSelectorComponent implements OnChanges {\n @ViewChild('layerSelectorIcon', { static: false }) set contentIcon(content: ElementRef) {\n this._layerSelectorIcon = content;\n }\n @ViewChild('layerSelectorBody', { static: false }) set contentBody(content: ElementRef) {\n this._layerSelectorBody = content;\n }\n @Input() map!: Map;\n @Input() profile!: Profile;\n searchText = '';\n allLayerGroups: LayerSelectorGroup[] = [];\n filteredLayerGroups: LayerSelectorGroup[] = [];\n showSelector: boolean = false;\n private _layerSelectorIcon!: ElementRef;\n private _layerSelectorIconControl!: ol_control_Control;\n private _layerSelectorBody!: ElementRef;\n private _layerSelectorBodyControl!: ol_control_Control;\n private readonly _mapFilteredLayerGroupsKeyName: string = 'mapFilteredLayerGroups';\n private readonly _layerIdsToDisplayInMapKeyName: string = 'layerIdsToDisplayInMap';\n private readonly _layerHelper: LayerHelperService = inject(LayerHelperService);\n private readonly _bypassLayersCache: boolean = true; // TO DO - remove this when we fully implement the caching\n\n ngOnChanges(): void {\n if (this.profile) {\n this.allLayerGroups = this.profile.layerGroups\n .map((lg, idx) => ({... lg, layers: lg.layers\n .filter((l: { activeInSelector: boolean; }) => l.activeInSelector), \n sortOrder: idx}))\n .filter(g => g.layers.length > 0); \n const cachedFilteredLayergroups = localStorage.getItem(this._mapFilteredLayerGroupsKeyName);\n\n if (!this._bypassLayersCache && cachedFilteredLayergroups) {\n const parsedFilteredLayerGroups = JSON.parse(cachedFilteredLayergroups);\n if (parsedFilteredLayerGroups.length != this.allLayerGroups.length) {\n //If layer groups changed in the backend, then use those\n this.filteredLayerGroups = this.setfilteredGroups(); \n } else {\n this.filteredLayerGroups = parsedFilteredLayerGroups;\n this._setVisibleLayersFromCache(parsedFilteredLayerGroups);\n }\n } else {\n this.filteredLayerGroups = this.setfilteredGroups(); \n }\n localStorage.setItem(this._layerIdsToDisplayInMapKeyName, this.filteredLayerGroups\n .flatMap(lg => lg.layers)\n .filter(lg => lg.visible)\n .map(lg => lg.id).join(','));\n this._initializeMapIconControl();\n }\n }\n\n toggleLayer(layer: ILayer): void {\n this._layerHelper.toggleLayer(this.map, layer, this.filteredLayerGroups);\n }\n\n toggleLayerSelector(): void {\n this.showSelector = !this.showSelector;\n if (this.showSelector) {\n this._addMapBodyControl();\n } else {\n this._removeMapBodyControl();\n }\n }\n\n setfilteredGroups(): LayerSelectorGroup[] {\n const text = this.searchText.toLowerCase();\n return this.allLayerGroups\n .map((g, idx) => {\n if (!text) {\n return { ...g, expanded: false, sortOrder: idx }; // collapsed by default\n }\n const filteredItems = g.layers.filter(l => l.name.toLowerCase().includes(text));\n return {\n ...g,\n expanded: filteredItems.length > 0,\n sortOrder: idx,\n layers: filteredItems\n };\n })\n .filter(g => g.layers.length > 0)\n .sort((a, b) => a.sortOrder - b.sortOrder);\n }\n\n dropGroup(event: CdkDragDrop<LayerSelectorGroup[]>) {\n moveItemInArray(this.filteredLayerGroups, event.previousIndex, event.currentIndex);\n this.updateGroupSortOrders();\n localStorage.setItem(this._mapFilteredLayerGroupsKeyName, JSON.stringify(this.filteredLayerGroups));\n }\n\n dropLayer(event: CdkDragDrop<ILayer[]>, group: LayerSelectorGroup) {\n if (event.previousContainer === event.container) {\n moveItemInArray(group.layers, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n }\n this.updateLayerSortOrders(group);\n localStorage.setItem(this._mapFilteredLayerGroupsKeyName, JSON.stringify(this.filteredLayerGroups));\n }\n\n clearSearchText(): void {\n this.searchText = '';\n this.filteredLayerGroups = this.setfilteredGroups();\n }\n\n updateGroupSortOrders() {\n this.filteredLayerGroups.forEach((g, idx) => (g.sortOrder = idx));\n }\n\n updateLayerSortOrders(group: LayerSelectorGroup) {\n group.layers.forEach((layer, idx) => (layer.sortOrder = idx));\n }\n\n private _initializeMapIconControl(): void {\n this.map.removeControl(this._layerSelectorIconControl);\n const element = this._layerSelectorIcon.nativeElement;\n this._layerSelectorIconControl = new ol_control_Control({ element: element });\n this.map.addControl(this._layerSelectorIconControl);\n }\n\n private _addMapBodyControl(): void {\n this.map.removeControl(this._layerSelectorBodyControl);\n const element = this._layerSelectorBody.nativeElement;\n this._layerSelectorBodyControl = new ol_control_Control({ element: element });\n this.map.addControl(this._layerSelectorBodyControl);\n }\n\n private _removeMapBodyControl(): void {\n this.map.removeControl(this._layerSelectorBodyControl);\n }\n\n private _setVisibleLayersFromCache(cachedFilteredLayergroups: LayerSelectorGroup[]): void {\n this.allLayerGroups.forEach(group => group.layers.forEach(layer => {\n const cachedLayer = cachedFilteredLayergroups.find(gr => gr.id === group.id)?.layers?.find(l => l.id === layer.id);\n layer.visible = cachedLayer?.visible ?? layer.visible;\n }))\n }\n\n}\n","<div #layerSelectorIcon class=\"ol-unselectable ol-control layer-selector-icon\">\n <mat-icon (click)=\"toggleLayerSelector()\">layers</mat-icon>\n</div>\n<div #layerSelectorBody [class.display-none]=\"!showSelector\" class=\"ol-unselectable ol-control layer-selector-body\">\n <div class=\"search-section\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <mat-label>Filtrer</mat-label>\n <input \n matInput \n type=\"text\" \n [(ngModel)]=\"searchText\" \n (ngModelChange)=\"filteredLayerGroups=setfilteredGroups()\"\n placeholder=\"Skriv for at filtrere...\"\n />\n </mat-form-field>\n <mat-icon (click)=\"clearSearchText()\">undo</mat-icon>\n </div>\n \n <div\n cdkDropList\n [cdkDropListData]=\"filteredLayerGroups\"\n (cdkDropListDropped)=\"dropGroup($event)\"\n class=\"item-list\">\n @for (group of filteredLayerGroups; track group.id; let gIndex = $index) {\n <div class=\"group\" cdkDrag cdkDragPreviewDisabled>\n <mat-expansion-panel [(expanded)]=\"group.expanded\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n @if (group.expanded) {\n <mat-icon>arrow_upward</mat-icon>\n }\n @if (!group.expanded) {\n <mat-icon>arrow_downward</mat-icon> \n }\n {{ group.name }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <!-- This is only shown during drag -->\n <!-- <div *cdkDragPreview class=\"drag-preview\">\n {{ group.name }}\n </div> -->\n\n <!-- Placeholder to avoid jump -->\n <!-- <div *cdkDragPlaceholder class=\"drag-placeholder\"></div> -->\n\n <div\n cdkDropList\n [cdkDropListData]=\"group.layers\"\n (cdkDropListDropped)=\"dropLayer($event, group)\"\n class=\"item-list\">\n @for (layer of group.layers; track layer.id; let iIndex = $index) {\n <div class=\"item\" cdkDrag cdkDragPreviewDisabled>\n <mat-icon class=\"drag-indicator\">drag_indicator</mat-icon>\n <span>{{ layer.name }}</span>\n @if (layer.visible) {\n <mat-icon (click)=\"toggleLayer(layer)\" class=\"power-on\">power</mat-icon>(tΓ¦nd)\n }\n @if (!layer.visible) {\n <mat-icon (click)=\"toggleLayer(layer)\" class=\"power-off\">power</mat-icon>(sluk)\n }\n </div>\n }\n </div>\n </mat-expansion-panel>\n </div>\n }\n </div>\n</div>\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { GisKomponentSettings } from '../models/GisKomponentSettings';\nimport { GeoServer } from '../models/geoserver';\nimport { Observable } from 'rxjs';\nimport WKT from 'ol/format/WKT'\n// @ts-ignore\nimport * as SLDReader from '@nieuwlandgeo/sldreader';\n\nimport Map from 'ol/Map';\nimport ol_layer_Vector from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport { extend } from 'ol/extent';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KomponentSettingsHelperService {\n\n private readonly _httpClient = inject(HttpClient);\n\n loadThem(settings: GisKomponentSettings, workpace: string, geoserver: GeoServer, map: Map): void {\n this.getStyleLoader(settings.style, workpace, geoserver).subscribe({\n next: loadedStyle => {\n const parser = new WKT();\n\n const features = settings.geometries.map(g => parser.readFeature(g.geometry, { featureProjection: 'EPSG:25832', dataProjection: 'EPSG:25832'}));\n console.log(\"πŸš€ ~ KomponentSettingsHelperService ~ loadThem ~ SLDReader:\", SLDReader)\n debugger;\n const sldObject = SLDReader.Reader(loadedStyle);\n const sldLayer = SLDReader.getLayer(sldObject);\n const sldStyles = SLDReader.getStyle(sldLayer);\n const sldFeatureStyle = sldStyles.featuretypestyles[0];\n const olStyle = SLDReader.createOlStyle(sldFeatureStyle.rules[0], 'Polygon');\n const layer = new ol_layer_Vector({\n source: new VectorSource(),\n style: olStyle\n });\n layer.getSource()?.addFeatures(features.filter(f => !!f));\n map.addLayer(layer);\n const extent = features.filter(f => !!f).reduce((e, f) => extend(e, f.getGeometry()!.getExtent()!), features[0]?.getGeometry()!.getExtent()!);\n map.getView().fit(extent);\n console.log(\"πŸš€ ~ KomponentSettingsHelperService ~ loadThem ~ style:\", sldObject)\n }\n });\n }\n\n private getStyleLoader(styleName: string, workspace: string, geoserver: GeoServer): Observable<string> {\n const headerstring = `${geoserver.userName}:${geoserver.password}`;\n const encoded = btoa(headerstring); \n const headers = new HttpHeaders().set('Authorization', `Basic ${encoded}`);\n const url = `${geoserver.url}/rest/workspaces/${workspace}/styles/${styleName}.sld`;\n return this._httpClient.get(url, { headers, responseType: 'text' });\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, input, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport Map from 'ol/Map';\nimport View from 'ol/View';\nimport TileLayer from 'ol/layer/Tile';\nimport ol_layer_Vector from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\nimport ImageWMS from 'ol/source/ImageWMS';\nimport WMTSCapabilities from 'ol/format/WMTSCapabilities';\nimport Draw from 'ol/interaction/Draw';\nimport Translate from 'ol/interaction/Translate';\nimport ImageLayer from 'ol/layer/Image';\nimport { ProfileService } from '../../services/profile.service';\nimport LayerGroup from 'ol/layer/Group';\nimport { ILayer } from \"../../models/ILayer\";\n import { MatSelectModule } from '@angular/material/select';\nimport { MatListModule } from '@angular/material/list';\nimport { HttpClient } from '@angular/common/http';\nimport ol_control_mouse from 'ol/control/MousePosition';\nimport ol_control_scale from 'ol/control/ScaleLine';\nimport BaseLayer from 'ol/layer/Base';\nimport { register } from 'ol/proj/proj4';\nimport proj4 from 'proj4';\nimport { LogoControl } from '../../controls/LogoControl/logoControl';\nimport { CopyrightControl } from '../../controls/CopyrightControl/copyRightControl';\nimport { TileWMS } from 'ol/source';\nimport { combineLatest, map, Observable, of } from 'rxjs';\nimport WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';\nimport { LayerHelperService } from '../../services/layerHelper.service';\nimport { IProfile, IProfileDetailed } from '../../models/IProfile';\nimport { Profile } from '../../models/profile';\nimport { LayerSelectorComponent } from \"../layer-selector/layer-selector.component\";\nimport { GisKomponentSettings } from '../../models/GisKomponentSettings';\nimport { KomponentSettingsHelperService } from '../../services/komponentSettingsHelper.service';\nimport 'ol/ol.css';\n\n@Component({\n selector: 'gis-komponent',\n templateUrl: './gis-komponent.component.html',\n styleUrls: ['./gis-komponent.component.scss'],\n imports: [CommonModule, MatIconModule, MatListModule, MatSelectModule, LayerSelectorComponent],\n providers: [LayerHelperService]\n})\nexport class GisKomponentComponent implements OnInit {\n\n private readonly _profileService = inject(ProfileService);\n private readonly _http = inject(HttpClient);\n private readonly _layerHelper = inject(LayerHelperService);\n @Input() identifier!: string;\n @Input() settings: GisKomponentSettings | undefined;\n map!: Map;\n toolbarCollapsed = false;\n layerPanelCollapsed = false;\n activeObjectsCollapsed = false;\n conflictsCollapsed = false;\n showConflicts = false;\n showObjects = false;\n profiles: IProfile[] = [];\n selectedProfile!: IProfileDetailed;\n private readonly _komponentSettingsHelper = inject(KomponentSettingsHelperService);\n\n layers: { name: string, visible: boolean, activeInSelector: boolean, legendUrl: string }[] = [];\n\n // activeObjects = [\n // { name: 'Objekt A', size: '22 m2' },\n // { name: 'Objekt B', size: '108,4 m2' }\n // ];\n\n private source = new VectorSource({ wrapX: false});\n private layer = new ol_layer_Vector({ source: this.source});\n private draw = new Draw({ source: this.source, type: 'Polygon'});\n private move = new Translate({ layers: [this.layer] });\n private mousePositionCtrl = new ol_control_mouse({ projection: 'EPSG:25832' }); \n private scaleCtrl = new ol_control_scale({\n units: 'metric',\n bar: true,\n steps: 4,\n text: true,\n minWidth: 120\n });\n \n profileSelected(profileIdentifier: string): void {\n this._profileService.getByIdentifier(profileIdentifier).subscribe({\n next: profile => { \n this.selectedProfile = profile; \n const view: View = new View({\n center: [profile.centerX, profile.centerY],\n extent: [profile.minX, profile.minX, profile.maxX, profile.maxY],\n zoom: profile.zoom ?? 8,\n maxZoom: profile.maxZoom ?? undefined,\n minZoom: profile.minZoom ?? undefined,\n projection: 'EPSG:25832'\n });\n\n\n this._getCapabilitiesObject(profile).subscribe({\n next: capabilityObject => { \n const layers: BaseLayer[] = [...profile.layerGroups.map((lg: { layers: any[]; id: number; }) => \n new LayerGroup({\n layers: lg.layers\n .filter(layer => layer.activeInSelector)\n .map(l => this._mapLayer(l, capabilityObject, 'EPSG:25832', lg.id)) // for now, we default to EPSG:25832. \n })\n )\n ];\n this.map.setLayers(layers);\n if (this.settings && profile.styleRepositoryWorkspace && profile.styleRepositoryGeoserver) {\n this._komponentSettingsHelper.loadThem(this.settings, profile.styleRepositoryWorkspace, profile.styleRepositoryGeoserver, this.map);\n }\n this._layerHelper.applyCachedLayersToDisplayInMap(this.map);\n }\n });\n \n this._handleShowMouseCoordinates(profile.showCoordinates);\n this._handleShowScale(profile.showScale);\n this._setLogo(profile.logoUrl);\n this._setCopyRight(profile.copyrightMessage);\n this.map.setView(view);\n }}); \n }\n\n private _getCapabilitiesObject(profile: Profile): Observable<Record<string, any>> {\n // Find all WMTS-layers and get their base url's for retrieving the capabilities. Make sure every url is only called once by removing duplicates\n const getCapabilitiesUrls = [... new Set(profile.layerGroups.flatMap(lg => lg.layers).filter(lg => lg.layerType === 'WMTS').map(lg => lg.baseUrl))];\n const parser = new WMTSCapabilities();\n const capabilities$ = getCapabilitiesUrls.map(url => this._http.get(`${url}/gwc/service/wmts?request=GetCapabilities`, {responseType: 'text'}).pipe(map(result => \n ({\n url,\n sourceObject: parser.read(result)\n }))));\n // To make it easier to find the appropriate object, I convert the array to an object of a key/value type.\n return capabilities$.length == 0 ? of({} as Record<string, any>) :\n combineLatest(capabilities$).pipe(map(allCapabilities => \n allCapabilities.reduce((obj, item) => {\n obj[item.url] = item.sourceObject;\n return obj;\n }, {} as Record<string, any>)\n ));\n }\n\n private _mapLayer(layer: ILayer, wmtsOptions: Record<string, any>, projection: string, layerGroupDbId: number): BaseLayer {\n const params: { [x: string]: any } = {\n layers: layer.layers,\n }\n if (layer.token) {\n params[layer.authKeyName] = layer.token;\n }\n layer.wmsParameters.forEach(param => {\n params[param.key] = param.value\n });\n\n let result: BaseLayer;\n switch (layer.layerType) {\n case 'WMS':\n result = new ImageLayer({ \n source: new ImageWMS({ \n url: layer.baseUrl,\n params\n }), \n }); \n break;\n case 'TILEWMS':\n result = new TileLayer({\n source: new TileWMS({\n url: layer.baseUrl,\n params, \n })\n });\n break;\n case 'WMTS':\n // Create WMST options from the capabilities loaded from the getCapabilities called.\n const options = optionsFromCapabilities(wmtsOptions[layer.baseUrl], {\n layer: layer.layers,\n matrixSet: layer.projection || projection\n });\n result = new TileLayer({\n source: new WMTS(options!)\n });\n break;\n }\n \n if (layer.minZoom) {\n result.setMinZoom(layer.minZoom); \n }\n if (layer.maxZoom) {\n result.setMaxZoom(layer.maxZoom);\n } \n if (layer.maxX && layer.minX && layer.maxY && layer.minY) {\n result.setExtent([layer.minX, layer.minX, layer.maxX, layer.maxY]);\n }\n this._layerHelper.setDbId(result, layer.id);\n this._layerHelper.setLayerGroupDbId(result, layerGroupDbId);\n return result;\n }\n\n private _setLogo(url: string): void {\n const logoCtrl = new LogoControl(url);\n this.map.addControl(logoCtrl);\n }\n\n private _setCopyRight(message: string): void {\n const copyrightCtrl = new CopyrightControl(message);\n this.map.addControl(copyrightCtrl);\n }\n\n private _handleShowMouseCoordinates(showCoords: boolean): void {\n if (showCoords) {\n this.map.addControl(this.mousePositionCtrl);\n } else {\n this.map.removeControl(this.mousePositionCtrl);\n }\n }\n\n private _handleShowScale(showScale: boolean): void {\n if (showScale) {\n this.map.addControl(this.scaleCtrl);\n } else {\n this.map.removeControl(this.scaleCtrl);\n }\n }\n\n ngOnInit(): void {\n this.profileSelected(this.identifier);\n proj4.defs(\"EPSG:25832\", \"+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs +type=crs\");\n register(proj4);\n // const projection = getProjection(\"EPSG:25832\");\n this.map = new Map({\n target: 'map',\n });\n this.draw.setActive(false);\n this.move.setActive(false);\n this.map.addInteraction(this.draw);\n this.map.addInteraction(this.move);\n }\n\n toggleDraw(): void {\n this.move.setActive(false);\n this.draw.setActive(!this.draw.getActive());\n }\n\n toggleShowConflicts(): void {\n this.showConflicts = !this.showConflicts;\n }\n\n toggleShowObjects(): void {\n this.showObjects = !this.showObjects;\n }\n\n toggleMove(): void {\n this.draw.setActive(false);\n this.move.setActive(true);\n }\n toggleToolbar(): void {\n this.toolbarCollapsed = !this.toolbarCollapsed;\n }\n\n toggleLayerPanel(): void {\n this.layerPanelCollapsed = !this.layerPanelCollapsed;\n }\n\n toggleActiveObjectsCollapsed(): void { \n this.activeObjectsCollapsed = !this.activeObjectsCollapsed;\n }\n}\n"," <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\"></lib-layer-selector>\n\n<div class=\"map-container\">\n\n <!-- Objektvisning -->\n <!-- @if (showObjects) {\n <div class=\"object-panel\" [class.collapsed]=\"activeObjectsCollapsed\">\n <div class=\"header\" (click)=\"toggleActiveObjectsCollapsed()\">\n <span>Aktive objekter ({{activeObjects.length}})</span>\n <mat-icon>{{ activeObjectsCollapsed ? 'expand_more' : 'expand_less' }}</mat-icon>\n </div>\n @if (!activeObjectsCollapsed){\n <ul>\n <li *ngFor=\"let obj of activeObjects\">{{ obj.name }} ({{obj.size}})</li>\n </ul>\n }\n </div>\n } -->\n\n <!-- Konflikter -->\n @if (showConflicts) {\n\n <div class=\"conflict-panel\" [class.collapsed]=\"conflictsCollapsed\">\n <div class=\"header\">\n <span>Konflikter (3)</span>\n <mat-icon>{{ activeObjectsCollapsed ? 'expand_more' : 'expand_less' }}</mat-icon> -->\n </div>\n <mat-list>\n <mat-list-item>\n <span matListItemTitle>Lag #1</span>\n <span matListItemLine><mat-icon>highlight</mat-icon> Objekt #1</span>\n </mat-list-item>\n <mat-list-item>\n <span matListItemTitle>Lag #2 (svarer ikke)</span>\n </mat-list-item>\n <mat-list-item>\n <span matListItemTitle>Lag #3</span>\n <span matListItemLine><mat-icon>highlight</mat-icon> Objekt #1</span>\n <span matListItemLine><mat-icon>highlight</mat-icon> Objekt #2</span>\n </mat-list-item>\n </mat-list>\n </div>\n \n } \n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n","import { Provider } from '@angular/core';\nimport { GISKOMPONENT_CONFIG, GISKomponentConfig } from './config';\n\nexport function provideLibrary(config: GISKomponentConfig): Provider[] {\n return [ \n { provide: GISKOMPONENT_CONFIG, useValue: config }\n ];\n}","/*\n * Public API Surface of gis-komponent\n */\n\nexport * from './lib/components/gis-komponent/gis-komponent.component';\nexport * from './lib/config/library-provider';\nexport * from './lib/services/profile.service';\nexport * from './lib/services/layerHelper.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LayerGroup","i1","i2"],"mappings":"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"}
@@ -20,6 +20,7 @@ export declare class LayerSelectorComponent implements OnChanges {
20
20
  private readonly _mapFilteredLayerGroupsKeyName;
21
21
  private readonly _layerIdsToDisplayInMapKeyName;
22
22
  private readonly _layerHelper;
23
+ private readonly _bypassLayersCache;
23
24
  ngOnChanges(): void;
24
25
  toggleLayer(layer: ILayer): void;
25
26
  toggleLayerSelector(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regionerne/gis-komponent",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.0",
6
6
  "@angular/core": "^19.2.0",