@artstesh/maps 9.0.4 → 9.1.0-alpha.0

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.
@@ -7,7 +7,7 @@ import { getCenter, createEmpty, extend } from 'ol/extent';
7
7
  import Polygon, { circular, fromExtent } from 'ol/geom/Polygon';
8
8
  import { Control, Zoom } from 'ol/control';
9
9
  import * as i0 from '@angular/core';
10
- import { Component, Injectable, Input, ChangeDetectionStrategy, input, ViewEncapsulation, ViewChild } from '@angular/core';
10
+ import { Component, Injectable, Input, ChangeDetectionStrategy, input, signal, ViewEncapsulation, ViewChild } from '@angular/core';
11
11
  import { get, useGeographic, transform } from 'ol/proj';
12
12
  import { PostboyGenericMessage, PostboyCallbackMessage, PostboyExecutor, PostboyService, LockMessage, UnlockMessage, PostboyAbstractRegistrator } from '@artstesh/postboy';
13
13
  import * as Sphere from 'ol/sphere';
@@ -17,7 +17,7 @@ import { createRegularPolygon, createBox } from 'ol/interaction/Draw';
17
17
  import { Subject, combineLatest } from 'rxjs';
18
18
  import { first, debounceTime, filter, auditTime } from 'rxjs/operators';
19
19
  import { Dictionary } from '@artstesh/collections';
20
- import { Vector, XYZ } from 'ol/source';
20
+ import { Vector, XYZ, GeoTIFF } from 'ol/source';
21
21
  import TileLayer from 'ol/layer/Tile';
22
22
  import OSM from 'ol/source/OSM';
23
23
  import { Vector as Vector$1 } from 'ol/layer';
@@ -26,6 +26,7 @@ import Cluster from 'ol/source/Cluster';
26
26
  import Static from 'ol/source/ImageStatic';
27
27
  import ImageLayer from 'ol/layer/Image';
28
28
  import RasterSource from 'ol/source/Raster';
29
+ import TileLayer$1 from 'ol/layer/WebGLTile';
29
30
  import { NgIf, NgTemplateOutlet } from '@angular/common';
30
31
  import Map from 'ol/Map';
31
32
  import View from 'ol/View';
@@ -997,6 +998,24 @@ class RemoveRasterTileCommand extends PostboyGenericMessage {
997
998
  }
998
999
  }
999
1000
 
1001
+ class AddGeotiffTileCommand extends PostboyGenericMessage {
1002
+ layer;
1003
+ static ID = '80e1b7be-09cd-43de-b11c-e0699a91b287';
1004
+ constructor(layer) {
1005
+ super();
1006
+ this.layer = layer;
1007
+ }
1008
+ }
1009
+
1010
+ class RemoveGeotiffTileCommand extends PostboyGenericMessage {
1011
+ layer;
1012
+ static ID = '5545a521-62c4-4b25-a555-ee264258799b';
1013
+ constructor(layer) {
1014
+ super();
1015
+ this.layer = layer;
1016
+ }
1017
+ }
1018
+
1000
1019
  class MapPostboyService extends PostboyService {
1001
1020
  constructor() {
1002
1021
  super();
@@ -1050,6 +1069,16 @@ class MapManagementService {
1050
1069
  return;
1051
1070
  this.map.removeLayer(c.layer);
1052
1071
  });
1072
+ this.postboy.sub(AddGeotiffTileCommand).subscribe((c) => {
1073
+ if (!this.map)
1074
+ return;
1075
+ this.map.addLayer(c.layer);
1076
+ });
1077
+ this.postboy.sub(RemoveGeotiffTileCommand).subscribe((c) => {
1078
+ if (!this.map)
1079
+ return;
1080
+ this.map.removeLayer(c.layer);
1081
+ });
1053
1082
  }
