@artstesh/maps 9.2.0 → 9.2.2
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.
- package/dist/fesm2022/maps-components-src-map.mjs +238 -90
- package/dist/fesm2022/maps-components-src-map.mjs.map +1 -1
- package/dist/fesm2022/maps-components.mjs +238 -90
- package/dist/fesm2022/maps-components.mjs.map +1 -1
- package/dist/index.d.ts +110 -3
- package/dist/src/map/index.d.ts +110 -3
- package/package.json +110 -111
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maps-components.mjs","sources":["../../projects/maps-components/src/map/models/map-lyrs.enum.ts","../../projects/maps-components/src/map/models/map-settings.ts","../../projects/maps-components/src/map/common/id.generator.ts","../../projects/maps-components/src/map/models/map.constants.ts","../../projects/maps-components/src/map/models/marker-model.ts","../../projects/maps-components/src/map/models/polygon.model.ts","../../projects/maps-components/src/map/models/drawing-type.enum.ts","../../projects/maps-components/src/map/models/feature-format.enum.ts","../../projects/maps-components/src/map/models/map-control.ts","../../projects/maps-components/src/map/common/destructible.component.ts","../../projects/maps-components/src/map/messages/commands/add-control.command.ts","../../projects/maps-components/src/map/messages/commands/close-tooltip.command.ts","../../projects/maps-components/src/map/messages/commands/start-drawing.command.ts","../../projects/maps-components/src/map/messages/commands/cancel-drawing.command.ts","../../projects/maps-components/src/map/messages/commands/draw-selection-area.command.ts","../../projects/maps-components/src/map/messages/commands/modify-feature.command.ts","../../projects/maps-components/src/map/messages/commands/cancel-feature-modification.command.ts","../../projects/maps-components/src/map/messages/commands/remove-control.command.ts","../../projects/maps-components/src/map/messages/commands/set-map-center.command.ts","../../projects/maps-components/src/map/messages/commands/fit-to-polygons.command.ts","../../projects/maps-components/src/map/messages/events/map-rendered.event.ts","../../projects/maps-components/src/map/messages/events/map-click.event.ts","../../projects/maps-components/src/map/messages/events/map-move-end.event.ts","../../projects/maps-components/src/map/messages/events/map-pointer-move.event.ts","../../projects/maps-components/src/map/messages/events/map-feature-hovered.event.ts","../../projects/maps-components/src/map/messages/executors/filter-features-in-point.executor.ts","../../projects/maps-components/src/map/messages/executors/filter-features-in-area.executor.ts","../../projects/maps-components/src/map/messages/executors/calculate-area.executor.ts","../../projects/maps-components/src/map/messages/executors/get-map-position.executor.ts","../../projects/maps-components/src/map/messages/executors/polygon-self-intersection.executor.ts","../../projects/maps-components/src/map/messages/queries/get-features-in-area.query.ts","../../projects/maps-components/src/map/messages/queries/get-features-in-point.query.ts","../../projects/maps-components/src/map/messages/commands/fit-to-features.command.ts","../../projects/maps-components/src/map/messages/executors/get-geometry-length.executor.ts","../../projects/maps-components/src/map/messages/commands/add-layer.command.ts","../../projects/maps-components/src/map/messages/commands/place-layer-features.command.ts","../../projects/maps-components/src/map/messages/commands/remove-layer.command.ts","../../projects/maps-components/src/map/messages/commands/add-tile.command.ts","../../projects/maps-components/src/map/messages/commands/remove-tile.command.ts","../../projects/maps-components/src/map/messages/queries/get-layer.query.ts","../../projects/maps-components/src/map/messages/events/drawing-finished.event.ts","../../projects/maps-components/src/map/services/drawing/drawing-generation.service.ts","../../projects/maps-components/src/map/services/feature.service.ts","../../projects/maps-components/src/map/messages/executors/generate-draw.executor.ts","../../projects/maps-components/src/map/messages/executors/generate-zoom-control.executor.ts","../../projects/maps-components/src/map/map-plate/controls/map-control-zoom/zoom-control.factory.ts","../../projects/maps-components/src/map/messages/commands/add-image-layer.command.ts","../../projects/maps-components/src/map/messages/commands/remove-image-layer.command.ts","../../projects/maps-components/src/map/messages/commands/add-raster-tile-command.ts","../../projects/maps-components/src/map/messages/commands/remove-raster-tile.command.ts","../../projects/maps-components/src/map/messages/commands/add-geotiff-tile.command.ts","../../projects/maps-components/src/map/messages/commands/remove-geotiff-tile.command.ts","../../projects/maps-components/src/map/services/map-postboy.service.ts","../../projects/maps-components/src/map/services/map-management.service.ts","../../projects/maps-components/src/map/services/map-state.service.ts","../../projects/maps-components/src/map/services/map-feature.service.ts","../../projects/maps-components/src/map/services/map-click.service.ts","../../projects/maps-components/src/map/services/drawing/drawing.service.ts","../../projects/maps-components/src/map/services/drawing/feature-modification.service.ts","../../projects/maps-components/src/map/services/controls/controls.service.ts","../../projects/maps-components/src/map/services/message-registrator.service.ts","../../projects/maps-components/src/map/map-plate/layers/tile-layer/tile-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/tile-layer/tile-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/tile-layer/tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/feature-layer/feature-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/feature-layer/feature-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/feature-layer/feature-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/image-layer/image-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/image-layer/image-layer-factory.ts","../../projects/maps-components/src/map/map-plate/layers/image-layer/image-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/raster-tile/raster-tile-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/raster-tile/raster-tile-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/geotiff-tile-layer/geotiff-tile-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/geotiff-tile-layer/geotiff-tile-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/geotiff-tile-layer/geotiff-tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/map-plate.factory.service.ts","../../projects/maps-components/src/map/map-plate/map-plate.component.ts","../../projects/maps-components/src/map/map-plate/map-plate.component.html","../../projects/maps-components/src/map/map-plate/features/markers/markers.component.ts","../../projects/maps-components/src/map/map-plate/features/polygons/polygons.component.ts","../../projects/maps-components/src/map/helpers/marker-style.helper.ts","../../projects/maps-components/src/map/helpers/polygon-style.helper.ts","../../projects/maps-components/src/map/helpers/text-style.helper.ts","../../projects/maps-components/src/map/helpers/stringify-feature.helper.ts","../../projects/maps-components/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.ts","../../projects/maps-components/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.ts","../../projects/maps-components/src/map/map-plate/tooltips/tooltip/tooltip.settings.ts","../../projects/maps-components/src/map/map-plate/tooltips/tooltip/tooltip.component.ts","../../projects/maps-components/src/map/map-plate/tooltips/tooltip/tooltip.component.html","../../projects/maps-components/src/map/public-api.ts","../../projects/maps-components/src/public-api.ts","../../projects/maps-components/src/maps-components.ts"],"sourcesContent":["export enum MapLyrs {\n Hybrid = 1,\n Satellite,\n Streets,\n Terrain,\n}\n\nexport class MapLyrsLabel {\n private static lyrs = {\n [MapLyrs.Hybrid]: 's,h',\n [MapLyrs.Satellite]: 's',\n [MapLyrs.Streets]: 'm',\n [MapLyrs.Terrain]: 'p',\n };\n\n public static get(lyrs: MapLyrs): string {\n return MapLyrsLabel.lyrs[lyrs];\n }\n}\n","import { MapLyrs } from './map-lyrs.enum';\nimport { DefaultsOptions } from 'ol/interaction/defaults';\n\n/**\n * Represents the configurable settings for a map instance, providing\n * options for center coordinates, zoom levels, map layers, and language.\n */\nexport class MapSettings {\n center: number[] = [0, 0];\n maxZoom: number = 19;\n minZoom: number = 0;\n zoom: number = 4;\n lyrs: MapLyrs = MapLyrs.Hybrid;\n language: string = 'en';\n osmOpacity: number = 1;\n interactionSettings: DefaultsOptions = {};\n\n public static copy(model: MapSettings): MapSettings {\n const result = new MapSettings();\n result.center = model.center;\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zoom = model.zoom;\n result.lyrs = model.lyrs;\n result.interactionSettings = model.interactionSettings;\n result.language = model.language;\n result.osmOpacity = model.osmOpacity;\n return result;\n }\n\n /**\n * Updates the interaction settings of the map and returns a new MapSettings instance\n * with the updated settings.\n *\n * @param {DefaultsOptions} interactionSettings - The new interaction settings to be applied.\n * @return {MapSettings} A new MapSettings instance with the updated interaction settings.\n */\n setInteractionSettings(interactionSettings: DefaultsOptions): MapSettings {\n return MapSettings.copy({ ...this, interactionSettings });\n }\n\n /**\n * Sets the center for the map settings.\n *\n * @param {number[]} center - A two-element array representing the latitude and longitude of the map's center.\n * @return {MapSettings} A new MapSettings object with the updated center.\n */\n setCenter(center: number[]): MapSettings {\n return MapSettings.copy({ ...this, center });\n }\n\n /**\n * Sets the maximum zoom level for the map.\n *\n * @param {number} maxZoom - The maximum zoom level to be set.\n * @return {MapSettings} A new instance of MapSettings with the updated maximum zoom level.\n */\n setMaxZoom(maxZoom: number): MapSettings {\n return MapSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the map settings.\n *\n * @param {number} minZoom The minimum zoom level to be set. Must be a valid numeric value.\n * @return {MapSettings} A new MapSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): MapSettings {\n return MapSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Adjusts the zoom level of the map by setting the specified value.\n *\n * @param {number} zoom - The desired zoom level to be set.\n * @return {MapSettings} A new MapSettings instance with the updated zoom level.\n */\n setZoom(zoom: number): MapSettings {\n return MapSettings.copy({ ...this, zoom });\n }\n\n /**\n * Sets the layers in the map settings with the provided layers.\n *\n * @param {MapLyrs} lyrs - The layers to be set in the map settings.\n * @return {MapSettings} A new instance of MapSettings with the updated layers.\n */\n setLyrs(lyrs: MapLyrs): MapSettings {\n return MapSettings.copy({ ...this, lyrs });\n }\n\n /**\n * Updates the language setting for the map configuration and returns a new instance with the updated language.\n *\n * @param {string} language - The language to be set for the map configuration.\n * @return {MapSettings} A new instance of MapSettings with the updated language.\n */\n setLanguage(language: string): MapSettings {\n return MapSettings.copy({ ...this, language });\n }\n\n /**\n * Sets the opacity level for the OpenStreetMap layer.\n *\n * @param {number} osmOpacity - The opacity value for the OpenStreetMap layer, where 0 is fully transparent and 1 is fully opaque.\n * @return {MapSettings} A new MapSettings instance with the updated OpenStreetMap opacity.\n */\n setOsmOpacity(osmOpacity: number): MapSettings {\n return MapSettings.copy({ ...this, osmOpacity });\n }\n\n /**\n * Compares the current MapSettings instance with another to determine if they are identical.\n *\n * @param {MapSettings} model - The MapSettings instance to compare with the current instance.\n * @return {boolean} Returns true if both MapSettings instances have the same properties and values; otherwise, false.\n */\n public isSame(model: MapSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zoom !== model.zoom) return false;\n if (this.lyrs !== model.lyrs) return false;\n if (this.language !== model.language) return false;\n if (this.interactionSettings !== model.interactionSettings) return false;\n if (this.osmOpacity !== model.osmOpacity) return false;\n return this.center.length === model.center.length && !this.center.filter((c, i) => c !== model.center[i]).length;\n }\n}\n","export class IdGenerator {\n private static collection = 'ABCDEFGHIJKLMNOPQRSTUVWXTZ0123456789'.split('');\n\n public static get(): string {\n let result: string[] = [];\n for (let i = 0; i < 7; i++) {\n result.push(\n IdGenerator.collection\n .sort(() => 0.5 - Math.random())\n .slice(0, 5)\n .join(''),\n );\n }\n return result.join('-');\n }\n}\n","export class MapConstants {\n public static FeatureInfo = 'f-info';\n public static DrawingLayerId = '93a981756ec7';\n public static FeatureLayerName = 'L-253';\n}\n","import { IdGenerator } from '../common/id.generator';\nimport { Feature } from 'ol';\nimport { Geometry, Point } from 'ol/geom';\nimport { MapConstants } from './map.constants';\n\nexport class MarkerModel {\n public readonly id: string | number;\n\n constructor(\n public readonly lat: number,\n public readonly lng: number,\n id?: string | number,\n public info?: {\n [id: string]: any;\n },\n ) {\n this.id = id == null ? IdGenerator.get() : id;\n this._feature = this.getFeature();\n }\n\n private _feature: Feature<Geometry>;\n\n public get feature(): Feature<Geometry> {\n return this._feature;\n }\n\n private getFeature(): Feature<Geometry> {\n const feature = new Feature(new Point([this.lng, this.lat]));\n feature.setId(this.id);\n if (this.info) feature.set(MapConstants.FeatureInfo, this.info);\n return feature;\n }\n}\n","import { IdGenerator } from '../common/id.generator';\nimport { Feature } from 'ol';\nimport { Circle, Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { getCenter } from 'ol/extent';\nimport { MapConstants } from './map.constants';\nimport Polygon, { circular } from 'ol/geom/Polygon';\n\nexport class PolygonModel {\n public readonly id: string | number;\n public readonly lat: number;\n public readonly lng: number;\n\n private constructor(feature: Feature<Geometry>, id?: string | number, public info?: { [id: string]: any }) {\n this.id = id == null ? IdGenerator.get() : id;\n this._feature = feature;\n if (this.info) this._feature?.set(MapConstants.FeatureInfo, this.info);\n [this.lng, this.lat] = getCenter(this._feature.getGeometry()?.getExtent()!);\n }\n\n private _feature: Feature<Geometry>;\n\n public get feature(): Feature<Geometry> {\n return this._feature;\n }\n\n public static fromGeoJson(id: string | number, json: string, info?: { [id: string]: any }): PolygonModel {\n let feature = new GeoJSON().readFeature(json) as Feature<Geometry>;\n feature.setId(id);\n return new PolygonModel(feature, id, info);\n }\n\n public static fromWKT(id: string | number, wkt: string, info?: { [id: string]: any }): PolygonModel {\n let feature = new WKT().readFeature(wkt);\n feature.setId(id);\n return new PolygonModel(feature, id, info);\n }\n\n public static circle(\n id: string | number,\n lat: number,\n lng: number,\n radius: number,\n vertices: number = 32,\n info?: { [id: string]: any },\n ): PolygonModel {\n let feature = new Feature<Geometry>(circular([lng, lat], radius, vertices));\n feature.setId(id);\n return new PolygonModel(feature, id, info);\n }\n}\n","/**\n * Enum representing various drawing types.\n *\n * This enumeration is used to define the types of drawable shapes\n * within a specific drawing context. Each member corresponds to\n * a specific type of drawing.\n *\n * Members:\n * - `Polygon`: Represents a polygonal shape (e.g., triangle, pentagon, etc.).\n * - `Circle`: Represents a circular shape.\n * - `Square`: Represents a square shape.\n * - `Box`: Represents a rectangular box shape.\n */\nexport enum DrawingType {\n Polygon = 1,\n Circle,\n Square,\n Box,\n LineString,\n}\n","/**\n * An enumeration representing different formats for feature outputs.\n * This can be used to specify the desired output format when dealing with geospatial data.\n *\n * Enumerators:\n * - GeoJson: Represents the GeoJSON format for geospatial data.\n * - WKT: Represents the Well-Known Text (WKT) format for geospatial data.\n */\nexport enum FeatureOutputFormat {\n GeoJson = 1,\n WKT,\n Geometry,\n}\n","import { Control } from 'ol/control';\nimport { Options } from 'ol/control/Control';\n\n/**\n *\n * A control is a visible widget with a DOM element in a fixed position on the screen. They can involve user input (buttons), or be informational only; the position is determined using CSS. By default, these are placed in the container with CSS class name ol-overlaycontainer-stopevent, but can use any outside DOM element.\n * This is the base class for controls. You can use it for simple custom controls by creating the element with listeners, creating an instance:\n * var myControl = new Control({element: myElement}); and then adding this to the map.\n * The main advantage of having this as a control rather than a simple separate DOM element is that preventing propagation is handled for you. Controls will also be objects in a module:ol/Collection~Collection, so you can use their methods.\n * You can also extend this base for your own control class. See examples/custom-controls for an example of how to do this.\n */\nexport class MapControl extends Control {\n constructor(options: Options) {\n super(options);\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Component({ template: '' })\nexport class DestructibleComponent implements OnDestroy {\n protected subs: Subscription[] = [];\n protected onDestroy?: () => void;\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n if (this.onDestroy) this.onDestroy();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\n/**\n * Represents a command to add a custom control to a map.\n */\nexport class AddControlCommand extends PostboyGenericMessage {\n static readonly ID = '2921fb19-f1c4-4bf4-97be-001f98241f3b';\n\n /**\n * Creates an instance of the class with the specified MapControl object.\n *\n * @param {MapControl} item - The MapControl object to be associated with the instance.\n */\n constructor(public item: MapControl) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * A command class that represents the action to close a tooltip.\n */\nexport class CloseTooltipCommand extends PostboyGenericMessage {\n static readonly ID = 'df687e26-7298-46d7-8911-d014801dafac';\n\n /**\n * Creates an instance of the class with the specified tooltip ID.\n *\n * @param {string} tooltipId - The unique identifier for the tooltip.\n */\n constructor(public tooltipId: string) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { DrawingType, FeatureOutputFormat } from '../../models';\nimport { StyleLike } from 'ol/style/Style';\n\n/**\n * Represents a command to start a drawing operation.\n */\nexport class StartDrawingCommand extends PostboyCallbackMessage<string | null> {\n static readonly ID = '4407e9ee-d6c3-4e77-8000-c1aae7433fb6';\n /**\n * Constructor for creating an instance of the class that represents a drawing feature with specific type, style, and output format.\n *\n * @param {DrawingType} type - The type of the drawing to be created.\n * @param {Style} style - The style defining visual appearance of the drawing.\n * @param {FeatureOutputFormat} [format=FeatureOutputFormat.GeoJson] - The format of the feature output. Defaults to GeoJson.\n */\n constructor(\n public type: DrawingType,\n public style: StyleLike,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n ) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents a command to cancel a drawing action.\n */\nexport class CancelDrawingCommand extends PostboyGenericMessage {\n static readonly ID = '192d70f8-9d12-4cb3-a8ad-0fc2dc5af1de';\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport Style from 'ol/style/Style';\nimport { IIdentified } from '../../models/i-identified';\nimport { Dictionary } from '@artstesh/collections';\nimport { DrawingType } from '../../models';\n\n/**\n * Class representing a command to draw a selection area with a specific type and style.\n *\n * @return {Dictionary<IIdentified[]>} - a collection of features inside the selected area, grouped by a layer's name\n */\nexport class DrawSelectionAreaCommand extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n static readonly ID = '06e43f59-c6ba-41bb-9c5b-f6534d914905';\n\n /**\n * Constructs a new instance with the specified type, style, and optional set of ignored items.\n *\n * @param {DrawingType} type - The type of drawing to be created.\n * @param {Style} style - The style information for the drawing.\n * @param {Set<string>} [ignore=new Set<string>()] - Optional set of items to be ignored.\n */\n constructor(public type: DrawingType, public style: Style, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { FeatureOutputFormat, PolygonModel } from '../../models';\nimport { StyleLike } from 'ol/style/Style';\n\n/**\n * Represents a command to modify a feature with a specific style and output format\n * for a polygonal model.\n *\n * @return {string | null} a string representation of the modified feature in the appropriate format\n */\nexport class ModifyFeatureCommand extends PostboyCallbackMessage<string | null> {\n static readonly ID = '8f76507e-f18d-4232-bab7-f3d4e3d707bb';\n\n /**\n * Constructs an instance of the class.\n *\n * @param {PolygonModel} model - The model representing the polygon data.\n * @param {StyleLike} style - The style to be applied to the polygon.\n * @param {FeatureOutputFormat} [format=FeatureOutputFormat.GeoJson] - The output format of the feature, defaults to GeoJson.\n * @param {boolean} [draggable=true] - Determines whether the polygon is draggable, defaults to true.\n */\n constructor(\n public model: PolygonModel,\n public style: StyleLike,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n public draggable: boolean = true,\n ) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents a command to cancel a feature modification.\n */\nexport class CancelFeatureModificationCommand extends PostboyGenericMessage {\n static readonly ID = 'e7886353-53b3-4bbe-93b5-6490e5f1305e';\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\n/**\n * Represents a command to remove a map control from the map.\n *\n * The command is identified by a unique static ID, and it requires a MapControl item\n * to specify the control to be removed.\n *\n * @extends PostboyGenericMessage\n */\nexport class RemoveControlCommand extends PostboyGenericMessage {\n static readonly ID = '73bcb4f5-ce7d-4c71-b70d-e772100136a1';\n\n /**\n * Constructs an instance of the class.\n *\n * @param {MapControl} item - The map control instance to be removed.\n */\n constructor(public item: MapControl) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Forces map to move to a specific point\n */\nexport class SetMapCenterCommand extends PostboyGenericMessage {\n static readonly ID = 'd4e3cf4f-0be7-4c1a-8355-8607d02c3dea';\n\n /**\n *\n * @param lat - the desired latitude\n * @param lng - the desired longitude\n * @param zoom - the desired zoom; doesn't change zoom if undefined\n */\n constructor(public lat: number, public lng: number, public zoom?: number) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { PolygonModel } from '../../models';\n\n/**\n * FitToPolygonsCommand is a command used to fit a given set of polygon features\n * to the viewable area, optionally applying a zoom transformation afterwards.\n */\nexport class FitToPolygonsCommand extends PostboyGenericMessage {\n static readonly ID = '308394ce-48d3-45f5-8671-52207fba4be3';\n\n /**\n * Creates an instance of the class with specified polygon features and an optional zoom level.\n *\n * @param {PolygonModel[]} features - An array of polygon models to fit to.\n * @param {number} [zoomAfter=0] - Optional zoom level change to apply after initialization. Defaults to 0.\n */\n constructor(public features: PolygonModel[], public zoomAfter = 0) {\n super();\n }\n}\n","import Map from 'ol/Map';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents an event triggered when a map rendering process is completed.\n */\nexport class MapRenderedEvent extends PostboyGenericMessage {\n static readonly ID = '4515dde8-1519-4e3f-a0e3-10d3c52deabe';\n /**\n * Constructor for creating an instance of the class.\n *\n * @param {Map} map - The map instance to be used by the class.\n */\n constructor(public map: Map) {\n super();\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { IIdentified } from '../../models/i-identified';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents an event triggered by a click on a map, containing information about the\n * click's location, relevant entities, and features present at the clicked position.\n *\n * @extends {PostboyGenericMessage}\n */\nexport class MapClickEvent extends PostboyGenericMessage {\n static readonly ID = 'ee31a86c-e838-4531-8399-983753a354df';\n\n /**\n * Creates an instance of this class with the provided coordinates, entities, and features.\n *\n * @param {number[]} coordinates - An array representing the coordinates.\n * @param {{ [layer: string]: IIdentified[] }} entities - A mapping of layer names to arrays of IIdentified entities.\n * @param {{ [layer: string]: Feature<Geometry>[] }} features - A mapping of layer names to arrays of features with geometry.\n */\n constructor(\n public coordinates: number[],\n public entities: { [layer: string]: IIdentified[] },\n public features: { [layer: string]: Feature<Geometry>[] },\n ) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapPosition } from '../../models';\n\n/**\n * Represents an event that is triggered when the movement of a map ends.\n * This class is used to capture the final position of a map after a movement operation.\n *\n * @property {MapPosition | null} position - The final position of the map after movement ends. Can be null.\n */\nexport class MapMoveEndEvent extends PostboyGenericMessage {\n static readonly ID = 'd210ec7e-032f-4ce8-8a39-7b816519eaae';\n\n constructor(public position: MapPosition | null) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents an event that is triggered when the pointer moves on a map.\n * This class extends PostboyGenericMessage.\n *\n * It contains information about the coordinates of the pointer when the event occurs.\n */\nexport class MapPointerMoveEvent extends PostboyGenericMessage {\n static readonly ID = '193cb41d-2489-45cc-b349-59c3ec18ed72';\n\n /**\n * Constructor for initializing an instance with a given point.\n *\n * @param {Array<number>} point - An array representing the coordinates of the point.\n */\n constructor(public point: Array<number>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { FeatureLike } from 'ol/Feature';\nimport { Feature } from 'ol';\n\n/**\n * Represents an event triggered when a map feature is hovered over.\n * This event contains information about the hovered feature and its associated layer.\n * Extends the PostboyGenericMessage class.\n */\nexport class MapFeatureHoveredEvent extends PostboyGenericMessage {\n static readonly ID = 'eb9b032a-1616-4823-a628-0fd8ffc3b57a';\n\n /**\n * Constructs an instance of the class.\n *\n * @param {Feature|null} feature - The feature associated with this instance. Can be null.\n * @param {string|null} layer - The layer associated with this instance. Can be null.\n */\n constructor(public feature: Feature | null, public layer: string | null) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\n\n/**\n * A class responsible for executing filtering of geographical features\n * based on a specific geographical point (latitude and longitude).\n *\n * @template Feature - A geographical feature that is processed by the executor.\n * @template Geometry - The type of geometry associated with the feature.\n */\nexport class FilterFeaturesInPointExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n static readonly ID = 'dcbb156d-def3-45b4-91af-84d1483d8941';\n /**\n * Constructs a new instance with the specified latitude, longitude, and features.\n *\n * @param {number} lat - The latitude coordinate.\n * @param {number} lng - The longitude coordinate.\n * @param {Feature<Geometry>[]} features - The array of features associated with the location.\n */\n constructor(public lat: number, public lng: number, public features: Feature<Geometry>[]) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\n\n/**\n * A class that extends the PostboyExecutor to filter geographical features within a specified area.\n * This class is designed to process a list of input features and determine which of them are located inside the provided area geometry.\n *\n * Parameters:\n * - `area`: A Geometry object defining the area to filter geographical features.\n * - `features`: An array of geographical features, represented as `Feature<Geometry>` objects, to be filtered by their presence within the specified area.\n */\nexport class FilterFeaturesInAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n static readonly ID = '4d26e1e3-e60f-4e49-804b-5b3eadc2adce';\n constructor(public area: Geometry, public features: Feature<Geometry>[]) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PolygonModel } from '../../models';\n\n/**\n * An executor responsible for calculating the area of a given polygon.\n *\n * Use this class to manage and execute area-calculation logic for a polygon.\n *\n * @return {number} - the spherical area (in square meters)\n */\nexport class CalculateAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n static readonly ID = '82347b8c-7635-45ec-85ef-75aaf43bc34c';\n\n constructor(public polygon: PolygonModel) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { MapPosition } from '../../models';\n\n/**\n * A message that allows to get the current state of the map.\n * If the map's state is not defined yet, the executor would return null\n * @returns {MapPosition | null}\n */\nexport class GetMapPositionExecutor extends PostboyExecutor<MapPosition | null> {\n public static readonly ID = '52c95689-d09b-4082-ba58-9183ea96a213';\n\n constructor() {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { PolygonModel } from '../../models';\n\nexport class PolygonSelfIntersectionExecutor extends PostboyGenericMessage {\n static readonly ID = 'a4ef116d-fe40-4e92-9d4a-653f8b398c62';\n\n constructor(public polygon: PolygonModel) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { Geometry } from 'ol/geom';\nimport { IIdentified } from '../../models/i-identified';\nimport { Dictionary } from '@artstesh/collections';\n\n/**\n * Class representing a query to get features within a specified geographical area.\n * The query optionally takes a set of layer names to ignore during the operation.\n */\nexport class GetFeaturesInAreaQuery extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID = '317cf427-a029-4a43-97c4-cb6b8148ff65';\n\n /**\n * Constructor to initialize the object with a Geometry instance and an optional set of strings to ignore.\n *\n * @param {Geometry} area - The Geometry object used to define the area.\n * @param {Set<string>} [ignore] - An optional set of layer names that will be ignored. Defaults to an empty set.\n */\n constructor(public area: Geometry, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n}\n","import { PostboyCallbackMessage, PostboyExecutor } from '@artstesh/postboy';\nimport { Dictionary } from '@artstesh/collections';\nimport { IIdentified } from '../../models/i-identified';\n\n/**\n * Represents a query to retrieve features located at a specific geographical point.\n * The query is defined by latitude, longitude, and an optional set of features to ignore.\n */\nexport class GetFeaturesInPointQuery extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID = '99bbc56f-34a2-4064-8300-13bb3d0662c1';\n\n /**\n * Constructor for initializing a geographic coordinate object.\n *\n * @param {number} lat - The latitude of the location.\n * @param {number} lng - The longitude of the location.\n * @param {Set<string>} [ignore=new Set<string>()] - An optional set of strings to ignore during processing.\n */\n constructor(public lat: number, public lng: number, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class FitToFeaturesCommand extends PostboyGenericMessage {\n static readonly ID = '04d67609-0b4c-4f52-aa53-ad0a3db967dc';\n\n constructor(public features: Feature<Geometry>[], public zoomAfter = 0) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Geometry } from 'ol/geom';\nimport { getLength } from 'ol/sphere';\n\nexport class GetGeometryLengthExecutor extends PostboyExecutor<number> {\n static readonly ID = '763146df-6d93-4dc2-a532-0e9ba2b2d023';\n\n constructor(public geometry: Geometry, public projection = 'EPSG:4326') {\n super();\n }\n}\n\nexport class GetGeometryLengthExecutorHandler {\n public handle(executor: GetGeometryLengthExecutor): number {\n return Math.round(getLength(executor.geometry, { projection: executor.projection }) * 100) / 100;\n }\n}\n","import { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport Cluster from 'ol/source/Cluster';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class AddLayerCommand extends PostboyGenericMessage {\n static readonly ID = '7fe68d71-350f-47e2-b1ae-62cc333e1572';\n\n constructor(public layer: Layer<VectorSource<any> | Cluster>) {\n super();\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class PlaceLayerFeaturesCommand extends PostboyGenericMessage {\n static readonly ID = '5f27a2cd-8d8a-4929-b703-8aee6dcdc21c';\n\n constructor(public layer: string, public features: Feature<Geometry>[]) {\n super();\n }\n}\n","import BaseLayer from 'ol/layer/Base';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class RemoveLayerCommand extends PostboyGenericMessage {\n static readonly ID = '1b60599c-599a-4fdb-bad2-23b12e435e1a';\n\n constructor(public layer: BaseLayer) {\n super();\n }\n}\n","import TileLayer from 'ol/layer/Tile';\nimport { XYZ } from 'ol/source';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class AddTileCommand extends PostboyGenericMessage {\n static readonly ID = 'ae29b7af-21aa-4b0a-8586-92c23779e6cb';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n}\n","import TileLayer from 'ol/layer/Tile';\nimport { XYZ } from 'ol/source';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class RemoveTileCommand extends PostboyGenericMessage {\n static readonly ID = 'dab0f861-bb25-46da-9388-717bfaae798f';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport Cluster from 'ol/source/Cluster';\n\nexport class GetLayerQuery extends PostboyCallbackMessage<Layer<VectorSource<any> | Cluster> | null> {\n public static readonly ID = 'd2683490-2aa2-4dee-855d-f752ce4d3be5';\n\n constructor(public name: string) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class DrawingFinishedEvent extends PostboyGenericMessage {\n static readonly ID = '9094e160-8df7-4868-883a-3436724106dd';\n}\n","import { Draw } from 'ol/interaction';\nimport { DrawingType } from '../../models';\nimport { createBox, createRegularPolygon, GeometryFunction } from 'ol/interaction/Draw';\nimport { GenerateDrawExecutor } from '../../messages/executors/generate-draw.executor';\n\nexport class DrawingGenerationService {\n public static getDraw(ev: GenerateDrawExecutor) {\n return new Draw({\n source: ev.layer.getSource()!,\n type: ev.type === DrawingType.Polygon ? 'Polygon' : ev.type === DrawingType.LineString ? 'LineString' : 'Circle',\n style: ev.style,\n geometryFunction: DrawingGenerationService.geometryFunc(ev.type),\n });\n }\n\n private static geometryFunc(type: DrawingType): GeometryFunction | undefined {\n switch (type) {\n case DrawingType.Circle:\n return createRegularPolygon(32);\n case DrawingType.Box:\n return createBox();\n case DrawingType.Square:\n return createRegularPolygon(4);\n }\n return undefined;\n }\n}\n","import { Circle, Geometry, GeometryCollection, LineString, Point } from 'ol/geom';\nimport Polygon, { fromCircle } from 'ol/geom/Polygon';\nimport { Feature } from 'ol';\nimport * as Sphere from 'ol/sphere';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\nimport { FilterFeaturesInPointExecutor } from '../messages';\n\nexport class FeatureService {\n constructor() {}\n\n public static filterFeaturesInArea(query: FilterFeaturesInAreaExecutor): Feature<Geometry>[] {\n return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()!));\n }\n\n public static filterFeaturesInPoint(query: FilterFeaturesInPointExecutor): Feature<Geometry>[] {\n return query.features.filter((f) =>\n FeatureService.booleanIntersects(f.getGeometry()!, new Point([query.lng, query.lat])),\n );\n }\n\n public static calculateArea(g: Geometry | undefined): number {\n if (!g) return 0;\n return Sphere.getArea(g, { projection: 'EPSG:4326' });\n }\n\n public static polygonSelfIntersects(feature: Feature<Geometry>): boolean {\n if (feature.getGeometry()!.getType() !== 'Polygon') return false;\n let intersections = 0;\n const segments = FeatureService.getSegmentsFromCoordinates(feature.getGeometry()!);\n for (let i = 0; i < segments.length; i++) {\n for (let z = i + 1; z < segments.length; z++) {\n if (!intersections && this.segmentIntersection(segments[i].getCoordinates(), segments[z].getCoordinates())) {\n intersections++;\n }\n }\n }\n return intersections !== 0;\n }\n\n private static booleanIntersects(g1: Geometry, g2: Geometry): boolean {\n if (g2.getType() === 'Point') return g1.intersectsCoordinate((g2 as Point).getCoordinates());\n if (g2.getType() === 'Circle') return g1.intersectsCoordinate((g2 as Circle).getCenter());\n if (g2.getType() === 'Polygon') return g1.intersectsCoordinate((g2 as Polygon).getInteriorPoint().getCoordinates());\n return false;\n }\n\n private static getSegmentsFromCoordinates(geom: Geometry): LineString[] {\n if (!geom) return [];\n const coords = (geom as any).getCoordinates();\n const line = new LineString(coords[0]);\n const segments: LineString[] = [];\n line.forEachSegment((s1, s2) => {\n const l = new LineString([s1, s2]);\n l.scale(0.999); // bug of the OL, as I see\n segments.push(l);\n });\n return segments;\n }\n\n private static segmentIntersection(s1: number[][], s2: number[][]): boolean {\n const a = s1[0],\n b = s1[1],\n c = s2[0],\n d = s2[1];\n const o1 = this.orientation(a, b, c);\n const o2 = this.orientation(a, b, d);\n const o3 = this.orientation(c, d, a);\n const o4 = this.orientation(c, d, b);\n return (\n (o1 != o2 && o3 != o4) ||\n (o1 == 0 && this.onSegment(a, d, b)) ||\n (o2 == 0 && this.onSegment(a, d, b)) ||\n (o3 == 0 && this.onSegment(d, a, d)) ||\n (o4 == 0 && this.onSegment(d, b, d))\n );\n }\n\n private static orientation(p: number[], q: number[], r: number[]): number {\n const val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);\n if (val == 0) return 0; // collinear\n return val > 0 ? 1 : 2; // clock or counterclock wise\n }\n\n private static onSegment(p: number[], q: number[], r: number[]): boolean {\n return (\n q[0] <= (p[0] > r[0] ? p[0] : r[0]) &&\n q[0] >= (p[0] < r[0] ? p[0] : r[0]) &&\n q[1] <= (p[1] > r[1] ? p[1] : r[1]) &&\n q[1] >= (p[1] < r[1] ? p[1] : r[1])\n );\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { Draw } from 'ol/interaction';\nimport { DrawingType } from '../../models';\nimport { StyleLike } from 'ol/style/Style';\n\nexport class GenerateDrawExecutor extends PostboyExecutor<Draw> {\n static readonly ID = '5d5f0737-ff70-461e-9a2e-bf6166c914cb';\n\n constructor(public layer: Layer<VectorSource<any>>, public style: StyleLike, public type: DrawingType) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { ZoomControlSettings } from '../../map-plate/controls/map-control-zoom/zoom-control.settings';\nimport { Zoom } from 'ol/control';\n\nexport class GenerateZoomControlExecutor extends PostboyExecutor<Zoom> {\n static readonly ID = 'c59f4fc3-ccf6-4cb3-a38b-3a8c249114a2';\n\n constructor(public settings: ZoomControlSettings) {\n super();\n }\n}\n","import { ZoomControlSettings } from './zoom-control.settings';\nimport { Zoom } from 'ol/control';\n\nexport class ZoomControlFactory {\n public static build(settings: ZoomControlSettings): Zoom {\n return new Zoom({\n zoomInTipLabel: settings.zoomInLabel,\n zoomOutTipLabel: settings.zoomOutLabel,\n zoomInClassName: settings.zoomInClass,\n zoomOutClassName: settings.zoomOutClass,\n className: settings.controlClass,\n });\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport Static from 'ol/source/ImageStatic';\nimport ImageLayer from 'ol/layer/Image';\n\nexport class AddImageLayerCommand extends PostboyGenericMessage {\n static readonly ID = '70f9b86f-8bc2-4f28-ae79-a13fc0b1ee5d';\n\n constructor(public layer: ImageLayer<Static>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport ImageLayer from 'ol/layer/Image';\nimport Static from 'ol/source/ImageStatic';\n\nexport class RemoveImageLayerCommand extends PostboyGenericMessage {\n static readonly ID = 'c8e7efdb-17ff-4cf9-89be-e688b8de3b95';\n\n constructor(public layer: ImageLayer<Static>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport ImageLayer from 'ol/layer/Image';\nimport { Raster } from 'ol/source';\n\nexport class AddRasterTileCommand extends PostboyGenericMessage {\n static readonly ID = 'd33447fe-eec0-4205-9b5d-0d79ddc74ad7';\n\n constructor(public layer: ImageLayer<Raster>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport ImageLayer from 'ol/layer/Image';\nimport { Raster } from 'ol/source';\n\nexport class RemoveRasterTileCommand extends PostboyGenericMessage {\n static readonly ID = 'd1c4bf6a-e2f2-4385-a7a2-cecb525f8939';\n\n constructor(public layer: ImageLayer<Raster>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport TileLayer from 'ol/layer/WebGLTile';\n\nexport class AddGeotiffTileCommand extends PostboyGenericMessage {\n static readonly ID = '80e1b7be-09cd-43de-b11c-e0699a91b287';\n\n constructor(public layer: TileLayer) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport TileLayer from 'ol/layer/WebGLTile';\n\nexport class RemoveGeotiffTileCommand extends PostboyGenericMessage {\n static readonly ID = '5545a521-62c4-4b25-a555-ee264258799b';\n\n constructor(public layer: TileLayer) {\n super();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PostboyService } from '@artstesh/postboy';\nimport { StartDrawingCommand } from '../messages/commands/start-drawing.command';\nimport { MapClickEvent } from '../messages';\nimport { DrawingFinishedEvent } from '../messages/events/drawing-finished.event';\n\n@Injectable()\nexport class MapPostboyService extends PostboyService {\n constructor() {\n super();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Feature, Map } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { AddLayerCommand } from '../messages/commands/add-layer.command';\nimport { RemoveLayerCommand } from '../messages/commands/remove-layer.command';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { FilterFeaturesInPointExecutor, GetFeaturesInPointQuery, MapRenderedEvent } from '../messages';\nimport { PlaceLayerFeaturesCommand } from '../messages/commands/place-layer-features.command';\nimport { AddTileCommand } from '../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../messages/commands/remove-tile.command';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport Cluster from 'ol/source/Cluster';\nimport { GetLayerQuery } from '../messages/queries/get-layer.query';\nimport { GetFeaturesInAreaQuery } from '../messages/queries/get-features-in-area.query';\nimport { IIdentified } from '../models/i-identified';\nimport { MapConstants } from '../models/map.constants';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\nimport { Geometry } from 'ol/geom';\nimport { Dictionary } from '@artstesh/collections';\nimport { RemoveImageLayerCommand } from '../messages/commands/remove-image-layer.command';\nimport { AddImageLayerCommand } from '../messages/commands/add-image-layer.command';\nimport { AddRasterTileCommand } from '../messages/commands/add-raster-tile-command';\nimport { RemoveRasterTileCommand } from '../messages/commands/remove-raster-tile.command';\nimport { AddGeotiffTileCommand } from '../messages/commands/add-geotiff-tile.command';\nimport { RemoveGeotiffTileCommand } from '../messages/commands/remove-geotiff-tile.command';\n\n@Injectable()\nexport class MapManagementService implements IPostboyDependingService {\n private map?: Map;\n private layers = new Dictionary<Layer<VectorSource<any> | Cluster>>();\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n this.observeAddLayer();\n this.observeRemoveLayer();\n this.observePlaceFeatures();\n this.observeAddTile();\n this.observeLayerQuery();\n this.observeFeaturesInArea();\n this.observeFeaturesInPoint();\n this.observeImageLayer();\n }\n\n private observeLayerQuery() {\n this.postboy.sub(GetLayerQuery).subscribe((ev) => ev.finish(this.layers.take(ev.name)));\n }\n\n private observeAddTile() {\n this.postboy.sub(AddTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n this.postboy.sub(AddRasterTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveRasterTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n this.postboy.sub(AddGeotiffTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveGeotiffTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeImageLayer() {\n this.postboy.sub(AddImageLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveImageLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private observeAddLayer() {\n this.postboy.sub(AddLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.layers.put(c.layer.get('name'), c.layer);\n this.map.addLayer(c.layer);\n });\n }\n\n private observePlaceFeatures() {\n this.postboy.sub(PlaceLayerFeaturesCommand).subscribe((c) => {\n if (!this.layers.has(c.layer)) return;\n let source = this.layers.take(c.layer)!.getSource();\n if (!!(source as any)['getSource']) source = (source as any)?.getSource();\n source?.clear();\n !!c.features?.length && source?.addFeatures(c.features);\n });\n }\n\n private observeRemoveLayer() {\n this.postboy.sub(RemoveLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.layers.rmv(c.layer.get('name'));\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeFeaturesInArea() {\n this.postboy.sub(GetFeaturesInAreaQuery).subscribe((qr) => {\n let result = new Dictionary<IIdentified[]>();\n this.forEachLayer((l, s) => {\n let features = this.postboy.exec<Feature<Geometry>[]>(\n new FilterFeaturesInAreaExecutor(qr.area, s?.getFeatures() ?? []),\n );\n result.put(\n l.get('name'),\n features.map((e) => ({ id: e.getId(), ...e.get(MapConstants.FeatureInfo) })),\n );\n }, qr.ignore);\n qr.finish(result);\n });\n }\n\n private observeFeaturesInPoint() {\n this.postboy.sub(GetFeaturesInPointQuery).subscribe((qr) => {\n let result = new Dictionary<IIdentified[]>();\n this.forEachLayer((l, s) => {\n let features = this.postboy.exec<Feature<Geometry>[]>(\n new FilterFeaturesInPointExecutor(qr.lat, qr.lng, s?.getFeatures() ?? []),\n );\n result.put(\n l.get('name'),\n features.map((e) => ({ id: e.getId(), ...e.get(MapConstants.FeatureInfo) })),\n );\n }, qr.ignore);\n qr.finish(result);\n });\n }\n\n private forEachLayer(\n action: (l: Layer<any>, s: VectorSource<any> | Cluster | null) => void,\n ignore: Set<string>,\n ): void {\n this.layers.forEach((l) => {\n let layerName = l.get('name');\n if (ignore.has(layerName) || layerName === MapConstants.DrawingLayerId) return;\n let source = l.getSource();\n if (!!(source as any)['getSource']) source = (source as any)?.getSource();\n action(l, source);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Map } from 'ol';\nimport { MapMoveEndEvent, MapRenderedEvent, SetMapCenterCommand } from '../messages';\nimport { MapPostboyService } from './map-postboy.service';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { first } from 'rxjs/operators';\nimport { MapPosition } from '../models';\n\n@Injectable()\nexport class MapStateService implements IPostboyDependingService {\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRendering();\n this.observeCenter();\n }\n\n public getMapPosition(): MapPosition | null {\n if (!this.map) return null;\n let [longitude, latitude] = this.map.getView().getCenter()!;\n const zoom = Math.floor(this.map.getView().getZoom()!);\n const extent = this.map.getView().calculateExtent();\n return { longitude, latitude, zoom, extent };\n }\n\n private observeMapRendering() {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(first())\n .subscribe((ev) => {\n this.map = ev.map;\n this.map?.on('moveend', () => {\n this.postboy.fire(new MapMoveEndEvent(this.getMapPosition()));\n });\n });\n }\n\n private observeCenter() {\n this.postboy.sub(SetMapCenterCommand).subscribe((c) => {\n this.map?.getView().setCenter([c.lng, c.lat]);\n if (c.zoom) this.map?.getView().setZoom(c.zoom);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { Feature, Map } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { FitToPolygonsCommand, MapPointerMoveEvent, MapRenderedEvent } from '../messages';\nimport { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';\nimport { Geometry } from 'ol/geom';\nimport { createEmpty, extend } from 'ol/extent';\nimport { MapFeatureHoveredEvent } from '../messages/events/map-feature-hovered.event';\nimport { MapConstants } from '../models';\n\n@Injectable()\nexport class MapFeatureService implements IPostboyDependingService {\n private map?: Map;\n private fitPolygonsWaiting?: FitToPolygonsCommand;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n this.observeFitToFeatures();\n this.observeFitToPolygons();\n this.observePointerMove();\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n if (this.fitPolygonsWaiting) this.postboy.fire(this.fitPolygonsWaiting);\n });\n }\n\n private observePointerMove() {\n this.postboy.sub(MapPointerMoveEvent).subscribe((ev) => {\n if (!this.map) return;\n let featureFound = false;\n this.map.forEachFeatureAtPixel(ev.point, (f) => {\n if (f instanceof Feature) {\n this.postboy.fire(new MapFeatureHoveredEvent(f as Feature<Geometry>, f.get(MapConstants.FeatureLayerName)));\n featureFound = true;\n }\n return true;\n });\n if (!featureFound) this.postboy.fire(new MapFeatureHoveredEvent(null, null));\n });\n }\n\n private observeFitToFeatures() {\n this.postboy.sub(FitToFeaturesCommand).subscribe((cmd) => {\n this.fitToGeometries(\n cmd.features.map((f) => f.getGeometry()!),\n cmd.zoomAfter,\n );\n });\n }\n\n private observeFitToPolygons() {\n this.postboy.sub(FitToPolygonsCommand).subscribe((cmd) => {\n if (!this.map) {\n this.fitPolygonsWaiting = cmd;\n return;\n }\n this.fitPolygonsWaiting = undefined;\n this.fitToGeometries(\n cmd.features.map((f) => f.feature.getGeometry()!),\n cmd.zoomAfter,\n );\n });\n }\n\n private fitToGeometries(geometries: Geometry[], zoomAfter: number): void {\n if (!geometries?.length || !this.map) return;\n const extent = createEmpty();\n geometries.forEach((g) => extend(extent, g.getExtent()));\n this.map.getView().fit(extent);\n this.map.getView().setZoom(this.map.getView().getZoom()! + zoomAfter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { Feature, Map, MapBrowserEvent } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { MapRenderedEvent } from '../messages';\nimport { MapClickEvent } from '../messages/events/map-click.event';\nimport { Geometry } from 'ol/geom';\nimport { MapConstants } from '../models/map.constants';\n\n@Injectable()\nexport class MapClickService implements IPostboyDependingService {\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n }\n\n onClick(ev: MapBrowserEvent<PointerEvent>): MapClickEvent {\n const model: MapClickEvent = new MapClickEvent(ev.coordinate, {}, {});\n this.map?.forEachFeatureAtPixel(ev.pixel, (f, l) => {\n this.getFeatureCollectionWithInner([f as Feature<Geometry>])\n .filter((f) => f.getId() != null && !!l)\n .forEach((fs: Feature<Geometry>) => {\n let layerName = l.get('name');\n if (!model.entities[layerName]) model.entities[layerName] = [];\n if (!model.features[layerName]) model.features[layerName] = [];\n model.entities[layerName].push({ id: fs.getId()!, ...fs.get(MapConstants.FeatureInfo) });\n model.features[layerName].push(fs);\n });\n });\n return model;\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n this.map?.on('singleclick', (e) => {\n this.postboy.fire(this.onClick(e as MapBrowserEvent<PointerEvent>));\n });\n });\n }\n\n private getFeatureCollectionWithInner(features: Feature<Geometry>[]): Feature<Geometry>[] {\n const result: Feature<Geometry>[] = [];\n features?.forEach((f) => {\n const innerFeatures = f.get('features') as Feature<Geometry>[];\n innerFeatures?.length ? result.push(...innerFeatures) : result.push(f);\n });\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService, LockMessage, UnlockMessage } from '@artstesh/postboy';\nimport { MapPostboyService } from '../map-postboy.service';\nimport { StartDrawingCommand } from '../../messages/commands/start-drawing.command';\nimport { CancelDrawingCommand } from '../../messages/commands/cancel-drawing.command';\nimport { first } from 'rxjs/operators';\nimport { DrawingFinishedEvent } from '../../messages/events/drawing-finished.event';\nimport { Subscription } from 'rxjs';\nimport { MapClickEvent, MapRenderedEvent } from '../../messages';\nimport { GetLayerQuery } from '../../messages/queries/get-layer.query';\nimport { MapConstants } from '../../models/map.constants';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { Vector as Source } from 'ol/source';\nimport { Draw } from 'ol/interaction';\nimport { FeatureOutputFormat, PolygonModel } from '../../models';\nimport { Map } from 'ol';\nimport { DrawEvent } from 'ol/interaction/Draw';\nimport { Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { DrawSelectionAreaCommand } from '../../messages/commands/draw-selection-area.command';\nimport { GetFeaturesInAreaQuery } from '../../messages/queries/get-features-in-area.query';\nimport { IIdentified } from '../../models/i-identified';\nimport { GenerateDrawExecutor } from '../../messages/executors/generate-draw.executor';\nimport { Dictionary } from '@artstesh/collections';\nimport { FeatureLike } from 'ol/Feature';\n\n@Injectable()\nexport class DrawingService implements IPostboyDependingService {\n private drawInteraction?: Draw;\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeDrawing();\n this.observeSelectArea();\n this.observeMapRender();\n }\n\n private observeSelectArea() {\n this.postboy.sub(DrawSelectionAreaCommand).subscribe((ev) => {\n this.postboy.exec(new LockMessage(MapClickEvent));\n this.postboy.fireCallback(new StartDrawingCommand(ev.type, ev.style), (r) => {\n if (!r) {\n ev.finish(new Dictionary<IIdentified[]>());\n return;\n }\n const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry()!;\n this.postboy.fireCallback(new GetFeaturesInAreaQuery(area, ev.ignore), (result) => ev.finish(result));\n });\n });\n }\n\n private observeDrawing() {\n this.postboy.sub(StartDrawingCommand).subscribe((ev) => {\n this.draw((l) => {\n if (!l || !this.map) {\n this.clearInteraction(l);\n return;\n }\n const cancelSub = this.observeCancelation(ev, l);\n this.drawInteraction = this.postboy.exec(new GenerateDrawExecutor(l, ev.style, ev.type))!;\n this.map?.addInteraction(this.drawInteraction);\n this.drawInteraction.on('drawend', (evt: DrawEvent) => {\n cancelSub.unsubscribe();\n this.onEnd(evt, ev, l);\n });\n });\n });\n }\n\n private onEnd(evt: DrawEvent, command: StartDrawingCommand, layer: Layer<Source<FeatureLike>>): void {\n command.finish(\n command.format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(evt.feature)\n : command.format === FeatureOutputFormat.WKT\n ? new WKT().writeFeature(evt.feature)\n : new GeoJSON().writeGeometry(evt.feature.getGeometry()!),\n );\n this.clearInteraction(layer);\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private draw(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));\n }\n\n private observeCancelation(ev: StartDrawingCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .sub(CancelDrawingCommand)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<FeatureLike>> | null): void {\n if (!!this.drawInteraction) {\n this.map?.removeInteraction(this.drawInteraction);\n layer?.setSource(new Source({}));\n }\n this.postboy.exec(new UnlockMessage(MapClickEvent));\n setTimeout(() => this.postboy.fire(new DrawingFinishedEvent()), 300);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { Modify, Translate } from 'ol/interaction';\nimport { Collection, Feature, Map } from 'ol';\nimport { MapPostboyService } from '../map-postboy.service';\nimport { MapRenderedEvent } from '../../messages';\nimport { FeatureOutputFormat } from '../../models';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { GetLayerQuery } from '../../messages/queries/get-layer.query';\nimport { MapConstants } from '../../models/map.constants';\nimport { Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { Vector as Source } from 'ol/source';\nimport { CancelFeatureModificationCommand } from '../../messages/commands/cancel-feature-modification.command';\nimport { ModifyFeatureCommand } from '../../messages/commands/modify-feature.command';\nimport { FeatureLike } from 'ol/Feature';\n\n@Injectable()\nexport class FeatureModificationService implements IPostboyDependingService {\n private modify?: Modify;\n private translate?: Translate;\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeModification();\n this.observeMapRender();\n }\n\n private observeModification() {\n this.postboy.sub(ModifyFeatureCommand).subscribe((ev) => {\n this.defineLayer((l) => {\n if (!l || !this.map) {\n this.clearInteraction(l);\n return;\n }\n this.observeCancelation(ev, l);\n this.initFeature(l, ev.model.feature);\n this.addModify(ev);\n if (ev.draggable) this.addDragging(ev);\n });\n });\n }\n\n private initFeature(layer: Layer<VectorSource<FeatureLike>>, feature: Feature<Geometry>): void {\n layer.getSource()?.clear();\n layer.getSource()?.addFeature(feature);\n }\n\n private addModify(command: ModifyFeatureCommand): void {\n this.modify = new Modify({\n features: new Collection([command.model.feature]),\n style: command.style,\n });\n this.modify.on('modifyend', () => {\n this.onModified(command);\n command.model.feature.changed();\n });\n this.map?.addInteraction(this.modify);\n }\n\n private addDragging(command: ModifyFeatureCommand): void {\n this.translate = new Translate({\n features: new Collection([command.model.feature]),\n condition: (ev) => {\n const clone = command.model.feature.clone();\n clone.getGeometry()?.scale(0.999);\n return clone.getGeometry()!.intersectsCoordinate(ev.coordinate);\n },\n });\n this.translate.on('translateend', () => this.onModified(command));\n this.map?.addInteraction(this.translate);\n }\n\n private onModified(command: ModifyFeatureCommand): void {\n command.next(\n command.format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(command.model.feature)\n : command.format === FeatureOutputFormat.WKT\n ? new WKT().writeFeature(command.model.feature)\n : new GeoJSON().writeGeometry(command.model.feature.getGeometry()!),\n );\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private defineLayer(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));\n }\n\n private observeCancelation(ev: ModifyFeatureCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .sub(CancelFeatureModificationCommand)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<FeatureLike>> | null): void {\n layer?.getSource()?.clear();\n if (this.modify) this.map?.removeInteraction(this.modify);\n if (this.translate) this.map?.removeInteraction(this.translate);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Map } from 'ol';\nimport { MapPostboyService } from '../map-postboy.service';\nimport { AddControlCommand, MapRenderedEvent, RemoveControlCommand } from '../../messages';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { first } from 'rxjs/operators';\n\n@Injectable()\nexport class ControlsService implements IPostboyDependingService {\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n }\n\n private observeMapRender() {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(first())\n .subscribe((m) => {\n this.map = m.map;\n this.observeAdding();\n this.observeRemoving();\n });\n }\n\n private observeAdding() {\n this.postboy.sub(AddControlCommand).subscribe((c) => this.map?.addControl(c.item));\n }\n\n private observeRemoving() {\n this.postboy.sub(RemoveControlCommand).subscribe((c) => this.map?.removeControl(c.item));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MapPostboyService } from './map-postboy.service';\nimport {\n FitToPolygonsCommand,\n GetFeaturesInPointQuery,\n MapPointerMoveEvent,\n MapRenderedEvent,\n PolygonSelfIntersectionExecutor,\n} from '../messages';\nimport { AddLayerCommand } from '../messages/commands/add-layer.command';\nimport { PlaceLayerFeaturesCommand } from '../messages/commands/place-layer-features.command';\nimport { RemoveLayerCommand } from '../messages/commands/remove-layer.command';\nimport { AddTileCommand } from '../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../messages/commands/remove-tile.command';\nimport { PostboyAbstractRegistrator } from '@artstesh/postboy';\nimport { MapManagementService } from './map-management.service';\nimport { MapStateService } from './map-state.service';\nimport { MapClickService } from './map-click.service';\nimport { MapClickEvent } from '../messages/events/map-click.event';\nimport { CloseTooltipCommand } from '../messages/commands/close-tooltip.command';\nimport { MapFeatureService } from './map-feature.service';\nimport { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';\nimport { MapMoveEndEvent } from '../messages/events/map-move-end.event';\nimport { CancelDrawingCommand } from '../messages/commands/cancel-drawing.command';\nimport { StartDrawingCommand } from '../messages/commands/start-drawing.command';\nimport { DrawingService } from './drawing/drawing.service';\nimport { GetLayerQuery } from '../messages/queries/get-layer.query';\nimport { DrawingFinishedEvent } from '../messages/events/drawing-finished.event';\nimport { DrawingGenerationService } from './drawing/drawing-generation.service';\nimport { FeatureService } from './feature.service';\nimport { GetFeaturesInAreaQuery } from '../messages/queries/get-features-in-area.query';\nimport { DrawSelectionAreaCommand } from '../messages/commands/draw-selection-area.command';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\nimport { GenerateDrawExecutor } from '../messages/executors/generate-draw.executor';\nimport { FeatureModificationService } from './drawing/feature-modification.service';\nimport { CancelFeatureModificationCommand } from '../messages/commands/cancel-feature-modification.command';\nimport { ModifyFeatureCommand } from '../messages/commands/modify-feature.command';\nimport { GenerateZoomControlExecutor } from '../messages/executors/generate-zoom-control.executor';\nimport { ZoomControlFactory } from '../map-plate/controls/map-control-zoom/zoom-control.factory';\nimport { RemoveControlCommand } from '../messages/commands/remove-control.command';\nimport { AddControlCommand } from '../messages/commands/add-control.command';\nimport { ControlsService } from './controls/controls.service';\nimport { SetMapCenterCommand } from '../messages/commands/set-map-center.command';\nimport { CalculateAreaExecutor } from '../messages/executors/calculate-area.executor';\nimport { GetMapPositionExecutor } from '../messages/executors/get-map-position.executor';\nimport { FilterFeaturesInPointExecutor } from '../messages/executors/filter-features-in-point.executor';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { MapFeatureHoveredEvent } from '../messages/events/map-feature-hovered.event';\nimport { AddImageLayerCommand } from '../messages/commands/add-image-layer.command';\nimport { RemoveImageLayerCommand } from '../messages/commands/remove-image-layer.command';\nimport { AddRasterTileCommand } from '../messages/commands/add-raster-tile-command';\nimport { RemoveRasterTileCommand } from '../messages/commands/remove-raster-tile.command';\nimport {\n GetGeometryLengthExecutor,\n GetGeometryLengthExecutorHandler,\n} from '../messages/executors/get-geometry-length.executor';\nimport { AddGeotiffTileCommand } from '../messages/commands/add-geotiff-tile.command';\nimport { RemoveGeotiffTileCommand } from '../messages/commands/remove-geotiff-tile.command';\n\n@Injectable()\nexport class MessageRegistratorService extends PostboyAbstractRegistrator {\n constructor(\n service: MapPostboyService,\n management: MapManagementService,\n private state: MapStateService,\n mapFeature: MapFeatureService,\n interaction: MapClickService,\n drawing: DrawingService,\n featureModification: FeatureModificationService,\n controls: ControlsService,\n ) {\n super(service);\n this.registerServices([management, state, interaction, mapFeature, drawing, featureModification, controls]);\n }\n\n protected _up(): void {\n this.recordReplay(MapRenderedEvent);\n this.recordReplay(PlaceLayerFeaturesCommand);\n this.recordReplay(RemoveControlCommand);\n this.recordReplay(AddControlCommand);\n this.recordReplay(SetMapCenterCommand);\n this.recordSubject(AddLayerCommand);\n this.recordSubject(RemoveLayerCommand);\n this.recordSubject(AddTileCommand);\n this.recordSubject(AddGeotiffTileCommand);\n this.recordSubject(RemoveGeotiffTileCommand);\n this.recordSubject(AddRasterTileCommand);\n this.recordSubject(RemoveRasterTileCommand);\n this.recordSubject(RemoveImageLayerCommand);\n this.recordSubject(AddImageLayerCommand);\n this.recordSubject(RemoveTileCommand);\n this.recordSubject(MapClickEvent);\n this.recordSubject(CloseTooltipCommand);\n this.recordSubject(FitToFeaturesCommand);\n this.recordSubject(FitToPolygonsCommand);\n this.recordSubject(MapMoveEndEvent);\n this.recordSubject(CancelDrawingCommand);\n this.recordSubject(StartDrawingCommand);\n this.recordSubject(GetLayerQuery);\n this.recordSubject(MapFeatureHoveredEvent);\n this.recordWithPipe(MapPointerMoveEvent, new Subject(), (s) => s.pipe(debounceTime(150)));\n this.recordSubject(DrawingFinishedEvent);\n this.recordSubject(GetFeaturesInAreaQuery);\n this.recordSubject(DrawSelectionAreaCommand);\n this.recordSubject(CancelFeatureModificationCommand);\n this.recordSubject(ModifyFeatureCommand);\n this.recordSubject(GetFeaturesInPointQuery);\n this.setExecutors();\n }\n\n private setExecutors() {\n this.recordExecutor(FilterFeaturesInAreaExecutor, (e) => FeatureService.filterFeaturesInArea(e));\n this.recordExecutor(FilterFeaturesInPointExecutor, (e) => FeatureService.filterFeaturesInPoint(e));\n this.recordExecutor(CalculateAreaExecutor, (e) => FeatureService.calculateArea(e.polygon?.feature?.getGeometry()));\n this.recordExecutor(PolygonSelfIntersectionExecutor, (e) =>\n FeatureService.polygonSelfIntersects(e.polygon.feature),\n );\n this.recordExecutor(GenerateDrawExecutor, (e) => DrawingGenerationService.getDraw(e));\n this.recordExecutor(GenerateZoomControlExecutor, (e) => ZoomControlFactory.build(e.settings));\n this.recordExecutor(GetMapPositionExecutor, () => this.state.getMapPosition());\n this.recordExecutor(GetGeometryLengthExecutor, (e) => new GetGeometryLengthExecutorHandler().handle(e));\n }\n}\n","/**\n * Class representing settings for a tile layer.\n */\nexport class TileLayerSettings {\n /**\n * The maximum zoom level for a map view.\n *\n * @type {number}\n * @default 19\n */\n maxZoom: number = 19;\n /**\n * The minimum zoom level allowed.\n *\n * @type {number}\n */\n minZoom: number = 0;\n /**\n * The opacity of an element.\n *\n * @type {number}\n * @default 0.6\n */\n opacity: number = 0.6;\n /**\n * Represents the tiles URL.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/{z}/{x}/{y}.png'\n */\n url: string = '';\n /**\n * The projection of the coordinate system.\n *\n * @type {string}\n * @default 'EPSG:3857'\n */\n projection: string = 'EPSG:3857';\n /**\n * Additional headers that should be added to each tile request\n *\n * @type {Record<string, string>}\n * @default An empty array\n */\n requestHeaders: Record<string, string> | null = null;\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {TileLayerSettings} model - The tile layer settings to be copied.\n * @return {TileLayerSettings} - A new instance of TileLayerSettings with the same properties as the model.\n */\n public static copy(model: TileLayerSettings): TileLayerSettings {\n const result = new TileLayerSettings();\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.projection = model.projection;\n result.opacity = model.opacity;\n result.url = model.url;\n result.requestHeaders = model.requestHeaders;\n return result;\n }\n\n /**\n * Sets the URL of the TileLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {TileLayerSettings} - The updated TileLayerSettings object.\n */\n setUrl(url: string): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, url });\n }\n\n /**\n * Sets the requestHeaders of the TileLayerSettings object.\n *\n * @param {Record<string, string>} requestHeaders - The headers which should be provided.\n * @return {TileLayerSettings} - The updated TileLayerSettings object.\n */\n setRequestHeaders(requestHeaders: Record<string, string>): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, requestHeaders });\n }\n\n /**\n * Sets the maximum zoom level for the tile layer.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @returns {TileLayerSettings} - The updated tile layer settings object.\n */\n setMaxZoom(maxZoom: number): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the Tile Layer.\n *\n * @param {number} minZoom - The minimum zoom level to be set.\n * @return {TileLayerSettings} The modified TileLayerSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the opacity of the TileLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {TileLayerSettings} - A new instance of TileLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the projection for the tile layer settings.\n *\n * @param {string} projection - The desired projection for the tile layer settings.\n * @return {TileLayerSettings} - The updated tile layer settings with the new projection.\n */\n setProjection(projection: string): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, projection });\n }\n\n /**\n * Checks if the current instance of TileLayerSettings is equal to the given model.\n * @param {TileLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: TileLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.url !== model.url) return false;\n if (this.projection !== model.projection) return false;\n if (this.opacity !== model.opacity) return false;\n if (this.requestHeaders !== model.requestHeaders) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { XYZ } from 'ol/source';\nimport { TileLayerSettings } from './tile-layer.settings';\nimport { TileCoord } from 'ol/tilecoord';\nimport { get } from 'ol/proj';\nimport TileLayer from 'ol/layer/Tile';\nimport { Tile } from 'ol';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TileLayerFactory {\n public build(settings: TileLayerSettings): TileLayer<XYZ> {\n const source = new XYZ({\n tileSize: 256,\n maxZoom: settings.maxZoom || 14,\n minZoom: settings.minZoom || 1,\n projection: get(settings.projection)!,\n tileUrlFunction: this.getTileFunc(settings),\n crossOrigin: 'Anonymous',\n tileLoadFunction: !!settings.requestHeaders\n ? (tile, src: string) => this.tileLoader(tile, src, settings.requestHeaders!)\n : undefined,\n });\n return new TileLayer({ source, opacity: settings.opacity });\n }\n\n private getTileFunc(settings: TileLayerSettings): (tileCoord: TileCoord) => string {\n return (tileCoord) => {\n const zoom = tileCoord[0];\n const x = tileCoord[1];\n const y = tileCoord[2];\n const normalizedCoord = this.getNormalizedCoord({ x: x, y: y }, zoom);\n const bound = 1 << zoom;\n return settings.url\n .replace('{x}', String(normalizedCoord?.x || x))\n .replace('{z}', String(zoom))\n .replace('{y}', String(bound - (normalizedCoord?.y || y) - 1));\n };\n }\n\n private tileLoader(tile: Tile, src: string, headers: Record<string, string>) {\n const client = new XMLHttpRequest();\n client.open('GET', src);\n client.responseType = 'arraybuffer';\n Object.keys(headers).forEach((k: string) => client.setRequestHeader(k, headers[k]));\n client.onload = function () {\n if (this.response !== undefined) {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n const urlCreator = window.URL || (window as any).webkitURL;\n (tile as any).getImage().src = urlCreator.createObjectURL(blob);\n }\n };\n client.send();\n }\n\n private getNormalizedCoord(coord: { x: number; y: number }, zoom: number) {\n const y = coord.y;\n let x = coord.x;\n const tileRange = 1 << zoom;\n if (y < 0 || y >= tileRange) return null;\n if (x < 0 || x >= tileRange) x = ((x % tileRange) + tileRange) % tileRange;\n return { x: x, y: y };\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { XYZ } from 'ol/source';\nimport TileLayer from 'ol/layer/Tile';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { TileLayerFactory } from './tile-layer.factory';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { TileLayerSettings } from './tile-layer.settings';\nimport { AddTileCommand } from '../../../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../../../messages/commands/remove-tile.command';\n\n@Component({\n selector: 'art-tile-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TileLayerComponent extends DestructibleComponent {\n public layer?: TileLayer<XYZ>;\n\n constructor(private postboy: MapPostboyService, private factory: TileLayerFactory) {\n super();\n }\n\n _settings: TileLayerSettings = new TileLayerSettings();\n\n @Input() set settings(value: TileLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddTileCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveTileCommand(this.layer));\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport TileLayer from 'ol/layer/Tile';\nimport TileSource from 'ol/source/Tile';\nimport OSM from 'ol/source/OSM';\nimport { Map } from 'ol';\nimport { MapSettings } from '../../../models';\n\n@Component({\n selector: 'art-osm-tile-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OsmTileLayerComponent extends DestructibleComponent implements OnInit {\n public layer?: TileLayer<TileSource>;\n\n constructor() {\n super();\n }\n\n private _url: string = '';\n private _map?: Map;\n private _opacity: number = 1;\n\n @Input() set url(value: string | undefined) {\n if (!value || this._url === value) return;\n this._url = value;\n this.initLayer();\n }\n\n @Input() set opacity(value: number) {\n if (value == null || this._opacity === value) return;\n this._opacity = value;\n this.initLayer();\n }\n\n @Input() set map(value: Map | undefined) {\n if (!value || this._map === value) return;\n this._map = value;\n this.initLayer();\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n if (this.layer) {\n this._map?.removeLayer(this.layer);\n }\n // @ts-ignore\n this.layer?.setMap(null);\n }\n\n private initLayer(): void {\n if (!this._url || !this._map) return;\n if (this.layer) this._map.removeLayer(this.layer);\n this.layer = new TileLayer({\n source: new OSM({\n url: this._url,\n }),\n opacity: this._opacity,\n });\n this.layer.set('name', 'osm-tile-layer');\n this._map.addLayer(this.layer);\n }\n}\n","import Style, { StyleFunction } from 'ol/style/Style';\nimport { IdGenerator } from '../../../common/id.generator';\n\n/**\n * A layer that is responsible for showing and styling main features on the map, such as markers and polygons\n */\nexport class FeatureLayerSettings {\n /**\n * The identifier of the field, it is autogenerated by default, but can be set manually\n */\n name: string = IdGenerator.get();\n /**\n * The priority of showing - layers with higher zIndex cover others in case of collisions\n */\n zIndex: number = 1;\n /**\n The maximum view zoom level (inclusive) at which this layer will be visible.\n\n @type {number}\n @default 19\n */\n maxZoom: number = 19;\n /**\n The minimum view zoom level (exclusive) at which this layer will be visible.\n\n @type {number}\n */\n minZoom: number = 0;\n /**\n * The styling definition of layer's features. The easiest way is to use {@link PolygonStyleHelper},{@link MarkerStyleHelper}\n */\n style?: Style | StyleFunction;\n /**\n * Defines the style applied to a feature when it is hovered over.\n *\n * This property can accept either a static style object or a dynamic style function.\n * When a `StyleFunction` is provided, it will determine the style dynamically\n * based on the feature being hovered.\n *\n * The style is applied temporarily, specifically for the hovered feature,\n * and overrides any default or predefined styles for that feature.\n *\n * Optional property.\n *\n * @type {(Style | StyleFunction)}\n */\n featureHoverStyle?: Style | StyleFunction;\n\n /**\n * Copies the given FeatureLayerSettings object\n *\n * @param {FeatureLayerSettings} model - The FeatureLayerSettings object to be copied\n * @returns {FeatureLayerSettings} - A copy of the FeatureLayerSettings object\n */\n public static copy(model: FeatureLayerSettings): FeatureLayerSettings {\n const result = new FeatureLayerSettings();\n result.name = model.name;\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zIndex = model.zIndex;\n result.style = model.style;\n result.featureHoverStyle = model.featureHoverStyle;\n return result;\n }\n\n /**\n * Sets the z-index value for the FeatureLayerSettings object.\n *\n * @param {number} zIndex - The new z-index value.\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object.\n */\n setZIndex(zIndex: number): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the name of the FeatureLayerSettings.\n *\n * @param {string} name - The name to set for the FeatureLayerSettings.\n *\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object with the new name.\n */\n setName(name: string): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, name });\n }\n\n /**\n * Sets the maximum zoom level for the FeatureLayerSettings.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object.\n */\n setMaxZoom(maxZoom: number): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the feature layer.\n *\n * @param {number} minZoom The minimum zoom level to be set.\n * @returns {FeatureLayerSettings} The updated feature layer settings object.\n */\n setMinZoom(minZoom: number): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the style for the FeatureLayerSettings object.\n *\n * @param {Style | StyleFunction} style - The new style to set. It can be either a Style object or a StyleFunction.\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object with the new style.\n */\n setStyle(style: Style | StyleFunction): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, style });\n }\n /**\n * Sets the style to apply to features when they are hovered over.\n *\n * @param {Style | StyleFunction} featureHoverStyle - The style or style function to use for hovered features.\n * @return {FeatureLayerSettings} A new instance of FeatureLayerSettings with the updated hover style.\n */\n setFeatureHoverStyle(featureHoverStyle: Style | StyleFunction): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, featureHoverStyle });\n }\n\n /**\n * Checks if the given FeatureLayerSettings object is identical to the current object.\n *\n * @param {FeatureLayerSettings} model - The FeatureLayerSettings object to compare with.\n * @return {boolean} - Returns true if the given object is identical to the current object, otherwise false.\n */\n public isSame(model: FeatureLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.name !== model.name) return false;\n if (this.style !== model.style) return false;\n if (this.featureHoverStyle !== model.featureHoverStyle) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FeatureLayerSettings } from './feature-layer.settings';\nimport { Vector as Source } from 'ol/source';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeatureLayerFactory {\n public build(settings: FeatureLayerSettings): Layer<VectorSource<any>> {\n const source = new Source({});\n const layer = new Layer({\n source: source,\n maxZoom: settings.maxZoom,\n minZoom: settings.minZoom,\n zIndex: settings.zIndex,\n });\n if (settings.style) layer.setStyle(settings.style);\n layer.set('name', settings.name);\n return layer;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport VectorSource from 'ol/source/Vector';\nimport { Vector as Layer } from 'ol/layer';\nimport { FeatureLayerSettings } from './feature-layer.settings';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { AddLayerCommand } from '../../../messages/commands/add-layer.command';\nimport { filter, first } from 'rxjs/operators';\nimport { RemoveLayerCommand } from '../../../messages/commands/remove-layer.command';\nimport { FeatureLayerFactory } from './feature-layer.factory';\n\n@Component({\n selector: 'art-feature-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeatureLayerComponent extends DestructibleComponent implements OnInit {\n public layer: Layer<VectorSource<any>> | null = null;\n\n constructor(private postboy: MapPostboyService, private factory: FeatureLayerFactory) {\n super();\n }\n\n _settings: FeatureLayerSettings = new FeatureLayerSettings();\n\n @Input() set settings(value: FeatureLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddLayerCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveLayerCommand(this.layer));\n }\n}\n","import { IdGenerator } from '../../../common/id.generator';\nimport Style, { StyleFunction } from 'ol/style/Style';\nimport { IIdentified } from '../../../models/i-identified';\n\nexport class ClusterLayerSettings {\n name: string = IdGenerator.get();\n zIndex: number = 1;\n /**\n * The maximum view zoom level (inclusive) at which this layer will be visible.\n *\n * @type {number}\n * @default 19\n */\n maxZoom: number = 19;\n /**\n * The minimum view zoom level (exclusive) at which this layer will be visible.\n *\n * @type {number}\n */\n minZoom: number = 0;\n /**\n * Distance in pixels within which features will be clustered together.\n *\n * @type {number}\n */\n distance: number = 20;\n bbox: boolean = false;\n clusterCancel: number = 14;\n style?: (features: IIdentified[]) => Style;\n\n /**\n * Creates a copy of the given ClusterLayerSettings object.\n *\n * @param {ClusterLayerSettings} model - The ClusterLayerSettings object to be copied.\n * @returns {ClusterLayerSettings} - A new ClusterLayerSettings object that is a copy of the original object.\n */\n public static copy(model: ClusterLayerSettings): ClusterLayerSettings {\n const result = new ClusterLayerSettings();\n result.name = model.name;\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zIndex = model.zIndex;\n result.bbox = model.bbox;\n result.clusterCancel = model.clusterCancel;\n result.distance = model.distance;\n result.style = model.style;\n return result;\n }\n\n /**\n * Set the z-index for the ClusterLayer.\n *\n * @param {number} zIndex - The new z-index for the ClusterLayer.\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setZIndex(zIndex: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the distance value for ClusterLayerSettings.\n *\n * @param {number} distance - The distance value to be set.\n * @return {ClusterLayerSettings} - The modified ClusterLayerSettings object.\n */\n setDistance(distance: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, distance });\n }\n\n /**\n * Sets the name of the ClusterLayerSettings object.\n *\n * @param {string} name - The name to set for the ClusterLayerSettings.\n * @return {ClusterLayerSettings} - A new ClusterLayerSettings object with the updated name.\n */\n setName(name: string): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, name });\n }\n\n /**\n * Sets the maximum zoom level for the Cluster Layer.\n *\n * @param {number} maxZoom - The maximum zoom level to be set.\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setMaxZoom(maxZoom: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the ClusterLayerSettings.\n *\n * @param {number} minZoom - The minimum zoom level to set.\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setMinZoom(minZoom: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the cluster cancel number for the ClusterLayerSettings.\n *\n * @param {number} clusterCancel - The new cluster cancel number.\n * @returns {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setClusterCancel(clusterCancel: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, clusterCancel });\n }\n\n /**\n * Sets the value of 'bbox' property in the ClusterLayerSettings object.\n *\n * @param {boolean} bbox - A boolean value indicating whether to include bounding box calculation in the cluster layer settings.\n * @returns {ClusterLayerSettings} - The updated ClusterLayerSettings object with the newly set 'bbox' value.\n */\n setBbox(bbox: boolean): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, bbox });\n }\n\n /**\n * Sets the style for the ClusterLayerSettings.\n *\n * @param {function} style - A function that takes an array of identified features as input and returns a Style or StyleFunction.\n *\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object with the new style applied.\n */\n setStyle(style: (features: IIdentified[]) => Style | StyleFunction): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, style });\n }\n\n /**\n * Checks if the current ClusterLayerSettings object is the same as the specified model.\n *\n * @param {ClusterLayerSettings} model - The model to compare with the current object.\n *\n * @return {boolean} - Returns true if the current ClusterLayerSettings object is the same as the specified model, otherwise false.\n */\n public isSame(model: ClusterLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.name !== model.name) return false;\n if (this.distance !== model.distance) return false;\n if (this.clusterCancel !== model.clusterCancel) return false;\n if (this.bbox !== model.bbox) return false;\n if (this.style !== model.style) return false;\n return true;\n }\n}\n","import { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapClickEvent, MapRenderedEvent } from '../../../messages';\nimport { Vector as Layer } from 'ol/layer';\nimport Cluster from 'ol/source/Cluster';\nimport { ClusterLayerSettings } from './cluster-layer.settings';\nimport { FitToFeaturesCommand } from '../../../messages/commands/fit-to-features.command';\nimport { MapMoveEndEvent } from '../../../messages/events/map-move-end.event';\nimport { auditTime } from 'rxjs/operators';\nimport { combineLatest } from 'rxjs';\nimport { Map } from 'ol';\n\nexport class ClusterLayerManager {\n constructor(\n private settings: ClusterLayerSettings,\n public readonly layer: Layer<Cluster>,\n private postboy: MapPostboyService,\n ) {\n this.observeClick();\n this.observeMapMovement();\n }\n\n private observeMapMovement() {\n combineLatest([\n this.postboy.sub(MapMoveEndEvent).pipe(auditTime(250)),\n this.postboy.sub(MapRenderedEvent),\n ]).subscribe(([movement, renderEvent]) => {\n this.checkClusterNecessity(renderEvent.map);\n });\n }\n\n private observeClick() {\n this.postboy.sub(MapClickEvent).subscribe((m) => {\n if ((m.features[this.settings.name]?.length ?? 0) > 1) {\n this.postboy.fire(new FitToFeaturesCommand(m.features[this.settings.name], -1));\n }\n });\n }\n\n private checkClusterNecessity(map: Map): void {\n let zoom = map.getView().getZoom() ?? 0;\n const distance = zoom > this.settings.clusterCancel ? 0 : this.settings.distance;\n this.layer?.getSource()?.setDistance(distance);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ClusterLayerSettings } from './cluster-layer.settings';\nimport { Vector as Source } from 'ol/source';\nimport { Vector as Layer } from 'ol/layer';\nimport { bbox } from 'ol/loadingstrategy';\nimport Polygon, { fromExtent } from 'ol/geom/Polygon';\nimport Cluster from 'ol/source/Cluster';\nimport { Geometry, Point } from 'ol/geom';\nimport { ClusterLayerManager } from './cluster-layer.manager';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { StyleFunction } from 'ol/style/Style';\nimport { Feature } from 'ol';\nimport { MapConstants } from '../../../models/map.constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClusterLayerFactory {\n public build(settings: ClusterLayerSettings, postboy: MapPostboyService): ClusterLayerManager {\n const source = new Source({\n strategy: settings.bbox ? bbox : undefined,\n });\n const cluster = new Cluster({\n distance: settings.distance,\n source: source,\n geometryFunction: (feature) => {\n const geom = feature.getGeometry();\n if (geom?.getType() == 'Point') {\n return geom as Point;\n } else if (geom?.getType() == 'Polygon') {\n return (geom as Polygon)?.getInteriorPoint();\n } else if (geom?.getType() == 'MultiPolygon') {\n return fromExtent(geom.getExtent())?.getInteriorPoint();\n }\n return undefined as any;\n },\n });\n const layer = new Layer({\n source: cluster,\n maxZoom: settings.maxZoom || undefined,\n minZoom: settings.minZoom || undefined,\n zIndex: settings.zIndex || 0,\n });\n layer.setStyle(this.styleFunc(settings));\n layer.set('name', settings.name);\n return new ClusterLayerManager(settings, layer, postboy);\n }\n\n styleFunc(settings: ClusterLayerSettings): StyleFunction {\n return (feature) => {\n const features = feature.get('features') as Feature<Geometry>[];\n if (!settings.style) return undefined;\n return settings.style(features.map((f) => ({ id: f.getId()!, ...f.get(MapConstants.FeatureInfo) })));\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { AddLayerCommand } from '../../../messages/commands/add-layer.command';\nimport { RemoveLayerCommand } from '../../../messages/commands/remove-layer.command';\nimport { ClusterLayerManager } from './cluster-layer.manager';\nimport { ClusterLayerSettings } from './cluster-layer.settings';\nimport { ClusterLayerFactory } from './cluster-layer-factory.service';\n\n/**\n * Represents a cluster layer component.\n */\n@Component({\n selector: 'art-cluster-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClusterLayerComponent extends DestructibleComponent implements OnInit {\n public manager: ClusterLayerManager | null = null;\n\n constructor(private postboy: MapPostboyService, private factory: ClusterLayerFactory) {\n super();\n }\n\n _settings: ClusterLayerSettings = new ClusterLayerSettings();\n\n /**\n * Sets the settings for the cluster layer.\n *\n * @param {ClusterLayerSettings | undefined} value - The settings for the cluster layer.\n */\n @Input() set settings(value: ClusterLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.manager = this.factory.build(this._settings, this.postboy);\n this.postboy.fire(new AddLayerCommand(this.manager.layer));\n }\n\n private removeLayer() {\n if (this.manager?.layer) this.postboy.fire(new RemoveLayerCommand(this.manager.layer));\n }\n}\n","export class ImageLayerSettings {\n /**\n * Represents the tiles URL.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/{z}/{x}/{y}.png'\n */\n url: string = '';\n /**\n * Use interpolated values when resampling.\n * By default, linear interpolation is used when resampling.\n * Set to false to use the nearest neighbor instead.\n */\n interpolate?: boolean = undefined;\n /**\n * The projection of the coordinate system.\n *\n * @type {string}\n * @default 'EPSG:3857'\n */\n projection: string = 'EPSG:3857';\n extent: number[] = [0, 0, 0, 0];\n /**\n * Additional headers that should be added to each tile request\n *\n * @type {Record<string, string>}\n * @default An empty array\n */\n requestHeaders: Record<string, string> | null = null;\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {ImageLayerSettings} model - The tile layer settings to be copied.\n * @return {ImageLayerSettings} - A new instance of ImageLayerSettings with the same properties as the model.\n */\n public static copy(model: ImageLayerSettings): ImageLayerSettings {\n const result = new ImageLayerSettings();\n result.interpolate = model.interpolate;\n result.projection = model.projection;\n result.extent = model.extent;\n result.url = model.url;\n result.requestHeaders = model.requestHeaders;\n return result;\n }\n\n /**\n * Sets the URL of the ImageLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {ImageLayerSettings} - The updated ImageLayerSettings object.\n */\n setUrl(url: string): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, url });\n }\n\n /**\n * Sets the interpolation state for the image layer settings.\n *\n * @param {boolean} [interpolate] - Use interpolated values when resampling.\n * By default, linear interpolation is used when resampling.\n * Set to false to use the nearest neighbor instead.\n * @return {ImageLayerSettings} A new instance of ImageLayerSettings with the updated interpolation setting.\n */\n setInterpolate(interpolate?: boolean): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, interpolate });\n }\n\n setExtent(extent: number[]): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, extent });\n }\n\n /**\n * Sets the requestHeaders of the ImageLayerSettings object.\n *\n * @param {Record<string, string>} requestHeaders - The headers which should be provided.\n * @return {ImageLayerSettings} - The updated ImageLayerSettings object.\n */\n setRequestHeaders(requestHeaders: Record<string, string>): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, requestHeaders });\n }\n\n /**\n * Sets the maximum zoom level for the tile layer.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @returns {ImageLayerSettings} - The updated tile layer settings object.\n */\n setMaxZoom(maxZoom: number): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the Tile Layer.\n *\n * @param {number} minZoom - The minimum zoom level to be set.\n * @return {ImageLayerSettings} The modified ImageLayerSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the opacity of the ImageLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {ImageLayerSettings} - A new instance of ImageLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the projection for the tile layer settings.\n *\n * @param {string} projection - The desired projection for the tile layer settings.\n * @return {ImageLayerSettings} - The updated tile layer settings with the new projection.\n */\n setProjection(projection: string): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, projection });\n }\n\n /**\n * Checks if the current instance of ImageLayerSettings is equal to the given model.\n * @param {ImageLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: ImageLayerSettings): boolean {\n if (this.url !== model.url) return false;\n if (this.projection !== model.projection) return false;\n if (this.extent !== model.extent) return false;\n if (this.interpolate !== model.interpolate) return false;\n if (this.requestHeaders !== model.requestHeaders) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport Static from 'ol/source/ImageStatic';\nimport { ImageLayerSettings } from './image-layer.settings';\nimport ImageLayer from 'ol/layer/Image';\nimport { get, Projection } from 'ol/proj';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImageLayerFactory {\n public build(settings: ImageLayerSettings): ImageLayer<Static> {\n const source = new Static({\n url: settings.url,\n interpolate: settings.interpolate,\n crossOrigin: 'Anonymous',\n projection: get(settings.projection)!,\n imageExtent: settings.extent,\n });\n return new ImageLayer({ source });\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport TileLayer from 'ol/layer/Tile';\nimport { XYZ } from 'ol/source';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { TileLayerFactory } from '../tile-layer/tile-layer.factory';\nimport { TileLayerSettings } from '../tile-layer/tile-layer.settings';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { AddTileCommand } from '../../../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../../../messages/commands/remove-tile.command';\nimport { ImageLayerFactory } from './image-layer-factory';\nimport ImageLayer from 'ol/layer/Image';\nimport Static from 'ol/source/ImageStatic';\nimport { ImageLayerSettings } from './image-layer.settings';\nimport { AddImageLayerCommand } from '../../../messages/commands/add-image-layer.command';\nimport { RemoveImageLayerCommand } from '../../../messages/commands/remove-image-layer.command';\n\n@Component({\n selector: 'art-image-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageLayerComponent extends DestructibleComponent implements OnInit {\n public layer?: ImageLayer<Static>;\n\n constructor(private postboy: MapPostboyService, private factory: ImageLayerFactory) {\n super();\n }\n\n _settings: ImageLayerSettings = new ImageLayerSettings();\n\n @Input() set settings(value: ImageLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddImageLayerCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveImageLayerCommand(this.layer));\n }\n}\n","export class RasterTileLayerSettings {\n /**\n * The maximum zoom level for a map view.\n *\n * @type {number}\n * @default 19\n */\n maxZoom: number = 19;\n /**\n * The minimum zoom level allowed.\n *\n * @type {number}\n */\n minZoom: number = 0;\n /**\n * The opacity of an element.\n *\n * @type {number}\n * @default 0.6\n */\n opacity: number = 0.6;\n /**\n * Represents the tiles URL.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/{z}/{x}/{y}.png'\n */\n url: string = '';\n /**\n * The projection of the coordinate system.\n *\n * @type {string}\n * @default 'EPSG:3857'\n */\n projection: string = 'EPSG:3857';\n /**\n * Additional headers that should be added to each tile request\n *\n * @type {Record<string, string>}\n * @default An empty array\n */\n requestHeaders: Record<string, string> | null = null;\n /**\n * The priority of showing - layers with higher zIndex cover others in case of collisions\n */\n zIndex: number = 1;\n\n operation: (data: number[][] | ImageData[]) => number[] | ImageData = (d) => d[0] ?? [];\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {RasterTileLayerSettings} model - The tile layer settings to be copied.\n * @return {RasterTileLayerSettings} - A new instance of RasterTileLayerSettings with the same properties as the model.\n */\n public static copy(model: RasterTileLayerSettings): RasterTileLayerSettings {\n const result = new RasterTileLayerSettings();\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zIndex = model.zIndex;\n result.projection = model.projection;\n result.opacity = model.opacity;\n result.url = model.url;\n result.requestHeaders = model.requestHeaders;\n result.operation = model.operation;\n return result;\n }\n\n /**\n * Sets the URL of the RasterTileLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {RasterTileLayerSettings} - The updated RasterTileLayerSettings object.\n */\n setUrl(url: string): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, url });\n }\n\n /**\n * Sets the operation to apply on raster tile data.\n *\n * @param {function} operation - A function that takes an input of either a two-dimensional array of numbers or an array of ImageData objects and returns either a one-dimensional array of numbers or an ImageData object.\n * @return {RasterTileLayerSettings} A new instance of RasterTileLayerSettings with the updated operation.\n */\n setOperation(operation: (data: number[][] | ImageData[]) => number[] | ImageData): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, operation });\n }\n\n /**\n * Sets the requestHeaders of the RasterTileLayerSettings object.\n *\n * @param {Record<string, string>} requestHeaders - The headers which should be provided.\n * @return {RasterTileLayerSettings} - The updated RasterTileLayerSettings object.\n */\n setRequestHeaders(requestHeaders: Record<string, string>): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, requestHeaders });\n }\n\n /**\n * Sets the maximum zoom level for the tile layer.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @returns {RasterTileLayerSettings} - The updated tile layer settings object.\n */\n setMaxZoom(maxZoom: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the z-index for the RasterTileLayerSettings.\n *\n * @param {number} zIndex - The new z-index to be assigned.\n * @return {RasterTileLayerSettings} A new RasterTileLayerSettings instance with the updated z-index.\n */\n setZIndex(zIndex: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the minimum zoom level for the Tile Layer.\n *\n * @param {number} minZoom - The minimum zoom level to be set.\n * @return {RasterTileLayerSettings} The modified RasterTileLayerSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the opacity of the RasterTileLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {RasterTileLayerSettings} - A new instance of RasterTileLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the projection for the tile layer settings.\n *\n * @param {string} projection - The desired projection for the tile layer settings.\n * @return {RasterTileLayerSettings} - The updated tile layer settings with the new projection.\n */\n setProjection(projection: string): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, projection });\n }\n\n /**\n * Checks if the current instance of RasterTileLayerSettings is equal to the given model.\n * @param {RasterTileLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: RasterTileLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.url !== model.url) return false;\n if (this.projection !== model.projection) return false;\n if (this.opacity !== model.opacity) return false;\n if (this.requestHeaders !== model.requestHeaders) return false;\n if (this.operation !== model.operation) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Raster, XYZ } from 'ol/source';\nimport { TileCoord } from 'ol/tilecoord';\nimport { get } from 'ol/proj';\nimport { Tile } from 'ol';\nimport { RasterTileLayerSettings } from './raster-tile-layer.settings';\nimport ImageLayer from 'ol/layer/Image';\nimport RasterSource from 'ol/source/Raster';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RasterTileLayerFactory {\n public build(settings: RasterTileLayerSettings): ImageLayer<Raster> {\n const source = new XYZ({\n tileSize: 256,\n maxZoom: settings.maxZoom || 14,\n minZoom: settings.minZoom || 1,\n projection: get(settings.projection)!,\n tileUrlFunction: this.getTileFunc(settings),\n crossOrigin: 'Anonymous',\n tileLoadFunction: !!settings.requestHeaders\n ? (tile, src: string) => this.tileLoader(tile, src, settings.requestHeaders!)\n : undefined,\n });\n const raster = new RasterSource({\n sources: [source],\n operationType: 'image',\n operation: settings.operation,\n });\n return new ImageLayer({ source: raster, opacity: settings.opacity, zIndex: settings.zIndex });\n }\n\n private getTileFunc(settings: RasterTileLayerSettings): (tileCoord: TileCoord) => string {\n return (tileCoord) => {\n const zoom = tileCoord[0];\n const x = tileCoord[1];\n const y = tileCoord[2];\n const normalizedCoord = this.getNormalizedCoord({ x: x, y: y }, zoom);\n const bound = 1 << zoom;\n return settings.url\n .replace('{x}', String(normalizedCoord?.x || x))\n .replace('{z}', String(zoom))\n .replace('{y}', String(bound - (normalizedCoord?.y || y) - 1));\n };\n }\n\n private tileLoader(tile: Tile, src: string, headers: Record<string, string>) {\n const client = new XMLHttpRequest();\n client.open('GET', src);\n client.responseType = 'arraybuffer';\n Object.keys(headers).forEach((k: string) => client.setRequestHeader(k, headers[k]));\n client.onload = function () {\n if (this.response !== undefined) {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n const urlCreator = window.URL || (window as any).webkitURL;\n (tile as any).getImage().src = urlCreator.createObjectURL(blob);\n }\n };\n client.send();\n }\n\n private getNormalizedCoord(coord: { x: number; y: number }, zoom: number) {\n const y = coord.y;\n let x = coord.x;\n const tileRange = 1 << zoom;\n if (y < 0 || y >= tileRange) return null;\n if (x < 0 || x >= tileRange) x = ((x % tileRange) + tileRange) % tileRange;\n return { x: x, y: y };\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport TileLayer from 'ol/layer/Tile';\nimport { Raster, XYZ } from 'ol/source';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { TileLayerFactory } from '../tile-layer/tile-layer.factory';\nimport { TileLayerSettings } from '../tile-layer/tile-layer.settings';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { AddTileCommand } from '../../../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../../../messages/commands/remove-tile.command';\nimport ImageLayer from 'ol/layer/Image';\nimport { RasterTileLayerFactory } from './raster-tile-layer.factory';\nimport { RasterTileLayerSettings } from './raster-tile-layer.settings';\nimport { AddRasterTileCommand } from '../../../messages/commands/add-raster-tile-command';\nimport { RemoveRasterTileCommand } from '../../../messages/commands/remove-raster-tile.command';\n\n@Component({\n selector: 'art-raster-tile-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RasterTileLayerComponent extends DestructibleComponent {\n public layer?: ImageLayer<Raster>;\n\n constructor(private postboy: MapPostboyService, private factory: RasterTileLayerFactory) {\n super();\n }\n\n _settings: RasterTileLayerSettings = new RasterTileLayerSettings();\n\n @Input() set settings(value: RasterTileLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddRasterTileCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveRasterTileCommand(this.layer));\n }\n}\n","import { Style } from 'ol/layer/WebGLTile';\n\nexport class GeotiffTileLayerSettings {\n /**\n * The maximum source data value. Rendered values are scaled from 0 to 1 based on the configured min and max.\n *\n * @type {number | undefined}\n * @default undefined\n */\n max?: number = undefined;\n /**\n * The minimum source data value. Rendered values are scaled from 0 to 1 based on the configured min and max.\n *\n * @type {number | undefined}\n * @default undefined\n */\n min?: number = undefined;\n /**\n * Represents the URL of the tif.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/geotiff.tif'\n */\n url: string = '';\n /**\n * Style to apply to the layer.\n *\n * @type {Style | undefined}\n */\n style?: Style | undefined;\n\n /**\n * The opacity of an element.\n *\n * @type {number}\n * @default 0.6\n */\n opacity: number = 0.6;\n /**\n * The priority of showing - layers with higher zIndex cover others in case of collisions\n */\n zIndex: number = 1;\n /**\n * Represents the size of a block in a specific context, typically used to define dimensions or capacity.\n *\n * Optional property that, if defined, specifies the numerical value for the block size.\n *\n * @type {number|undefined}\n */\n blockSize?: number = undefined;\n /**\n * By default, the source data is normalized to values between 0 and 1 with scaling factors based on the raster statistics or min and max properties of each source. If instead you want to work with the raw values in a style expression, set this to false. Setting this option to false will make it so any min and max properties on sources are ignored.\n */\n normalize?: boolean = true;\n\n /**\n * Values to discard (overriding any nodata values in the metadata). When provided, an additional alpha band will be added to the data. Often the GeoTIFF metadata will include information about nodata values, so you should only need to set this property if you find that it is not already extracted from the metadata.\n */\n nodata?: number;\n\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {GeotiffTileLayerSettings} model - The tile layer settings to be copied.\n * @return {GeotiffTileLayerSettings} - A new instance of GeotiffTileLayerSettings with the same properties as the model.\n */\n public static copy(model: GeotiffTileLayerSettings): GeotiffTileLayerSettings {\n const result = new GeotiffTileLayerSettings();\n result.max = model.max;\n result.min = model.min;\n result.zIndex = model.zIndex;\n result.style = model.style;\n result.blockSize = model.blockSize;\n result.opacity = model.opacity;\n result.url = model.url;\n result.normalize = model.normalize;\n result.nodata = model.nodata;\n return result;\n }\n\n /**\n * Sets the URL of the GeotiffTileLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {GeotiffTileLayerSettings} - The updated GeotiffTileLayerSettings object.\n */\n setUrl(url: string): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, url });\n }\n\n setNodata(nodata: number | undefined): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, nodata });\n }\n\n /**\n * Sets the normalize property for the GeotiffTileLayerSettings instance.\n *\n * @param {boolean} normalize - Indicates whether the normalization setting should be enabled or disabled.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated normalize property.\n */\n setNormalize(normalize: boolean): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, normalize });\n }\n\n /**\n * Updates the style settings for the GeotiffTileLayerSettings and returns a new instance with the updated style.\n *\n * @param {Style} [style] - An optional style object that defines the new style settings.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated style.\n */\n setStyle(style?: Style): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, style });\n }\n\n /**\n * Sets the maximum value for the GeotiffTileLayerSettings.\n *\n * @param {number} max - The maximum value to set.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated maximum value.\n */\n setMax(max: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, max: max });\n }\n\n /**\n * Sets the z-index for the GeotiffTileLayerSettings.\n *\n * @param {number} zIndex - The new z-index to be assigned.\n * @return {GeotiffTileLayerSettings} A new GeotiffTileLayerSettings instance with the updated z-index.\n */\n setZIndex(zIndex: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the minimum value for the GeotiffTileLayerSettings.\n *\n * @param {number} min - The new minimum value to be set.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated minimum value.\n */\n setMin(min: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, min: min });\n }\n\n /**\n * Sets the opacity of the GeotiffTileLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {GeotiffTileLayerSettings} - A new instance of GeotiffTileLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the block size for the GeoTIFF tile layer.\n *\n * @param {number} blockSize - The size of the block to be set. This value typically defines the number of pixels for determining how data is grouped in tiles.\n * @return {GeotiffTileLayerSettings} A new instance of `GeotiffTileLayerSettings` with the updated block size.\n */\n setBlockSize(blockSize: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, blockSize });\n }\n\n /**\n * Checks if the current instance of GeotiffTileLayerSettings is equal to the given model.\n * @param {GeotiffTileLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: GeotiffTileLayerSettings): boolean {\n if (this.max !== model.max) return false;\n if (this.min !== model.min) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.url !== model.url) return false;\n if (this.style !== model.style) return false;\n if (this.blockSize !== model.blockSize) return false;\n if (this.opacity !== model.opacity) return false;\n if (this.normalize !== model.normalize) return false;\n if (this.nodata !== model.nodata) return false;\n return true;\n }\n}\n","import { GeoTIFF } from 'ol/source';\nimport { Injectable } from '@angular/core';\nimport { GeotiffTileLayerSettings } from './geotiff-tile-layer.settings';\nimport TileLayer from 'ol/layer/WebGLTile';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeotiffTileLayerFactory {\n public build(settings: GeotiffTileLayerSettings): TileLayer {\n const source = new GeoTIFF({\n sources: [\n {\n url: settings.url,\n min: settings.min,\n max: settings.max,\n nodata: settings.nodata,\n },\n ],\n sourceOptions: { blockSize: settings.blockSize },\n normalize: settings.normalize,\n });\n return new TileLayer({\n style: settings.style,\n source: source,\n zIndex: settings.zIndex,\n opacity: settings.opacity,\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport ImageLayer from 'ol/layer/Image';\nimport { Raster } from 'ol/source';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { GeotiffTileLayerFactory } from './geotiff-tile-layer.factory';\nimport { GeotiffTileLayerSettings } from './geotiff-tile-layer.settings';\nimport { RemoveGeotiffTileCommand } from '../../../messages/commands/remove-geotiff-tile.command';\nimport { AddGeotiffTileCommand } from '../../../messages/commands/add-geotiff-tile.command';\nimport TileLayer from 'ol/layer/WebGLTile';\n\n@Component({\n selector: 'lib-geotiff-tile-layer',\n imports: [],\n template: '',\n styleUrls: [],\n})\nexport class GeotiffTileLayerComponent extends DestructibleComponent {\n public layer?: TileLayer;\n\n constructor(private postboy: MapPostboyService, private factory: GeotiffTileLayerFactory) {\n super();\n }\n\n _settings: GeotiffTileLayerSettings = new GeotiffTileLayerSettings();\n\n @Input() set settings(value: GeotiffTileLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddGeotiffTileCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveGeotiffTileCommand(this.layer));\n }\n}\n","import { Injectable } from '@angular/core';\nimport Map from 'ol/Map';\nimport { MapSettings } from '../models';\nimport View from 'ol/View';\nimport { defaults } from 'ol/interaction';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapPlateFactory {\n public build(settings: MapSettings): Map {\n return new Map({\n controls: [],\n view: new View({\n center: settings?.center || [0, 0],\n zoom: settings?.zoom || 4,\n minZoom: settings?.minZoom || 0,\n maxZoom: settings?.maxZoom || 19,\n }),\n layers: [],\n interactions: defaults(settings.interactionSettings),\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n input,\n Input,\n NgZone,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MapLyrsLabel, MapSettings } from '../models';\nimport Map from 'ol/Map';\nimport { useGeographic } from 'ol/proj';\nimport { DestructibleComponent } from '../common/destructible.component';\nimport { MessageRegistratorService } from '../services/message-registrator.service';\nimport { MapPostboyService } from '../services/map-postboy.service';\nimport { MapRenderedEvent } from '../messages';\nimport { MapStateService } from '../services/map-state.service';\nimport { MapManagementService } from '../services/map-management.service';\nimport { MapPlateFactory } from './map-plate.factory.service';\nimport { MapClickService } from '../services/map-click.service';\nimport { MapFeatureService } from '../services/map-feature.service';\nimport { FeatureLayerComponent, FeatureLayerSettings, OsmTileLayerComponent } from './layers';\nimport { MapConstants } from '../models/map.constants';\nimport { DrawingService } from '../services/drawing/drawing.service';\nimport { DrawingGenerationService } from '../services/drawing/drawing-generation.service';\nimport { FeatureService } from '../services/feature.service';\nimport { FeatureModificationService } from '../services/drawing/feature-modification.service';\nimport { ControlsService } from '../services/controls/controls.service';\nimport { MapPointerMoveEvent } from '../messages/events/map-pointer-move.event';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'art-map-plate',\n standalone: true,\n templateUrl: './map-plate.component.html',\n styleUrls: ['./map-plate.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MessageRegistratorService,\n MapStateService,\n MapManagementService,\n MapClickService,\n MapFeatureService,\n DrawingService,\n DrawingGenerationService,\n FeatureService,\n FeatureModificationService,\n ControlsService,\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [OsmTileLayerComponent, FeatureLayerComponent, NgIf, NgTemplateOutlet],\n})\nexport class MapPlateComponent extends DestructibleComponent implements AfterViewInit {\n contentRef = input.required<TemplateRef<any>>();\n private renderTryCount = 0;\n map = signal<Map | null>(null);\n osmUrl = signal<string>('');\n drawingLayerSettings = new FeatureLayerSettings().setName(MapConstants.DrawingLayerId);\n\n constructor(\n private elementRef: ElementRef,\n private postboy: MapPostboyService,\n private mapFactory: MapPlateFactory,\n private registrator: MessageRegistratorService,\n private detector: ChangeDetectorRef,\n private ngZone: NgZone,\n ) {\n super();\n registrator.up();\n }\n\n _settings: MapSettings = new MapSettings();\n\n @Input() set settings(value: MapSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.setOsm();\n }\n\n private initializeMap() {\n this.ngZone.runOutsideAngular(() => {\n useGeographic();\n this.map.set(this.mapFactory.build(this._settings));\n this.map()?.setTarget(this.elementRef.nativeElement);\n this.detector.detectChanges();\n this.map()?.once('postrender', () => {\n this.map()?.updateSize();\n this.postboy.fire(new MapRenderedEvent(this.map()!));\n });\n this.map()?.on('pointermove', (ev) => {\n this.postboy.fire(new MapPointerMoveEvent(ev.pixel));\n });\n this.setOsm();\n });\n }\n\n ngAfterViewInit() {\n const mapContainer = this.elementRef.nativeElement;\n\n const checkContainerSize = () => {\n const { clientWidth, clientHeight } = mapContainer;\n if (clientWidth > 0 && clientHeight > 0) {\n this.initializeMap();\n } else {\n console.error(\"Map's container is not rendered yet or has zero size. Trying again in 100 ms.\");\n setTimeout(checkContainerSize, 20 * ++this.renderTryCount); // Проверка каждые 100 мс\n }\n };\n\n checkContainerSize();\n }\n\n onDestroy = () => {\n this.registrator.down();\n };\n\n private setOsm(): void {\n if (!this.map()) return;\n this.osmUrl.set(\n `https://mt{0-3}.google.com/vt/lyrs=${MapLyrsLabel.get(this._settings.lyrs)}&hl=${\n this._settings.language\n }&x={x}&y={y}&z={z}`,\n );\n this.detector.detectChanges();\n this.map()?.updateSize();\n }\n}\n","<ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n@if (osmUrl() && map()) {\r\n <art-osm-tile-layer [map]=\"map()!\" [url]=\"osmUrl()\" [opacity]=\"_settings.osmOpacity\"></art-osm-tile-layer>\r\n}\r\n@if (map()) {\r\n <art-feature-layer [settings]=\"drawingLayerSettings\"></art-feature-layer>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MarkerModel } from '../../../models/marker-model';\nimport { PlaceLayerFeaturesCommand } from '../../../messages/commands/place-layer-features.command';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\n\n/**\n * MarkersComponent is a component that displays markers on a map.\n * It listens for changes in the `markers` input property and\n * automatically puts the markers on the map using the MapPostboyService.\n */\n@Component({\n selector: 'art-markers',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MarkersComponent extends DestructibleComponent implements OnInit {\n @Input() layerName = '';\n\n constructor(private postboy: MapPostboyService) {\n super();\n }\n\n _markers: MarkerModel[] = [];\n\n /**\n * Sets the markers property.\n *\n * @param {MarkerModel[]} value - The array of MarkerModel objects to set as markers.\n */\n @Input() set markers(value: MarkerModel[]) {\n this._markers = value ?? [];\n this.putMarkers();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe(() => this.putMarkers());\n }\n\n private putMarkers(): void {\n if (!this._markers) return;\n this.postboy.fire(\n new PlaceLayerFeaturesCommand(\n this.layerName,\n this._markers.map((m) => m.feature),\n ),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { PlaceLayerFeaturesCommand } from '../../../messages/commands/place-layer-features.command';\nimport { PolygonModel } from '../../../models/polygon.model';\nimport { MapConstants } from '../../../models';\n\n/**\n * Component for rendering polygons on a map.\n * It listens for changes in the `polygons` input property and\n * automatically puts the polygons on the map using the MapPostboyService.\n */\n@Component({\n selector: 'art-polygons',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PolygonsComponent extends DestructibleComponent implements OnInit {\n @Input() layerName = '';\n\n constructor(private postboy: MapPostboyService) {\n super();\n }\n\n _polygons: PolygonModel[] = [];\n\n /**\n * Sets the value of polygons.\n *\n * @param {PolygonModel[]} value - The new value for polygons.\n */\n @Input() set polygons(value: PolygonModel[]) {\n this._polygons = value ?? [];\n this.putPolygons();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe(() => this.putPolygons());\n }\n\n private putPolygons(): void {\n if (!this._polygons) return;\n this.postboy.fire(\n new PlaceLayerFeaturesCommand(\n this.layerName,\n this._polygons.map((m) => {\n m.feature.set(MapConstants.FeatureLayerName, this.layerName);\n return m.feature;\n }),\n ),\n );\n }\n}\n","import Style from 'ol/style/Style';\nimport { Circle, Fill, Icon, Stroke, Text } from 'ol/style';\n\n/**\n * Helper class to create and modify marker styles.\n */\nexport class MarkerStyleHelper {\n /**\n * Creates a new Style object from an SVG.\n * @param {string} svg - The SVG string.\n * @param {Array<number>} [size=[30, 30]] - The size of the icon image.\n * @param {number} [zIndex=400] - The zIndex of the style.\n * @returns {Style} A new Style object.\n */\n public static fromSvg(svg: string, size: [number, number] = [30, 30], zIndex = 400): Style {\n return new Style({\n image: new Icon({\n src: 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg),\n size: size,\n }),\n zIndex,\n });\n }\n\n /**\n * Returns a Style object with a circle style.\n *\n * @param {number} radius - The radius of the circle.\n * @param {string} fill - The fill color of the circle. Format: '#RRGGBB' or 'rgba(R, G, B, A)'.\n * @param {string} strokeColor - The stroke color of the circle. Format: '#RRGGBB' or 'rgba(R, G, B, A)'.\n * @param {number} [strokeWidth=1] - The width of the stroke. Default is 1.\n * @returns {Style} - A Style object with a Circle image.\n */\n public static circle(radius: number, fill: string, strokeColor: string, strokeWidth = 1): Style {\n return new Style({\n image: new Circle({\n radius,\n fill: new Fill({ color: fill }),\n stroke: new Stroke({ color: strokeColor, width: strokeWidth }),\n }),\n });\n }\n\n /**\n * Applies the given Text to the provided Style.\n *\n * @param {Style} style - The Style to modify.\n * @param {Text} text - The Text to apply to the Style.\n * @return {Style} - The modified Style with the applied Text.\n */\n public static withText(style: Style, text: Text): Style {\n style.setText(text);\n return style;\n }\n}\n","import Style from 'ol/style/Style';\nimport { Circle, Fill, Stroke } from 'ol/style';\n\n/**\n * A helper class for creating polygon styles.\n * @class\n */\nexport class PolygonStyleHelper {\n /**\n * Creates a Style object with the given fill color, stroke color, and stroke width.\n *\n * @param {string} fill - The fill color in hexadecimal or RGB format.\n * @param {string} stroke - The stroke color in hexadecimal or RGB format.\n * @param {number} [strokeWidth=1] - The width of the stroke. Defaults to 1.\n * @return {Style} The created Style object.\n */\n public static simple(fill: string, stroke: string, strokeWidth: number = 1): Style {\n return new Style({\n fill: new Fill({\n color: fill,\n }),\n stroke: new Stroke({\n color: stroke,\n width: strokeWidth,\n }),\n });\n }\n\n /**\n * Creates a new Style object with the given fill, stroke, stroke width, and pin radius.\n *\n * @param {string} fill - The color to use for the fill of the style.\n * @param {string} stroke - The color to use for the stroke of the style.\n * @param {number} [strokeWidth=1] - The width of the stroke. Defaults to 1.\n * @param {number} [pinRadius=5] - The radius of the circle used as the image for the style. Defaults to 5.\n * @returns {Style} - The newly created Style object.\n */\n public static edit(fill: string, stroke: string, strokeWidth: number = 1, pinRadius = 5): Style {\n return new Style({\n image: new Circle({\n fill: new Fill({\n color: stroke,\n }),\n radius: pinRadius,\n }),\n fill: new Fill({\n color: fill,\n }),\n stroke: new Stroke({\n color: stroke,\n width: strokeWidth,\n }),\n });\n }\n}\n","import { Fill, Text } from 'ol/style';\n\n/**\n * Helper class for creating text styles.\n */\nexport class TextStyleHelper {\n /**\n * Creates and returns a new Text instance with specified styling properties.\n *\n * @param {string} text - The text content to display.\n * @param {string} font - The font style to use for the text.\n * @param {string} color - The color of the text.\n * @param {string|null|undefined} [backColor] - The background color of the text. Optional.\n * @param {number[]|null|undefined} [padding] - The padding around the text in pixels. Optional.\n * @param {string|null|undefined} [textBaseline] - The text baseline alignment. Optional.\n * @param {number|null|undefined} [offsetY] - The vertical offset for the text. Optional.\n * @return {Text} A new Text instance configured with the specified properties.\n */\n public static get(\n text: string,\n font: string,\n color: string,\n backColor?: string | null,\n padding?: number[] | null,\n textBaseline?: 'bottom' | 'top' | 'middle' | 'alphabetic' | 'hanging' | 'ideographic' | null,\n offsetY?: number | null,\n ): Text {\n return new Text({\n text: text,\n font: font,\n textAlign: 'center',\n fill: new Fill({\n color: color,\n }),\n backgroundFill: backColor ? new Fill({ color: backColor }) : undefined,\n padding: padding ?? undefined,\n textBaseline: textBaseline ?? undefined,\n offsetY: offsetY ?? undefined,\n });\n }\n}\n","import { Feature } from 'ol';\nimport { Circle, Geometry } from 'ol/geom';\nimport { FeatureOutputFormat } from '../models';\nimport { GeoJSON, WKT } from 'ol/format';\nimport Polygon from 'ol/geom/Polygon';\nimport { Coordinate } from 'ol/coordinate';\nimport { transform } from 'ol/proj';\nimport { METERS_PER_UNIT } from 'ol/proj/epsg4326';\n\n/**\n * A helper class for converting and stringify features.\n */\nexport class StringifyFeatureHelper {\n public static polygon(feature: Feature<Geometry>, format: FeatureOutputFormat = FeatureOutputFormat.GeoJson): string {\n return format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(feature)\n : new WKT().writeFeature(feature);\n }\n\n /**\n * Creates a polygon feature representing a circle based on a given feature with a circle geometry.\n *\n * @param {Feature<Geometry>} feature - The input feature with a circle geometry.\n * @param {FeatureOutputFormat} format - The format for outputting the polygon feature. (default: FeatureOutputFormat.GeoJson)\n *\n * @return {string} - The string representation of the polygon feature.\n */\n public static circle(feature: Feature<Geometry>, format: FeatureOutputFormat = FeatureOutputFormat.GeoJson): string {\n const circle = feature.getGeometry()! as Circle;\n const ext = feature.getGeometry()!.getExtent()!;\n const coords = [\n ...transform([ext[0], ext[1]], 'EPSG:4326', 'EPSG:3857'),\n ...transform([ext[2], ext[3]], 'EPSG:4326', 'EPSG:3857'),\n ];\n const radius = (coords[2] - coords[0]) / 2;\n\n const polygonGeom = new Polygon(StringifyFeatureHelper.drawCircle(circle.getCenter(), radius));\n return StringifyFeatureHelper.polygon(new Feature<Geometry>(polygonGeom), format);\n }\n\n /**\n * Draw a circle based on a center point and radius.\n *\n * @param {number[]} point - The center point coordinates in EPSG:4326 format.\n * @param {number} radius - The radius of the circle in meters.\n * @return {Coordinate[][]} - The coordinates of the circle boundary in EPSG:4326 format.\n */\n private static drawCircle(point: number[], radius: number): Coordinate[][] {\n const tetetemp = transform(point, 'EPSG:4326', 'EPSG:3857');\n // const tetetemp = point;\n const radians = Math.PI / 180; // degrees to radians\n const degrees = 180 / Math.PI; // radians to degrees\n const earthsradius = 6378137.0;\n const rlat = (radius / earthsradius) * degrees;\n const rlng = rlat / Math.cos(tetetemp[1] * radians);\n const extp: number[][] = [];\n for (let i = 0; i <= 32; i++) {\n const theta = Math.PI * (i / 16);\n extp.push([\n tetetemp[0] + rlng * Math.cos(theta) * METERS_PER_UNIT,\n tetetemp[1] + rlat * Math.sin(theta) * METERS_PER_UNIT,\n ]);\n }\n return [extp.map((e) => transform(e, 'EPSG:3857', 'EPSG:4326'))];\n }\n}\n","/**\n * Represents the settings for a zoom control.\n */\nexport class ZoomControlSettings {\n /**\n * The CSS class name of the control element.\n *\n * @type {string}\n */\n controlClass: string = 'ol-zoom';\n /**\n * The CSS class name for zoom in button.\n * @type {string}\n */\n zoomInClass: string = 'ol-zoom-in';\n /**\n * The CSS class name for the zoom out button element.\n *\n * @type {string}\n */\n zoomOutClass: string = 'ol-zoom-out';\n /**\n * The label for the zoom in action.\n *\n * @type {string}\n */\n zoomInLabel: string = 'Zoom In';\n /**\n * The label for the zoom out control.\n *\n * @type {string}\n */\n zoomOutLabel: string = 'Zoom Out';\n\n /**\n * Copies the provided ZoomControlSettings object.\n *\n * @param {ZoomControlSettings} model - The ZoomControlSettings object to be copied.\n * @return {ZoomControlSettings} - The copied ZoomControlSettings object.\n */\n public static copy(model: ZoomControlSettings): ZoomControlSettings {\n const result = new ZoomControlSettings();\n result.controlClass = model.controlClass;\n result.zoomInClass = model.zoomInClass;\n result.zoomOutClass = model.zoomOutClass;\n result.zoomInLabel = model.zoomInLabel;\n result.zoomOutLabel = model.zoomOutLabel;\n return result;\n }\n\n /**\n * Checks if the current ZoomControlSettings object is equal to the given model.\n *\n * @param {ZoomControlSettings} model - The ZoomControlSettings object to compare with.\n *\n * @return {boolean} - true if the current object is equal to the given model, false otherwise.\n */\n public isSame(model: ZoomControlSettings): boolean {\n if (this.zoomInClass !== model.zoomInClass) return false;\n if (this.zoomOutClass !== model.zoomOutClass) return false;\n if (this.zoomInLabel !== model.zoomInLabel) return false;\n if (this.controlClass !== model.controlClass) return false;\n if (this.zoomOutLabel !== model.zoomOutLabel) return false;\n return true;\n }\n\n /**\n * Sets the zoom in label of the Zoom Control Settings.\n *\n * @param {string} zoomInLabel - The label for the zoom in button.\n * @return {ZoomControlSettings} - The new Zoom Control Settings object with the updated zoom in label.\n */\n setZoomInLabel(zoomInLabel: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomInLabel });\n }\n\n /**\n * Sets the zoomOutClass property of the ZoomControlSettings object.\n *\n * @param {string} zoomOutClass - The CSS class to be assigned to the zoom out button.\n * @return {ZoomControlSettings} - The updated ZoomControlSettings object with the new zoomOutClass value.\n */\n setZoomOutClass(zoomOutClass: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomOutClass });\n }\n\n /**\n * Sets the zoom in class for the zoom control settings.\n *\n * @param {string} zoomInClass - The new zoom in class to be set.\n * @return {ZoomControlSettings} - The updated zoom control settings.\n */\n setZoomInClass(zoomInClass: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomInClass });\n }\n\n /**\n * Set the label for the zoom out control.\n *\n * @param {string} zoomOutLabel - The label for the zoom out control.\n * @returns {ZoomControlSettings} - The updated zoom control settings.\n */\n setZoomOutLabel(zoomOutLabel: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomOutLabel });\n }\n\n /**\n * Sets the control class for the ZoomControlSettings.\n *\n * @param {string} controlClass - The class name of the control to be set.\n *\n * @return {ZoomControlSettings} - The modified ZoomControlSettings object.\n */\n setControlClass(controlClass: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, controlClass });\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport Map from 'ol/Map';\nimport { ZoomControlSettings } from './zoom-control.settings';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { Zoom } from 'ol/control';\nimport { GenerateZoomControlExecutor } from '../../../messages/executors/generate-zoom-control.executor';\n\n/**\n * @class\n * @classdesc Represents a component for the Zoom control on a map.\n * @extends DestructibleComponent\n * @implements OnInit\n */\n@Component({\n selector: 'art-map-control-zoom',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapControlZoomComponent extends DestructibleComponent implements OnInit {\n private map?: Map;\n private control?: Zoom;\n\n constructor(private postboy: MapPostboyService) {\n super();\n }\n\n private _settings: ZoomControlSettings = new ZoomControlSettings();\n\n /**\n * Sets the settings for the Zoom Control.\n *\n * @param {ZoomControlSettings | undefined} value - The new settings for the Zoom Control.\n *\n * @description\n * This method sets the settings for the Zoom Control. It takes a parameter `value` which should be an object of type `ZoomControlSettings` or `undefined`.\n *\n * If the `value` is `undefined` or the same as the current settings, the method will return without making any changes.\n *\n */\n @Input() set settings(value: ZoomControlSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.setControl();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => {\n this.map = m.map;\n this.setControl();\n });\n }\n\n onDestroy = () => {\n this.eliminate();\n };\n\n private setControl(): void {\n if (!this.map) return;\n this.control = this.postboy.exec(new GenerateZoomControlExecutor(this._settings));\n this.map.addControl(this.control!);\n }\n\n private eliminate = () => !!this.map && !!this.control && this.map.removeControl(this.control);\n}\n","import { MapClickEvent } from '../../../messages';\nimport { IdGenerator } from '../../../common/id.generator';\n\nexport class TooltipSettings {\n public readonly id: string;\n containerClass: string = 'custom-tooltip-class';\n\n public constructor(id?: string) {\n this.id = id ?? IdGenerator.get();\n }\n\n public static copy(model: TooltipSettings): TooltipSettings {\n const result = new TooltipSettings(model.id);\n result.show = model.show;\n result.containerClass = model.containerClass;\n return result;\n }\n\n show: (ev: MapClickEvent) => boolean = (e) => true;\n\n setShow(show: (ev: MapClickEvent) => boolean): TooltipSettings {\n return TooltipSettings.copy({ ...this, show });\n }\n\n setClass(containerClass: string): TooltipSettings {\n return TooltipSettings.copy({ ...this, containerClass });\n }\n\n public isSame(model: TooltipSettings): boolean {\n if (this.show !== model.show) return false;\n if (this.containerClass !== model.containerClass) return false;\n if (this.id !== model.id) return false;\n return true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n input,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { TooltipSettings } from './tooltip.settings';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapClickEvent, MapRenderedEvent } from '../../../messages';\nimport Map from 'ol/Map';\nimport { CloseTooltipCommand } from '../../../messages/commands/close-tooltip.command';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport Overlay, { Options as OverlayOptions } from 'ol/Overlay';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'art-tooltip',\n standalone: true,\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n})\nexport class TooltipComponent extends DestructibleComponent implements OnInit {\n contentRef = input.required<TemplateRef<any>>();\n @ViewChild('tip') container!: ElementRef<HTMLElement>;\n overlay?: Overlay;\n show = false;\n private map?: Map;\n\n constructor(private postboy: MapPostboyService, private detector: ChangeDetectorRef) {\n super();\n }\n\n _settings: TooltipSettings = new TooltipSettings();\n\n @Input() set settings(value: TooltipSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.detector.detectChanges();\n }\n\n ngOnInit(): void {\n this.subs.push(this.observeMapRender());\n this.subs.push(this.observeMapClick());\n this.subs.push(this.observeClose());\n }\n\n addOverlay(coordinates: number[]): void {\n this.removeOverlay();\n this.overlay = new Overlay(this.options(coordinates));\n this.map?.addOverlay(this.overlay);\n this.show = true;\n this.detector.detectChanges();\n }\n\n options = (coordinates: number[]): OverlayOptions => {\n return {\n element: this.container?.nativeElement,\n autoPan: false,\n position: coordinates,\n };\n };\n\n private observeMapClick(): Subscription {\n return this.postboy.sub(MapClickEvent).subscribe((ev) => {\n this._settings.show(ev) ? this.addOverlay(ev.coordinates) : this.removeOverlay();\n });\n }\n\n private observeClose(): Subscription {\n return this.postboy\n .sub(CloseTooltipCommand)\n .pipe(filter((ev) => ev.tooltipId === this._settings.id))\n .subscribe(() => this.removeOverlay());\n }\n\n private observeMapRender() {\n return this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private removeOverlay = () => {\n !!this.overlay && this.map?.removeOverlay(this.overlay);\n this.show = false;\n };\n}\n","<div #tip [class]=\"['tooltip-wrapper', _settings.containerClass]\" [hidden]=\"!show\">\r\n <ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n</div>\r\n","/*\n * Public API Surface of maps\n */\n\nexport * from './models/index';\nexport * from './map-plate/map-plate.component';\nexport * from './services/map-postboy.service';\nexport * from './messages/index';\nexport * from './map-plate/layers/index';\nexport * from './map-plate/features/index';\nexport * from './services/map-postboy.service';\nexport * from './services/message-registrator.service';\nexport * from './helpers/index';\nexport * from './map-plate/controls/index';\nexport * from './map-plate/tooltips/index';\nexport * from './ol-proxy';\n","/*\n * Public API Surface of maps-components\n */\n\nexport * from './map/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapPostboyService","Source","i2.MapManagementService","i3.MapStateService","i4.MapFeatureService","i5.MapClickService","i6.DrawingService","i7.FeatureModificationService","i8.ControlsService","i2.TileLayerFactory","Layer","i2.FeatureLayerFactory","i2.ClusterLayerFactory","i2.ImageLayerFactory","i2.RasterTileLayerFactory","TileLayer","i2.GeotiffTileLayerFactory","i2.MapPlateFactory","i3.MessageRegistratorService","Circle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"maps-components.mjs","sources":["../../projects/maps-components/src/map/models/map-lyrs.enum.ts","../../projects/maps-components/src/map/models/map-settings.ts","../../projects/maps-components/src/map/common/id.generator.ts","../../projects/maps-components/src/map/models/map.constants.ts","../../projects/maps-components/src/map/models/marker-model.ts","../../projects/maps-components/src/map/models/polygon.model.ts","../../projects/maps-components/src/map/models/drawing-type.enum.ts","../../projects/maps-components/src/map/models/feature-format.enum.ts","../../projects/maps-components/src/map/models/map-control.ts","../../projects/maps-components/src/map/models/dictionary.ts","../../projects/maps-components/src/map/common/destructible.component.ts","../../projects/maps-components/src/map/messages/commands/add-control.command.ts","../../projects/maps-components/src/map/messages/commands/close-tooltip.command.ts","../../projects/maps-components/src/map/messages/commands/start-drawing.command.ts","../../projects/maps-components/src/map/messages/commands/cancel-drawing.command.ts","../../projects/maps-components/src/map/messages/commands/draw-selection-area.command.ts","../../projects/maps-components/src/map/messages/commands/modify-feature.command.ts","../../projects/maps-components/src/map/messages/commands/cancel-feature-modification.command.ts","../../projects/maps-components/src/map/messages/commands/remove-control.command.ts","../../projects/maps-components/src/map/messages/commands/set-map-center.command.ts","../../projects/maps-components/src/map/messages/commands/fit-to-polygons.command.ts","../../projects/maps-components/src/map/messages/events/map-rendered.event.ts","../../projects/maps-components/src/map/messages/events/map-click.event.ts","../../projects/maps-components/src/map/messages/events/map-move-end.event.ts","../../projects/maps-components/src/map/messages/events/map-pointer-move.event.ts","../../projects/maps-components/src/map/messages/events/map-feature-hovered.event.ts","../../projects/maps-components/src/map/messages/executors/filter-features-in-point.executor.ts","../../projects/maps-components/src/map/messages/executors/filter-features-in-area.executor.ts","../../projects/maps-components/src/map/messages/executors/calculate-area.executor.ts","../../projects/maps-components/src/map/messages/executors/get-map-position.executor.ts","../../projects/maps-components/src/map/messages/executors/polygon-self-intersection.executor.ts","../../projects/maps-components/src/map/messages/queries/get-features-in-area.query.ts","../../projects/maps-components/src/map/messages/queries/get-features-in-point.query.ts","../../projects/maps-components/src/map/messages/commands/fit-to-features.command.ts","../../projects/maps-components/src/map/messages/executors/get-geometry-length.executor.ts","../../projects/maps-components/src/map/messages/commands/add-layer.command.ts","../../projects/maps-components/src/map/messages/commands/place-layer-features.command.ts","../../projects/maps-components/src/map/messages/commands/remove-layer.command.ts","../../projects/maps-components/src/map/messages/commands/add-tile.command.ts","../../projects/maps-components/src/map/messages/commands/remove-tile.command.ts","../../projects/maps-components/src/map/messages/queries/get-layer.query.ts","../../projects/maps-components/src/map/messages/events/drawing-finished.event.ts","../../projects/maps-components/src/map/services/drawing/drawing-generation.service.ts","../../projects/maps-components/src/map/services/feature.service.ts","../../projects/maps-components/src/map/messages/executors/generate-draw.executor.ts","../../projects/maps-components/src/map/messages/executors/generate-zoom-control.executor.ts","../../projects/maps-components/src/map/map-plate/controls/map-control-zoom/zoom-control.factory.ts","../../projects/maps-components/src/map/messages/commands/add-image-layer.command.ts","../../projects/maps-components/src/map/messages/commands/remove-image-layer.command.ts","../../projects/maps-components/src/map/messages/commands/add-raster-tile-command.ts","../../projects/maps-components/src/map/messages/commands/remove-raster-tile.command.ts","../../projects/maps-components/src/map/messages/commands/add-geotiff-tile.command.ts","../../projects/maps-components/src/map/messages/commands/remove-geotiff-tile.command.ts","../../projects/maps-components/src/map/services/map-postboy.service.ts","../../projects/maps-components/src/map/services/map-management.service.ts","../../projects/maps-components/src/map/services/map-state.service.ts","../../projects/maps-components/src/map/services/map-feature.service.ts","../../projects/maps-components/src/map/services/map-click.service.ts","../../projects/maps-components/src/map/services/drawing/drawing.service.ts","../../projects/maps-components/src/map/services/drawing/feature-modification.service.ts","../../projects/maps-components/src/map/services/controls/controls.service.ts","../../projects/maps-components/src/map/services/message-registrator.service.ts","../../projects/maps-components/src/map/map-plate/layers/tile-layer/tile-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/tile-layer/tile-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/tile-layer/tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/feature-layer/feature-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/feature-layer/feature-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/feature-layer/feature-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.ts","../../projects/maps-components/src/map/map-plate/layers/cluster-layer/cluster-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/image-layer/image-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/image-layer/image-layer-factory.ts","../../projects/maps-components/src/map/map-plate/layers/image-layer/image-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/raster-tile/raster-tile-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/raster-tile/raster-tile-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/layers/geotiff-tile-layer/geotiff-tile-layer.settings.ts","../../projects/maps-components/src/map/map-plate/layers/geotiff-tile-layer/geotiff-tile-layer.factory.ts","../../projects/maps-components/src/map/map-plate/layers/geotiff-tile-layer/geotiff-tile-layer.component.ts","../../projects/maps-components/src/map/map-plate/map-plate.factory.service.ts","../../projects/maps-components/src/map/map-plate/map-plate.component.ts","../../projects/maps-components/src/map/map-plate/map-plate.component.html","../../projects/maps-components/src/map/map-plate/features/markers/markers.component.ts","../../projects/maps-components/src/map/map-plate/features/polygons/polygons.component.ts","../../projects/maps-components/src/map/helpers/marker-style.helper.ts","../../projects/maps-components/src/map/helpers/polygon-style.helper.ts","../../projects/maps-components/src/map/helpers/text-style.helper.ts","../../projects/maps-components/src/map/helpers/stringify-feature.helper.ts","../../projects/maps-components/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.ts","../../projects/maps-components/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.ts","../../projects/maps-components/src/map/map-plate/tooltips/tooltip/tooltip.settings.ts","../../projects/maps-components/src/map/map-plate/tooltips/tooltip/tooltip.component.ts","../../projects/maps-components/src/map/map-plate/tooltips/tooltip/tooltip.component.html","../../projects/maps-components/src/map/public-api.ts","../../projects/maps-components/src/public-api.ts","../../projects/maps-components/src/maps-components.ts"],"sourcesContent":["export enum MapLyrs {\n Hybrid = 1,\n Satellite,\n Streets,\n Terrain,\n}\n\nexport class MapLyrsLabel {\n private static lyrs = {\n [MapLyrs.Hybrid]: 's,h',\n [MapLyrs.Satellite]: 's',\n [MapLyrs.Streets]: 'm',\n [MapLyrs.Terrain]: 'p',\n };\n\n public static get(lyrs: MapLyrs): string {\n return MapLyrsLabel.lyrs[lyrs];\n }\n}\n","import { MapLyrs } from './map-lyrs.enum';\nimport { DefaultsOptions } from 'ol/interaction/defaults';\n\n/**\n * Represents the configurable settings for a map instance, providing\n * options for center coordinates, zoom levels, map layers, and language.\n */\nexport class MapSettings {\n center: number[] = [0, 0];\n maxZoom: number = 19;\n minZoom: number = 0;\n zoom: number = 4;\n lyrs: MapLyrs = MapLyrs.Hybrid;\n language: string = 'en';\n osmOpacity: number = 1;\n interactionSettings: DefaultsOptions = {};\n\n public static copy(model: MapSettings): MapSettings {\n const result = new MapSettings();\n result.center = model.center;\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zoom = model.zoom;\n result.lyrs = model.lyrs;\n result.interactionSettings = model.interactionSettings;\n result.language = model.language;\n result.osmOpacity = model.osmOpacity;\n return result;\n }\n\n /**\n * Updates the interaction settings of the map and returns a new MapSettings instance\n * with the updated settings.\n *\n * @param {DefaultsOptions} interactionSettings - The new interaction settings to be applied.\n * @return {MapSettings} A new MapSettings instance with the updated interaction settings.\n */\n setInteractionSettings(interactionSettings: DefaultsOptions): MapSettings {\n return MapSettings.copy({ ...this, interactionSettings });\n }\n\n /**\n * Sets the center for the map settings.\n *\n * @param {number[]} center - A two-element array representing the latitude and longitude of the map's center.\n * @return {MapSettings} A new MapSettings object with the updated center.\n */\n setCenter(center: number[]): MapSettings {\n return MapSettings.copy({ ...this, center });\n }\n\n /**\n * Sets the maximum zoom level for the map.\n *\n * @param {number} maxZoom - The maximum zoom level to be set.\n * @return {MapSettings} A new instance of MapSettings with the updated maximum zoom level.\n */\n setMaxZoom(maxZoom: number): MapSettings {\n return MapSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the map settings.\n *\n * @param {number} minZoom The minimum zoom level to be set. Must be a valid numeric value.\n * @return {MapSettings} A new MapSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): MapSettings {\n return MapSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Adjusts the zoom level of the map by setting the specified value.\n *\n * @param {number} zoom - The desired zoom level to be set.\n * @return {MapSettings} A new MapSettings instance with the updated zoom level.\n */\n setZoom(zoom: number): MapSettings {\n return MapSettings.copy({ ...this, zoom });\n }\n\n /**\n * Sets the layers in the map settings with the provided layers.\n *\n * @param {MapLyrs} lyrs - The layers to be set in the map settings.\n * @return {MapSettings} A new instance of MapSettings with the updated layers.\n */\n setLyrs(lyrs: MapLyrs): MapSettings {\n return MapSettings.copy({ ...this, lyrs });\n }\n\n /**\n * Updates the language setting for the map configuration and returns a new instance with the updated language.\n *\n * @param {string} language - The language to be set for the map configuration.\n * @return {MapSettings} A new instance of MapSettings with the updated language.\n */\n setLanguage(language: string): MapSettings {\n return MapSettings.copy({ ...this, language });\n }\n\n /**\n * Sets the opacity level for the OpenStreetMap layer.\n *\n * @param {number} osmOpacity - The opacity value for the OpenStreetMap layer, where 0 is fully transparent and 1 is fully opaque.\n * @return {MapSettings} A new MapSettings instance with the updated OpenStreetMap opacity.\n */\n setOsmOpacity(osmOpacity: number): MapSettings {\n return MapSettings.copy({ ...this, osmOpacity });\n }\n\n /**\n * Compares the current MapSettings instance with another to determine if they are identical.\n *\n * @param {MapSettings} model - The MapSettings instance to compare with the current instance.\n * @return {boolean} Returns true if both MapSettings instances have the same properties and values; otherwise, false.\n */\n public isSame(model: MapSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zoom !== model.zoom) return false;\n if (this.lyrs !== model.lyrs) return false;\n if (this.language !== model.language) return false;\n if (this.interactionSettings !== model.interactionSettings) return false;\n if (this.osmOpacity !== model.osmOpacity) return false;\n return this.center.length === model.center.length && !this.center.filter((c, i) => c !== model.center[i]).length;\n }\n}\n","export class IdGenerator {\n private static collection = 'ABCDEFGHIJKLMNOPQRSTUVWXTZ0123456789'.split('');\n\n public static get(): string {\n let result: string[] = [];\n for (let i = 0; i < 7; i++) {\n result.push(\n IdGenerator.collection\n .sort(() => 0.5 - Math.random())\n .slice(0, 5)\n .join(''),\n );\n }\n return result.join('-');\n }\n}\n","export class MapConstants {\n public static FeatureInfo = 'f-info';\n public static DrawingLayerId = '93a981756ec7';\n public static FeatureLayerName = 'L-253';\n}\n","import { IdGenerator } from '../common/id.generator';\nimport { Feature } from 'ol';\nimport { Geometry, Point } from 'ol/geom';\nimport { MapConstants } from './map.constants';\n\nexport class MarkerModel {\n public readonly id: string | number;\n\n constructor(\n public readonly lat: number,\n public readonly lng: number,\n id?: string | number,\n public info?: {\n [id: string]: any;\n },\n ) {\n this.id = id == null ? IdGenerator.get() : id;\n this._feature = this.getFeature();\n }\n\n private _feature: Feature<Geometry>;\n\n public get feature(): Feature<Geometry> {\n return this._feature;\n }\n\n private getFeature(): Feature<Geometry> {\n const feature = new Feature(new Point([this.lng, this.lat]));\n feature.setId(this.id);\n if (this.info) feature.set(MapConstants.FeatureInfo, this.info);\n return feature;\n }\n}\n","import { IdGenerator } from '../common/id.generator';\nimport { Feature } from 'ol';\nimport { Circle, Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { getCenter } from 'ol/extent';\nimport { MapConstants } from './map.constants';\nimport Polygon, { circular } from 'ol/geom/Polygon';\n\nexport class PolygonModel {\n public readonly id: string | number;\n public readonly lat: number;\n public readonly lng: number;\n\n private constructor(feature: Feature<Geometry>, id?: string | number, public info?: { [id: string]: any }) {\n this.id = id == null ? IdGenerator.get() : id;\n this._feature = feature;\n if (this.info) this._feature?.set(MapConstants.FeatureInfo, this.info);\n [this.lng, this.lat] = getCenter(this._feature.getGeometry()?.getExtent()!);\n }\n\n private _feature: Feature<Geometry>;\n\n public get feature(): Feature<Geometry> {\n return this._feature;\n }\n\n public static fromGeoJson(id: string | number, json: string, info?: { [id: string]: any }): PolygonModel {\n let feature = new GeoJSON().readFeature(json) as Feature<Geometry>;\n feature.setId(id);\n return new PolygonModel(feature, id, info);\n }\n\n public static fromWKT(id: string | number, wkt: string, info?: { [id: string]: any }): PolygonModel {\n let feature = new WKT().readFeature(wkt);\n feature.setId(id);\n return new PolygonModel(feature, id, info);\n }\n\n public static circle(\n id: string | number,\n lat: number,\n lng: number,\n radius: number,\n vertices: number = 32,\n info?: { [id: string]: any },\n ): PolygonModel {\n let feature = new Feature<Geometry>(circular([lng, lat], radius, vertices));\n feature.setId(id);\n return new PolygonModel(feature, id, info);\n }\n}\n","/**\n * Enum representing various drawing types.\n *\n * This enumeration is used to define the types of drawable shapes\n * within a specific drawing context. Each member corresponds to\n * a specific type of drawing.\n *\n * Members:\n * - `Polygon`: Represents a polygonal shape (e.g., triangle, pentagon, etc.).\n * - `Circle`: Represents a circular shape.\n * - `Square`: Represents a square shape.\n * - `Box`: Represents a rectangular box shape.\n */\nexport enum DrawingType {\n Polygon = 1,\n Circle,\n Square,\n Box,\n LineString,\n}\n","/**\n * An enumeration representing different formats for feature outputs.\n * This can be used to specify the desired output format when dealing with geospatial data.\n *\n * Enumerators:\n * - GeoJson: Represents the GeoJSON format for geospatial data.\n * - WKT: Represents the Well-Known Text (WKT) format for geospatial data.\n */\nexport enum FeatureOutputFormat {\n GeoJson = 1,\n WKT,\n Geometry,\n}\n","import { Control } from 'ol/control';\nimport { Options } from 'ol/control/Control';\n\n/**\n *\n * A control is a visible widget with a DOM element in a fixed position on the screen. They can involve user input (buttons), or be informational only; the position is determined using CSS. By default, these are placed in the container with CSS class name ol-overlaycontainer-stopevent, but can use any outside DOM element.\n * This is the base class for controls. You can use it for simple custom controls by creating the element with listeners, creating an instance:\n * var myControl = new Control({element: myElement}); and then adding this to the map.\n * The main advantage of having this as a control rather than a simple separate DOM element is that preventing propagation is handled for you. Controls will also be objects in a module:ol/Collection~Collection, so you can use their methods.\n * You can also extend this base for your own control class. See examples/custom-controls for an example of how to do this.\n */\nexport class MapControl extends Control {\n constructor(options: Options) {\n super(options);\n }\n}\n","/**\n * A generic class representing a dictionary structure with key-value pairs.\n * Provides utilities for adding, updating, removing, and iterating over elements.\n *\n * @template T The type of values in the dictionary.\n */\nexport class Dictionary<T> {\n public readonly collection: Record<string, T> = {};\n private readonly _keys = new Set<string>();\n\n /**\n * Creates a shallow copy of the given dictionary, optionally applying\n * a transformation function to each element during the cloning process.\n *\n * @param {Dictionary<T>} dic - The dictionary to be cloned.\n * @param {(e: T, k: string) => T} [action] - An optional transformation function\n * that is called for each element. The function takes the element value and\n * its key as arguments and returns the modified value.\n * @return {Dictionary<T>} A new dictionary that is a clone of the input dictionary\n * with transformations applied if the action function is provided.\n */\n public static clone<T>(dic: Dictionary<T>, action?: (e: T, k: string) => T): Dictionary<T> {\n return Dictionary.create(dic.collection, action);\n }\n\n /**\n * Creates a Dictionary instance from the given array of elements.\n *\n * @param {T[]} list - An array of elements to be converted into a Dictionary.\n * @param {(e: T) => string} id - A function that produces a unique identifier for each element in the array.\n * @return {Dictionary<T>} A Dictionary where the keys are unique identifiers derived from the elements of the array, and the values are the corresponding elements.\n */\n public static fromList<T>(list: T[], id: (e: T) => string): Dictionary<T> {\n const result = new Dictionary<T>();\n list.forEach((e) => result.put(id(e), e));\n return result;\n }\n\n /**\n * Creates a new Dictionary instance from a given Record, optionally applying an action to each element.\n *\n * @param {Record<string, T>} dic The input dictionary object.\n * @param {(e: T, k: string) => T} [action] An optional callback function to transform each element.\n * The function receives the value and key of each element.\n * @return {Dictionary<T>} A new Dictionary instance populated with the elements from the input dictionary,\n * potentially transformed by the action callback if provided.\n */\n public static create<T>(dic: Record<string, T>, action?: (e: T, k: string) => T): Dictionary<T> {\n const result = new Dictionary<T>();\n Object.entries(dic).forEach(([key, value]) => {\n result.put(key, action ? action(value, key) : value);\n });\n return result;\n }\n\n /**\n * Retrieves all the keys as an array of strings from the internal data structure.\n *\n * @return {string[]} An array containing the keys.\n */\n public get keys(): string[] {\n return Array.from(this._keys);\n }\n\n /**\n * Retrieves the number of key-value pairs currently stored.\n *\n * @return {number} The current size of the collection.\n */\n public get size(): number {\n return this._keys.size;\n }\n\n /**\n * Finds and returns the first element in the collection that satisfies the provided predicate function.\n *\n * @param {function(T): boolean} predicate - A function used to test each element of the collection. Returns `true` to select the element, `false` otherwise.\n * @return {T | null} The first element in the collection that satisfies the predicate, or `null` if no such element is found.\n */\n public find(predicate: (value: T) => boolean): T | null {\n let result: T | null = null;\n this.forEach((e) => {\n if (result === null && predicate(e)) result = e;\n });\n return result;\n }\n\n /**\n * Checks if a given key exists within the dictionary.\n *\n * @param {string} key - The key to check for existence in the collection.\n * @returns {boolean} True if the key exists, false otherwise.\n */\n public has = (key: string): boolean => this._keys.has(key);\n\n /**\n * Retrieves the value associated with the specified key from the collection if it exists.\n *\n * @param {string} key - The key whose associated value is to be retrieved.\n * @return {T | null} The value associated with the specified key, or null if the key does not exist.\n */\n public take(key: string): T | null {\n return this._keys.has(key) ? this.collection[key] : null;\n }\n\n /**\n * Adds or updates a value associated with the specified key in the collection.\n * If the value is null or undefined, removes the key from the collection.\n *\n * @param {string} key - The key to associate with the value in the collection.\n * @param {T | null} [value] - The value to store in the collection. If null or undefined, the key will be removed.\n * @return {void} Does not return a value.\n */\n public put(key: string, value?: T | null): void {\n if (value == null) return this.rmv(key);\n this.collection[key] = value;\n this._keys.add(key);\n }\n\n /**\n * Removes a specified key and its associated value from the collection.\n *\n * @param {string} key - The key to be removed from the collection.\n * @return {void} Does not return a value.\n */\n public rmv(key: string): void {\n if (!this._keys.has(key)) return;\n delete this.collection[key];\n this._keys.delete(key);\n }\n\n /**\n * Adds a new entry or updates an existing entry in the collection based on the provided key.\n * If the key already exists, it fetches the current value, applies the action, and replaces the value.\n * If the key does not exist, it uses the action to create a new value and adds it.\n *\n * @param {string} key - The key associated with the value to add or update.\n * @param {(current: T | null) => T} action - A function that takes the current value (if any) and returns the new value to be stored.\n * @return {void} - Does not return a value.\n */\n public addOrUpdate(key: string, action: (current: T | null) => T): void {\n this.put(key, action(this.take(key)));\n }\n\n /**\n * Iterates over each element in the collection and executes the provided callback function.\n *\n * @param {function(T, number): void} callback - A function that is called for each element of the collection.\n * It takes two arguments: the current element's value and the index.\n * @return {void} This method does not return a value.\n */\n public forEach(callback: (value: T, index: number) => void): void {\n Array.from(this._keys).forEach((key, index) => {\n callback(this.collection[key], index);\n });\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\n@Component({ template: '' })\nexport class DestructibleComponent implements OnDestroy {\n protected subs: Subscription[] = [];\n protected onDestroy?: () => void;\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n if (this.onDestroy) this.onDestroy();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\n/**\n * Represents a command to add a custom control to a map.\n */\nexport class AddControlCommand extends PostboyGenericMessage {\n static readonly ID = '2921fb19-f1c4-4bf4-97be-001f98241f3b';\n\n /**\n * Creates an instance of the class with the specified MapControl object.\n *\n * @param {MapControl} item - The MapControl object to be associated with the instance.\n */\n constructor(public item: MapControl) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * A command class that represents the action to close a tooltip.\n */\nexport class CloseTooltipCommand extends PostboyGenericMessage {\n static readonly ID = 'df687e26-7298-46d7-8911-d014801dafac';\n\n /**\n * Creates an instance of the class with the specified tooltip ID.\n *\n * @param {string} tooltipId - The unique identifier for the tooltip.\n */\n constructor(public tooltipId: string) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { DrawingType, FeatureOutputFormat } from '../../models';\nimport { StyleLike } from 'ol/style/Style';\n\n/**\n * Represents a command to start a drawing operation.\n */\nexport class StartDrawingCommand extends PostboyCallbackMessage<string | null> {\n static readonly ID = '4407e9ee-d6c3-4e77-8000-c1aae7433fb6';\n /**\n * Constructor for creating an instance of the class that represents a drawing feature with specific type, style, and output format.\n *\n * @param {DrawingType} type - The type of the drawing to be created.\n * @param {Style} style - The style defining visual appearance of the drawing.\n * @param {FeatureOutputFormat} [format=FeatureOutputFormat.GeoJson] - The format of the feature output. Defaults to GeoJson.\n */\n constructor(\n public type: DrawingType,\n public style: StyleLike,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n ) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents a command to cancel a drawing action.\n */\nexport class CancelDrawingCommand extends PostboyGenericMessage {\n static readonly ID = '192d70f8-9d12-4cb3-a8ad-0fc2dc5af1de';\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport Style from 'ol/style/Style';\nimport { IIdentified } from '../../models/i-identified';\nimport { Dictionary } from '../../models';\nimport { DrawingType } from '../../models';\n\n/**\n * Class representing a command to draw a selection area with a specific type and style.\n *\n * @return {Dictionary<IIdentified[]>} - a collection of features inside the selected area, grouped by a layer's name\n */\nexport class DrawSelectionAreaCommand extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n static readonly ID = '06e43f59-c6ba-41bb-9c5b-f6534d914905';\n\n /**\n * Constructs a new instance with the specified type, style, and optional set of ignored items.\n *\n * @param {DrawingType} type - The type of drawing to be created.\n * @param {Style} style - The style information for the drawing.\n * @param {Set<string>} [ignore=new Set<string>()] - Optional set of items to be ignored.\n */\n constructor(public type: DrawingType, public style: Style, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { FeatureOutputFormat, PolygonModel } from '../../models';\nimport { StyleLike } from 'ol/style/Style';\n\n/**\n * Represents a command to modify a feature with a specific style and output format\n * for a polygonal model.\n *\n * @return {string | null} a string representation of the modified feature in the appropriate format\n */\nexport class ModifyFeatureCommand extends PostboyCallbackMessage<string | null> {\n static readonly ID = '8f76507e-f18d-4232-bab7-f3d4e3d707bb';\n\n /**\n * Constructs an instance of the class.\n *\n * @param {PolygonModel} model - The model representing the polygon data.\n * @param {StyleLike} style - The style to be applied to the polygon.\n * @param {FeatureOutputFormat} [format=FeatureOutputFormat.GeoJson] - The output format of the feature, defaults to GeoJson.\n * @param {boolean} [draggable=true] - Determines whether the polygon is draggable, defaults to true.\n */\n constructor(\n public model: PolygonModel,\n public style: StyleLike,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n public draggable: boolean = true,\n ) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents a command to cancel a feature modification.\n */\nexport class CancelFeatureModificationCommand extends PostboyGenericMessage {\n static readonly ID = 'e7886353-53b3-4bbe-93b5-6490e5f1305e';\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\n/**\n * Represents a command to remove a map control from the map.\n *\n * The command is identified by a unique static ID, and it requires a MapControl item\n * to specify the control to be removed.\n *\n * @extends PostboyGenericMessage\n */\nexport class RemoveControlCommand extends PostboyGenericMessage {\n static readonly ID = '73bcb4f5-ce7d-4c71-b70d-e772100136a1';\n\n /**\n * Constructs an instance of the class.\n *\n * @param {MapControl} item - The map control instance to be removed.\n */\n constructor(public item: MapControl) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Forces map to move to a specific point\n */\nexport class SetMapCenterCommand extends PostboyGenericMessage {\n static readonly ID = 'd4e3cf4f-0be7-4c1a-8355-8607d02c3dea';\n\n /**\n *\n * @param lat - the desired latitude\n * @param lng - the desired longitude\n * @param zoom - the desired zoom; doesn't change zoom if undefined\n */\n constructor(public lat: number, public lng: number, public zoom?: number) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { PolygonModel } from '../../models';\n\n/**\n * FitToPolygonsCommand is a command used to fit a given set of polygon features\n * to the viewable area, optionally applying a zoom transformation afterwards.\n */\nexport class FitToPolygonsCommand extends PostboyGenericMessage {\n static readonly ID = '308394ce-48d3-45f5-8671-52207fba4be3';\n\n /**\n * Creates an instance of the class with specified polygon features and an optional zoom level.\n *\n * @param {PolygonModel[]} features - An array of polygon models to fit to.\n * @param {number} [zoomAfter=0] - Optional zoom level change to apply after initialization. Defaults to 0.\n */\n constructor(public features: PolygonModel[], public zoomAfter = 0) {\n super();\n }\n}\n","import Map from 'ol/Map';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents an event triggered when a map rendering process is completed.\n */\nexport class MapRenderedEvent extends PostboyGenericMessage {\n static readonly ID = '4515dde8-1519-4e3f-a0e3-10d3c52deabe';\n /**\n * Constructor for creating an instance of the class.\n *\n * @param {Map} map - The map instance to be used by the class.\n */\n constructor(public map: Map) {\n super();\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { IIdentified } from '../../models/i-identified';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents an event triggered by a click on a map, containing information about the\n * click's location, relevant entities, and features present at the clicked position.\n *\n * @extends {PostboyGenericMessage}\n */\nexport class MapClickEvent extends PostboyGenericMessage {\n static readonly ID = 'ee31a86c-e838-4531-8399-983753a354df';\n\n /**\n * Creates an instance of this class with the provided coordinates, entities, and features.\n *\n * @param {number[]} coordinates - An array representing the coordinates.\n * @param {{ [layer: string]: IIdentified[] }} entities - A mapping of layer names to arrays of IIdentified entities.\n * @param {{ [layer: string]: Feature<Geometry>[] }} features - A mapping of layer names to arrays of features with geometry.\n */\n constructor(\n public coordinates: number[],\n public entities: { [layer: string]: IIdentified[] },\n public features: { [layer: string]: Feature<Geometry>[] },\n ) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapPosition } from '../../models';\n\n/**\n * Represents an event that is triggered when the movement of a map ends.\n * This class is used to capture the final position of a map after a movement operation.\n *\n * @property {MapPosition | null} position - The final position of the map after movement ends. Can be null.\n */\nexport class MapMoveEndEvent extends PostboyGenericMessage {\n static readonly ID = 'd210ec7e-032f-4ce8-8a39-7b816519eaae';\n\n constructor(public position: MapPosition | null) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\n/**\n * Represents an event that is triggered when the pointer moves on a map.\n * This class extends PostboyGenericMessage.\n *\n * It contains information about the coordinates of the pointer when the event occurs.\n */\nexport class MapPointerMoveEvent extends PostboyGenericMessage {\n static readonly ID = '193cb41d-2489-45cc-b349-59c3ec18ed72';\n\n /**\n * Constructor for initializing an instance with a given point.\n *\n * @param {Array<number>} point - An array representing the coordinates of the point.\n */\n constructor(public point: Array<number>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { FeatureLike } from 'ol/Feature';\nimport { Feature } from 'ol';\n\n/**\n * Represents an event triggered when a map feature is hovered over.\n * This event contains information about the hovered feature and its associated layer.\n * Extends the PostboyGenericMessage class.\n */\nexport class MapFeatureHoveredEvent extends PostboyGenericMessage {\n static readonly ID = 'eb9b032a-1616-4823-a628-0fd8ffc3b57a';\n\n /**\n * Constructs an instance of the class.\n *\n * @param {Feature|null} feature - The feature associated with this instance. Can be null.\n * @param {string|null} layer - The layer associated with this instance. Can be null.\n */\n constructor(public feature: Feature | null, public layer: string | null) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\n\n/**\n * A class responsible for executing filtering of geographical features\n * based on a specific geographical point (latitude and longitude).\n *\n * @template Feature - A geographical feature that is processed by the executor.\n * @template Geometry - The type of geometry associated with the feature.\n */\nexport class FilterFeaturesInPointExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n static readonly ID = 'dcbb156d-def3-45b4-91af-84d1483d8941';\n /**\n * Constructs a new instance with the specified latitude, longitude, and features.\n *\n * @param {number} lat - The latitude coordinate.\n * @param {number} lng - The longitude coordinate.\n * @param {Feature<Geometry>[]} features - The array of features associated with the location.\n */\n constructor(public lat: number, public lng: number, public features: Feature<Geometry>[]) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\n\n/**\n * A class that extends the PostboyExecutor to filter geographical features within a specified area.\n * This class is designed to process a list of input features and determine which of them are located inside the provided area geometry.\n *\n * Parameters:\n * - `area`: A Geometry object defining the area to filter geographical features.\n * - `features`: An array of geographical features, represented as `Feature<Geometry>` objects, to be filtered by their presence within the specified area.\n */\nexport class FilterFeaturesInAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n static readonly ID = '4d26e1e3-e60f-4e49-804b-5b3eadc2adce';\n constructor(public area: Geometry, public features: Feature<Geometry>[]) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PolygonModel } from '../../models';\n\n/**\n * An executor responsible for calculating the area of a given polygon.\n *\n * Use this class to manage and execute area-calculation logic for a polygon.\n *\n * @return {number} - the spherical area (in square meters)\n */\nexport class CalculateAreaExecutor extends PostboyExecutor<number> {\n static readonly ID = '82347b8c-7635-45ec-85ef-75aaf43bc34c';\n\n constructor(public polygon: PolygonModel) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { MapPosition } from '../../models';\n\n/**\n * A message that allows to get the current state of the map.\n * If the map's state is not defined yet, the executor would return null\n * @returns {MapPosition | null}\n */\nexport class GetMapPositionExecutor extends PostboyExecutor<MapPosition | null> {\n public static readonly ID = '52c95689-d09b-4082-ba58-9183ea96a213';\n\n constructor() {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { PolygonModel } from '../../models';\n\nexport class PolygonSelfIntersectionExecutor extends PostboyGenericMessage {\n static readonly ID = 'a4ef116d-fe40-4e92-9d4a-653f8b398c62';\n\n constructor(public polygon: PolygonModel) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { Geometry } from 'ol/geom';\nimport { IIdentified } from '../../models/i-identified';\nimport { Dictionary } from '../../models';\n\n/**\n * Class representing a query to get features within a specified geographical area.\n * The query optionally takes a set of layer names to ignore during the operation.\n */\nexport class GetFeaturesInAreaQuery extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID = '317cf427-a029-4a43-97c4-cb6b8148ff65';\n\n /**\n * Constructor to initialize the object with a Geometry instance and an optional set of strings to ignore.\n *\n * @param {Geometry} area - The Geometry object used to define the area.\n * @param {Set<string>} [ignore] - An optional set of layer names that will be ignored. Defaults to an empty set.\n */\n constructor(public area: Geometry, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n}\n","import { PostboyCallbackMessage, PostboyExecutor } from '@artstesh/postboy';\nimport { Dictionary } from '../../models';\nimport { IIdentified } from '../../models/i-identified';\n\n/**\n * Represents a query to retrieve features located at a specific geographical point.\n * The query is defined by latitude, longitude, and an optional set of features to ignore.\n */\nexport class GetFeaturesInPointQuery extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID = '99bbc56f-34a2-4064-8300-13bb3d0662c1';\n\n /**\n * Constructor for initializing a geographic coordinate object.\n *\n * @param {number} lat - The latitude of the location.\n * @param {number} lng - The longitude of the location.\n * @param {Set<string>} [ignore=new Set<string>()] - An optional set of strings to ignore during processing.\n */\n constructor(public lat: number, public lng: number, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class FitToFeaturesCommand extends PostboyGenericMessage {\n static readonly ID = '04d67609-0b4c-4f52-aa53-ad0a3db967dc';\n\n constructor(public features: Feature<Geometry>[], public zoomAfter = 0) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Geometry } from 'ol/geom';\nimport { getLength } from 'ol/sphere';\n\nexport class GetGeometryLengthExecutor extends PostboyExecutor<number> {\n static readonly ID = '763146df-6d93-4dc2-a532-0e9ba2b2d023';\n\n constructor(public geometry: Geometry, public projection = 'EPSG:4326') {\n super();\n }\n}\n\nexport class GetGeometryLengthExecutorHandler {\n public handle(executor: GetGeometryLengthExecutor): number {\n return Math.round(getLength(executor.geometry, { projection: executor.projection }) * 100) / 100;\n }\n}\n","import { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport Cluster from 'ol/source/Cluster';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class AddLayerCommand extends PostboyGenericMessage {\n static readonly ID = '7fe68d71-350f-47e2-b1ae-62cc333e1572';\n\n constructor(public layer: Layer<VectorSource<any> | Cluster>) {\n super();\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class PlaceLayerFeaturesCommand extends PostboyGenericMessage {\n static readonly ID = '5f27a2cd-8d8a-4929-b703-8aee6dcdc21c';\n\n constructor(public layer: string, public features: Feature<Geometry>[]) {\n super();\n }\n}\n","import BaseLayer from 'ol/layer/Base';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class RemoveLayerCommand extends PostboyGenericMessage {\n static readonly ID = '1b60599c-599a-4fdb-bad2-23b12e435e1a';\n\n constructor(public layer: BaseLayer) {\n super();\n }\n}\n","import TileLayer from 'ol/layer/Tile';\nimport { XYZ } from 'ol/source';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class AddTileCommand extends PostboyGenericMessage {\n static readonly ID = 'ae29b7af-21aa-4b0a-8586-92c23779e6cb';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n}\n","import TileLayer from 'ol/layer/Tile';\nimport { XYZ } from 'ol/source';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class RemoveTileCommand extends PostboyGenericMessage {\n static readonly ID = 'dab0f861-bb25-46da-9388-717bfaae798f';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport Cluster from 'ol/source/Cluster';\n\nexport class GetLayerQuery extends PostboyCallbackMessage<Layer<VectorSource<any> | Cluster> | null> {\n public static readonly ID = 'd2683490-2aa2-4dee-855d-f752ce4d3be5';\n\n constructor(public name: string) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class DrawingFinishedEvent extends PostboyGenericMessage {\n static readonly ID = '9094e160-8df7-4868-883a-3436724106dd';\n}\n","import { Draw } from 'ol/interaction';\nimport { DrawingType } from '../../models';\nimport { createBox, createRegularPolygon, GeometryFunction } from 'ol/interaction/Draw';\nimport { GenerateDrawExecutor } from '../../messages/executors/generate-draw.executor';\n\nexport class DrawingGenerationService {\n public static getDraw(ev: GenerateDrawExecutor) {\n return new Draw({\n source: ev.layer.getSource()!,\n type: ev.type === DrawingType.Polygon ? 'Polygon' : ev.type === DrawingType.LineString ? 'LineString' : 'Circle',\n style: ev.style,\n geometryFunction: DrawingGenerationService.geometryFunc(ev.type),\n });\n }\n\n private static geometryFunc(type: DrawingType): GeometryFunction | undefined {\n switch (type) {\n case DrawingType.Circle:\n return createRegularPolygon(32);\n case DrawingType.Box:\n return createBox();\n case DrawingType.Square:\n return createRegularPolygon(4);\n }\n return undefined;\n }\n}\n","import { Circle, Geometry, GeometryCollection, LineString, Point } from 'ol/geom';\nimport Polygon, { fromCircle } from 'ol/geom/Polygon';\nimport { Feature } from 'ol';\nimport * as Sphere from 'ol/sphere';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\nimport { FilterFeaturesInPointExecutor } from '../messages';\n\nexport class FeatureService {\n constructor() {}\n\n public static filterFeaturesInArea(query: FilterFeaturesInAreaExecutor): Feature<Geometry>[] {\n return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()!));\n }\n\n public static filterFeaturesInPoint(query: FilterFeaturesInPointExecutor): Feature<Geometry>[] {\n return query.features.filter((f) =>\n FeatureService.booleanIntersects(f.getGeometry()!, new Point([query.lng, query.lat])),\n );\n }\n\n public static calculateArea(g: Geometry | undefined): number {\n if (!g) return 0;\n return Sphere.getArea(g, { projection: 'EPSG:4326' });\n }\n\n public static polygonSelfIntersects(feature: Feature<Geometry>): boolean {\n if (feature.getGeometry()!.getType() !== 'Polygon') return false;\n let intersections = 0;\n const segments = FeatureService.getSegmentsFromCoordinates(feature.getGeometry()!);\n for (let i = 0; i < segments.length; i++) {\n for (let z = i + 1; z < segments.length; z++) {\n if (!intersections && this.segmentIntersection(segments[i].getCoordinates(), segments[z].getCoordinates())) {\n intersections++;\n }\n }\n }\n return intersections !== 0;\n }\n\n private static booleanIntersects(g1: Geometry, g2: Geometry): boolean {\n if (g2.getType() === 'Point') return g1.intersectsCoordinate((g2 as Point).getCoordinates());\n if (g2.getType() === 'Circle') return g1.intersectsCoordinate((g2 as Circle).getCenter());\n if (g2.getType() === 'Polygon') return g1.intersectsCoordinate((g2 as Polygon).getInteriorPoint().getCoordinates());\n return false;\n }\n\n private static getSegmentsFromCoordinates(geom: Geometry): LineString[] {\n if (!geom) return [];\n const coords = (geom as any).getCoordinates();\n const line = new LineString(coords[0]);\n const segments: LineString[] = [];\n line.forEachSegment((s1, s2) => {\n const l = new LineString([s1, s2]);\n l.scale(0.999); // bug of the OL, as I see\n segments.push(l);\n });\n return segments;\n }\n\n private static segmentIntersection(s1: number[][], s2: number[][]): boolean {\n const a = s1[0],\n b = s1[1],\n c = s2[0],\n d = s2[1];\n const o1 = this.orientation(a, b, c);\n const o2 = this.orientation(a, b, d);\n const o3 = this.orientation(c, d, a);\n const o4 = this.orientation(c, d, b);\n return (\n (o1 != o2 && o3 != o4) ||\n (o1 == 0 && this.onSegment(a, d, b)) ||\n (o2 == 0 && this.onSegment(a, d, b)) ||\n (o3 == 0 && this.onSegment(d, a, d)) ||\n (o4 == 0 && this.onSegment(d, b, d))\n );\n }\n\n private static orientation(p: number[], q: number[], r: number[]): number {\n const val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);\n if (val == 0) return 0; // collinear\n return val > 0 ? 1 : 2; // clock or counterclock wise\n }\n\n private static onSegment(p: number[], q: number[], r: number[]): boolean {\n return (\n q[0] <= (p[0] > r[0] ? p[0] : r[0]) &&\n q[0] >= (p[0] < r[0] ? p[0] : r[0]) &&\n q[1] <= (p[1] > r[1] ? p[1] : r[1]) &&\n q[1] >= (p[1] < r[1] ? p[1] : r[1])\n );\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { Draw } from 'ol/interaction';\nimport { DrawingType } from '../../models';\nimport { StyleLike } from 'ol/style/Style';\n\nexport class GenerateDrawExecutor extends PostboyExecutor<Draw> {\n static readonly ID = '5d5f0737-ff70-461e-9a2e-bf6166c914cb';\n\n constructor(public layer: Layer<VectorSource<any>>, public style: StyleLike, public type: DrawingType) {\n super();\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { ZoomControlSettings } from '../../map-plate/controls/map-control-zoom/zoom-control.settings';\nimport { Zoom } from 'ol/control';\n\nexport class GenerateZoomControlExecutor extends PostboyExecutor<Zoom> {\n static readonly ID = 'c59f4fc3-ccf6-4cb3-a38b-3a8c249114a2';\n\n constructor(public settings: ZoomControlSettings) {\n super();\n }\n}\n","import { ZoomControlSettings } from './zoom-control.settings';\nimport { Zoom } from 'ol/control';\n\nexport class ZoomControlFactory {\n public static build(settings: ZoomControlSettings): Zoom {\n return new Zoom({\n zoomInTipLabel: settings.zoomInLabel,\n zoomOutTipLabel: settings.zoomOutLabel,\n zoomInClassName: settings.zoomInClass,\n zoomOutClassName: settings.zoomOutClass,\n className: settings.controlClass,\n });\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport Static from 'ol/source/ImageStatic';\nimport ImageLayer from 'ol/layer/Image';\n\nexport class AddImageLayerCommand extends PostboyGenericMessage {\n static readonly ID = '70f9b86f-8bc2-4f28-ae79-a13fc0b1ee5d';\n\n constructor(public layer: ImageLayer<Static>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport ImageLayer from 'ol/layer/Image';\nimport Static from 'ol/source/ImageStatic';\n\nexport class RemoveImageLayerCommand extends PostboyGenericMessage {\n static readonly ID = 'c8e7efdb-17ff-4cf9-89be-e688b8de3b95';\n\n constructor(public layer: ImageLayer<Static>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport ImageLayer from 'ol/layer/Image';\nimport { Raster } from 'ol/source';\n\nexport class AddRasterTileCommand extends PostboyGenericMessage {\n static readonly ID = 'd33447fe-eec0-4205-9b5d-0d79ddc74ad7';\n\n constructor(public layer: ImageLayer<Raster>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport ImageLayer from 'ol/layer/Image';\nimport { Raster } from 'ol/source';\n\nexport class RemoveRasterTileCommand extends PostboyGenericMessage {\n static readonly ID = 'd1c4bf6a-e2f2-4385-a7a2-cecb525f8939';\n\n constructor(public layer: ImageLayer<Raster>) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport TileLayer from 'ol/layer/WebGLTile';\n\nexport class AddGeotiffTileCommand extends PostboyGenericMessage {\n static readonly ID = '80e1b7be-09cd-43de-b11c-e0699a91b287';\n\n constructor(public layer: TileLayer) {\n super();\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport TileLayer from 'ol/layer/WebGLTile';\n\nexport class RemoveGeotiffTileCommand extends PostboyGenericMessage {\n static readonly ID = '5545a521-62c4-4b25-a555-ee264258799b';\n\n constructor(public layer: TileLayer) {\n super();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PostboyService } from '@artstesh/postboy';\n\n@Injectable()\nexport class MapPostboyService extends PostboyService {\n constructor() {\n super();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Feature, Map } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { AddLayerCommand } from '../messages/commands/add-layer.command';\nimport { RemoveLayerCommand } from '../messages/commands/remove-layer.command';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { FilterFeaturesInPointExecutor, GetFeaturesInPointQuery, MapRenderedEvent } from '../messages';\nimport { PlaceLayerFeaturesCommand } from '../messages/commands/place-layer-features.command';\nimport { AddTileCommand } from '../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../messages/commands/remove-tile.command';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport Cluster from 'ol/source/Cluster';\nimport { GetLayerQuery } from '../messages/queries/get-layer.query';\nimport { GetFeaturesInAreaQuery } from '../messages/queries/get-features-in-area.query';\nimport { IIdentified } from '../models/i-identified';\nimport { MapConstants } from '../models/map.constants';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\nimport { Geometry } from 'ol/geom';\nimport { Dictionary } from '../models';\nimport { RemoveImageLayerCommand } from '../messages/commands/remove-image-layer.command';\nimport { AddImageLayerCommand } from '../messages/commands/add-image-layer.command';\nimport { AddRasterTileCommand } from '../messages/commands/add-raster-tile-command';\nimport { RemoveRasterTileCommand } from '../messages/commands/remove-raster-tile.command';\nimport { AddGeotiffTileCommand } from '../messages/commands/add-geotiff-tile.command';\nimport { RemoveGeotiffTileCommand } from '../messages/commands/remove-geotiff-tile.command';\n\n@Injectable()\nexport class MapManagementService implements IPostboyDependingService {\n private map?: Map;\n private layers = new Dictionary<Layer<VectorSource<any> | Cluster>>();\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n this.observeAddLayer();\n this.observeRemoveLayer();\n this.observePlaceFeatures();\n this.observeAddTile();\n this.observeLayerQuery();\n this.observeFeaturesInArea();\n this.observeFeaturesInPoint();\n this.observeImageLayer();\n }\n\n private observeLayerQuery() {\n this.postboy.sub(GetLayerQuery).subscribe((ev) => ev.finish(this.layers.take(ev.name)));\n }\n\n private observeAddTile() {\n this.postboy.sub(AddTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n this.postboy.sub(AddRasterTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveRasterTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n this.postboy.sub(AddGeotiffTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveGeotiffTileCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeImageLayer() {\n this.postboy.sub(AddImageLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n this.postboy.sub(RemoveImageLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private observeAddLayer() {\n this.postboy.sub(AddLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.layers.put(c.layer.get('name'), c.layer);\n this.map.addLayer(c.layer);\n });\n }\n\n private observePlaceFeatures() {\n this.postboy.sub(PlaceLayerFeaturesCommand).subscribe((c) => {\n if (!this.layers.has(c.layer)) return;\n let source = this.layers.take(c.layer)!.getSource();\n if (!!(source as any)['getSource']) source = (source as any)?.getSource();\n source?.clear();\n !!c.features?.length && source?.addFeatures(c.features);\n });\n }\n\n private observeRemoveLayer() {\n this.postboy.sub(RemoveLayerCommand).subscribe((c) => {\n if (!this.map) return;\n this.layers.rmv(c.layer.get('name'));\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeFeaturesInArea() {\n this.postboy.sub(GetFeaturesInAreaQuery).subscribe((qr) => {\n let result = new Dictionary<IIdentified[]>();\n this.forEachLayer((l, s) => {\n let features = this.postboy.exec<Feature<Geometry>[]>(\n new FilterFeaturesInAreaExecutor(qr.area, s?.getFeatures() ?? []),\n );\n result.put(\n l.get('name'),\n features.map((e) => ({ id: e.getId(), ...e.get(MapConstants.FeatureInfo) })),\n );\n }, qr.ignore);\n qr.finish(result);\n });\n }\n\n private observeFeaturesInPoint() {\n this.postboy.sub(GetFeaturesInPointQuery).subscribe((qr) => {\n let result = new Dictionary<IIdentified[]>();\n this.forEachLayer((l, s) => {\n let features = this.postboy.exec<Feature<Geometry>[]>(\n new FilterFeaturesInPointExecutor(qr.lat, qr.lng, s?.getFeatures() ?? []),\n );\n result.put(\n l.get('name'),\n features.map((e) => ({ id: e.getId(), ...e.get(MapConstants.FeatureInfo) })),\n );\n }, qr.ignore);\n qr.finish(result);\n });\n }\n\n private forEachLayer(\n action: (l: Layer<any>, s: VectorSource<any> | Cluster | null) => void,\n ignore: Set<string>,\n ): void {\n this.layers.forEach((l) => {\n let layerName = l.get('name');\n if (ignore.has(layerName) || layerName === MapConstants.DrawingLayerId) return;\n let source = l.getSource();\n if (!!(source as any)['getSource']) source = (source as any)?.getSource();\n action(l, source);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Map } from 'ol';\nimport { MapMoveEndEvent, MapRenderedEvent, SetMapCenterCommand } from '../messages';\nimport { MapPostboyService } from './map-postboy.service';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { first } from 'rxjs/operators';\nimport { MapPosition } from '../models';\n\n@Injectable()\nexport class MapStateService implements IPostboyDependingService {\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRendering();\n this.observeCenter();\n }\n\n public getMapPosition(): MapPosition | null {\n if (!this.map) return null;\n let [longitude, latitude] = this.map.getView().getCenter()!;\n const zoom = this.map.getView().getZoom()!;\n const extent = this.map.getView().calculateExtent();\n return { longitude, latitude, zoom, extent };\n }\n\n private observeMapRendering() {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(first())\n .subscribe((ev) => {\n this.map = ev.map;\n this.map?.on('moveend', () => {\n this.postboy.fire(new MapMoveEndEvent(this.getMapPosition()));\n });\n });\n }\n\n private observeCenter() {\n this.postboy.sub(SetMapCenterCommand).subscribe((c) => {\n this.map?.getView().setCenter([c.lng, c.lat]);\n if (c.zoom) this.map?.getView().setZoom(c.zoom);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { Feature, Map } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { FitToPolygonsCommand, MapPointerMoveEvent, MapRenderedEvent } from '../messages';\nimport { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';\nimport { Geometry } from 'ol/geom';\nimport { createEmpty, extend } from 'ol/extent';\nimport { MapFeatureHoveredEvent } from '../messages/events/map-feature-hovered.event';\nimport { MapConstants } from '../models';\n\n@Injectable()\nexport class MapFeatureService implements IPostboyDependingService {\n private map?: Map;\n private fitPolygonsWaiting?: FitToPolygonsCommand;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n this.observeFitToFeatures();\n this.observeFitToPolygons();\n this.observePointerMove();\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n if (this.fitPolygonsWaiting) this.postboy.fire(this.fitPolygonsWaiting);\n });\n }\n\n private observePointerMove() {\n this.postboy.sub(MapPointerMoveEvent).subscribe((ev) => {\n if (!this.map) return;\n let featureFound = false;\n this.map.forEachFeatureAtPixel(ev.point, (f) => {\n if (f instanceof Feature) {\n this.postboy.fire(new MapFeatureHoveredEvent(f as Feature<Geometry>, f.get(MapConstants.FeatureLayerName)));\n featureFound = true;\n }\n return true;\n });\n if (!featureFound) this.postboy.fire(new MapFeatureHoveredEvent(null, null));\n });\n }\n\n private observeFitToFeatures() {\n this.postboy.sub(FitToFeaturesCommand).subscribe((cmd) => {\n this.fitToGeometries(\n cmd.features.map((f) => f.getGeometry()!),\n cmd.zoomAfter,\n );\n });\n }\n\n private observeFitToPolygons() {\n this.postboy.sub(FitToPolygonsCommand).subscribe((cmd) => {\n if (!this.map) {\n this.fitPolygonsWaiting = cmd;\n return;\n }\n this.fitPolygonsWaiting = undefined;\n this.fitToGeometries(\n cmd.features.map((f) => f.feature.getGeometry()!),\n cmd.zoomAfter,\n );\n });\n }\n\n private fitToGeometries(geometries: Geometry[], zoomAfter: number): void {\n if (!geometries?.length || !this.map) return;\n const extent = createEmpty();\n geometries.forEach((g) => extend(extent, g.getExtent()));\n this.map.getView().fit(extent);\n this.map.getView().setZoom(this.map.getView().getZoom()! + zoomAfter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { Feature, Map, MapBrowserEvent } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { MapRenderedEvent } from '../messages';\nimport { MapClickEvent } from '../messages/events/map-click.event';\nimport { Geometry } from 'ol/geom';\nimport { MapConstants } from '../models/map.constants';\n\n@Injectable()\nexport class MapClickService implements IPostboyDependingService {\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n }\n\n onClick(ev: MapBrowserEvent<PointerEvent>): MapClickEvent {\n const model: MapClickEvent = new MapClickEvent(ev.coordinate, {}, {});\n this.map?.forEachFeatureAtPixel(ev.pixel, (f, l) => {\n this.getFeatureCollectionWithInner([f as Feature<Geometry>])\n .filter((f) => f.getId() != null && !!l)\n .forEach((fs: Feature<Geometry>) => {\n let layerName = l.get('name');\n if (!model.entities[layerName]) model.entities[layerName] = [];\n if (!model.features[layerName]) model.features[layerName] = [];\n model.entities[layerName].push({ id: fs.getId()!, ...fs.get(MapConstants.FeatureInfo) });\n model.features[layerName].push(fs);\n });\n });\n return model;\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n this.map?.on('singleclick', (e) => {\n this.postboy.fire(this.onClick(e as MapBrowserEvent<PointerEvent>));\n });\n });\n }\n\n private getFeatureCollectionWithInner(features: Feature<Geometry>[]): Feature<Geometry>[] {\n const result: Feature<Geometry>[] = [];\n features?.forEach((f) => {\n const innerFeatures = f.get('features') as Feature<Geometry>[];\n innerFeatures?.length ? result.push(...innerFeatures) : result.push(f);\n });\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService, LockMessage, UnlockMessage } from '@artstesh/postboy';\nimport { MapPostboyService } from '../map-postboy.service';\nimport { StartDrawingCommand } from '../../messages/commands/start-drawing.command';\nimport { CancelDrawingCommand } from '../../messages/commands/cancel-drawing.command';\nimport { first } from 'rxjs/operators';\nimport { DrawingFinishedEvent } from '../../messages/events/drawing-finished.event';\nimport { Subscription } from 'rxjs';\nimport { MapClickEvent, MapRenderedEvent } from '../../messages';\nimport { GetLayerQuery } from '../../messages/queries/get-layer.query';\nimport { MapConstants } from '../../models/map.constants';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { Vector as Source } from 'ol/source';\nimport { Draw } from 'ol/interaction';\nimport { FeatureOutputFormat, PolygonModel } from '../../models';\nimport { Map } from 'ol';\nimport { DrawEvent } from 'ol/interaction/Draw';\nimport { Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { DrawSelectionAreaCommand } from '../../messages/commands/draw-selection-area.command';\nimport { GetFeaturesInAreaQuery } from '../../messages/queries/get-features-in-area.query';\nimport { IIdentified } from '../../models/i-identified';\nimport { GenerateDrawExecutor } from '../../messages/executors/generate-draw.executor';\nimport { Dictionary } from '../../models';\nimport { FeatureLike } from 'ol/Feature';\n\n@Injectable()\nexport class DrawingService implements IPostboyDependingService {\n private drawInteraction?: Draw;\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeDrawing();\n this.observeSelectArea();\n this.observeMapRender();\n }\n\n private observeSelectArea() {\n this.postboy.sub(DrawSelectionAreaCommand).subscribe((ev) => {\n this.postboy.exec(new LockMessage(MapClickEvent));\n this.postboy.fireCallback(new StartDrawingCommand(ev.type, ev.style), (r) => {\n if (!r) {\n ev.finish(new Dictionary<IIdentified[]>());\n return;\n }\n const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry()!;\n this.postboy.fireCallback(new GetFeaturesInAreaQuery(area, ev.ignore), (result) => ev.finish(result));\n });\n });\n }\n\n private observeDrawing() {\n this.postboy.sub(StartDrawingCommand).subscribe((ev) => {\n this.draw((l) => {\n if (!l || !this.map) {\n this.clearInteraction(l);\n return;\n }\n const cancelSub = this.observeCancelation(ev, l);\n this.drawInteraction = this.postboy.exec(new GenerateDrawExecutor(l, ev.style, ev.type))!;\n this.map?.addInteraction(this.drawInteraction);\n this.drawInteraction.on('drawend', (evt: DrawEvent) => {\n cancelSub.unsubscribe();\n this.onEnd(evt, ev, l);\n });\n });\n });\n }\n\n private onEnd(evt: DrawEvent, command: StartDrawingCommand, layer: Layer<Source<FeatureLike>>): void {\n command.finish(\n command.format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(evt.feature)\n : command.format === FeatureOutputFormat.WKT\n ? new WKT().writeFeature(evt.feature)\n : new GeoJSON().writeGeometry(evt.feature.getGeometry()!),\n );\n this.clearInteraction(layer);\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private draw(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));\n }\n\n private observeCancelation(ev: StartDrawingCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .sub(CancelDrawingCommand)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<FeatureLike>> | null): void {\n if (!!this.drawInteraction) {\n this.map?.removeInteraction(this.drawInteraction);\n layer?.setSource(new Source({}));\n }\n this.postboy.exec(new UnlockMessage(MapClickEvent));\n setTimeout(() => this.postboy.fire(new DrawingFinishedEvent()), 300);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { Modify, Translate } from 'ol/interaction';\nimport { Collection, Feature, Map } from 'ol';\nimport { MapPostboyService } from '../map-postboy.service';\nimport { MapRenderedEvent } from '../../messages';\nimport { FeatureOutputFormat } from '../../models';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\nimport { Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { GetLayerQuery } from '../../messages/queries/get-layer.query';\nimport { MapConstants } from '../../models/map.constants';\nimport { Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { Vector as Source } from 'ol/source';\nimport { CancelFeatureModificationCommand } from '../../messages/commands/cancel-feature-modification.command';\nimport { ModifyFeatureCommand } from '../../messages/commands/modify-feature.command';\nimport { FeatureLike } from 'ol/Feature';\n\n@Injectable()\nexport class FeatureModificationService implements IPostboyDependingService {\n private modify?: Modify;\n private translate?: Translate;\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeModification();\n this.observeMapRender();\n }\n\n private observeModification() {\n this.postboy.sub(ModifyFeatureCommand).subscribe((ev) => {\n this.defineLayer((l) => {\n if (!l || !this.map) {\n this.clearInteraction(l);\n return;\n }\n this.observeCancelation(ev, l);\n this.initFeature(l, ev.model.feature);\n this.addModify(ev);\n if (ev.draggable) this.addDragging(ev);\n });\n });\n }\n\n private initFeature(layer: Layer<VectorSource<FeatureLike>>, feature: Feature<Geometry>): void {\n layer.getSource()?.clear();\n layer.getSource()?.addFeature(feature);\n }\n\n private addModify(command: ModifyFeatureCommand): void {\n this.modify = new Modify({\n features: new Collection([command.model.feature]),\n style: command.style,\n });\n this.modify.on('modifyend', () => {\n this.onModified(command);\n command.model.feature.changed();\n });\n this.map?.addInteraction(this.modify);\n }\n\n private addDragging(command: ModifyFeatureCommand): void {\n this.translate = new Translate({\n features: new Collection([command.model.feature]),\n condition: (ev) => {\n const clone = command.model.feature.clone();\n clone.getGeometry()?.scale(0.999);\n return clone.getGeometry()!.intersectsCoordinate(ev.coordinate);\n },\n });\n this.translate.on('translateend', () => this.onModified(command));\n this.map?.addInteraction(this.translate);\n }\n\n private onModified(command: ModifyFeatureCommand): void {\n command.next(\n command.format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(command.model.feature)\n : command.format === FeatureOutputFormat.WKT\n ? new WKT().writeFeature(command.model.feature)\n : new GeoJSON().writeGeometry(command.model.feature.getGeometry()!),\n );\n }\n\n private observeMapRender() {\n this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private defineLayer(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));\n }\n\n private observeCancelation(ev: ModifyFeatureCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .sub(CancelFeatureModificationCommand)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<FeatureLike>> | null): void {\n layer?.getSource()?.clear();\n if (this.modify) this.map?.removeInteraction(this.modify);\n if (this.translate) this.map?.removeInteraction(this.translate);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Map } from 'ol';\nimport { MapPostboyService } from '../map-postboy.service';\nimport { AddControlCommand, MapRenderedEvent, RemoveControlCommand } from '../../messages';\nimport { IPostboyDependingService } from '@artstesh/postboy';\nimport { first } from 'rxjs/operators';\n\n@Injectable()\nexport class ControlsService implements IPostboyDependingService {\n private map?: Map;\n\n constructor(private postboy: MapPostboyService) {}\n\n up(): void {\n this.observeMapRender();\n }\n\n private observeMapRender() {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(first())\n .subscribe((m) => {\n this.map = m.map;\n this.observeAdding();\n this.observeRemoving();\n });\n }\n\n private observeAdding() {\n this.postboy.sub(AddControlCommand).subscribe((c) => this.map?.addControl(c.item));\n }\n\n private observeRemoving() {\n this.postboy.sub(RemoveControlCommand).subscribe((c) => this.map?.removeControl(c.item));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MapPostboyService } from './map-postboy.service';\nimport {\n FitToPolygonsCommand,\n GetFeaturesInPointQuery,\n MapPointerMoveEvent,\n MapRenderedEvent,\n PolygonSelfIntersectionExecutor,\n} from '../messages';\nimport { AddLayerCommand } from '../messages/commands/add-layer.command';\nimport { PlaceLayerFeaturesCommand } from '../messages/commands/place-layer-features.command';\nimport { RemoveLayerCommand } from '../messages/commands/remove-layer.command';\nimport { AddTileCommand } from '../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../messages/commands/remove-tile.command';\nimport { PostboyAbstractRegistrator } from '@artstesh/postboy';\nimport { MapManagementService } from './map-management.service';\nimport { MapStateService } from './map-state.service';\nimport { MapClickService } from './map-click.service';\nimport { MapClickEvent } from '../messages/events/map-click.event';\nimport { CloseTooltipCommand } from '../messages/commands/close-tooltip.command';\nimport { MapFeatureService } from './map-feature.service';\nimport { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';\nimport { MapMoveEndEvent } from '../messages/events/map-move-end.event';\nimport { CancelDrawingCommand } from '../messages/commands/cancel-drawing.command';\nimport { StartDrawingCommand } from '../messages/commands/start-drawing.command';\nimport { DrawingService } from './drawing/drawing.service';\nimport { GetLayerQuery } from '../messages/queries/get-layer.query';\nimport { DrawingFinishedEvent } from '../messages/events/drawing-finished.event';\nimport { DrawingGenerationService } from './drawing/drawing-generation.service';\nimport { FeatureService } from './feature.service';\nimport { GetFeaturesInAreaQuery } from '../messages/queries/get-features-in-area.query';\nimport { DrawSelectionAreaCommand } from '../messages/commands/draw-selection-area.command';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\nimport { GenerateDrawExecutor } from '../messages/executors/generate-draw.executor';\nimport { FeatureModificationService } from './drawing/feature-modification.service';\nimport { CancelFeatureModificationCommand } from '../messages/commands/cancel-feature-modification.command';\nimport { ModifyFeatureCommand } from '../messages/commands/modify-feature.command';\nimport { GenerateZoomControlExecutor } from '../messages/executors/generate-zoom-control.executor';\nimport { ZoomControlFactory } from '../map-plate/controls/map-control-zoom/zoom-control.factory';\nimport { RemoveControlCommand } from '../messages/commands/remove-control.command';\nimport { AddControlCommand } from '../messages/commands/add-control.command';\nimport { ControlsService } from './controls/controls.service';\nimport { SetMapCenterCommand } from '../messages/commands/set-map-center.command';\nimport { CalculateAreaExecutor } from '../messages/executors/calculate-area.executor';\nimport { GetMapPositionExecutor } from '../messages/executors/get-map-position.executor';\nimport { FilterFeaturesInPointExecutor } from '../messages/executors/filter-features-in-point.executor';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { MapFeatureHoveredEvent } from '../messages/events/map-feature-hovered.event';\nimport { AddImageLayerCommand } from '../messages/commands/add-image-layer.command';\nimport { RemoveImageLayerCommand } from '../messages/commands/remove-image-layer.command';\nimport { AddRasterTileCommand } from '../messages/commands/add-raster-tile-command';\nimport { RemoveRasterTileCommand } from '../messages/commands/remove-raster-tile.command';\nimport {\n GetGeometryLengthExecutor,\n GetGeometryLengthExecutorHandler,\n} from '../messages/executors/get-geometry-length.executor';\nimport { AddGeotiffTileCommand } from '../messages/commands/add-geotiff-tile.command';\nimport { RemoveGeotiffTileCommand } from '../messages/commands/remove-geotiff-tile.command';\n\n@Injectable()\nexport class MessageRegistratorService extends PostboyAbstractRegistrator {\n constructor(\n service: MapPostboyService,\n management: MapManagementService,\n private state: MapStateService,\n mapFeature: MapFeatureService,\n interaction: MapClickService,\n drawing: DrawingService,\n featureModification: FeatureModificationService,\n controls: ControlsService,\n ) {\n super(service);\n this.registerServices([management, state, interaction, mapFeature, drawing, featureModification, controls]);\n }\n\n protected _up(): void {\n this.recordReplay(MapRenderedEvent);\n this.recordReplay(PlaceLayerFeaturesCommand);\n this.recordReplay(RemoveControlCommand);\n this.recordReplay(AddControlCommand);\n this.recordReplay(SetMapCenterCommand);\n this.recordSubject(AddLayerCommand);\n this.recordSubject(RemoveLayerCommand);\n this.recordSubject(AddTileCommand);\n this.recordSubject(AddGeotiffTileCommand);\n this.recordSubject(RemoveGeotiffTileCommand);\n this.recordSubject(AddRasterTileCommand);\n this.recordSubject(RemoveRasterTileCommand);\n this.recordSubject(RemoveImageLayerCommand);\n this.recordSubject(AddImageLayerCommand);\n this.recordSubject(RemoveTileCommand);\n this.recordSubject(MapClickEvent);\n this.recordSubject(CloseTooltipCommand);\n this.recordSubject(FitToFeaturesCommand);\n this.recordSubject(FitToPolygonsCommand);\n this.recordSubject(MapMoveEndEvent);\n this.recordSubject(CancelDrawingCommand);\n this.recordSubject(StartDrawingCommand);\n this.recordSubject(GetLayerQuery);\n this.recordSubject(MapFeatureHoveredEvent);\n this.recordWithPipe(MapPointerMoveEvent, new Subject(), (s) => s.pipe(debounceTime(150)));\n this.recordSubject(DrawingFinishedEvent);\n this.recordSubject(GetFeaturesInAreaQuery);\n this.recordSubject(DrawSelectionAreaCommand);\n this.recordSubject(CancelFeatureModificationCommand);\n this.recordSubject(ModifyFeatureCommand);\n this.recordSubject(GetFeaturesInPointQuery);\n this.setExecutors();\n }\n\n private setExecutors() {\n this.recordExecutor(FilterFeaturesInAreaExecutor, (e) => FeatureService.filterFeaturesInArea(e));\n this.recordExecutor(FilterFeaturesInPointExecutor, (e) => FeatureService.filterFeaturesInPoint(e));\n this.recordExecutor(CalculateAreaExecutor, (e) => FeatureService.calculateArea(e.polygon?.feature?.getGeometry()));\n this.recordExecutor(PolygonSelfIntersectionExecutor, (e) =>\n FeatureService.polygonSelfIntersects(e.polygon.feature),\n );\n this.recordExecutor(GenerateDrawExecutor, (e) => DrawingGenerationService.getDraw(e));\n this.recordExecutor(GenerateZoomControlExecutor, (e) => ZoomControlFactory.build(e.settings));\n this.recordExecutor(GetMapPositionExecutor, () => this.state.getMapPosition());\n this.recordExecutor(GetGeometryLengthExecutor, (e) => new GetGeometryLengthExecutorHandler().handle(e));\n }\n}\n","/**\n * Class representing settings for a tile layer.\n */\nexport class TileLayerSettings {\n /**\n * The maximum zoom level for a map view.\n *\n * @type {number}\n * @default 19\n */\n maxZoom: number = 19;\n /**\n * The minimum zoom level allowed.\n *\n * @type {number}\n */\n minZoom: number = 0;\n /**\n * The opacity of an element.\n *\n * @type {number}\n * @default 0.6\n */\n opacity: number = 0.6;\n /**\n * Represents the tiles URL.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/{z}/{x}/{y}.png'\n */\n url: string = '';\n /**\n * The projection of the coordinate system.\n *\n * @type {string}\n * @default 'EPSG:3857'\n */\n projection: string = 'EPSG:3857';\n /**\n * Additional headers that should be added to each tile request\n *\n * @type {Record<string, string>}\n * @default An empty array\n */\n requestHeaders: Record<string, string> | null = null;\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {TileLayerSettings} model - The tile layer settings to be copied.\n * @return {TileLayerSettings} - A new instance of TileLayerSettings with the same properties as the model.\n */\n public static copy(model: TileLayerSettings): TileLayerSettings {\n const result = new TileLayerSettings();\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.projection = model.projection;\n result.opacity = model.opacity;\n result.url = model.url;\n result.requestHeaders = model.requestHeaders;\n return result;\n }\n\n /**\n * Sets the URL of the TileLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {TileLayerSettings} - The updated TileLayerSettings object.\n */\n setUrl(url: string): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, url });\n }\n\n /**\n * Sets the requestHeaders of the TileLayerSettings object.\n *\n * @param {Record<string, string>} requestHeaders - The headers which should be provided.\n * @return {TileLayerSettings} - The updated TileLayerSettings object.\n */\n setRequestHeaders(requestHeaders: Record<string, string>): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, requestHeaders });\n }\n\n /**\n * Sets the maximum zoom level for the tile layer.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @returns {TileLayerSettings} - The updated tile layer settings object.\n */\n setMaxZoom(maxZoom: number): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the Tile Layer.\n *\n * @param {number} minZoom - The minimum zoom level to be set.\n * @return {TileLayerSettings} The modified TileLayerSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the opacity of the TileLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {TileLayerSettings} - A new instance of TileLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the projection for the tile layer settings.\n *\n * @param {string} projection - The desired projection for the tile layer settings.\n * @return {TileLayerSettings} - The updated tile layer settings with the new projection.\n */\n setProjection(projection: string): TileLayerSettings {\n return TileLayerSettings.copy({ ...this, projection });\n }\n\n /**\n * Checks if the current instance of TileLayerSettings is equal to the given model.\n * @param {TileLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: TileLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.url !== model.url) return false;\n if (this.projection !== model.projection) return false;\n if (this.opacity !== model.opacity) return false;\n if (this.requestHeaders !== model.requestHeaders) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { XYZ } from 'ol/source';\nimport { TileLayerSettings } from './tile-layer.settings';\nimport { TileCoord } from 'ol/tilecoord';\nimport { get } from 'ol/proj';\nimport TileLayer from 'ol/layer/Tile';\nimport { Tile } from 'ol';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TileLayerFactory {\n public build(settings: TileLayerSettings): TileLayer<XYZ> {\n const source = new XYZ({\n tileSize: 256,\n maxZoom: settings.maxZoom || 14,\n minZoom: settings.minZoom || 1,\n projection: get(settings.projection)!,\n tileUrlFunction: this.getTileFunc(settings),\n crossOrigin: 'Anonymous',\n tileLoadFunction: !!settings.requestHeaders\n ? (tile, src: string) => this.tileLoader(tile, src, settings.requestHeaders!)\n : undefined,\n });\n return new TileLayer({ source, opacity: settings.opacity });\n }\n\n private getTileFunc(settings: TileLayerSettings): (tileCoord: TileCoord) => string {\n return (tileCoord) => {\n const zoom = tileCoord[0];\n const x = tileCoord[1];\n const y = tileCoord[2];\n const normalizedCoord = this.getNormalizedCoord({ x: x, y: y }, zoom);\n const bound = 1 << zoom;\n return settings.url\n .replace('{x}', String(normalizedCoord?.x || x))\n .replace('{z}', String(zoom))\n .replace('{y}', String(bound - (normalizedCoord?.y || y) - 1));\n };\n }\n\n private tileLoader(tile: Tile, src: string, headers: Record<string, string>) {\n const client = new XMLHttpRequest();\n client.open('GET', src);\n client.responseType = 'arraybuffer';\n Object.keys(headers).forEach((k: string) => client.setRequestHeader(k, headers[k]));\n client.onload = function () {\n if (this.response !== undefined) {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n const urlCreator = window.URL || (window as any).webkitURL;\n (tile as any).getImage().src = urlCreator.createObjectURL(blob);\n }\n };\n client.send();\n }\n\n private getNormalizedCoord(coord: { x: number; y: number }, zoom: number) {\n const y = coord.y;\n let x = coord.x;\n const tileRange = 1 << zoom;\n if (y < 0 || y >= tileRange) return null;\n if (x < 0 || x >= tileRange) x = ((x % tileRange) + tileRange) % tileRange;\n return { x: x, y: y };\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { XYZ } from 'ol/source';\nimport TileLayer from 'ol/layer/Tile';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { TileLayerFactory } from './tile-layer.factory';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { TileLayerSettings } from './tile-layer.settings';\nimport { AddTileCommand } from '../../../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../../../messages/commands/remove-tile.command';\n\n@Component({\n selector: 'art-tile-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TileLayerComponent extends DestructibleComponent {\n public layer?: TileLayer<XYZ>;\n\n constructor(private postboy: MapPostboyService, private factory: TileLayerFactory) {\n super();\n }\n\n _settings: TileLayerSettings = new TileLayerSettings();\n\n @Input() set settings(value: TileLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddTileCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveTileCommand(this.layer));\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport TileLayer from 'ol/layer/Tile';\nimport TileSource from 'ol/source/Tile';\nimport OSM from 'ol/source/OSM';\nimport { Map } from 'ol';\nimport { MapSettings } from '../../../models';\n\n@Component({\n selector: 'art-osm-tile-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OsmTileLayerComponent extends DestructibleComponent implements OnInit {\n public layer?: TileLayer<TileSource>;\n\n constructor() {\n super();\n }\n\n private _url: string = '';\n private _map?: Map;\n private _opacity: number = 1;\n\n @Input() set url(value: string | undefined) {\n if (!value || this._url === value) return;\n this._url = value;\n this.initLayer();\n }\n\n @Input() set opacity(value: number) {\n if (value == null || this._opacity === value) return;\n this._opacity = value;\n this.initLayer();\n }\n\n @Input() set map(value: Map | undefined) {\n if (!value || this._map === value) return;\n this._map = value;\n this.initLayer();\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n if (this.layer) {\n this._map?.removeLayer(this.layer);\n }\n // @ts-ignore\n this.layer?.setMap(null);\n }\n\n private initLayer(): void {\n if (!this._url || !this._map) return;\n if (this.layer) this._map.removeLayer(this.layer);\n this.layer = new TileLayer({\n source: new OSM({\n url: this._url,\n }),\n opacity: this._opacity,\n });\n this.layer.set('name', 'osm-tile-layer');\n this._map.addLayer(this.layer);\n }\n}\n","import Style, { StyleFunction } from 'ol/style/Style';\nimport { IdGenerator } from '../../../common/id.generator';\n\n/**\n * A layer that is responsible for showing and styling main features on the map, such as markers and polygons\n */\nexport class FeatureLayerSettings {\n /**\n * The identifier of the field, it is autogenerated by default, but can be set manually\n */\n name: string = IdGenerator.get();\n /**\n * The priority of showing - layers with higher zIndex cover others in case of collisions\n */\n zIndex: number = 1;\n /**\n The maximum view zoom level (inclusive) at which this layer will be visible.\n\n @type {number}\n @default 19\n */\n maxZoom: number = 19;\n /**\n The minimum view zoom level (exclusive) at which this layer will be visible.\n\n @type {number}\n */\n minZoom: number = 0;\n /**\n * The styling definition of layer's features. The easiest way is to use {@link PolygonStyleHelper},{@link MarkerStyleHelper}\n */\n style?: Style | StyleFunction;\n /**\n * Defines the style applied to a feature when it is hovered over.\n *\n * This property can accept either a static style object or a dynamic style function.\n * When a `StyleFunction` is provided, it will determine the style dynamically\n * based on the feature being hovered.\n *\n * The style is applied temporarily, specifically for the hovered feature,\n * and overrides any default or predefined styles for that feature.\n *\n * Optional property.\n *\n * @type {(Style | StyleFunction)}\n */\n featureHoverStyle?: Style | StyleFunction;\n\n /**\n * Copies the given FeatureLayerSettings object\n *\n * @param {FeatureLayerSettings} model - The FeatureLayerSettings object to be copied\n * @returns {FeatureLayerSettings} - A copy of the FeatureLayerSettings object\n */\n public static copy(model: FeatureLayerSettings): FeatureLayerSettings {\n const result = new FeatureLayerSettings();\n result.name = model.name;\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zIndex = model.zIndex;\n result.style = model.style;\n result.featureHoverStyle = model.featureHoverStyle;\n return result;\n }\n\n /**\n * Sets the z-index value for the FeatureLayerSettings object.\n *\n * @param {number} zIndex - The new z-index value.\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object.\n */\n setZIndex(zIndex: number): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the name of the FeatureLayerSettings.\n *\n * @param {string} name - The name to set for the FeatureLayerSettings.\n *\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object with the new name.\n */\n setName(name: string): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, name });\n }\n\n /**\n * Sets the maximum zoom level for the FeatureLayerSettings.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object.\n */\n setMaxZoom(maxZoom: number): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the feature layer.\n *\n * @param {number} minZoom The minimum zoom level to be set.\n * @returns {FeatureLayerSettings} The updated feature layer settings object.\n */\n setMinZoom(minZoom: number): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the style for the FeatureLayerSettings object.\n *\n * @param {Style | StyleFunction} style - The new style to set. It can be either a Style object or a StyleFunction.\n * @return {FeatureLayerSettings} - The updated FeatureLayerSettings object with the new style.\n */\n setStyle(style: Style | StyleFunction): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, style });\n }\n /**\n * Sets the style to apply to features when they are hovered over.\n *\n * @param {Style | StyleFunction} featureHoverStyle - The style or style function to use for hovered features.\n * @return {FeatureLayerSettings} A new instance of FeatureLayerSettings with the updated hover style.\n */\n setFeatureHoverStyle(featureHoverStyle: Style | StyleFunction): FeatureLayerSettings {\n return FeatureLayerSettings.copy({ ...this, featureHoverStyle });\n }\n\n /**\n * Checks if the given FeatureLayerSettings object is identical to the current object.\n *\n * @param {FeatureLayerSettings} model - The FeatureLayerSettings object to compare with.\n * @return {boolean} - Returns true if the given object is identical to the current object, otherwise false.\n */\n public isSame(model: FeatureLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.name !== model.name) return false;\n if (this.style !== model.style) return false;\n if (this.featureHoverStyle !== model.featureHoverStyle) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FeatureLayerSettings } from './feature-layer.settings';\nimport { Vector as Source } from 'ol/source';\nimport { Vector as Layer } from 'ol/layer';\nimport VectorSource from 'ol/source/Vector';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FeatureLayerFactory {\n public build(settings: FeatureLayerSettings): Layer<VectorSource<any>> {\n const source = new Source({});\n const layer = new Layer({\n source: source,\n maxZoom: settings.maxZoom,\n minZoom: settings.minZoom,\n zIndex: settings.zIndex,\n });\n if (settings.style) layer.setStyle(settings.style);\n layer.set('name', settings.name);\n return layer;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport VectorSource from 'ol/source/Vector';\nimport { Vector as Layer } from 'ol/layer';\nimport { FeatureLayerSettings } from './feature-layer.settings';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { AddLayerCommand } from '../../../messages/commands/add-layer.command';\nimport { filter, first } from 'rxjs/operators';\nimport { RemoveLayerCommand } from '../../../messages/commands/remove-layer.command';\nimport { FeatureLayerFactory } from './feature-layer.factory';\n\n@Component({\n selector: 'art-feature-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeatureLayerComponent extends DestructibleComponent implements OnInit {\n public layer: Layer<VectorSource<any>> | null = null;\n\n constructor(private postboy: MapPostboyService, private factory: FeatureLayerFactory) {\n super();\n }\n\n _settings: FeatureLayerSettings = new FeatureLayerSettings();\n\n @Input() set settings(value: FeatureLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddLayerCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveLayerCommand(this.layer));\n }\n}\n","import { IdGenerator } from '../../../common/id.generator';\nimport Style, { StyleFunction } from 'ol/style/Style';\nimport { IIdentified } from '../../../models/i-identified';\n\nexport class ClusterLayerSettings {\n name: string = IdGenerator.get();\n zIndex: number = 1;\n /**\n * The maximum view zoom level (inclusive) at which this layer will be visible.\n *\n * @type {number}\n * @default 19\n */\n maxZoom: number = 19;\n /**\n * The minimum view zoom level (exclusive) at which this layer will be visible.\n *\n * @type {number}\n */\n minZoom: number = 0;\n /**\n * Distance in pixels within which features will be clustered together.\n *\n * @type {number}\n */\n distance: number = 20;\n bbox: boolean = false;\n clusterCancel: number = 14;\n style?: (features: IIdentified[]) => Style;\n\n /**\n * Creates a copy of the given ClusterLayerSettings object.\n *\n * @param {ClusterLayerSettings} model - The ClusterLayerSettings object to be copied.\n * @returns {ClusterLayerSettings} - A new ClusterLayerSettings object that is a copy of the original object.\n */\n public static copy(model: ClusterLayerSettings): ClusterLayerSettings {\n const result = new ClusterLayerSettings();\n result.name = model.name;\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zIndex = model.zIndex;\n result.bbox = model.bbox;\n result.clusterCancel = model.clusterCancel;\n result.distance = model.distance;\n result.style = model.style;\n return result;\n }\n\n /**\n * Set the z-index for the ClusterLayer.\n *\n * @param {number} zIndex - The new z-index for the ClusterLayer.\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setZIndex(zIndex: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the distance value for ClusterLayerSettings.\n *\n * @param {number} distance - The distance value to be set.\n * @return {ClusterLayerSettings} - The modified ClusterLayerSettings object.\n */\n setDistance(distance: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, distance });\n }\n\n /**\n * Sets the name of the ClusterLayerSettings object.\n *\n * @param {string} name - The name to set for the ClusterLayerSettings.\n * @return {ClusterLayerSettings} - A new ClusterLayerSettings object with the updated name.\n */\n setName(name: string): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, name });\n }\n\n /**\n * Sets the maximum zoom level for the Cluster Layer.\n *\n * @param {number} maxZoom - The maximum zoom level to be set.\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setMaxZoom(maxZoom: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the ClusterLayerSettings.\n *\n * @param {number} minZoom - The minimum zoom level to set.\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setMinZoom(minZoom: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the cluster cancel number for the ClusterLayerSettings.\n *\n * @param {number} clusterCancel - The new cluster cancel number.\n * @returns {ClusterLayerSettings} - The updated ClusterLayerSettings object.\n */\n setClusterCancel(clusterCancel: number): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, clusterCancel });\n }\n\n /**\n * Sets the value of 'bbox' property in the ClusterLayerSettings object.\n *\n * @param {boolean} bbox - A boolean value indicating whether to include bounding box calculation in the cluster layer settings.\n * @returns {ClusterLayerSettings} - The updated ClusterLayerSettings object with the newly set 'bbox' value.\n */\n setBbox(bbox: boolean): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, bbox });\n }\n\n /**\n * Sets the style for the ClusterLayerSettings.\n *\n * @param {function} style - A function that takes an array of identified features as input and returns a Style or StyleFunction.\n *\n * @return {ClusterLayerSettings} - The updated ClusterLayerSettings object with the new style applied.\n */\n setStyle(style: (features: IIdentified[]) => Style | StyleFunction): ClusterLayerSettings {\n return ClusterLayerSettings.copy({ ...this, style });\n }\n\n /**\n * Checks if the current ClusterLayerSettings object is the same as the specified model.\n *\n * @param {ClusterLayerSettings} model - The model to compare with the current object.\n *\n * @return {boolean} - Returns true if the current ClusterLayerSettings object is the same as the specified model, otherwise false.\n */\n public isSame(model: ClusterLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.name !== model.name) return false;\n if (this.distance !== model.distance) return false;\n if (this.clusterCancel !== model.clusterCancel) return false;\n if (this.bbox !== model.bbox) return false;\n if (this.style !== model.style) return false;\n return true;\n }\n}\n","import { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapClickEvent, MapRenderedEvent } from '../../../messages';\nimport { Vector as Layer } from 'ol/layer';\nimport Cluster from 'ol/source/Cluster';\nimport { ClusterLayerSettings } from './cluster-layer.settings';\nimport { FitToFeaturesCommand } from '../../../messages/commands/fit-to-features.command';\nimport { MapMoveEndEvent } from '../../../messages/events/map-move-end.event';\nimport { auditTime } from 'rxjs/operators';\nimport { combineLatest } from 'rxjs';\nimport { Map } from 'ol';\n\nexport class ClusterLayerManager {\n constructor(\n private settings: ClusterLayerSettings,\n public readonly layer: Layer<Cluster>,\n private postboy: MapPostboyService,\n ) {\n this.observeClick();\n this.observeMapMovement();\n }\n\n private observeMapMovement() {\n combineLatest([\n this.postboy.sub(MapMoveEndEvent).pipe(auditTime(250)),\n this.postboy.sub(MapRenderedEvent),\n ]).subscribe(([movement, renderEvent]) => {\n this.checkClusterNecessity(renderEvent.map);\n });\n }\n\n private observeClick() {\n this.postboy.sub(MapClickEvent).subscribe((m) => {\n if ((m.features[this.settings.name]?.length ?? 0) > 1) {\n this.postboy.fire(new FitToFeaturesCommand(m.features[this.settings.name], -1));\n }\n });\n }\n\n private checkClusterNecessity(map: Map): void {\n let zoom = map.getView().getZoom() ?? 0;\n const distance = zoom > this.settings.clusterCancel ? 0 : this.settings.distance;\n this.layer?.getSource()?.setDistance(distance);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ClusterLayerSettings } from './cluster-layer.settings';\nimport { Vector as Source } from 'ol/source';\nimport { Vector as Layer } from 'ol/layer';\nimport { bbox } from 'ol/loadingstrategy';\nimport Polygon, { fromExtent } from 'ol/geom/Polygon';\nimport Cluster from 'ol/source/Cluster';\nimport { Geometry, Point } from 'ol/geom';\nimport { ClusterLayerManager } from './cluster-layer.manager';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { StyleFunction } from 'ol/style/Style';\nimport { Feature } from 'ol';\nimport { MapConstants } from '../../../models/map.constants';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClusterLayerFactory {\n public build(settings: ClusterLayerSettings, postboy: MapPostboyService): ClusterLayerManager {\n const source = new Source({\n strategy: settings.bbox ? bbox : undefined,\n });\n const cluster = new Cluster({\n distance: settings.distance,\n source: source,\n geometryFunction: (feature) => {\n const geom = feature.getGeometry();\n if (geom?.getType() == 'Point') {\n return geom as Point;\n } else if (geom?.getType() == 'Polygon') {\n return (geom as Polygon)?.getInteriorPoint();\n } else if (geom?.getType() == 'MultiPolygon') {\n return fromExtent(geom.getExtent())?.getInteriorPoint();\n }\n return undefined as any;\n },\n });\n const layer = new Layer({\n source: cluster,\n maxZoom: settings.maxZoom || undefined,\n minZoom: settings.minZoom || undefined,\n zIndex: settings.zIndex || 0,\n });\n layer.setStyle(this.styleFunc(settings));\n layer.set('name', settings.name);\n return new ClusterLayerManager(settings, layer, postboy);\n }\n\n styleFunc(settings: ClusterLayerSettings): StyleFunction {\n return (feature) => {\n const features = feature.get('features') as Feature<Geometry>[];\n if (!settings.style) return undefined;\n return settings.style(features.map((f) => ({ id: f.getId()!, ...f.get(MapConstants.FeatureInfo) })));\n };\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { AddLayerCommand } from '../../../messages/commands/add-layer.command';\nimport { RemoveLayerCommand } from '../../../messages/commands/remove-layer.command';\nimport { ClusterLayerManager } from './cluster-layer.manager';\nimport { ClusterLayerSettings } from './cluster-layer.settings';\nimport { ClusterLayerFactory } from './cluster-layer-factory.service';\n\n/**\n * Represents a cluster layer component.\n */\n@Component({\n selector: 'art-cluster-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClusterLayerComponent extends DestructibleComponent implements OnInit {\n public manager: ClusterLayerManager | null = null;\n\n constructor(private postboy: MapPostboyService, private factory: ClusterLayerFactory) {\n super();\n }\n\n _settings: ClusterLayerSettings = new ClusterLayerSettings();\n\n /**\n * Sets the settings for the cluster layer.\n *\n * @param {ClusterLayerSettings | undefined} value - The settings for the cluster layer.\n */\n @Input() set settings(value: ClusterLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.manager = this.factory.build(this._settings, this.postboy);\n this.postboy.fire(new AddLayerCommand(this.manager.layer));\n }\n\n private removeLayer() {\n if (this.manager?.layer) this.postboy.fire(new RemoveLayerCommand(this.manager.layer));\n }\n}\n","export class ImageLayerSettings {\n /**\n * Represents the tiles URL.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/{z}/{x}/{y}.png'\n */\n url: string = '';\n /**\n * Use interpolated values when resampling.\n * By default, linear interpolation is used when resampling.\n * Set to false to use the nearest neighbor instead.\n */\n interpolate?: boolean = undefined;\n /**\n * The projection of the coordinate system.\n *\n * @type {string}\n * @default 'EPSG:3857'\n */\n projection: string = 'EPSG:3857';\n extent: number[] = [0, 0, 0, 0];\n /**\n * Additional headers that should be added to each tile request\n *\n * @type {Record<string, string>}\n * @default An empty array\n */\n requestHeaders: Record<string, string> | null = null;\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {ImageLayerSettings} model - The tile layer settings to be copied.\n * @return {ImageLayerSettings} - A new instance of ImageLayerSettings with the same properties as the model.\n */\n public static copy(model: ImageLayerSettings): ImageLayerSettings {\n const result = new ImageLayerSettings();\n result.interpolate = model.interpolate;\n result.projection = model.projection;\n result.extent = model.extent;\n result.url = model.url;\n result.requestHeaders = model.requestHeaders;\n return result;\n }\n\n /**\n * Sets the URL of the ImageLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {ImageLayerSettings} - The updated ImageLayerSettings object.\n */\n setUrl(url: string): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, url });\n }\n\n /**\n * Sets the interpolation state for the image layer settings.\n *\n * @param {boolean} [interpolate] - Use interpolated values when resampling.\n * By default, linear interpolation is used when resampling.\n * Set to false to use the nearest neighbor instead.\n * @return {ImageLayerSettings} A new instance of ImageLayerSettings with the updated interpolation setting.\n */\n setInterpolate(interpolate?: boolean): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, interpolate });\n }\n\n setExtent(extent: number[]): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, extent });\n }\n\n /**\n * Sets the requestHeaders of the ImageLayerSettings object.\n *\n * @param {Record<string, string>} requestHeaders - The headers which should be provided.\n * @return {ImageLayerSettings} - The updated ImageLayerSettings object.\n */\n setRequestHeaders(requestHeaders: Record<string, string>): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, requestHeaders });\n }\n\n /**\n * Sets the maximum zoom level for the tile layer.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @returns {ImageLayerSettings} - The updated tile layer settings object.\n */\n setMaxZoom(maxZoom: number): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the minimum zoom level for the Tile Layer.\n *\n * @param {number} minZoom - The minimum zoom level to be set.\n * @return {ImageLayerSettings} The modified ImageLayerSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the opacity of the ImageLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {ImageLayerSettings} - A new instance of ImageLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the projection for the tile layer settings.\n *\n * @param {string} projection - The desired projection for the tile layer settings.\n * @return {ImageLayerSettings} - The updated tile layer settings with the new projection.\n */\n setProjection(projection: string): ImageLayerSettings {\n return ImageLayerSettings.copy({ ...this, projection });\n }\n\n /**\n * Checks if the current instance of ImageLayerSettings is equal to the given model.\n * @param {ImageLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: ImageLayerSettings): boolean {\n if (this.url !== model.url) return false;\n if (this.projection !== model.projection) return false;\n if (this.extent !== model.extent) return false;\n if (this.interpolate !== model.interpolate) return false;\n if (this.requestHeaders !== model.requestHeaders) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport Static from 'ol/source/ImageStatic';\nimport { ImageLayerSettings } from './image-layer.settings';\nimport ImageLayer from 'ol/layer/Image';\nimport { get, Projection } from 'ol/proj';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ImageLayerFactory {\n public build(settings: ImageLayerSettings): ImageLayer<Static> {\n const source = new Static({\n url: settings.url,\n interpolate: settings.interpolate,\n crossOrigin: 'Anonymous',\n projection: get(settings.projection)!,\n imageExtent: settings.extent,\n });\n return new ImageLayer({ source });\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport TileLayer from 'ol/layer/Tile';\nimport { XYZ } from 'ol/source';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { TileLayerFactory } from '../tile-layer/tile-layer.factory';\nimport { TileLayerSettings } from '../tile-layer/tile-layer.settings';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { AddTileCommand } from '../../../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../../../messages/commands/remove-tile.command';\nimport { ImageLayerFactory } from './image-layer-factory';\nimport ImageLayer from 'ol/layer/Image';\nimport Static from 'ol/source/ImageStatic';\nimport { ImageLayerSettings } from './image-layer.settings';\nimport { AddImageLayerCommand } from '../../../messages/commands/add-image-layer.command';\nimport { RemoveImageLayerCommand } from '../../../messages/commands/remove-image-layer.command';\n\n@Component({\n selector: 'art-image-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageLayerComponent extends DestructibleComponent implements OnInit {\n public layer?: ImageLayer<Static>;\n\n constructor(private postboy: MapPostboyService, private factory: ImageLayerFactory) {\n super();\n }\n\n _settings: ImageLayerSettings = new ImageLayerSettings();\n\n @Input() set settings(value: ImageLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddImageLayerCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveImageLayerCommand(this.layer));\n }\n}\n","export class RasterTileLayerSettings {\n /**\n * The maximum zoom level for a map view.\n *\n * @type {number}\n * @default 19\n */\n maxZoom: number = 19;\n /**\n * The minimum zoom level allowed.\n *\n * @type {number}\n */\n minZoom: number = 0;\n /**\n * The opacity of an element.\n *\n * @type {number}\n * @default 0.6\n */\n opacity: number = 0.6;\n /**\n * Represents the tiles URL.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/{z}/{x}/{y}.png'\n */\n url: string = '';\n /**\n * The projection of the coordinate system.\n *\n * @type {string}\n * @default 'EPSG:3857'\n */\n projection: string = 'EPSG:3857';\n /**\n * Additional headers that should be added to each tile request\n *\n * @type {Record<string, string>}\n * @default An empty array\n */\n requestHeaders: Record<string, string> | null = null;\n /**\n * The priority of showing - layers with higher zIndex cover others in case of collisions\n */\n zIndex: number = 1;\n\n operation: (data: number[][] | ImageData[]) => number[] | ImageData = (d) => d[0] ?? [];\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {RasterTileLayerSettings} model - The tile layer settings to be copied.\n * @return {RasterTileLayerSettings} - A new instance of RasterTileLayerSettings with the same properties as the model.\n */\n public static copy(model: RasterTileLayerSettings): RasterTileLayerSettings {\n const result = new RasterTileLayerSettings();\n result.maxZoom = model.maxZoom;\n result.minZoom = model.minZoom;\n result.zIndex = model.zIndex;\n result.projection = model.projection;\n result.opacity = model.opacity;\n result.url = model.url;\n result.requestHeaders = model.requestHeaders;\n result.operation = model.operation;\n return result;\n }\n\n /**\n * Sets the URL of the RasterTileLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {RasterTileLayerSettings} - The updated RasterTileLayerSettings object.\n */\n setUrl(url: string): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, url });\n }\n\n /**\n * Sets the operation to apply on raster tile data.\n *\n * @param {function} operation - A function that takes an input of either a two-dimensional array of numbers or an array of ImageData objects and returns either a one-dimensional array of numbers or an ImageData object.\n * @return {RasterTileLayerSettings} A new instance of RasterTileLayerSettings with the updated operation.\n */\n setOperation(operation: (data: number[][] | ImageData[]) => number[] | ImageData): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, operation });\n }\n\n /**\n * Sets the requestHeaders of the RasterTileLayerSettings object.\n *\n * @param {Record<string, string>} requestHeaders - The headers which should be provided.\n * @return {RasterTileLayerSettings} - The updated RasterTileLayerSettings object.\n */\n setRequestHeaders(requestHeaders: Record<string, string>): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, requestHeaders });\n }\n\n /**\n * Sets the maximum zoom level for the tile layer.\n *\n * @param {number} maxZoom - The maximum zoom level.\n * @returns {RasterTileLayerSettings} - The updated tile layer settings object.\n */\n setMaxZoom(maxZoom: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, maxZoom });\n }\n\n /**\n * Sets the z-index for the RasterTileLayerSettings.\n *\n * @param {number} zIndex - The new z-index to be assigned.\n * @return {RasterTileLayerSettings} A new RasterTileLayerSettings instance with the updated z-index.\n */\n setZIndex(zIndex: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the minimum zoom level for the Tile Layer.\n *\n * @param {number} minZoom - The minimum zoom level to be set.\n * @return {RasterTileLayerSettings} The modified RasterTileLayerSettings object with the updated minimum zoom level.\n */\n setMinZoom(minZoom: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, minZoom });\n }\n\n /**\n * Sets the opacity of the RasterTileLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {RasterTileLayerSettings} - A new instance of RasterTileLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the projection for the tile layer settings.\n *\n * @param {string} projection - The desired projection for the tile layer settings.\n * @return {RasterTileLayerSettings} - The updated tile layer settings with the new projection.\n */\n setProjection(projection: string): RasterTileLayerSettings {\n return RasterTileLayerSettings.copy({ ...this, projection });\n }\n\n /**\n * Checks if the current instance of RasterTileLayerSettings is equal to the given model.\n * @param {RasterTileLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: RasterTileLayerSettings): boolean {\n if (this.maxZoom !== model.maxZoom) return false;\n if (this.minZoom !== model.minZoom) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.url !== model.url) return false;\n if (this.projection !== model.projection) return false;\n if (this.opacity !== model.opacity) return false;\n if (this.requestHeaders !== model.requestHeaders) return false;\n if (this.operation !== model.operation) return false;\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Raster, XYZ } from 'ol/source';\nimport { TileCoord } from 'ol/tilecoord';\nimport { get } from 'ol/proj';\nimport { Tile } from 'ol';\nimport { RasterTileLayerSettings } from './raster-tile-layer.settings';\nimport ImageLayer from 'ol/layer/Image';\nimport RasterSource from 'ol/source/Raster';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RasterTileLayerFactory {\n public build(settings: RasterTileLayerSettings): ImageLayer<Raster> {\n const source = new XYZ({\n tileSize: 256,\n maxZoom: settings.maxZoom || 14,\n minZoom: settings.minZoom || 1,\n projection: get(settings.projection)!,\n tileUrlFunction: this.getTileFunc(settings),\n crossOrigin: 'Anonymous',\n tileLoadFunction: !!settings.requestHeaders\n ? (tile, src: string) => this.tileLoader(tile, src, settings.requestHeaders!)\n : undefined,\n });\n const raster = new RasterSource({\n sources: [source],\n operationType: 'image',\n operation: settings.operation,\n });\n return new ImageLayer({ source: raster, opacity: settings.opacity, zIndex: settings.zIndex });\n }\n\n private getTileFunc(settings: RasterTileLayerSettings): (tileCoord: TileCoord) => string {\n return (tileCoord) => {\n const zoom = tileCoord[0];\n const x = tileCoord[1];\n const y = tileCoord[2];\n const normalizedCoord = this.getNormalizedCoord({ x: x, y: y }, zoom);\n const bound = 1 << zoom;\n return settings.url\n .replace('{x}', String(normalizedCoord?.x || x))\n .replace('{z}', String(zoom))\n .replace('{y}', String(bound - (normalizedCoord?.y || y) - 1));\n };\n }\n\n private tileLoader(tile: Tile, src: string, headers: Record<string, string>) {\n const client = new XMLHttpRequest();\n client.open('GET', src);\n client.responseType = 'arraybuffer';\n Object.keys(headers).forEach((k: string) => client.setRequestHeader(k, headers[k]));\n client.onload = function () {\n if (this.response !== undefined) {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n const urlCreator = window.URL || (window as any).webkitURL;\n (tile as any).getImage().src = urlCreator.createObjectURL(blob);\n }\n };\n client.send();\n }\n\n private getNormalizedCoord(coord: { x: number; y: number }, zoom: number) {\n const y = coord.y;\n let x = coord.x;\n const tileRange = 1 << zoom;\n if (y < 0 || y >= tileRange) return null;\n if (x < 0 || x >= tileRange) x = ((x % tileRange) + tileRange) % tileRange;\n return { x: x, y: y };\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport TileLayer from 'ol/layer/Tile';\nimport { Raster, XYZ } from 'ol/source';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { TileLayerFactory } from '../tile-layer/tile-layer.factory';\nimport { TileLayerSettings } from '../tile-layer/tile-layer.settings';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { AddTileCommand } from '../../../messages/commands/add-tile.command';\nimport { RemoveTileCommand } from '../../../messages/commands/remove-tile.command';\nimport ImageLayer from 'ol/layer/Image';\nimport { RasterTileLayerFactory } from './raster-tile-layer.factory';\nimport { RasterTileLayerSettings } from './raster-tile-layer.settings';\nimport { AddRasterTileCommand } from '../../../messages/commands/add-raster-tile-command';\nimport { RemoveRasterTileCommand } from '../../../messages/commands/remove-raster-tile.command';\n\n@Component({\n selector: 'art-raster-tile-layer',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RasterTileLayerComponent extends DestructibleComponent {\n public layer?: ImageLayer<Raster>;\n\n constructor(private postboy: MapPostboyService, private factory: RasterTileLayerFactory) {\n super();\n }\n\n _settings: RasterTileLayerSettings = new RasterTileLayerSettings();\n\n @Input() set settings(value: RasterTileLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddRasterTileCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveRasterTileCommand(this.layer));\n }\n}\n","import { Style } from 'ol/layer/WebGLTile';\n\nexport class GeotiffTileLayerSettings {\n /**\n * The maximum source data value. Rendered values are scaled from 0 to 1 based on the configured min and max.\n *\n * @type {number | undefined}\n * @default undefined\n */\n max?: number = undefined;\n /**\n * The minimum source data value. Rendered values are scaled from 0 to 1 based on the configured min and max.\n *\n * @type {number | undefined}\n * @default undefined\n */\n min?: number = undefined;\n /**\n * Represents the URL of the tif.\n * @typedef {string} url\n *\n * @example\n * 'https://example.ex/geotiff.tif'\n */\n url: string = '';\n /**\n * Style to apply to the layer.\n *\n * @type {Style | undefined}\n */\n style?: Style | undefined;\n\n /**\n * The opacity of an element.\n *\n * @type {number}\n * @default 0.6\n */\n opacity: number = 0.6;\n /**\n * The priority of showing - layers with higher zIndex cover others in case of collisions\n */\n zIndex: number = 1;\n /**\n * Represents the size of a block in a specific context, typically used to define dimensions or capacity.\n *\n * Optional property that, if defined, specifies the numerical value for the block size.\n *\n * @type {number|undefined}\n */\n blockSize?: number = undefined;\n /**\n * By default, the source data is normalized to values between 0 and 1 with scaling factors based on the raster statistics or min and max properties of each source. If instead you want to work with the raw values in a style expression, set this to false. Setting this option to false will make it so any min and max properties on sources are ignored.\n */\n normalize?: boolean = true;\n\n /**\n * Values to discard (overriding any nodata values in the metadata). When provided, an additional alpha band will be added to the data. Often the GeoTIFF metadata will include information about nodata values, so you should only need to set this property if you find that it is not already extracted from the metadata.\n */\n nodata?: number;\n\n /**\n * Creates a copy of the given tile layer settings.\n *\n * @param {GeotiffTileLayerSettings} model - The tile layer settings to be copied.\n * @return {GeotiffTileLayerSettings} - A new instance of GeotiffTileLayerSettings with the same properties as the model.\n */\n public static copy(model: GeotiffTileLayerSettings): GeotiffTileLayerSettings {\n const result = new GeotiffTileLayerSettings();\n result.max = model.max;\n result.min = model.min;\n result.zIndex = model.zIndex;\n result.style = model.style;\n result.blockSize = model.blockSize;\n result.opacity = model.opacity;\n result.url = model.url;\n result.normalize = model.normalize;\n result.nodata = model.nodata;\n return result;\n }\n\n /**\n * Sets the URL of the GeotiffTileLayerSettings object.\n *\n * @param {string} url - The URL to be set.\n * @return {GeotiffTileLayerSettings} - The updated GeotiffTileLayerSettings object.\n */\n setUrl(url: string): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, url });\n }\n\n setNodata(nodata: number | undefined): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, nodata });\n }\n\n /**\n * Sets the normalize property for the GeotiffTileLayerSettings instance.\n *\n * @param {boolean} normalize - Indicates whether the normalization setting should be enabled or disabled.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated normalize property.\n */\n setNormalize(normalize: boolean): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, normalize });\n }\n\n /**\n * Updates the style settings for the GeotiffTileLayerSettings and returns a new instance with the updated style.\n *\n * @param {Style} [style] - An optional style object that defines the new style settings.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated style.\n */\n setStyle(style?: Style): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, style });\n }\n\n /**\n * Sets the maximum value for the GeotiffTileLayerSettings.\n *\n * @param {number} max - The maximum value to set.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated maximum value.\n */\n setMax(max: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, max: max });\n }\n\n /**\n * Sets the z-index for the GeotiffTileLayerSettings.\n *\n * @param {number} zIndex - The new z-index to be assigned.\n * @return {GeotiffTileLayerSettings} A new GeotiffTileLayerSettings instance with the updated z-index.\n */\n setZIndex(zIndex: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, zIndex });\n }\n\n /**\n * Sets the minimum value for the GeotiffTileLayerSettings.\n *\n * @param {number} min - The new minimum value to be set.\n * @return {GeotiffTileLayerSettings} A new instance of GeotiffTileLayerSettings with the updated minimum value.\n */\n setMin(min: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, min: min });\n }\n\n /**\n * Sets the opacity of the GeotiffTileLayerSettings.\n *\n * @param {number} opacity - The opacity value to set. Must be a number between 0 and 1.\n * @return {GeotiffTileLayerSettings} - A new instance of GeotiffTileLayerSettings with the opacity set.\n */\n setOpacity(opacity: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, opacity });\n }\n\n /**\n * Sets the block size for the GeoTIFF tile layer.\n *\n * @param {number} blockSize - The size of the block to be set. This value typically defines the number of pixels for determining how data is grouped in tiles.\n * @return {GeotiffTileLayerSettings} A new instance of `GeotiffTileLayerSettings` with the updated block size.\n */\n setBlockSize(blockSize: number): GeotiffTileLayerSettings {\n return GeotiffTileLayerSettings.copy({ ...this, blockSize });\n }\n\n /**\n * Checks if the current instance of GeotiffTileLayerSettings is equal to the given model.\n * @param {GeotiffTileLayerSettings} model - The model to compare against.\n * @return {boolean} - True if all properties of the current instance matches the properties of the model;\n * otherwise, false.\n */\n public isSame(model: GeotiffTileLayerSettings): boolean {\n if (this.max !== model.max) return false;\n if (this.min !== model.min) return false;\n if (this.zIndex !== model.zIndex) return false;\n if (this.url !== model.url) return false;\n if (this.style !== model.style) return false;\n if (this.blockSize !== model.blockSize) return false;\n if (this.opacity !== model.opacity) return false;\n if (this.normalize !== model.normalize) return false;\n if (this.nodata !== model.nodata) return false;\n return true;\n }\n}\n","import { GeoTIFF } from 'ol/source';\nimport { Injectable } from '@angular/core';\nimport { GeotiffTileLayerSettings } from './geotiff-tile-layer.settings';\nimport TileLayer from 'ol/layer/WebGLTile';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GeotiffTileLayerFactory {\n public build(settings: GeotiffTileLayerSettings): TileLayer {\n const source = new GeoTIFF({\n sources: [\n {\n url: settings.url,\n min: settings.min,\n max: settings.max,\n nodata: settings.nodata,\n },\n ],\n sourceOptions: { blockSize: settings.blockSize },\n normalize: settings.normalize,\n });\n return new TileLayer({\n style: settings.style,\n source: source,\n zIndex: settings.zIndex,\n opacity: settings.opacity,\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport ImageLayer from 'ol/layer/Image';\nimport { Raster } from 'ol/source';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { GeotiffTileLayerFactory } from './geotiff-tile-layer.factory';\nimport { GeotiffTileLayerSettings } from './geotiff-tile-layer.settings';\nimport { RemoveGeotiffTileCommand } from '../../../messages/commands/remove-geotiff-tile.command';\nimport { AddGeotiffTileCommand } from '../../../messages/commands/add-geotiff-tile.command';\nimport TileLayer from 'ol/layer/WebGLTile';\n\n@Component({\n selector: 'lib-geotiff-tile-layer',\n imports: [],\n template: '',\n styleUrls: [],\n})\nexport class GeotiffTileLayerComponent extends DestructibleComponent {\n public layer?: TileLayer;\n\n constructor(private postboy: MapPostboyService, private factory: GeotiffTileLayerFactory) {\n super();\n }\n\n _settings: GeotiffTileLayerSettings = new GeotiffTileLayerSettings();\n\n @Input() set settings(value: GeotiffTileLayerSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.initLayer();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => this.initLayer());\n }\n\n onDestroy = () => this.removeLayer();\n\n private initLayer() {\n this.removeLayer();\n this.layer = this.factory.build(this._settings);\n this.postboy.fire(new AddGeotiffTileCommand(this.layer));\n }\n\n private removeLayer() {\n if (this.layer) this.postboy.fire(new RemoveGeotiffTileCommand(this.layer));\n }\n}\n","import { Injectable } from '@angular/core';\nimport Map from 'ol/Map';\nimport { MapSettings } from '../models';\nimport View from 'ol/View';\nimport { defaults } from 'ol/interaction';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapPlateFactory {\n public build(settings: MapSettings): Map {\n return new Map({\n controls: [],\n view: new View({\n center: settings?.center || [0, 0],\n zoom: settings?.zoom || 4,\n minZoom: settings?.minZoom || 0,\n maxZoom: settings?.maxZoom || 19,\n }),\n layers: [],\n interactions: defaults(settings.interactionSettings),\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n input,\n Input,\n NgZone,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MapLyrsLabel, MapSettings } from '../models';\nimport Map from 'ol/Map';\nimport { useGeographic } from 'ol/proj';\nimport { DestructibleComponent } from '../common/destructible.component';\nimport { MessageRegistratorService } from '../services/message-registrator.service';\nimport { MapPostboyService } from '../services/map-postboy.service';\nimport { MapRenderedEvent } from '../messages';\nimport { MapStateService } from '../services/map-state.service';\nimport { MapManagementService } from '../services/map-management.service';\nimport { MapPlateFactory } from './map-plate.factory.service';\nimport { MapClickService } from '../services/map-click.service';\nimport { MapFeatureService } from '../services/map-feature.service';\nimport { FeatureLayerComponent, FeatureLayerSettings, OsmTileLayerComponent } from './layers';\nimport { MapConstants } from '../models/map.constants';\nimport { DrawingService } from '../services/drawing/drawing.service';\nimport { DrawingGenerationService } from '../services/drawing/drawing-generation.service';\nimport { FeatureService } from '../services/feature.service';\nimport { FeatureModificationService } from '../services/drawing/feature-modification.service';\nimport { ControlsService } from '../services/controls/controls.service';\nimport { MapPointerMoveEvent } from '../messages/events/map-pointer-move.event';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'art-map-plate',\n standalone: true,\n templateUrl: './map-plate.component.html',\n styleUrls: ['./map-plate.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MessageRegistratorService,\n MapStateService,\n MapManagementService,\n MapClickService,\n MapFeatureService,\n DrawingService,\n DrawingGenerationService,\n FeatureService,\n FeatureModificationService,\n ControlsService,\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [OsmTileLayerComponent, FeatureLayerComponent, NgIf, NgTemplateOutlet],\n})\nexport class MapPlateComponent extends DestructibleComponent implements AfterViewInit {\n contentRef = input.required<TemplateRef<any>>();\n private renderTryCount = 0;\n map = signal<Map | null>(null);\n osmUrl = signal<string>('');\n drawingLayerSettings = new FeatureLayerSettings().setName(MapConstants.DrawingLayerId);\n\n constructor(\n private elementRef: ElementRef,\n private postboy: MapPostboyService,\n private mapFactory: MapPlateFactory,\n private registrator: MessageRegistratorService,\n private detector: ChangeDetectorRef,\n private ngZone: NgZone,\n ) {\n super();\n registrator.up();\n }\n\n _settings: MapSettings = new MapSettings();\n\n @Input() set settings(value: MapSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.setOsm();\n }\n\n private initializeMap() {\n this.ngZone.runOutsideAngular(() => {\n useGeographic();\n this.map.set(this.mapFactory.build(this._settings));\n this.map()?.setTarget(this.elementRef.nativeElement);\n this.detector.detectChanges();\n this.map()?.once('postrender', () => {\n this.map()?.updateSize();\n this.postboy.fire(new MapRenderedEvent(this.map()!));\n });\n this.map()?.on('pointermove', (ev) => {\n this.postboy.fire(new MapPointerMoveEvent(ev.pixel));\n });\n this.setOsm();\n });\n }\n\n ngAfterViewInit() {\n const mapContainer = this.elementRef.nativeElement;\n\n const checkContainerSize = () => {\n const { clientWidth, clientHeight } = mapContainer;\n if (clientWidth > 0 && clientHeight > 0) {\n this.initializeMap();\n } else {\n console.error(\"Map's container is not rendered yet or has zero size. Trying again in 100 ms.\");\n setTimeout(checkContainerSize, 20 * ++this.renderTryCount); // Проверка каждые 100 мс\n }\n };\n\n checkContainerSize();\n }\n\n onDestroy = () => {\n this.registrator.down();\n };\n\n private setOsm(): void {\n if (!this.map()) return;\n this.osmUrl.set(\n `https://mt{0-3}.google.com/vt/lyrs=${MapLyrsLabel.get(this._settings.lyrs)}&hl=${\n this._settings.language\n }&x={x}&y={y}&z={z}`,\n );\n this.detector.detectChanges();\n this.map()?.updateSize();\n }\n}\n","<ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n@if (osmUrl() && map()) {\r\n <art-osm-tile-layer [map]=\"map()!\" [url]=\"osmUrl()\" [opacity]=\"_settings.osmOpacity\"></art-osm-tile-layer>\r\n}\r\n@if (map()) {\r\n <art-feature-layer [settings]=\"drawingLayerSettings\"></art-feature-layer>\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MarkerModel } from '../../../models/marker-model';\nimport { PlaceLayerFeaturesCommand } from '../../../messages/commands/place-layer-features.command';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\n\n/**\n * MarkersComponent is a component that displays markers on a map.\n * It listens for changes in the `markers` input property and\n * automatically puts the markers on the map using the MapPostboyService.\n */\n@Component({\n selector: 'art-markers',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MarkersComponent extends DestructibleComponent implements OnInit {\n @Input() layerName = '';\n\n constructor(private postboy: MapPostboyService) {\n super();\n }\n\n _markers: MarkerModel[] = [];\n\n /**\n * Sets the markers property.\n *\n * @param {MarkerModel[]} value - The array of MarkerModel objects to set as markers.\n */\n @Input() set markers(value: MarkerModel[]) {\n this._markers = value ?? [];\n this.putMarkers();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe(() => this.putMarkers());\n }\n\n private putMarkers(): void {\n if (!this._markers) return;\n this.postboy.fire(\n new PlaceLayerFeaturesCommand(\n this.layerName,\n this._markers.map((m) => m.feature),\n ),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { PlaceLayerFeaturesCommand } from '../../../messages/commands/place-layer-features.command';\nimport { PolygonModel } from '../../../models/polygon.model';\nimport { MapConstants } from '../../../models';\n\n/**\n * Component for rendering polygons on a map.\n * It listens for changes in the `polygons` input property and\n * automatically puts the polygons on the map using the MapPostboyService.\n */\n@Component({\n selector: 'art-polygons',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PolygonsComponent extends DestructibleComponent implements OnInit {\n @Input() layerName = '';\n\n constructor(private postboy: MapPostboyService) {\n super();\n }\n\n _polygons: PolygonModel[] = [];\n\n /**\n * Sets the value of polygons.\n *\n * @param {PolygonModel[]} value - The new value for polygons.\n */\n @Input() set polygons(value: PolygonModel[]) {\n this._polygons = value ?? [];\n this.putPolygons();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe(() => this.putPolygons());\n }\n\n private putPolygons(): void {\n if (!this._polygons) return;\n this.postboy.fire(\n new PlaceLayerFeaturesCommand(\n this.layerName,\n this._polygons.map((m) => {\n m.feature.set(MapConstants.FeatureLayerName, this.layerName);\n return m.feature;\n }),\n ),\n );\n }\n}\n","import Style from 'ol/style/Style';\nimport { Circle, Fill, Icon, Stroke, Text } from 'ol/style';\n\n/**\n * Helper class to create and modify marker styles.\n */\nexport class MarkerStyleHelper {\n /**\n * Creates a new Style object from an SVG.\n * @param {string} svg - The SVG string.\n * @param {Array<number>} [size=[30, 30]] - The size of the icon image.\n * @param {number} [zIndex=400] - The zIndex of the style.\n * @returns {Style} A new Style object.\n */\n public static fromSvg(svg: string, size: [number, number] = [30, 30], zIndex = 400): Style {\n return new Style({\n image: new Icon({\n src: 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg),\n size: size,\n }),\n zIndex,\n });\n }\n\n /**\n * Returns a Style object with a circle style.\n *\n * @param {number} radius - The radius of the circle.\n * @param {string} fill - The fill color of the circle. Format: '#RRGGBB' or 'rgba(R, G, B, A)'.\n * @param {string} strokeColor - The stroke color of the circle. Format: '#RRGGBB' or 'rgba(R, G, B, A)'.\n * @param {number} [strokeWidth=1] - The width of the stroke. Default is 1.\n * @returns {Style} - A Style object with a Circle image.\n */\n public static circle(radius: number, fill: string, strokeColor: string, strokeWidth = 1): Style {\n return new Style({\n image: new Circle({\n radius,\n fill: new Fill({ color: fill }),\n stroke: new Stroke({ color: strokeColor, width: strokeWidth }),\n }),\n });\n }\n\n /**\n * Applies the given Text to the provided Style.\n *\n * @param {Style} style - The Style to modify.\n * @param {Text} text - The Text to apply to the Style.\n * @return {Style} - The modified Style with the applied Text.\n */\n public static withText(style: Style, text: Text): Style {\n style.setText(text);\n return style;\n }\n}\n","import Style from 'ol/style/Style';\nimport { Circle, Fill, Stroke } from 'ol/style';\n\n/**\n * A helper class for creating polygon styles.\n * @class\n */\nexport class PolygonStyleHelper {\n /**\n * Creates a Style object with the given fill color, stroke color, and stroke width.\n *\n * @param {string} fill - The fill color in hexadecimal or RGB format.\n * @param {string} stroke - The stroke color in hexadecimal or RGB format.\n * @param {number} [strokeWidth=1] - The width of the stroke. Defaults to 1.\n * @return {Style} The created Style object.\n */\n public static simple(fill: string, stroke: string, strokeWidth: number = 1): Style {\n return new Style({\n fill: new Fill({\n color: fill,\n }),\n stroke: new Stroke({\n color: stroke,\n width: strokeWidth,\n }),\n });\n }\n\n /**\n * Creates a new Style object with the given fill, stroke, stroke width, and pin radius.\n *\n * @param {string} fill - The color to use for the fill of the style.\n * @param {string} stroke - The color to use for the stroke of the style.\n * @param {number} [strokeWidth=1] - The width of the stroke. Defaults to 1.\n * @param {number} [pinRadius=5] - The radius of the circle used as the image for the style. Defaults to 5.\n * @returns {Style} - The newly created Style object.\n */\n public static edit(fill: string, stroke: string, strokeWidth: number = 1, pinRadius = 5): Style {\n return new Style({\n image: new Circle({\n fill: new Fill({\n color: stroke,\n }),\n radius: pinRadius,\n }),\n fill: new Fill({\n color: fill,\n }),\n stroke: new Stroke({\n color: stroke,\n width: strokeWidth,\n }),\n });\n }\n}\n","import { Fill, Text } from 'ol/style';\n\n/**\n * Helper class for creating text styles.\n */\nexport class TextStyleHelper {\n /**\n * Creates and returns a new Text instance with specified styling properties.\n *\n * @param {string} text - The text content to display.\n * @param {string} font - The font style to use for the text.\n * @param {string} color - The color of the text.\n * @param {string|null|undefined} [backColor] - The background color of the text. Optional.\n * @param {number[]|null|undefined} [padding] - The padding around the text in pixels. Optional.\n * @param {string|null|undefined} [textBaseline] - The text baseline alignment. Optional.\n * @param {number|null|undefined} [offsetY] - The vertical offset for the text. Optional.\n * @return {Text} A new Text instance configured with the specified properties.\n */\n public static get(\n text: string,\n font: string,\n color: string,\n backColor?: string | null,\n padding?: number[] | null,\n textBaseline?: 'bottom' | 'top' | 'middle' | 'alphabetic' | 'hanging' | 'ideographic' | null,\n offsetY?: number | null,\n ): Text {\n return new Text({\n text: text,\n font: font,\n textAlign: 'center',\n fill: new Fill({\n color: color,\n }),\n backgroundFill: backColor ? new Fill({ color: backColor }) : undefined,\n padding: padding ?? undefined,\n textBaseline: textBaseline ?? undefined,\n offsetY: offsetY ?? undefined,\n });\n }\n}\n","import { Feature } from 'ol';\nimport { Circle, Geometry } from 'ol/geom';\nimport { FeatureOutputFormat } from '../models';\nimport { GeoJSON, WKT } from 'ol/format';\nimport Polygon from 'ol/geom/Polygon';\nimport { Coordinate } from 'ol/coordinate';\nimport { transform } from 'ol/proj';\nimport { METERS_PER_UNIT } from 'ol/proj/epsg4326';\n\n/**\n * A helper class for converting and stringify features.\n */\nexport class StringifyFeatureHelper {\n public static polygon(feature: Feature<Geometry>, format: FeatureOutputFormat = FeatureOutputFormat.GeoJson): string {\n return format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(feature)\n : new WKT().writeFeature(feature);\n }\n\n /**\n * Creates a polygon feature representing a circle based on a given feature with a circle geometry.\n *\n * @param {Feature<Geometry>} feature - The input feature with a circle geometry.\n * @param {FeatureOutputFormat} format - The format for outputting the polygon feature. (default: FeatureOutputFormat.GeoJson)\n *\n * @return {string} - The string representation of the polygon feature.\n */\n public static circle(feature: Feature<Geometry>, format: FeatureOutputFormat = FeatureOutputFormat.GeoJson): string {\n const circle = feature.getGeometry()! as Circle;\n const ext = feature.getGeometry()!.getExtent()!;\n const coords = [\n ...transform([ext[0], ext[1]], 'EPSG:4326', 'EPSG:3857'),\n ...transform([ext[2], ext[3]], 'EPSG:4326', 'EPSG:3857'),\n ];\n const radius = (coords[2] - coords[0]) / 2;\n\n const polygonGeom = new Polygon(StringifyFeatureHelper.drawCircle(circle.getCenter(), radius));\n return StringifyFeatureHelper.polygon(new Feature<Geometry>(polygonGeom), format);\n }\n\n /**\n * Draw a circle based on a center point and radius.\n *\n * @param {number[]} point - The center point coordinates in EPSG:4326 format.\n * @param {number} radius - The radius of the circle in meters.\n * @return {Coordinate[][]} - The coordinates of the circle boundary in EPSG:4326 format.\n */\n private static drawCircle(point: number[], radius: number): Coordinate[][] {\n const tetetemp = transform(point, 'EPSG:4326', 'EPSG:3857');\n // const tetetemp = point;\n const radians = Math.PI / 180; // degrees to radians\n const degrees = 180 / Math.PI; // radians to degrees\n const earthsradius = 6378137.0;\n const rlat = (radius / earthsradius) * degrees;\n const rlng = rlat / Math.cos(tetetemp[1] * radians);\n const extp: number[][] = [];\n for (let i = 0; i <= 32; i++) {\n const theta = Math.PI * (i / 16);\n extp.push([\n tetetemp[0] + rlng * Math.cos(theta) * METERS_PER_UNIT,\n tetetemp[1] + rlat * Math.sin(theta) * METERS_PER_UNIT,\n ]);\n }\n return [extp.map((e) => transform(e, 'EPSG:3857', 'EPSG:4326'))];\n }\n}\n","/**\n * Represents the settings for a zoom control.\n */\nexport class ZoomControlSettings {\n /**\n * The CSS class name of the control element.\n *\n * @type {string}\n */\n controlClass: string = 'ol-zoom';\n /**\n * The CSS class name for zoom in button.\n * @type {string}\n */\n zoomInClass: string = 'ol-zoom-in';\n /**\n * The CSS class name for the zoom out button element.\n *\n * @type {string}\n */\n zoomOutClass: string = 'ol-zoom-out';\n /**\n * The label for the zoom in action.\n *\n * @type {string}\n */\n zoomInLabel: string = 'Zoom In';\n /**\n * The label for the zoom out control.\n *\n * @type {string}\n */\n zoomOutLabel: string = 'Zoom Out';\n\n /**\n * Copies the provided ZoomControlSettings object.\n *\n * @param {ZoomControlSettings} model - The ZoomControlSettings object to be copied.\n * @return {ZoomControlSettings} - The copied ZoomControlSettings object.\n */\n public static copy(model: ZoomControlSettings): ZoomControlSettings {\n const result = new ZoomControlSettings();\n result.controlClass = model.controlClass;\n result.zoomInClass = model.zoomInClass;\n result.zoomOutClass = model.zoomOutClass;\n result.zoomInLabel = model.zoomInLabel;\n result.zoomOutLabel = model.zoomOutLabel;\n return result;\n }\n\n /**\n * Checks if the current ZoomControlSettings object is equal to the given model.\n *\n * @param {ZoomControlSettings} model - The ZoomControlSettings object to compare with.\n *\n * @return {boolean} - true if the current object is equal to the given model, false otherwise.\n */\n public isSame(model: ZoomControlSettings): boolean {\n if (this.zoomInClass !== model.zoomInClass) return false;\n if (this.zoomOutClass !== model.zoomOutClass) return false;\n if (this.zoomInLabel !== model.zoomInLabel) return false;\n if (this.controlClass !== model.controlClass) return false;\n if (this.zoomOutLabel !== model.zoomOutLabel) return false;\n return true;\n }\n\n /**\n * Sets the zoom in label of the Zoom Control Settings.\n *\n * @param {string} zoomInLabel - The label for the zoom in button.\n * @return {ZoomControlSettings} - The new Zoom Control Settings object with the updated zoom in label.\n */\n setZoomInLabel(zoomInLabel: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomInLabel });\n }\n\n /**\n * Sets the zoomOutClass property of the ZoomControlSettings object.\n *\n * @param {string} zoomOutClass - The CSS class to be assigned to the zoom out button.\n * @return {ZoomControlSettings} - The updated ZoomControlSettings object with the new zoomOutClass value.\n */\n setZoomOutClass(zoomOutClass: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomOutClass });\n }\n\n /**\n * Sets the zoom in class for the zoom control settings.\n *\n * @param {string} zoomInClass - The new zoom in class to be set.\n * @return {ZoomControlSettings} - The updated zoom control settings.\n */\n setZoomInClass(zoomInClass: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomInClass });\n }\n\n /**\n * Set the label for the zoom out control.\n *\n * @param {string} zoomOutLabel - The label for the zoom out control.\n * @returns {ZoomControlSettings} - The updated zoom control settings.\n */\n setZoomOutLabel(zoomOutLabel: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, zoomOutLabel });\n }\n\n /**\n * Sets the control class for the ZoomControlSettings.\n *\n * @param {string} controlClass - The class name of the control to be set.\n *\n * @return {ZoomControlSettings} - The modified ZoomControlSettings object.\n */\n setControlClass(controlClass: string): ZoomControlSettings {\n return ZoomControlSettings.copy({ ...this, controlClass });\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport Map from 'ol/Map';\nimport { ZoomControlSettings } from './zoom-control.settings';\nimport { MapRenderedEvent } from '../../../messages';\nimport { filter, first } from 'rxjs/operators';\nimport { Zoom } from 'ol/control';\nimport { GenerateZoomControlExecutor } from '../../../messages/executors/generate-zoom-control.executor';\n\n/**\n * @class\n * @classdesc Represents a component for the Zoom control on a map.\n * @extends DestructibleComponent\n * @implements OnInit\n */\n@Component({\n selector: 'art-map-control-zoom',\n standalone: true,\n template: '',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MapControlZoomComponent extends DestructibleComponent implements OnInit {\n private map?: Map;\n private control?: Zoom;\n\n constructor(private postboy: MapPostboyService) {\n super();\n }\n\n private _settings: ZoomControlSettings = new ZoomControlSettings();\n\n /**\n * Sets the settings for the Zoom Control.\n *\n * @param {ZoomControlSettings | undefined} value - The new settings for the Zoom Control.\n *\n * @description\n * This method sets the settings for the Zoom Control. It takes a parameter `value` which should be an object of type `ZoomControlSettings` or `undefined`.\n *\n * If the `value` is `undefined` or the same as the current settings, the method will return without making any changes.\n *\n */\n @Input() set settings(value: ZoomControlSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.setControl();\n }\n\n ngOnInit(): void {\n this.postboy\n .sub(MapRenderedEvent)\n .pipe(\n filter((m) => !!m),\n first(),\n )\n .subscribe((m) => {\n this.map = m.map;\n this.setControl();\n });\n }\n\n onDestroy = () => {\n this.eliminate();\n };\n\n private setControl(): void {\n if (!this.map) return;\n this.control = this.postboy.exec(new GenerateZoomControlExecutor(this._settings));\n this.map.addControl(this.control!);\n }\n\n private eliminate = () => !!this.map && !!this.control && this.map.removeControl(this.control);\n}\n","import { MapClickEvent } from '../../../messages';\nimport { IdGenerator } from '../../../common/id.generator';\n\nexport class TooltipSettings {\n public readonly id: string;\n containerClass: string = 'custom-tooltip-class';\n\n public constructor(id?: string) {\n this.id = id ?? IdGenerator.get();\n }\n\n public static copy(model: TooltipSettings): TooltipSettings {\n const result = new TooltipSettings(model.id);\n result.show = model.show;\n result.containerClass = model.containerClass;\n return result;\n }\n\n show: (ev: MapClickEvent) => boolean = (e) => true;\n\n setShow(show: (ev: MapClickEvent) => boolean): TooltipSettings {\n return TooltipSettings.copy({ ...this, show });\n }\n\n setClass(containerClass: string): TooltipSettings {\n return TooltipSettings.copy({ ...this, containerClass });\n }\n\n public isSame(model: TooltipSettings): boolean {\n if (this.show !== model.show) return false;\n if (this.containerClass !== model.containerClass) return false;\n if (this.id !== model.id) return false;\n return true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n input,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { TooltipSettings } from './tooltip.settings';\nimport { DestructibleComponent } from '../../../common/destructible.component';\nimport { MapPostboyService } from '../../../services/map-postboy.service';\nimport { MapClickEvent, MapRenderedEvent } from '../../../messages';\nimport Map from 'ol/Map';\nimport { CloseTooltipCommand } from '../../../messages/commands/close-tooltip.command';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport Overlay, { Options as OverlayOptions } from 'ol/Overlay';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'art-tooltip',\n standalone: true,\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n})\nexport class TooltipComponent extends DestructibleComponent implements OnInit {\n contentRef = input.required<TemplateRef<any>>();\n @ViewChild('tip') container!: ElementRef<HTMLElement>;\n overlay?: Overlay;\n show = false;\n private map?: Map;\n\n constructor(private postboy: MapPostboyService, private detector: ChangeDetectorRef) {\n super();\n }\n\n _settings: TooltipSettings = new TooltipSettings();\n\n @Input() set settings(value: TooltipSettings | undefined) {\n if (!value || this._settings.isSame(value)) return;\n this._settings = value;\n this.detector.detectChanges();\n }\n\n ngOnInit(): void {\n this.subs.push(this.observeMapRender());\n this.subs.push(this.observeMapClick());\n this.subs.push(this.observeClose());\n }\n\n addOverlay(coordinates: number[]): void {\n this.removeOverlay();\n this.overlay = new Overlay(this.options(coordinates));\n this.map?.addOverlay(this.overlay);\n this.show = true;\n this.detector.detectChanges();\n }\n\n options = (coordinates: number[]): OverlayOptions => {\n return {\n element: this.container?.nativeElement,\n autoPan: false,\n position: coordinates,\n };\n };\n\n private observeMapClick(): Subscription {\n return this.postboy.sub(MapClickEvent).subscribe((ev) => {\n this._settings.show(ev) ? this.addOverlay(ev.coordinates) : this.removeOverlay();\n });\n }\n\n private observeClose(): Subscription {\n return this.postboy\n .sub(CloseTooltipCommand)\n .pipe(filter((ev) => ev.tooltipId === this._settings.id))\n .subscribe(() => this.removeOverlay());\n }\n\n private observeMapRender() {\n return this.postboy.sub(MapRenderedEvent).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private removeOverlay = () => {\n !!this.overlay && this.map?.removeOverlay(this.overlay);\n this.show = false;\n };\n}\n","<div #tip [class]=\"['tooltip-wrapper', _settings.containerClass]\" [hidden]=\"!show\">\r\n <ng-container *ngTemplateOutlet=\"contentRef()\"> </ng-container>\r\n</div>\r\n","/*\n * Public API Surface of maps\n */\n\nexport * from './models/index';\nexport * from './map-plate/map-plate.component';\nexport * from './services/map-postboy.service';\nexport * from './messages/index';\nexport * from './map-plate/layers/index';\nexport * from './map-plate/features/index';\nexport * from './services/map-postboy.service';\nexport * from './services/message-registrator.service';\nexport * from './helpers/index';\nexport * from './map-plate/controls/index';\nexport * from './map-plate/tooltips/index';\nexport * from './ol-proxy';\n","/*\n * Public API Surface of maps-components\n */\n\nexport * from './map/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapPostboyService","Source","i2.MapManagementService","i3.MapStateService","i4.MapFeatureService","i5.MapClickService","i6.DrawingService","i7.FeatureModificationService","i8.ControlsService","i2.TileLayerFactory","Layer","i2.FeatureLayerFactory","i2.ClusterLayerFactory","i2.ImageLayerFactory","i2.RasterTileLayerFactory","TileLayer","i2.GeotiffTileLayerFactory","i2.MapPlateFactory","i3.MessageRegistratorService","Circle"],"mappings":"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"}
|