@regionerne/gis-komponent 0.0.87 → 0.0.88

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.
@@ -59,7 +59,7 @@ import * as SLDReader from '@nieuwlandgeo/sldreader';
59
59
  import WKT from 'ol/format/WKT';
60
60
  import Feature$1 from 'ol/Feature';
61
61
  import { never, always } from 'ol/events/condition';
62
- import { buffer, lineIntersect, lineSplit, featureCollection, difference, booleanIntersects, union, point, booleanPointInPolygon, area, flatten, feature, booleanWithin, intersect, bboxPolygon } from '@turf/turf';
62
+ import { buffer, lineIntersect, lineSplit, featureCollection, difference, booleanIntersects, union, booleanPointInPolygon, point, area, flatten, feature, booleanWithin, intersect, bboxPolygon } from '@turf/turf';
63
63
  import GeoJSON$1 from 'ol/format/GeoJSON';
64
64
  import { containsXY, extend, createEmpty, buffer as buffer$1 } from 'ol/extent';
65
65
  import { Feature } from 'ol';
@@ -1520,29 +1520,10 @@ class UndoRedoService {
1520
1520
  constructor(_drawlayerSourceService) {
1521
1521
  this._drawlayerSourceService = _drawlayerSourceService;
1522
1522
  }
1523
- disable() {
1524
- this._enabled = false;
1525
- }
1526
- enable() {
1527
- this._enabled = true;
1528
- }
1529
1523
  _steps = [];
1530
1524
  _currentStep = 0;
1531
- _changing = false;
1532
- _enabled = true;
1533
1525
  init() {
1534
1526
  this._steps[0] = this._drawlayerSourceService.allFeatures;
1535
- // For every change, add the current state
1536
- this._drawlayerSourceService.features$.pipe(filter(() => this._enabled)).subscribe({
1537
- next: () => {
1538
- if (this._changing) {
1539
- this._changing = false;
1540
- return;
1541
- }
1542
- this._steps = [...this._steps.slice(0, this._currentStep + 1), this._drawlayerSourceService.allFeatures];
1543
- this._currentStep++;
1544
- }
1545
- });
1546
1527
  }
1547
1528
  get canUndo() {
1548
1529
  return this._currentStep > 0;
@@ -1550,9 +1531,12 @@ class UndoRedoService {
1550
1531
  get canRedo() {
1551
1532
  return this._currentStep < this._steps.length - 1;
1552
1533
  }
1534
+ addStep() {
1535
+ this._steps = [...this._steps.slice(0, this._currentStep + 1), this._drawlayerSourceService.allFeatures];
1536
+ this._currentStep++;
1537
+ }
1553
1538
  undo() {
1554
1539
  if (this.canUndo) {
1555
- this._changing = true;
1556
1540
  this._currentStep--;
1557
1541
  const features = this._steps[this._currentStep];
1558
1542
  this._drawlayerSourceService.setFeatures(features);
@@ -1560,14 +1544,12 @@ class UndoRedoService {
1560
1544
  }
1561
1545
  redo() {
1562
1546
  if (this.canRedo) {
1563
- this._changing = true;
1564
1547
  this._currentStep++;
1565
1548
  const features = this._steps[this._currentStep];
1566
1549
  this._drawlayerSourceService.setFeatures(features);
1567
1550
  }
1568
1551
  }
1569
1552
  reset() {
1570
- this._changing = true;
1571
1553
  if (this._currentStep === 0) {
1572
1554
  return;
1573
1555
  }
@@ -1584,6 +1566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
1584
1566
  class GeometrySplitService {
1585
1567
  geoJsonFormat = new GeoJSON$1();
1586
1568
  _featureHelper = inject(FeatureHelperService);
1569
+ _undoRedo = inject(UndoRedoService);
1587
1570
  /**
1588
1571
  * Split polygons in a vector source using a buffered LineString.
1589
1572
  * @param lineFeature The drawn LineString feature.
@@ -1645,6 +1628,7 @@ class GeometrySplitService {
1645
1628
  vectorSource.addFeatures(newFeatures);
1646
1629
  }
1647
1630
  });
1631
+ this._undoRedo.addStep();
1648
1632
  }
1649
1633
  isPointStrictlyInside(geom, coord) {
1650
1634
  if (!geom.intersectsCoordinate(coord))
@@ -1656,13 +1640,10 @@ class GeometrySplitService {
1656
1640
  return true; // inde og ikke kun på kanten
1657
1641
  }
1658
1642
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1659
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService, providedIn: 'root' });
1643
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService });
1660
1644
  }
1661
1645
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GeometrySplitService, decorators: [{
1662
- type: Injectable,
1663
- args: [{
1664
- providedIn: 'root'
1665
- }]
1646
+ type: Injectable
1666
1647
  }] });
1667
1648
 
1668
1649
  class ZoomService {
@@ -1822,6 +1803,7 @@ class MergeFeaturesService {
1822
1803
  _featureHelper = inject(FeatureHelperService);
1823
1804
  _interactionHelper = inject(InteractionHelperService);
1824
1805
  _drawLayerService = inject(DrawLayerSourceService);
1806
+ _undoRedoService = inject(UndoRedoService);
1825
1807
  _selectedMergeFeature;
1826
1808
  formatter = new GeoJSON$1();
1827
1809
  _formatterOptions = { dataProjection: 'EPSG:4326', featureProjection: 'EPSG:25832' };
@@ -1832,6 +1814,9 @@ class MergeFeaturesService {
1832
1814
  if (this._featureHelper.typeId(f) !== typeId) {
1833
1815
  return false;
1834
1816
  }
1817
+ if (f.getGeometry()?.getType() !== 'Polygon') {
1818
+ return false;
1819
+ }
1835
1820
  if (this._selectedMergeFeature) {
1836
1821
  const previusFeatureObject = this.formatter.writeFeatureObject(this._selectedMergeFeature, this._formatterOptions);
1837
1822
  const bufferedPreviouslySelected = buffer(previusFeatureObject, 5, { units: 'centimeters' });
@@ -1863,6 +1848,7 @@ class MergeFeaturesService {
1863
1848
  const newFeature = this.formatter.readFeature(newFeatureObject, this._formatterOptions);
1864
1849
  this._selectedMergeFeature.setGeometry(newFeature.getGeometry());
1865
1850
  this._drawLayerService.source.removeFeature(evt.selected[0]);
1851
+ this._undoRedoService.addStep();
1866
1852
  }
1867
1853
  this._selectedMergeFeature = undefined;
1868
1854
  map.removeInteraction(select);
@@ -2020,6 +2006,21 @@ class CenterPointService {
2020
2006
  this._drawLayerService.remove(centerFeature.getId());
2021
2007
  }
2022
2008
  }
2009
+ checkAfterUpdate() {
2010
+ if (!this._current.gisKomponentSettings.centerPoint || !this._current.gisKomponentSettings.centerPoint.withinPolygon) {
2011
+ return;
2012
+ }
2013
+ const currentCenter = this._drawLayerService.source.getFeatures().filter(f => this.isCenterpoint(f));
2014
+ if (currentCenter && currentCenter.length === 1) {
2015
+ const polygonFeatures = this._drawLayerService.source.getFeatures().filter(f => f.getGeometry()?.getType() === 'Polygon');
2016
+ const centerFeatureObject = this._geoJson.writeFeatureObject(currentCenter[0]);
2017
+ const isInSomePoly = polygonFeatures.map(pf => this._geoJson.writeFeatureObject(pf)).some(pf => booleanPointInPolygon(centerFeatureObject, pf));
2018
+ console.log("🚀 ~ CenterPointService ~ checkAfterUpdate ~ isInSomePoly:", isInSomePoly);
2019
+ if (!isInSomePoly) {
2020
+ this._drawLayerService.source.removeFeature(currentCenter[0]);
2021
+ }
2022
+ }
2023
+ }
2023
2024
  isCenterpoint(feature) {
2024
2025
  return feature.get(this._centerPointProperty) === true;
2025
2026
  }
@@ -2027,7 +2028,7 @@ class CenterPointService {
2027
2028
  const style$ = this._settingsHelper.getStyle(style, this._current.profile.styleRepositoryWorkspace, this._current.profile.styleRepositoryGeoserver, 'Point');
2028
2029
  combineLatest([style$, this._current.map$]).subscribe({
2029
2030
  next: ([loadedStyle, map]) => {
2030
- let parentPolyId;
2031
+ // let parentPolyId: number | string | undefined;
2031
2032
  const centerDraw = new Draw({
2032
2033
  type: 'Point',
2033
2034
  source: this._drawLayerService.source,
@@ -2048,7 +2049,7 @@ class CenterPointService {
2048
2049
  return false;
2049
2050
  }
2050
2051
  // Save the parent polygon's id on the center. If the parent is deleted, the point will be deleted too
2051
- parentPolyId = parentPoly.id;
2052
+ // parentPolyId = parentPoly.id;
2052
2053
  return !!parentPoly;
2053
2054
  },
2054
2055
  style: loadedStyle
@@ -2063,7 +2064,7 @@ class CenterPointService {
2063
2064
  }
2064
2065
  // Mark feature as centerpoint - this is to find it again an remove
2065
2066
  evt.feature.set(this._centerPointProperty, true);
2066
- evt.feature.set('_parentPolyId', parentPolyId);
2067
+ // evt.feature.set('_parentPolyId', parentPolyId);
2067
2068
  this._featureHelper.setId(evt.feature);
2068
2069
  callBack();
2069
2070
  });
@@ -3331,12 +3332,14 @@ class ToolboxComponent {
3331
3332
  this._overlap.splitByFeature(feature)])
3332
3333
  .subscribe({
3333
3334
  next: ([style, features]) => {
3334
- this._undoRedo.enable();
3335
3335
  features.forEach(feature => {
3336
3336
  this._featureHelper.setTypeId(feature, this.selectedDrawItem?.typeId || '');
3337
3337
  this._featureHelper.setId(feature);
3338
3338
  this._drawLayerService.source.addFeature(feature);
3339
3339
  });
3340
+ if (features.length > 0) {
3341
+ this._undoRedo.addStep();
3342
+ }
3340
3343
  //Clear results and close tool
3341
3344
  this.activeMode = null;
3342
3345
  this.showGeometryTypes = false;
@@ -3371,13 +3374,16 @@ class ToolboxComponent {
3371
3374
  this._overlap.splitByFeature(feature, true)])
3372
3375
  .subscribe({
3373
3376
  next: ([style, features]) => {
3374
- this._undoRedo.enable();
3375
3377
  features.forEach(feature => {
3376
3378
  this._featureHelper.setTypeId(feature, this.selectedDrawItem?.typeId || '');
3377
3379
  this._featureHelper.setId(feature);
3378
3380
  this._drawLayerService.source.addFeature(feature);
3379
3381
  });
3380
3382
  //Clear results and close tool
3383
+ if (features.length > 0) {
3384
+ this._centerPointService.checkAfterUpdate();
3385
+ this._undoRedo.addStep();
3386
+ }
3381
3387
  this.activeMode = null;
3382
3388
  this.showGeometryTypes = false;
3383
3389
  this._disablePointSearch();
@@ -3464,6 +3470,9 @@ class ToolboxComponent {
3464
3470
  if (f.length > 1) {
3465
3471
  this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
3466
3472
  }
3473
+ if (f.length > 0) {
3474
+ this._undoRedo.addStep();
3475
+ }
3467
3476
  }
3468
3477
  }
3469
3478
  });
@@ -3480,6 +3489,7 @@ class ToolboxComponent {
3480
3489
  this._featureHelper.setId(feature);
3481
3490
  this._zoomService.zoomToFeatures([feature]);
3482
3491
  this._drawLayerService.source.addFeature(feature);
3492
+ this._undoRedo.addStep();
3483
3493
  }
3484
3494
  }
3485
3495
  });
@@ -3530,7 +3540,11 @@ class ToolboxComponent {
3530
3540
  });
3531
3541
  this._interactionHelper.setAsTemp(clipHoleDraw);
3532
3542
  clipHoleDraw.on('drawend', evt => {
3533
- const featuresInExtent = this._drawLayerService.source.getFeatures().filter(f => !this._featureHelper.isLocked(f) && f.getGeometry()?.intersectsExtent(evt.feature.getGeometry().getExtent()));
3543
+ const featuresInExtent = this._drawLayerService.source
3544
+ .getFeatures()
3545
+ .filter(f => !this._featureHelper.isLocked(f)
3546
+ && f.getGeometry()?.getType() === 'Polygon'
3547
+ && f.getGeometry()?.intersectsExtent(evt.feature.getGeometry().getExtent()));
3534
3548
  const formatterOptions = { dataProjection: 'EPSG:4326', featureProjection: 'EPSG:25832' };
3535
3549
  const geoJsonFormat = new GeoJSON$1(formatterOptions);
3536
3550
  const holeGeoJson = geoJsonFormat.writeFeatureObject(evt.feature);
@@ -3566,9 +3580,9 @@ class ToolboxComponent {
3566
3580
  })).flatMap(f => f);
3567
3581
  const featuresToRemove = validatedItems.map(item => item.feature);
3568
3582
  this._drawLayerService.source.removeFeatures(featuresToRemove);
3569
- this._undoRedo.disable();
3570
3583
  this._drawLayerService.source.addFeatures(featuresToAdd);
3571
- this._undoRedo.enable();
3584
+ this._centerPointService.checkAfterUpdate();
3585
+ this._undoRedo.addStep();
3572
3586
  }
3573
3587
  });
3574
3588
  });
@@ -3635,6 +3649,7 @@ class ToolboxComponent {
3635
3649
  this._featureHelper.setTypeId(feature, typeId);
3636
3650
  feature.setStyle(style);
3637
3651
  this._drawLayerService.source.addFeature(feature);
3652
+ this._undoRedo.addStep();
3638
3653
  });
3639
3654
  this._interactionHelper.setAsTemp(drawInteraction);
3640
3655
  this.map.addInteraction(drawInteraction);
@@ -3661,8 +3676,13 @@ class ToolboxComponent {
3661
3676
  });
3662
3677
  this._interactionHelper.setAsTemp(this.deleteSelect);
3663
3678
  this.deleteSelect.on('select', evt => {
3679
+ console.log("🚀 ~ ToolboxComponent ~ deleteSelect ~ evt:", evt);
3664
3680
  this._drawLayerService.source.removeFeatures(evt.selected);
3665
- evt.selected.forEach(f => this._centerPointService.handleFeatureDeleted(f.getId()));
3681
+ // evt.selected.forEach(f => this._centerPointService.handleFeatureDeleted(f.getId()!) );
3682
+ this._centerPointService.checkAfterUpdate();
3683
+ if (evt.selected.length > 0) {
3684
+ this._undoRedo.addStep();
3685
+ }
3666
3686
  });
3667
3687
  return this._deleteSelect;
3668
3688
  }
@@ -3678,17 +3698,15 @@ class ToolboxComponent {
3678
3698
  const modifyRemove = new Modify({
3679
3699
  source: this._drawLayerService.source,
3680
3700
  filter: f => !this._featureHelper.isLocked(f),
3681
- // condition: evt => {
3682
- // // first, get all features from the draw-layer
3683
- // const feature = this.map.forEachFeatureAtPixel(evt.pixel, f => f, { layerFilter: l => l == this._drawLayerService.layer });
3684
- // if (!feature) { return false ;}
3685
- // return !this._featureHelper.isLocked(feature as Feature);
3686
- // },
3687
3701
  // Make sure delete is allowed and other interactions are not.
3688
3702
  deleteCondition: always,
3689
3703
  insertVertexCondition: never,
3690
3704
  snapToPointer: this.snap,
3691
3705
  });
3706
+ modifyRemove.on('modifyend', evt => {
3707
+ this._centerPointService.checkAfterUpdate();
3708
+ this._undoRedo.addStep();
3709
+ });
3692
3710
  this._interactionHelper.setAsTemp(modifyRemove);
3693
3711
  this.map.addInteraction(modifyRemove);
3694
3712
  this._addSnap();
@@ -3728,13 +3746,15 @@ class ToolboxComponent {
3728
3746
  next: f => {
3729
3747
  if (f) {
3730
3748
  f.forEach(feature => {
3731
- this._undoRedo.enable();
3732
3749
  this._drawLayerService.source.addFeature(feature);
3733
3750
  });
3734
3751
  this._zoomService.zoomToFeatures(f);
3735
3752
  if (f.length > 1) {
3736
3753
  this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
3737
3754
  }
3755
+ if (f.length > 0) {
3756
+ this._undoRedo.addStep();
3757
+ }
3738
3758
  //Clear results and close tool
3739
3759
  this.activeMode = null;
3740
3760
  this.showGeometryTypes = false;
@@ -3763,11 +3783,7 @@ class ToolboxComponent {
3763
3783
  // condition: always,
3764
3784
  insertVertexCondition: always,
3765
3785
  });
3766
- /* Modify fires changes to features a LOT, so to not flood the UndoRedo service, I disable until ending the modify
3767
- and then force an update, to add the updated feature to the undo-service. */
3768
- modify.on('modifystart', () => this._undoRedo.disable());
3769
3786
  modify.on('modifyend', (evt) => {
3770
- this._undoRedo.enable();
3771
3787
  evt.features.forEach(f => {
3772
3788
  f.set('updated', new Date().toISOString());
3773
3789
  const geom = f.getGeometry();
@@ -3790,6 +3806,7 @@ class ToolboxComponent {
3790
3806
  // Don't check for overlap with the feature being updated.
3791
3807
  this._overlap.handleOverlaps(result, idsToExcludeFromOverlap).pipe(filter(f => !!f)).subscribe({
3792
3808
  next: f => {
3809
+ console.log("🚀 ~ ToolboxComponent ~ startEdit ~ f:", f);
3793
3810
  if (f) {
3794
3811
  f.forEach(feature => {
3795
3812
  this._drawLayerService.source.addFeature(feature);
@@ -3798,6 +3815,8 @@ class ToolboxComponent {
3798
3815
  this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
3799
3816
  }
3800
3817
  }
3818
+ this._centerPointService.checkAfterUpdate();
3819
+ this._undoRedo.addStep();
3801
3820
  }
3802
3821
  });
3803
3822
  }
@@ -3824,7 +3843,6 @@ class ToolboxComponent {
3824
3843
  source: new VectorSource(),
3825
3844
  style: style
3826
3845
  });
3827
- this._undoRedo.disable();
3828
3846
  drawInteraction.on('drawend', evt => {
3829
3847
  if (geomType === 'Polygon') {
3830
3848
  // Validate feature
@@ -3839,7 +3857,6 @@ class ToolboxComponent {
3839
3857
  this._overlap.handleOverlaps(result).pipe(filter(f => !!f)).subscribe({
3840
3858
  next: f => {
3841
3859
  if (f) {
3842
- this._undoRedo.enable();
3843
3860
  f.forEach(feature => {
3844
3861
  if (feature.getGeometry()?.getType() !== 'MultiPolygon') {
3845
3862
  this._drawLayerService.source.addFeature(feature);
@@ -3857,6 +3874,9 @@ class ToolboxComponent {
3857
3874
  if (f.length > 1) {
3858
3875
  this._confirmService.open({ message: `Den indtegnede flade var ikke gyldig, men rettet til ${f.length} nye flader`, primaryText: 'OK', title: 'Advarsel' }).subscribe();
3859
3876
  }
3877
+ if (f.length > 0) {
3878
+ this._undoRedo.addStep();
3879
+ }
3860
3880
  }
3861
3881
  }
3862
3882
  });
@@ -3871,8 +3891,8 @@ class ToolboxComponent {
3871
3891
  this._featureHelper.setTypeId(evt.feature, typeId);
3872
3892
  this._featureHelper.setId(evt.feature);
3873
3893
  evt.feature.setStyle(style);
3874
- this._undoRedo.enable();
3875
3894
  this._drawLayerService.source.addFeature(evt.feature);
3895
+ this._undoRedo.addStep();
3876
3896
  }
3877
3897
  });
3878
3898
  this._interactionHelper.setAsTemp(drawInteraction);
@@ -4233,6 +4253,7 @@ class ToolboxComponent {
4233
4253
  this._featureHelper.setTypeId(newFeature, this.selectedDrawItem?.typeId || '');
4234
4254
  this._drawLayerService.source.removeFeature(feature);
4235
4255
  this._drawLayerService.source.addFeature(newFeature);
4256
+ this._undoRedo.addStep();
4236
4257
  }
4237
4258
  }
4238
4259
  });
@@ -5753,7 +5774,7 @@ class GisKomponentComponent {
5753
5774
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: GisKomponentComponent, isStandalone: true, selector: "gis-komponent", inputs: { identifier: "identifier", settings: "settings" }, outputs: { sessionDone: "sessionDone", featuresChanged: "featuresChanged" }, providers: [CurrentItemsService, FeatureLoaderService, DrawLayerSourceService, ZoomService, UndoRedoService, ShowInfoHoverService, HoverInfoSearchService, CenterPointService, PrintDrawLayerSourceService,
5754
5775
  HighlightService, ShowInfoService, InfoSearchProvider, InteractionHelperService, ConflictAnalysisSearchProvider,
5755
5776
  MergeFeaturesService, OverlapService, CowiService, SearchProviderService, AddressSearchService, CadastreSearchService, ShowDocumentInfoService, DocumentSearchService,
5756
- DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService], viewQueries: [{ propertyName: "toolbarRef", first: true, predicate: ["toolbarRef"], descendants: true, static: true }, { propertyName: "legendsListRef", first: true, predicate: ["legendsListRef"], descendants: true, static: true }, { propertyName: "layerSelectorRef", first: true, predicate: ["layerSelectorRef"], descendants: true, static: true }, { propertyName: "activeObjectsRef", first: true, predicate: ["activeObjectsRef"], descendants: true, static: true }, { propertyName: "documentInfoRef", first: true, predicate: ["documentInfoRef"], descendants: true, static: true }], ngImport: i0, template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: LayerSelectorComponent, selector: "lib-layer-selector", inputs: ["map", "profile", "currentZoomLevel"] }, { kind: "component", type: MapSearchComponent, selector: "lib-map-search", inputs: ["profile"] }, { kind: "component", type: ToolboxComponent, selector: "map-toolbox", inputs: ["map", "showMeasureDistance", "showMeasureArea", "collapsed", "settings", "profile", "WKTInputEnabled", "deleteEnabled"] }, { kind: "component", type: ActiveObjectsComponent, selector: "activeObjects", inputs: ["settings", "profile"], outputs: ["sessionDone"] }, { kind: "component", type: LegendsListComponent, selector: "lib-legends-list", inputs: ["map", "profile"] }, { kind: "component", type: DocumentSearchInfoComponent, selector: "document-search-info" }] });
5777
+ DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService, GeometrySplitService], viewQueries: [{ propertyName: "toolbarRef", first: true, predicate: ["toolbarRef"], descendants: true, static: true }, { propertyName: "legendsListRef", first: true, predicate: ["legendsListRef"], descendants: true, static: true }, { propertyName: "layerSelectorRef", first: true, predicate: ["layerSelectorRef"], descendants: true, static: true }, { propertyName: "activeObjectsRef", first: true, predicate: ["activeObjectsRef"], descendants: true, static: true }, { propertyName: "documentInfoRef", first: true, predicate: ["documentInfoRef"], descendants: true, static: true }], ngImport: i0, template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: LayerSelectorComponent, selector: "lib-layer-selector", inputs: ["map", "profile", "currentZoomLevel"] }, { kind: "component", type: MapSearchComponent, selector: "lib-map-search", inputs: ["profile"] }, { kind: "component", type: ToolboxComponent, selector: "map-toolbox", inputs: ["map", "showMeasureDistance", "showMeasureArea", "collapsed", "settings", "profile", "WKTInputEnabled", "deleteEnabled"] }, { kind: "component", type: ActiveObjectsComponent, selector: "activeObjects", inputs: ["settings", "profile"], outputs: ["sessionDone"] }, { kind: "component", type: LegendsListComponent, selector: "lib-legends-list", inputs: ["map", "profile"] }, { kind: "component", type: DocumentSearchInfoComponent, selector: "document-search-info" }] });
5757
5778
  }
5758
5779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GisKomponentComponent, decorators: [{
5759
5780
  type: Component,
@@ -5761,7 +5782,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
5761
5782
  LegendsListComponent, DocumentSearchInfoComponent], providers: [CurrentItemsService, FeatureLoaderService, DrawLayerSourceService, ZoomService, UndoRedoService, ShowInfoHoverService, HoverInfoSearchService, CenterPointService, PrintDrawLayerSourceService,
5762
5783
  HighlightService, ShowInfoService, InfoSearchProvider, InteractionHelperService, ConflictAnalysisSearchProvider,
5763
5784
  MergeFeaturesService, OverlapService, CowiService, SearchProviderService, AddressSearchService, CadastreSearchService, ShowDocumentInfoService, DocumentSearchService,
5764
- DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService], template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"] }]
5785
+ DmpCatalogService, OlCapabilitiesService, DmpLayerMapperService, GeometrySearchService, GeometrySplitService], template: "<div #layerSelectorRef class=\"layer-selector-container\">\n @if (selectedProfile && selectedProfile.showLayerSelector) {\n <lib-layer-selector [map]=\"map\" [profile]=\"selectedProfile\" [currentZoomLevel]=\"currentZoomLevel\"></lib-layer-selector>\n }\n</div>\n\n<div #legendsListRef class=\"legends-list-container\">\n @if (selectedProfile && selectedProfile.showLegends) {\n <lib-legends-list [map]=\"map\" [profile]=\"selectedProfile\"></lib-legends-list>\n }\n</div>\n\n<div #documentInfoRef class=\"documents-features-wrapper\">\n <document-search-info></document-search-info>\n</div>\n\n<div #activeObjectsRef class=\"active-objects-container\">\n @if(showActiveObjects && settings && selectedProfile) {\n <activeObjects [settings]=\"settings\" [profile]=\"selectedProfile\" (sessionDone)=\"sessionDoneFromActiveObject()\"></activeObjects>\n }\n</div>\n\n<div #toolbarRef class=\"map-toolbar-container\">\n @if (settings) {\n <map-toolbox [map]=\"map\" \n [profile]=\"selectedProfile\"\n [settings]=\"settings\"\n [class.toolbox-hidden]=\"!profileShowToolbox\"\n [collapsed]=\"toolbarCollapsed\" [WKTInputEnabled]=\"settings?.WKTInputEnabled\" [deleteEnabled]=\"settings?.deleteEnabled\" [showMeasureArea]=\"selectedProfile?.showAreaMeasurement || false\" [showMeasureDistance]=\"selectedProfile?.showDistanceMeasurement || false\"></map-toolbox>\n }\n</div>\n\n<div class=\"map-container\">\n <lib-map-search *ngIf=\"showSearch\" [profile]=\"selectedProfile\"></lib-map-search>\n\n <!-- Kort -->\n <div id=\"map\" class=\"map\"></div>\n</div>\n", styles: ["::ng-deep .global-wrapper-container{background:#4c4d51}::ng-deep .dmp-dialog-content mat-dialog-content{background:#4c4d51!important}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input{color:#fff!important;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .dmp-dialog-content mat-dialog-content .search-section mat-form-field input .search-icon{color:#fff!important}::ng-deep button.ol-zoom-in,::ng-deep button.ol-zoom-out,::ng-deep button.ol-rotate-reset{background:#4c4d51;color:#fff;border-radius:5px!important}::ng-deep button.ol-zoom-in:hover,::ng-deep button.ol-zoom-out:hover,::ng-deep button.ol-rotate-reset:hover{color:#e9e3e3;outline:none}::ng-deep mat-expansion-panel .mat-expansion-panel-header{height:40px!important;min-height:40px!important;background:#ffffff0d;transition:background .2s ease;border-top-left-radius:4px!important;border-top-right-radius:4px!important;padding:0 16px;margin-bottom:2px}::ng-deep mat-expansion-panel .mat-expansion-panel-header:hover{background:#ffffff14!important}::ng-deep mat-expansion-panel .mat-expansion-panel-header .panel-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px;margin-right:10px;color:#fff;font-weight:600;font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px}::ng-deep mat-expansion-panel .mat-expansion-panel-header-title{color:#fff}::ng-deep .custom-image-icon,.compact-icon{background:none}::ng-deep .custom-image-icon img,.compact-icon img{width:100%;height:100%;object-fit:contain;transition:filter .2s ease}::ng-deep .custom-image-icon.active,.compact-icon.active{background:#f7b528!important;border-color:transparent;box-shadow:0 4px 12px #0ea5e966}::ng-deep .custom-image-icon.active img,.compact-icon.active img{filter:brightness(0) invert(1)}::ng-deep .custom-image-icon.active:hover,.compact-icon.active:hover{box-shadow:0 6px 20px #0ea5e980}::ng-deep .custom-image-icon:hover:not(.active),.compact-icon:hover:not(.active){background:#ffffff1a!important;border-color:none;box-shadow:none}::ng-deep .custom-image-icon:hover:not(.active) img,.compact-icon:hover:not(.active) img{filter:brightness(0) invert(.8)}::ng-deep .layer-selector-body .search-section mat-form-field input{color:#fff!important}::ng-deep .search-field .mat-mdc-input-element{color:#fff!important}::ng-deep .mat-mdc-text-field-wrapper{background:#878787!important}::ng-deep .mat-mdc-select-panel{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .active-objects-wrapper.collapsed,::ng-deep .layer-selector-body-wrapper.collapsed,::ng-deep .legends-list-body-wrapper.collapsed,::ng-deep .search-container.collapsed,::ng-deep .toolbox-wrapper.collapsed{width:90px;max-width:90px;min-width:90px}::ng-deep .drag-handle-active-objects,::ng-deep .drag-handle-legends,::ng-deep .drag-handle,::ng-deep .drag-handle-selector,::ng-deep .drag-handle-toolbox{display:flex;align-items:center;justify-content:space-between;padding:0 2px;cursor:move;color:#fff;border-radius:5px;width:100%;box-sizing:border-box}:host{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#dee2e6!important;border-width:1px!important}:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__leading,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__notch,:host.mat-focused ::ng-deep .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#d1d5db!important;border-width:1px!important;box-shadow:0 0 0 3px #d1d5db40!important}::ng-deep .mat-mdc-form-field-flex{height:40px!important;display:flex!important;align-items:center!important}::ng-deep .mat-expansion-indicator svg{fill:#fff!important}::ng-deep .ol-control{background-color:transparent!important}::ng-deep .search-result-option{font-family:Avenir Next W01,Lato,-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::ng-deep .mat-mdc-autocomplete-panel .mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-autocomplete-panel .mdc-list-item__end{display:none!important}:host{display:block;width:100%;height:100%;overflow:hidden}::ng-deep .lib-error-snackbar{background-color:#d32f2f;color:#fff;font-weight:500}::ng-deep .map-container{position:relative;height:81vh;width:100%;overflow:hidden}::ng-deep .toolbox-hidden{visibility:hidden!important}::ng-deep #map{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}::ng-deep .ol-viewport{overflow:hidden!important}::ng-deep ::ng-deep .ol-logo{position:absolute;left:auto;right:3em;top:6.25em}::ng-deep ::ng-deep .ol-copyright{background-color:transparent;position:absolute;bottom:10px;width:100%;display:flex;justify-content:end}::ng-deep ::ng-deep .toolbar{position:absolute;top:10px;left:10px;background:#fff;padding:4px;border-radius:4px;display:flex;flex-direction:column;transition:width .3s;z-index:1000;overflow:hidden}::ng-deep ::ng-deep .toolbar.collapsed{width:40px;overflow:hidden}::ng-deep .object-panel{position:absolute;bottom:10px;left:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .object-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep .conflict-panel{position:absolute;bottom:10px;right:10px;background:#fff;padding:8px;border-radius:4px;z-index:1000;max-height:calc(85vh - 20px);overflow-y:auto}::ng-deep .conflict-panel .header{display:flex;justify-content:space-between;padding:8px;cursor:pointer;background:#f0f0f0}::ng-deep ::ng-deep .ol-zoom.ol-unselectable.ol-control{display:flex;flex-direction:column;position:absolute}::ng-deep ::ng-deep .ol-scale-text{display:flex}::ng-deep .ol-scale-bar.ol-unselectable{position:absolute;bottom:3rem}::ng-deep .ol-mouse-position{position:absolute;bottom:10px;left:6px;top:auto;background:#0000004d;color:#fffcfc;width:189px;height:30px;padding:2px;border-radius:5px;text-align:center;display:flex;align-items:center;justify-content:flex-start;z-index:1000}::ng-deep .documents-features-wrapper{position:absolute!important}\n"] }]
5765
5786
  }], ctorParameters: () => [], propDecorators: { identifier: [{
5766
5787
  type: Input,
5767
5788
  args: [{ required: true }]