1054
1083
  observeImageLayer() {
1055
1084
  this.postboy.sub(AddImageLayerCommand).subscribe((c) => {
@@ -1513,6 +1542,8 @@ class MessageRegistratorService extends PostboyAbstractRegistrator {
1513
1542
  this.recordSubject(AddLayerCommand);
1514
1543
  this.recordSubject(RemoveLayerCommand);
1515
1544
  this.recordSubject(AddTileCommand);
1545
+ this.recordSubject(AddGeotiffTileCommand);
1546
+ this.recordSubject(RemoveGeotiffTileCommand);
1516
1547
  this.recordSubject(AddRasterTileCommand);
1517
1548
  this.recordSubject(RemoveRasterTileCommand);
1518
1549
  this.recordSubject(RemoveImageLayerCommand);
@@ -2812,6 +2843,209 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
2812
2843
  type: Input
2813
2844
  }] } });
2814
2845
 
2846
+ class GeotiffTileLayerSettings {
2847
+ /**
2848
+ * The maximum source data value. Rendered values are scaled from 0 to 1 based on the configured min and max.
2849
+ *
2850
+ * @type {number | undefined}
2851
+ * @default undefined
2852
+ */
2853
+ max = undefined;
2854
+ /**
2855
+ * The minimum source data value. Rendered values are scaled from 0 to 1 based on the configured min and max.
2856
+ *
2857
+ * @type {number | undefined}
2858
+ * @default undefined
2859
+ */
2860
+ min = undefined;
2861
+ /**
2862
+ * Represents the URL of the tif.
2863
+ * @typedef {string} url
2864
+ *
2865
+ * @example
2866
+ * 'https://example.ex/geotiff.tif'
2867
+ */
2868
+ url = '';
2869
+ /**
2870
+ * Style to apply to the layer.
2871
+ *
2872
+ * @type {Style | undefined}
2873
+ */
2874
+ style;
2875
+ /**
2876
+ * The opacity of an element.
2877
+ *
2878
+ * @type {number}
2879
+ * @default 0.6
2880
+ */
2881
+ opacity = 0.6;
2882
+ /**
2883
+ * The priority of showing - layers with higher zIndex cover others in case of collisions
2884
+ */
2885
+ zIndex = 1;
2886
+ /**
2887
+ * Creates a copy of the given tile layer settings.
2888
+ *
2889
+ * @param {GeotiffTileLayerSettings} model - The tile layer settings to be copied.
2890
+ * @return {GeotiffTileLayerSettings} - A new instance of GeotiffTileLayerSettings with the same properties as the model.
2891
+ */
2892
+ static copy(model) {
2893
+ const result = new GeotiffTileLayerSettings();
2894
+ result.max = model.max;
2895
+ result.min = model.min;
2896
+ result.zIndex = model.zIndex;
2897
+ result.style = model.style;
2898
+ result.opacity = model.opacity;
2899
+ result.url = model.url;
2900
+ return result;
2901
+ }
2902
+ /**
2903
+ * Sets the URL of the GeotiffTileLayerSettings object.
2904
+ *
2905
+ * @param {string} url - The URL to be set.
2906
+ * @return {GeotiffTileLayerSettings} - The updated GeotiffTileLayerSettings object.
2907
+ */
2908
+ setUrl(url) {
2909
+ return GeotiffTileLayerSettings.copy({ ...this, url });
2910
+ }
2911
+ /**
2912
+ * Updates the style settings for the GeotiffTileLayerSettings and returns a new instance with the updated style.
2913
+ *
2914
+ * @param {Style} [style] - An optional style object that defines the new style settings.
2915
+ * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated style.
2916
+ */
2917
+ setStyle(style) {
2918
+ return GeotiffTileLayerSettings.copy({ ...this, style });
2919
+ }
2920
+ /**
2921
+ * Sets the maximum value for the GeotiffTileLayerSettings.
2922
+ *
2923
+ * @param {number} max - The maximum value to set.
2924
+ * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated maximum value.
2925
+ */
2926
+ setMax(max) {
2927
+ return GeotiffTileLayerSettings.copy({ ...this, max: max });
2928
+ }
2929
+ /**
2930
+ * Sets the z-index for the GeotiffTileLayerSettings.
2931
+ *
2932
+ * @param {number} zIndex - The new z-index to be assigned.
2933
+ * @return {GeotiffTileLayerSettings} A new GeotiffTileLayerSettings instance with the updated z-index.
2934
+ */
2935
+ setZIndex(zIndex) {
2936
+ return GeotiffTileLayerSettings.copy({ ...this, zIndex });
2937
+ }
2938
+ /**
2939
+ * Sets the minimum value for the GeotiffTileLayerSettings.
2940
+ *
2941
+ * @param {number} min - The new minimum value to be set.
2942
+ * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated minimum value.
2943
+ */
2944
+ setMin(min) {
2945
+ return GeotiffTileLayerSettings.copy({ ...this, min: min });
2946
+ }
2947
+ /**
2948
+ * Sets the opacity of the GeotiffTileLayerSettings.
2949
+ *
2950
+ * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.
2951
+ * @return {GeotiffTileLayerSettings} - A new instance of GeotiffTileLayerSettings with the opacity set.
2952
+ */
2953
+ setOpacity(opacity) {
2954
+ return GeotiffTileLayerSettings.copy({ ...this, opacity });
2955
+ }
2956
+ /**
2957
+ * Checks if the current instance of GeotiffTileLayerSettings is equal to the given model.
2958
+ * @param {GeotiffTileLayerSettings} model - The model to compare against.
2959
+ * @return {boolean} - True if all properties of the current instance matches the properties of the model;
2960
+ * otherwise, false.
2961
+ */
2962
+ isSame(model) {
2963
+ if (this.max !== model.max)
2964
+ return false;
2965
+ if (this.min !== model.min)
2966
+ return false;
2967
+ if (this.zIndex !== model.zIndex)
2968
+ return false;
2969
+ if (this.url !== model.url)
2970
+ return false;
2971
+ if (this.style !== model.style)
2972
+ return false;
2973
+ if (this.opacity !== model.opacity)
2974
+ return false;
2975
+ return true;
2976
+ }
2977
+ }
2978
+
2979
+ class GeotiffTileLayerFactory {
2980
+ build(settings) {
2981
+ const source = new GeoTIFF({
2982
+ sources: [
2983
+ {
2984
+ url: settings.url,
2985
+ min: settings.min,
2986
+ max: settings.max,
2987
+ },
2988
+ ],
2989
+ });
2990
+ return new TileLayer$1({
2991
+ style: settings.style,
2992
+ source: source,
2993
+ zIndex: settings.zIndex,
2994
+ opacity: settings.opacity,
2995
+ });
2996
+ }
2997
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: GeotiffTileLayerFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2998
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: GeotiffTileLayerFactory, providedIn: 'root' });
2999
+ }
3000
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: GeotiffTileLayerFactory, decorators: [{
3001
+ type: Injectable,
3002
+ args: [{
3003
+ providedIn: 'root',
3004
+ }]
3005
+ }] });
3006
+
3007
+ class GeotiffTileLayerComponent extends DestructibleComponent {
3008
+ postboy;
3009
+ factory;
3010
+ layer;
3011
+ constructor(postboy, factory) {
3012
+ super();
3013
+ this.postboy = postboy;
3014
+ this.factory = factory;
3015
+ }
3016
+ _settings = new GeotiffTileLayerSettings();
3017
+ set settings(value) {
3018
+ if (!value || this._settings.isSame(value))
3019
+ return;
3020
+ this._settings = value;
3021
+ this.initLayer();
3022
+ }
3023
+ ngOnInit() {
3024
+ this.postboy
3025
+ .sub(MapRenderedEvent)
3026
+ .pipe(filter((m) => !!m), first())
3027
+ .subscribe((m) => this.initLayer());
3028
+ }
3029
+ onDestroy = () => this.removeLayer();
3030
+ initLayer() {
3031
+ this.removeLayer();
3032
+ this.layer = this.factory.build(this._settings);
3033
+ this.postboy.fire(new AddGeotiffTileCommand(this.layer));
3034
+ }
3035
+ removeLayer() {
3036
+ if (this.layer)
3037
+ this.postboy.fire(new RemoveGeotiffTileCommand(this.layer));
3038
+ }
3039
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: GeotiffTileLayerComponent, deps: [{ token: MapPostboyService }, { token: GeotiffTileLayerFactory }], target: i0.ɵɵFactoryTarget.Component });
3040
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: GeotiffTileLayerComponent, isStandalone: true, selector: "lib-geotiff-tile-layer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
3041
+ }
3042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: GeotiffTileLayerComponent, decorators: [{
3043
+ type: Component,
3044
+ args: [{ selector: 'lib-geotiff-tile-layer', imports: [], template: '' }]
3045
+ }], ctorParameters: () => [{ type: MapPostboyService }, { type: GeotiffTileLayerFactory }], propDecorators: { settings: [{
3046
+ type: Input
3047
+ }] } });
3048
+
2815
3049
  class MapPlateFactory {
2816
3050
  build(settings) {
2817
3051
  return new Map({
@@ -2842,18 +3076,20 @@ class MapPlateComponent extends DestructibleComponent {
2842
3076
  mapFactory;
2843
3077
  registrator;
2844
3078
  detector;
3079
+ ngZone;
2845
3080
  contentRef = input.required(...(ngDevMode ? [{ debugName: "contentRef" }] : []));
2846
3081
  renderTryCount = 0;
2847
- map;
2848
- osmUrl = '';
3082
+ map = signal(null, ...(ngDevMode ? [{ debugName: "map" }] : []));
3083
+ osmUrl = signal('', ...(ngDevMode ? [{ debugName: "osmUrl" }] : []));
2849
3084
  drawingLayerSettings = new FeatureLayerSettings().setName(MapConstants.DrawingLayerId);
2850
- constructor(elementRef, postboy, mapFactory, registrator, detector) {
3085
+ constructor(elementRef, postboy, mapFactory, registrator, detector, ngZone) {
2851
3086
  super();
2852
3087
  this.elementRef = elementRef;
2853
3088
  this.postboy = postboy;
2854
3089
  this.mapFactory = mapFactory;
2855
3090
  this.registrator = registrator;
2856
3091
  this.detector = detector;
3092
+ this.ngZone = ngZone;
2857
3093
  registrator.up();
2858
3094
  }
2859
3095
  _settings = new MapSettings();
@@ -2864,18 +3100,20 @@ class MapPlateComponent extends DestructibleComponent {
2864
3100
  this.setOsm();
2865
3101
  }
2866
3102
  initializeMap() {
2867
- useGeographic();
2868
- this.map = this.mapFactory.build(this._settings);
2869
- this.map.setTarget(this.elementRef.nativeElement);
2870
- this.detector.detectChanges();
2871
- this.map.once('postrender', () => {
2872
- this.map.updateSize();
2873
- this.postboy.fire(new MapRenderedEvent(this.map));
2874
- });
2875
- this.map.on('pointermove', (ev) => {
2876
- this.postboy.fire(new MapPointerMoveEvent(ev.pixel));
3103
+ this.ngZone.runOutsideAngular(() => {
3104
+ useGeographic();
3105
+ this.map.set(this.mapFactory.build(this._settings));
3106
+ this.map()?.setTarget(this.elementRef.nativeElement);
3107
+ this.detector.detectChanges();
3108
+ this.map()?.once('postrender', () => {
3109
+ this.map()?.updateSize();
3110
+ this.postboy.fire(new MapRenderedEvent(this.map()));
3111
+ });
3112
+ this.map()?.on('pointermove', (ev) => {
3113
+ this.postboy.fire(new MapPointerMoveEvent(ev.pixel));
3114
+ });
3115
+ this.setOsm();
2877
3116
  });
2878
- this.setOsm();
2879
3117
  }
2880
3118
  ngAfterViewInit() {
2881
3119
  const mapContainer = this.elementRef.nativeElement;
@@ -2897,11 +3135,11 @@ class MapPlateComponent extends DestructibleComponent {
2897
3135
  setOsm() {
2898
3136
  if (!this.map)
2899
3137
  return;
2900
- this.osmUrl = `https://mt{0-3}.google.com/vt/lyrs=${MapLyrsLabel.get(this._settings.lyrs)}&hl=${this._settings.language}&x={x}&y={y}&z={z}`;
3138
+ this.osmUrl.set(`https://mt{0-3}.google.com/vt/lyrs=${MapLyrsLabel.get(this._settings.lyrs)}&hl=${this._settings.language}&x={x}&y={y}&z={z}`);
2901
3139
  this.detector.detectChanges();
2902
- this.map.updateSize();
3140
+ this.map()?.updateSize();
2903
3141
  }
2904
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: MapPlateComponent, deps: [{ token: i0.ElementRef }, { token: MapPostboyService }, { token: MapPlateFactory }, { token: MessageRegistratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: MapPlateComponent, deps: [{ token: i0.ElementRef }, { token: MapPostboyService }, { token: MapPlateFactory }, { token: MessageRegistratorService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2905
3143
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.18", type: MapPlateComponent, isStandalone: true, selector: "art-map-plate", inputs: { contentRef: { classPropertyName: "contentRef", publicName: "contentRef", isSignal: true, isRequired: true, transformFunction: null }, settings: { classPropertyName: "settings", publicName: "settings", isSignal: false, isRequired: false, transformFunction: null } }, providers: [
2906
3144
  MessageRegistratorService,
2907
3145
  MapStateService,
@@ -2913,7 +3151,7 @@ class MapPlateComponent extends DestructibleComponent {
2913
3151
  FeatureService,
2914
3152
  FeatureModificationService,
2915
3153
  ControlsService,
2916
- ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n<art-osm-tile-layer *ngIf=\"osmUrl && map\" [map]=\"map\" [url]=\"osmUrl\" [opacity]=\"_settings.osmOpacity\"></art-osm-tile-layer>\r\n<art-feature-layer *ngIf=\"map\" [settings]=\"drawingLayerSettings\"></art-feature-layer>\r\n", styles: ["art-map-plate{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: OsmTileLayerComponent, selector: "art-osm-tile-layer", inputs: ["url", "opacity", "map"] }, { kind: "component", type: FeatureLayerComponent, selector: "art-feature-layer", inputs: ["settings"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3154
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n<art-osm-tile-layer *ngIf=\"osmUrl() && map\" [map]=\"map()!\" [url]=\"osmUrl()\" [opacity]=\"_settings.osmOpacity\"></art-osm-tile-layer>\r\n<art-feature-layer *ngIf=\"map\" [settings]=\"drawingLayerSettings\"></art-feature-layer>\r\n", styles: ["art-map-plate{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: OsmTileLayerComponent, selector: "art-osm-tile-layer", inputs: ["url", "opacity", "map"] }, { kind: "component", type: FeatureLayerComponent, selector: "art-feature-layer", inputs: ["settings"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2917
3155
  }
2918
3156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: MapPlateComponent, decorators: [{
2919
3157
  type: Component,
@@ -2928,8 +3166,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
2928
3166
  FeatureService,
2929
3167
  FeatureModificationService,
2930
3168
  ControlsService,
2931
- ], encapsulation: ViewEncapsulation.None, imports: [OsmTileLayerComponent, FeatureLayerComponent, NgIf, NgTemplateOutlet], template: "<ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n<art-osm-tile-layer *ngIf=\"osmUrl && map\" [map]=\"map\" [url]=\"osmUrl\" [opacity]=\"_settings.osmOpacity\"></art-osm-tile-layer>\r\n<art-feature-layer *ngIf=\"map\" [settings]=\"drawingLayerSettings\"></art-feature-layer>\r\n", styles: ["art-map-plate{display:block;width:100%;height:100%}\n"] }]
2932
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: MapPostboyService }, { type: MapPlateFactory }, { type: MessageRegistratorService }, { type: i0.ChangeDetectorRef }], propDecorators: { contentRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentRef", required: true }] }], settings: [{
3169
+ ], encapsulation: ViewEncapsulation.None, imports: [OsmTileLayerComponent, FeatureLayerComponent, NgIf, NgTemplateOutlet], template: "<ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n<art-osm-tile-layer *ngIf=\"osmUrl() && map\" [map]=\"map()!\" [url]=\"osmUrl()\" [opacity]=\"_settings.osmOpacity\"></art-osm-tile-layer>\r\n<art-feature-layer *ngIf=\"map\" [settings]=\"drawingLayerSettings\"></art-feature-layer>\r\n", styles: ["art-map-plate{display:block;width:100%;height:100%}\n"] }]
3170
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: MapPostboyService }, { type: MapPlateFactory }, { type: MessageRegistratorService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { contentRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentRef", required: true }] }], settings: [{
2933
3171
  type: Input
2934
3172
  }] } });
2935
3173
 
@@ -3507,5 +3745,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
3507
3745
  * Generated bundle index. Do not edit.
3508
3746
  */
3509
3747
 
3510
- export { AddControlCommand, CalculateAreaExecutor, CancelDrawingCommand, CancelFeatureModificationCommand, CloseTooltipCommand, ClusterLayerComponent, ClusterLayerSettings, DrawSelectionAreaCommand, DrawingType, FeatureLayerComponent, FeatureLayerSettings, FeatureOutputFormat, FilterFeaturesInAreaExecutor, FilterFeaturesInPointExecutor, FitToFeaturesCommand, FitToPolygonsCommand, GetFeaturesInAreaQuery, GetFeaturesInPointQuery, GetGeometryLengthExecutor, GetMapPositionExecutor, ImageLayerComponent, ImageLayerSettings, MapClickEvent, MapConstants, MapControl, MapControlZoomComponent, MapFeatureHoveredEvent, MapLyrs, MapLyrsLabel, MapMoveEndEvent, MapPlateComponent, MapPointerMoveEvent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, ModifyFeatureCommand, OsmTileLayerComponent, PolygonModel, PolygonSelfIntersectionExecutor, PolygonStyleHelper, PolygonsComponent, RasterTileLayerComponent, RasterTileLayerSettings, RemoveControlCommand, SetMapCenterCommand, StartDrawingCommand, StringifyFeatureHelper, TextStyleHelper, TileLayerComponent, TileLayerSettings, TooltipComponent, TooltipSettings, ZoomControlSettings };
3748
+ export { AddControlCommand, CalculateAreaExecutor, CancelDrawingCommand, CancelFeatureModificationCommand, CloseTooltipCommand, ClusterLayerComponent, ClusterLayerSettings, DrawSelectionAreaCommand, DrawingType, FeatureLayerComponent, FeatureLayerSettings, FeatureOutputFormat, FilterFeaturesInAreaExecutor, FilterFeaturesInPointExecutor, FitToFeaturesCommand, FitToPolygonsCommand, GeotiffTileLayerComponent, GeotiffTileLayerSettings, GetFeaturesInAreaQuery, GetFeaturesInPointQuery, GetGeometryLengthExecutor, GetMapPositionExecutor, ImageLayerComponent, ImageLayerSettings, MapClickEvent, MapConstants, MapControl, MapControlZoomComponent, MapFeatureHoveredEvent, MapLyrs, MapLyrsLabel, MapMoveEndEvent, MapPlateComponent, MapPointerMoveEvent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, ModifyFeatureCommand, OsmTileLayerComponent, PolygonModel, PolygonSelfIntersectionExecutor, PolygonStyleHelper, PolygonsComponent, RasterTileLayerComponent, RasterTileLayerSettings, RemoveControlCommand, SetMapCenterCommand, StartDrawingCommand, StringifyFeatureHelper, TextStyleHelper, TileLayerComponent, TileLayerSettings, TooltipComponent, TooltipSettings, ZoomControlSettings };
3511
3749
  //# sourceMappingURL=maps-components.mjs.map