@artstesh/maps 6.0.4 → 6.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"maps-components.mjs","sources":["../../projects/maps-components/src/map/common/destructible.component.ts","../../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/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/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/add-control.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/executors/calculate-area.executor.ts","../../projects/maps-components/src/map/messages/commands/fit-to-polygons.command.ts","../../projects/maps-components/src/map/messages/executors/get-map-position.executor.ts","../../projects/maps-components/src/map/messages/queries/get-features-in-area.query.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/commands/fit-to-features.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/filter-features-in-area.executor.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/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/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/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/map-plate/features/polygons/polygons.component.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.module.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/public-api.ts","../../projects/maps-components/src/public-api.ts","../../projects/maps-components/src/maps-components.ts"],"sourcesContent":["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","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';\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\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.language = model.language;\n return result;\n }\n\n setCenter(center: number[]): MapSettings {\n return MapSettings.copy({ ...this, center });\n }\n\n setMaxZoom(maxZoom: number): MapSettings {\n return MapSettings.copy({ ...this, maxZoom });\n }\n\n setMinZoom(minZoom: number): MapSettings {\n return MapSettings.copy({ ...this, minZoom });\n }\n\n setZoom(zoom: number): MapSettings {\n return MapSettings.copy({ ...this, zoom });\n }\n\n setLyrs(lyrs: MapLyrs): MapSettings {\n return MapSettings.copy({ ...this, lyrs });\n }\n\n setLanguage(language: string): MapSettings {\n return MapSettings.copy({ ...this, language });\n }\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 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}\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 { Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { getCenter } from 'ol/extent';\nimport { MapConstants } from './map.constants';\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);\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","export enum DrawingType {\n Polygon = 1,\n Circle,\n Square,\n Box,\n}\n","export enum FeatureOutputFormat {\n GeoJson = 1,\n WKT,\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 Map from 'ol/Map';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class MapRenderedEvent extends PostboyGenericMessage {\n public static readonly ID: string = 'b6121807-3b89-4cd3-82cf-089d2cefdc4f';\n\n constructor(public map: Map) {\n super();\n }\n\n public get id(): string {\n return MapRenderedEvent.ID;\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { IIdentified } from '../../models/i-identified';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class MapClickEvent extends PostboyGenericMessage {\n public static readonly ID: string = '323df526-8d9c-49c6-83e8-6e9a1e7762f7';\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 public get id(): string {\n return MapClickEvent.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapPosition } from '../../models';\n\nexport class MapMoveEndEvent extends PostboyGenericMessage {\n public static readonly ID: string = 'f21f783e-b5af-4489-9fec-8027fd07a8ad';\n\n constructor(public position: MapPosition | null) {\n super();\n }\n\n public get id(): string {\n return MapMoveEndEvent.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class CloseTooltipCommand extends PostboyGenericMessage {\n public static readonly ID: string = '4896d52c-e34f-4994-bcfd-32832d12dbe4';\n\n constructor(public tooltipId: string) {\n super();\n }\n\n public get id(): string {\n return CloseTooltipCommand.ID;\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { DrawingType, FeatureOutputFormat } from '../../models';\nimport Style from 'ol/style/Style';\n\nexport class StartDrawingCommand extends PostboyCallbackMessage<string | null> {\n public static readonly ID: string = 'da904f4b-a1c8-4db7-a6af-14d9ee18ec8c';\n\n constructor(\n public type: DrawingType,\n public style: Style,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n ) {\n super();\n }\n\n public get id(): string {\n return StartDrawingCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class CancelDrawingCommand extends PostboyGenericMessage {\n public static readonly ID: string = '7d38d983-feba-4176-a66b-18175e5ecd6b';\n\n public get id(): string {\n return CancelDrawingCommand.ID;\n }\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\nexport class DrawSelectionAreaCommand extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID: string = '573d8a0d-f25b-42b7-9ad7-0ac6d86ac362';\n\n constructor(public type: DrawingType, public style: Style, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n\n public get id(): string {\n return DrawSelectionAreaCommand.ID;\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { FeatureOutputFormat, PolygonModel } from '../../models';\nimport Style from 'ol/style/Style';\n\nexport class ModifyFeatureCommand extends PostboyCallbackMessage<string | null> {\n public static readonly ID: string = 'ead85caa-24c6-4844-a68c-2cea91774c8c';\n\n constructor(\n public model: PolygonModel,\n public style: Style,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n ) {\n super();\n }\n\n public get id(): string {\n return ModifyFeatureCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class CancelFeatureModificationCommand extends PostboyGenericMessage {\n public static readonly ID: string = '9c9fb40f-ea95-4704-8177-0e9ecabf36fa';\n\n public get id(): string {\n return CancelFeatureModificationCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\nexport class AddControlCommand extends PostboyGenericMessage {\n public static readonly ID: string = '8e1c06eb-b395-4fe1-929c-ebf0805eeb49';\n\n constructor(public item: MapControl) {\n super();\n }\n\n public get id(): string {\n return AddControlCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\nexport class RemoveControlCommand extends PostboyGenericMessage {\n public static readonly ID: string = '361641e0-804a-4930-8c27-0cea6330dbfc';\n\n constructor(public item: MapControl) {\n super();\n }\n\n public get id(): string {\n return RemoveControlCommand.ID;\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 public static readonly ID: string = 'd50e89c9-6707-4f8c-ab57-65fcef232182';\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 public get id(): string {\n return SetMapCenterCommand.ID;\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PolygonModel } from '../../models';\n\nexport class CalculateAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n public static readonly ID: string = '172ecf46-86b5-4f46-a5f1-96ba2cbb1694';\n\n constructor(public polygon: PolygonModel) {\n super();\n }\n\n public get id(): string {\n return CalculateAreaExecutor.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { PolygonModel } from '../../models';\n\nexport class FitToPolygonsCommand extends PostboyGenericMessage {\n public static readonly ID: string = 'a9e42b23-ffaf-4c46-8370-e0432cd14d60';\n\n constructor(public features: PolygonModel[], public zoomAfter = 0) {\n super();\n }\n\n public get id(): string {\n return FitToPolygonsCommand.ID;\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 public get id(): string {\n return GetMapPositionExecutor.ID;\n }\n\n constructor() {\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\nexport class GetFeaturesInAreaQuery extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID: string = 'efcf4271-a07a-40e0-9f02-d4dade40b8ac';\n\n constructor(public area: Geometry, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n\n public get id(): string {\n return GetFeaturesInAreaQuery.ID;\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 public static readonly ID: string = 'd93e250f-92bc-43ac-9c6a-46c521a1aaa5';\n\n constructor(public layer: Layer<VectorSource<any> | Cluster>) {\n super();\n }\n\n public get id(): string {\n return AddLayerCommand.ID;\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class PlaceLayerFeaturesCommand extends PostboyGenericMessage {\n public static readonly ID: string = '8caf86bc-869b-426f-b36d-4642f6b8aab0';\n\n constructor(public layer: string, public features: Feature<Geometry>[]) {\n super();\n }\n\n public get id(): string {\n return PlaceLayerFeaturesCommand.ID;\n }\n}\n","import BaseLayer from 'ol/layer/Base';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class RemoveLayerCommand extends PostboyGenericMessage {\n public static readonly ID: string = 'ab484e0e-e185-45cd-8434-12101f3c7eb1';\n\n constructor(public layer: BaseLayer) {\n super();\n }\n\n public get id(): string {\n return RemoveLayerCommand.ID;\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 public static readonly ID: string = '25b7df28-72ce-4453-9fe6-54285a2fdc57';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n\n public get id(): string {\n return AddTileCommand.ID;\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 public static readonly ID: string = 'c36ccc0b-5638-4819-b148-2de57a59a5b7';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n\n public get id(): string {\n return RemoveTileCommand.ID;\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class FitToFeaturesCommand extends PostboyGenericMessage {\n public static readonly ID: string = '76cdc091-3793-4b6c-82f7-1e0334cf08a8';\n\n constructor(public features: Feature<Geometry>[], public zoomAfter = 0) {\n super();\n }\n\n public get id(): string {\n return FitToFeaturesCommand.ID;\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: string = '5c04c87b-8a93-4c2a-979e-d1e313d860ed';\n\n constructor(public name: string) {\n super();\n }\n\n public get id(): string {\n return GetLayerQuery.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class DrawingFinishedEvent extends PostboyGenericMessage {\n public static readonly ID: string = 'c724b68e-b4eb-4783-90f1-a8e31973fd36';\n\n constructor() {\n super();\n }\n\n public get id(): string {\n return DrawingFinishedEvent.ID;\n }\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' : '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, Point } from 'ol/geom';\nimport Polygon from 'ol/geom/Polygon';\nimport { Feature } from 'ol';\nimport * as Sphere from 'ol/sphere';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\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 calculateArea(g: Geometry | undefined): number {\n if (!g) return 0;\n return Sphere.getArea(g, { projection: 'EPSG:4326' });\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","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\n\nexport class FilterFeaturesInAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n public static readonly ID: string = '36bb2d94-8028-4512-90dd-2386af3fc67c';\n\n constructor(public area: Geometry, public features: Feature<Geometry>[]) {\n super();\n }\n\n public get id(): string {\n return FilterFeaturesInAreaExecutor.ID;\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 Style from 'ol/style/Style';\n\nexport class GenerateDrawExecutor extends PostboyExecutor<Draw> {\n public static readonly ID: string = 'f01c99ba-0953-4ab5-82f9-04e6fbb678c1';\n\n constructor(public layer: Layer<VectorSource<any>>, public style: Style, public type: DrawingType) {\n super();\n }\n\n public get id(): string {\n return GenerateDrawExecutor.ID;\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Draw } from 'ol/interaction';\nimport { ZoomControlSettings } from '../../map-plate/controls/map-control-zoom/zoom-control.settings';\n\nexport class GenerateZoomControlExecutor extends PostboyExecutor<Draw> {\n public static readonly ID: string = 'ff16a833-c68e-4b1a-bc23-c0d16b002810';\n\n constructor(public settings: ZoomControlSettings) {\n super();\n }\n\n public get id(): string {\n return GenerateZoomControlExecutor.ID;\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 { 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 this.addLocker({ locker: StartDrawingCommand.ID, unlocker: DrawingFinishedEvent.ID, locking: [MapClickEvent.ID] });\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 { 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';\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.observeRemoveTile();\n this.observeLayerQuery();\n this.observeFeaturesInArea();\n }\n\n private observeRemoveTile() {\n this.postboy.subscribe<RemoveTileCommand>(RemoveTileCommand.ID).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeLayerQuery() {\n this.postboy.subscribe<GetLayerQuery>(GetLayerQuery.ID).subscribe((ev) => ev.finish(this.layers.take(ev.name)));\n }\n\n private observeAddTile() {\n this.postboy.subscribe<AddTileCommand>(AddTileCommand.ID).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private observeAddLayer() {\n this.postboy.subscribe<AddLayerCommand>(AddLayerCommand.ID).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.subscribe<PlaceLayerFeaturesCommand>(PlaceLayerFeaturesCommand.ID).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.subscribe<RemoveLayerCommand>(RemoveLayerCommand.ID).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.subscribe<GetFeaturesInAreaQuery>(GetFeaturesInAreaQuery.ID).subscribe((qr) => {\n let result = new Dictionary<IIdentified[]>();\n this.layers.forEach((l) => {\n let layerName = l.get('name');\n if (qr.ignore.has(layerName) || layerName === MapConstants.DrawingLayerId) return;\n let source = l.getSource();\n if (!!(source as any)['getSource']) source = (source as any)?.getSource();\n let features = this.postboy.execute<FilterFeaturesInAreaExecutor, Feature<Geometry>[]>(\n new FilterFeaturesInAreaExecutor(qr.area, source?.getFeatures() ?? []),\n );\n result.put(\n layerName,\n features.map((e) => ({ id: e.getId(), ...e.get(MapConstants.FeatureInfo) })),\n );\n });\n qr.finish(result);\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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.subscribe<SetMapCenterCommand>(SetMapCenterCommand.ID).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 { Map } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { FitToPolygonsCommand, MapRenderedEvent } from '../messages';\nimport { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';\nimport { Geometry } from 'ol/geom';\nimport { createEmpty, extend } from 'ol/extent';\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 }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n if (this.fitPolygonsWaiting) this.postboy.fire(this.fitPolygonsWaiting);\n });\n }\n\n private observeFitToFeatures() {\n this.postboy.subscribe<FitToFeaturesCommand>(FitToFeaturesCommand.ID).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.subscribe<FitToPolygonsCommand>(FitToPolygonsCommand.ID).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<UIEvent>): 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)\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.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n this.map?.on('singleclick', (e) => {\n this.postboy.fire(this.onClick(e));\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 } 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 { 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';\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.subscribe<DrawSelectionAreaCommand>(DrawSelectionAreaCommand.ID).subscribe((ev) => {\n const drawingCommand = new StartDrawingCommand(ev.type, ev.style);\n drawingCommand.result.subscribe((r) => {\n if (!r) {\n ev.finish(new Dictionary<IIdentified[]>());\n return;\n }\n const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry()!;\n const getFeaturesCommand = new GetFeaturesInAreaQuery(area, ev.ignore);\n getFeaturesCommand.result.subscribe((result) => ev.finish(result));\n this.postboy.fire(getFeaturesCommand);\n });\n this.postboy.fire(drawingCommand);\n });\n }\n\n private observeDrawing() {\n this.postboy.subscribe<StartDrawingCommand>(StartDrawingCommand.ID).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.execute(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<VectorSource<Geometry>>): void {\n command.finish(\n command.format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(evt.feature)\n : new WKT().writeFeature(evt.feature),\n );\n this.clearInteraction(layer);\n }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private draw(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n const query = new GetLayerQuery(MapConstants.DrawingLayerId);\n query.result.subscribe((l) => action(l));\n this.postboy.fire(query);\n }\n\n private observeCancelation(ev: StartDrawingCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .subscribe<CancelDrawingCommand>(CancelDrawingCommand.ID)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<Geometry>> | null): void {\n if (!!this.drawInteraction) {\n this.map?.removeInteraction(this.drawInteraction);\n layer?.setSource(new Source({}));\n }\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';\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.subscribe<ModifyFeatureCommand>(ModifyFeatureCommand.ID).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 this.addDragging(ev);\n });\n });\n }\n\n private initFeature(layer: Layer<VectorSource<Geometry>>, 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 : new WKT().writeFeature(command.model.feature),\n );\n }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private defineLayer(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n const query = new GetLayerQuery(MapConstants.DrawingLayerId);\n query.result.subscribe((l) => action(l));\n this.postboy.fire(query);\n }\n\n private observeCancelation(ev: ModifyFeatureCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .subscribe(CancelFeatureModificationCommand.ID)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<Geometry>> | null): void {\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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.subscribe<AddControlCommand>(AddControlCommand.ID).subscribe((c) => this.map?.addControl(c.item));\n }\n\n private observeRemoving() {\n this.postboy\n .subscribe<RemoveControlCommand>(RemoveControlCommand.ID)\n .subscribe((c) => this.map?.removeControl(c.item));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MapPostboyService } from './map-postboy.service';\nimport { FitToPolygonsCommand, MapRenderedEvent } 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';\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.registerReplay(MapRenderedEvent.ID);\n this.registerReplay(PlaceLayerFeaturesCommand.ID);\n this.registerReplay(RemoveControlCommand.ID);\n this.registerReplay(AddControlCommand.ID);\n this.registerReplay(SetMapCenterCommand.ID);\n this.registerSubject(AddLayerCommand.ID);\n this.registerSubject(RemoveLayerCommand.ID);\n this.registerSubject(AddTileCommand.ID);\n this.registerSubject(RemoveTileCommand.ID);\n this.registerSubject(MapClickEvent.ID);\n this.registerSubject(CloseTooltipCommand.ID);\n this.registerSubject(FitToFeaturesCommand.ID);\n this.registerSubject(FitToPolygonsCommand.ID);\n this.registerSubject(MapMoveEndEvent.ID);\n this.registerSubject(CancelDrawingCommand.ID);\n this.registerSubject(StartDrawingCommand.ID);\n this.registerSubject(GetLayerQuery.ID);\n this.registerSubject(DrawingFinishedEvent.ID);\n this.registerSubject(GetFeaturesInAreaQuery.ID);\n this.registerSubject(DrawSelectionAreaCommand.ID);\n this.registerSubject(CancelFeatureModificationCommand.ID);\n this.registerSubject(ModifyFeatureCommand.ID);\n this.setExecutors();\n }\n\n private setExecutors() {\n this.registerExecutor(FilterFeaturesInAreaExecutor.ID, (e: FilterFeaturesInAreaExecutor) =>\n FeatureService.filterFeaturesInArea(e),\n );\n this.registerExecutor(CalculateAreaExecutor.ID, (e: CalculateAreaExecutor) =>\n FeatureService.calculateArea(e.polygon?.feature?.getGeometry()),\n );\n this.registerExecutor(GenerateDrawExecutor.ID, (e: GenerateDrawExecutor) => DrawingGenerationService.getDraw(e));\n this.registerExecutor(GenerateZoomControlExecutor.ID, (e: GenerateZoomControlExecutor) =>\n ZoomControlFactory.build(e.settings),\n );\n this.registerExecutor(GetMapPositionExecutor.ID, () => this.state.getMapPosition());\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 /**\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 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 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 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';\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 });\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 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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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';\n\n@Component({\n selector: 'art-osm-tile-layer',\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\n @Input() set url(value: string | undefined) {\n if (!value || this._url === value) return;\n this._url = value;\n this.initLayer();\n }\n\n private _map?: Map;\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 });\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 /**\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 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 /**\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 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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.subscribe<MapMoveEndEvent>(MapMoveEndEvent.ID).pipe(auditTime(250)),\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID),\n ]).subscribe(([movement, renderEvent]) => {\n this.checkClusterNecessity(renderEvent.map);\n });\n }\n\n private observeClick() {\n this.postboy.subscribe<MapClickEvent>(MapClickEvent.ID).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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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","import { Injectable } from '@angular/core';\nimport Map from 'ol/Map';\nimport { MapSettings } from '../models';\nimport View from 'ol/View';\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 });\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } 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 { FeatureLayerSettings } 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';\n\n@Component({\n selector: 'art-map-plate',\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})\nexport class MapPlateComponent extends DestructibleComponent implements OnInit {\n map!: Map;\n osmUrl = '';\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 ) {\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 ngOnInit(): void {\n useGeographic();\n this.map = 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.setOsm();\n }\n\n onDestroy = () => {\n this.registrator.down();\n };\n\n private setOsm(): void {\n if (!this.map) return;\n this.osmUrl = `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 this.detector.detectChanges();\n this.map.updateSize();\n }\n}\n","<ng-content></ng-content>\r\n<art-osm-tile-layer *ngIf=\"osmUrl && map\" [map]=\"map\" [url]=\"osmUrl\"></art-osm-tile-layer>\r\n<art-feature-layer *ngIf=\"map\" [settings]=\"drawingLayerSettings\"></art-feature-layer>\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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 { 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 OnInit,\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';\n\n@Component({\n selector: 'art-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent extends DestructibleComponent implements OnInit {\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 autoPanAnimation: { duration: 0 },\n position: coordinates,\n };\n };\n\n private observeMapClick(): Subscription {\n return this.postboy.subscribe<MapClickEvent>(MapClickEvent.ID).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 .subscribe<CloseTooltipCommand>(CloseTooltipCommand.ID)\n .pipe(filter((ev) => ev.tooltipId === this._settings.id))\n .subscribe(() => this.removeOverlay());\n }\n\n private observeMapRender() {\n return this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).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-content></ng-content>\r\n</div>\r\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';\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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) => m.feature),\n ),\n );\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.execute(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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DestructibleComponent } from './common/destructible.component';\nimport { MapPlateComponent } from './map-plate/map-plate.component';\nimport { TileLayerComponent } from './map-plate/layers/tile-layer/tile-layer.component';\nimport { OsmTileLayerComponent } from './map-plate/layers/osm-tile-layer/osm-tile-layer.component';\nimport { FeatureLayerComponent } from './map-plate/layers/feature-layer/feature-layer.component';\nimport { MarkersComponent } from './map-plate/features/markers/markers.component';\nimport { TooltipComponent } from './map-plate/tooltips/tooltip/tooltip.component';\nimport { PolygonsComponent } from './map-plate/features/polygons/polygons.component';\nimport { ClusterLayerComponent } from './map-plate/layers/cluster-layer/cluster-layer.component';\nimport { MapControlZoomComponent } from './map-plate/controls/map-control-zoom/map-control-zoom.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n DestructibleComponent,\n MapPlateComponent,\n TileLayerComponent,\n OsmTileLayerComponent,\n FeatureLayerComponent,\n MarkersComponent,\n TooltipComponent,\n PolygonsComponent,\n ClusterLayerComponent,\n MapControlZoomComponent,\n ],\n exports: [\n MapPlateComponent,\n FeatureLayerComponent,\n MarkersComponent,\n TileLayerComponent,\n TooltipComponent,\n PolygonsComponent,\n ClusterLayerComponent,\n MapControlZoomComponent,\n ],\n})\nexport class MapModule {}\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 let image = new Image();\n image.src = 'data:image/svg+xml,' + escape(svg);\n return new Style({\n image: new Icon({\n img: image,\n imgSize: 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 a new instance of the Text class with the specified properties.\n *\n * @param {string} text - The text content of the Text object.\n * @param {string} font - The font style of the Text object.\n * @param {string} color - The color of the Text object.\n * @return {Text} A new instance of the Text class.\n */\n public static get(text: string, font: string, color: string): Text {\n return new Text({\n text: text,\n font: font,\n textAlign: 'center',\n fill: new Fill({\n color: color,\n }),\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 * Public API Surface of maps\n */\n\nexport * from './map.module';\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';\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.MapPlateFactory","i3.MessageRegistratorService","i5.OsmTileLayerComponent","i6.FeatureLayerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"maps-components.mjs","sources":["../../projects/maps-components/src/map/common/destructible.component.ts","../../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/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/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/add-control.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/executors/calculate-area.executor.ts","../../projects/maps-components/src/map/messages/commands/fit-to-polygons.command.ts","../../projects/maps-components/src/map/messages/executors/get-map-position.executor.ts","../../projects/maps-components/src/map/messages/queries/get-features-in-area.query.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/commands/fit-to-features.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/filter-features-in-area.executor.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/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/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/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/map-plate/features/polygons/polygons.component.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.module.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/public-api.ts","../../projects/maps-components/src/public-api.ts","../../projects/maps-components/src/maps-components.ts"],"sourcesContent":["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","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';\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\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.language = model.language;\n return result;\n }\n\n setCenter(center: number[]): MapSettings {\n return MapSettings.copy({ ...this, center });\n }\n\n setMaxZoom(maxZoom: number): MapSettings {\n return MapSettings.copy({ ...this, maxZoom });\n }\n\n setMinZoom(minZoom: number): MapSettings {\n return MapSettings.copy({ ...this, minZoom });\n }\n\n setZoom(zoom: number): MapSettings {\n return MapSettings.copy({ ...this, zoom });\n }\n\n setLyrs(lyrs: MapLyrs): MapSettings {\n return MapSettings.copy({ ...this, lyrs });\n }\n\n setLanguage(language: string): MapSettings {\n return MapSettings.copy({ ...this, language });\n }\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 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}\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 { Geometry } from 'ol/geom';\nimport { GeoJSON, WKT } from 'ol/format';\nimport { getCenter } from 'ol/extent';\nimport { MapConstants } from './map.constants';\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);\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","export enum DrawingType {\n Polygon = 1,\n Circle,\n Square,\n Box,\n}\n","export enum FeatureOutputFormat {\n GeoJson = 1,\n WKT,\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 Map from 'ol/Map';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class MapRenderedEvent extends PostboyGenericMessage {\n public static readonly ID: string = 'b6121807-3b89-4cd3-82cf-089d2cefdc4f';\n\n constructor(public map: Map) {\n super();\n }\n\n public get id(): string {\n return MapRenderedEvent.ID;\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { IIdentified } from '../../models/i-identified';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class MapClickEvent extends PostboyGenericMessage {\n public static readonly ID: string = '323df526-8d9c-49c6-83e8-6e9a1e7762f7';\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 public get id(): string {\n return MapClickEvent.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapPosition } from '../../models';\n\nexport class MapMoveEndEvent extends PostboyGenericMessage {\n public static readonly ID: string = 'f21f783e-b5af-4489-9fec-8027fd07a8ad';\n\n constructor(public position: MapPosition | null) {\n super();\n }\n\n public get id(): string {\n return MapMoveEndEvent.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class CloseTooltipCommand extends PostboyGenericMessage {\n public static readonly ID: string = '4896d52c-e34f-4994-bcfd-32832d12dbe4';\n\n constructor(public tooltipId: string) {\n super();\n }\n\n public get id(): string {\n return CloseTooltipCommand.ID;\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { DrawingType, FeatureOutputFormat } from '../../models';\nimport Style from 'ol/style/Style';\n\nexport class StartDrawingCommand extends PostboyCallbackMessage<string | null> {\n public static readonly ID: string = 'da904f4b-a1c8-4db7-a6af-14d9ee18ec8c';\n\n constructor(\n public type: DrawingType,\n public style: Style,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n ) {\n super();\n }\n\n public get id(): string {\n return StartDrawingCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class CancelDrawingCommand extends PostboyGenericMessage {\n public static readonly ID: string = '7d38d983-feba-4176-a66b-18175e5ecd6b';\n\n public get id(): string {\n return CancelDrawingCommand.ID;\n }\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\nexport class DrawSelectionAreaCommand extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID: string = '573d8a0d-f25b-42b7-9ad7-0ac6d86ac362';\n\n constructor(public type: DrawingType, public style: Style, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n\n public get id(): string {\n return DrawSelectionAreaCommand.ID;\n }\n}\n","import { PostboyCallbackMessage } from '@artstesh/postboy';\nimport { FeatureOutputFormat, PolygonModel } from '../../models';\nimport Style from 'ol/style/Style';\n\nexport class ModifyFeatureCommand extends PostboyCallbackMessage<string | null> {\n public static readonly ID: string = 'ead85caa-24c6-4844-a68c-2cea91774c8c';\n\n constructor(\n public model: PolygonModel,\n public style: Style,\n public format: FeatureOutputFormat = FeatureOutputFormat.GeoJson,\n ) {\n super();\n }\n\n public get id(): string {\n return ModifyFeatureCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class CancelFeatureModificationCommand extends PostboyGenericMessage {\n public static readonly ID: string = '9c9fb40f-ea95-4704-8177-0e9ecabf36fa';\n\n public get id(): string {\n return CancelFeatureModificationCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\nexport class AddControlCommand extends PostboyGenericMessage {\n public static readonly ID: string = '8e1c06eb-b395-4fe1-929c-ebf0805eeb49';\n\n constructor(public item: MapControl) {\n super();\n }\n\n public get id(): string {\n return AddControlCommand.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { MapControl } from '../../models/map-control';\n\nexport class RemoveControlCommand extends PostboyGenericMessage {\n public static readonly ID: string = '361641e0-804a-4930-8c27-0cea6330dbfc';\n\n constructor(public item: MapControl) {\n super();\n }\n\n public get id(): string {\n return RemoveControlCommand.ID;\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 public static readonly ID: string = 'd50e89c9-6707-4f8c-ab57-65fcef232182';\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 public get id(): string {\n return SetMapCenterCommand.ID;\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PolygonModel } from '../../models';\n\nexport class CalculateAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n public static readonly ID: string = '172ecf46-86b5-4f46-a5f1-96ba2cbb1694';\n\n constructor(public polygon: PolygonModel) {\n super();\n }\n\n public get id(): string {\n return CalculateAreaExecutor.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\nimport { PolygonModel } from '../../models';\n\nexport class FitToPolygonsCommand extends PostboyGenericMessage {\n public static readonly ID: string = 'a9e42b23-ffaf-4c46-8370-e0432cd14d60';\n\n constructor(public features: PolygonModel[], public zoomAfter = 0) {\n super();\n }\n\n public get id(): string {\n return FitToPolygonsCommand.ID;\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 public get id(): string {\n return GetMapPositionExecutor.ID;\n }\n\n constructor() {\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\nexport class GetFeaturesInAreaQuery extends PostboyCallbackMessage<Dictionary<IIdentified[]>> {\n public static readonly ID: string = 'efcf4271-a07a-40e0-9f02-d4dade40b8ac';\n\n constructor(public area: Geometry, public ignore: Set<string> = new Set<string>()) {\n super();\n }\n\n public get id(): string {\n return GetFeaturesInAreaQuery.ID;\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 public static readonly ID: string = 'd93e250f-92bc-43ac-9c6a-46c521a1aaa5';\n\n constructor(public layer: Layer<VectorSource<any> | Cluster>) {\n super();\n }\n\n public get id(): string {\n return AddLayerCommand.ID;\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class PlaceLayerFeaturesCommand extends PostboyGenericMessage {\n public static readonly ID: string = '8caf86bc-869b-426f-b36d-4642f6b8aab0';\n\n constructor(public layer: string, public features: Feature<Geometry>[]) {\n super();\n }\n\n public get id(): string {\n return PlaceLayerFeaturesCommand.ID;\n }\n}\n","import BaseLayer from 'ol/layer/Base';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class RemoveLayerCommand extends PostboyGenericMessage {\n public static readonly ID: string = 'ab484e0e-e185-45cd-8434-12101f3c7eb1';\n\n constructor(public layer: BaseLayer) {\n super();\n }\n\n public get id(): string {\n return RemoveLayerCommand.ID;\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 public static readonly ID: string = '25b7df28-72ce-4453-9fe6-54285a2fdc57';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n\n public get id(): string {\n return AddTileCommand.ID;\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 public static readonly ID: string = 'c36ccc0b-5638-4819-b148-2de57a59a5b7';\n\n constructor(public layer: TileLayer<XYZ>) {\n super();\n }\n\n public get id(): string {\n return RemoveTileCommand.ID;\n }\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class FitToFeaturesCommand extends PostboyGenericMessage {\n public static readonly ID: string = '76cdc091-3793-4b6c-82f7-1e0334cf08a8';\n\n constructor(public features: Feature<Geometry>[], public zoomAfter = 0) {\n super();\n }\n\n public get id(): string {\n return FitToFeaturesCommand.ID;\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: string = '5c04c87b-8a93-4c2a-979e-d1e313d860ed';\n\n constructor(public name: string) {\n super();\n }\n\n public get id(): string {\n return GetLayerQuery.ID;\n }\n}\n","import { PostboyGenericMessage } from '@artstesh/postboy';\n\nexport class DrawingFinishedEvent extends PostboyGenericMessage {\n public static readonly ID: string = 'c724b68e-b4eb-4783-90f1-a8e31973fd36';\n\n constructor() {\n super();\n }\n\n public get id(): string {\n return DrawingFinishedEvent.ID;\n }\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' : '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, Point } from 'ol/geom';\nimport Polygon from 'ol/geom/Polygon';\nimport { Feature } from 'ol';\nimport * as Sphere from 'ol/sphere';\nimport { FilterFeaturesInAreaExecutor } from '../messages/executors/filter-features-in-area.executor';\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 calculateArea(g: Geometry | undefined): number {\n if (!g) return 0;\n return Sphere.getArea(g, { projection: 'EPSG:4326' });\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","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\n\nexport class FilterFeaturesInAreaExecutor extends PostboyExecutor<Feature<Geometry>[]> {\n public static readonly ID: string = '36bb2d94-8028-4512-90dd-2386af3fc67c';\n\n constructor(public area: Geometry, public features: Feature<Geometry>[]) {\n super();\n }\n\n public get id(): string {\n return FilterFeaturesInAreaExecutor.ID;\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 Style from 'ol/style/Style';\n\nexport class GenerateDrawExecutor extends PostboyExecutor<Draw> {\n public static readonly ID: string = 'f01c99ba-0953-4ab5-82f9-04e6fbb678c1';\n\n constructor(public layer: Layer<VectorSource<any>>, public style: Style, public type: DrawingType) {\n super();\n }\n\n public get id(): string {\n return GenerateDrawExecutor.ID;\n }\n}\n","import { PostboyExecutor } from '@artstesh/postboy';\nimport { Draw } from 'ol/interaction';\nimport { ZoomControlSettings } from '../../map-plate/controls/map-control-zoom/zoom-control.settings';\n\nexport class GenerateZoomControlExecutor extends PostboyExecutor<Draw> {\n public static readonly ID: string = 'ff16a833-c68e-4b1a-bc23-c0d16b002810';\n\n constructor(public settings: ZoomControlSettings) {\n super();\n }\n\n public get id(): string {\n return GenerateZoomControlExecutor.ID;\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 { 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 this.addLocker({ locker: StartDrawingCommand.ID, unlocker: DrawingFinishedEvent.ID, locking: [MapClickEvent.ID] });\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 { 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';\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.observeRemoveTile();\n this.observeLayerQuery();\n this.observeFeaturesInArea();\n }\n\n private observeRemoveTile() {\n this.postboy.subscribe<RemoveTileCommand>(RemoveTileCommand.ID).subscribe((c) => {\n if (!this.map) return;\n this.map.removeLayer(c.layer);\n });\n }\n\n private observeLayerQuery() {\n this.postboy.subscribe<GetLayerQuery>(GetLayerQuery.ID).subscribe((ev) => ev.finish(this.layers.take(ev.name)));\n }\n\n private observeAddTile() {\n this.postboy.subscribe<AddTileCommand>(AddTileCommand.ID).subscribe((c) => {\n if (!this.map) return;\n this.map.addLayer(c.layer);\n });\n }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private observeAddLayer() {\n this.postboy.subscribe<AddLayerCommand>(AddLayerCommand.ID).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.subscribe<PlaceLayerFeaturesCommand>(PlaceLayerFeaturesCommand.ID).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.subscribe<RemoveLayerCommand>(RemoveLayerCommand.ID).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.subscribe<GetFeaturesInAreaQuery>(GetFeaturesInAreaQuery.ID).subscribe((qr) => {\n let result = new Dictionary<IIdentified[]>();\n this.layers.forEach((l) => {\n let layerName = l.get('name');\n if (qr.ignore.has(layerName) || layerName === MapConstants.DrawingLayerId) return;\n let source = l.getSource();\n if (!!(source as any)['getSource']) source = (source as any)?.getSource();\n let features = this.postboy.execute<FilterFeaturesInAreaExecutor, Feature<Geometry>[]>(\n new FilterFeaturesInAreaExecutor(qr.area, source?.getFeatures() ?? []),\n );\n result.put(\n layerName,\n features.map((e) => ({ id: e.getId(), ...e.get(MapConstants.FeatureInfo) })),\n );\n });\n qr.finish(result);\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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.subscribe<SetMapCenterCommand>(SetMapCenterCommand.ID).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 { Map } from 'ol';\nimport { MapPostboyService } from './map-postboy.service';\nimport { FitToPolygonsCommand, MapRenderedEvent } from '../messages';\nimport { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';\nimport { Geometry } from 'ol/geom';\nimport { createEmpty, extend } from 'ol/extent';\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 }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n if (this.fitPolygonsWaiting) this.postboy.fire(this.fitPolygonsWaiting);\n });\n }\n\n private observeFitToFeatures() {\n this.postboy.subscribe<FitToFeaturesCommand>(FitToFeaturesCommand.ID).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.subscribe<FitToPolygonsCommand>(FitToPolygonsCommand.ID).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<UIEvent>): 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)\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.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n this.map?.on('singleclick', (e) => {\n this.postboy.fire(this.onClick(e));\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 } 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 { 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';\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.subscribe<DrawSelectionAreaCommand>(DrawSelectionAreaCommand.ID).subscribe((ev) => {\n const drawingCommand = new StartDrawingCommand(ev.type, ev.style);\n drawingCommand.result.subscribe((r) => {\n if (!r) {\n ev.finish(new Dictionary<IIdentified[]>());\n return;\n }\n const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry()!;\n const getFeaturesCommand = new GetFeaturesInAreaQuery(area, ev.ignore);\n getFeaturesCommand.result.subscribe((result) => ev.finish(result));\n this.postboy.fire(getFeaturesCommand);\n });\n this.postboy.fire(drawingCommand);\n });\n }\n\n private observeDrawing() {\n this.postboy.subscribe<StartDrawingCommand>(StartDrawingCommand.ID).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.execute(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<VectorSource<Geometry>>): void {\n command.finish(\n command.format === FeatureOutputFormat.GeoJson\n ? new GeoJSON().writeFeature(evt.feature)\n : new WKT().writeFeature(evt.feature),\n );\n this.clearInteraction(layer);\n }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private draw(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n const query = new GetLayerQuery(MapConstants.DrawingLayerId);\n query.result.subscribe((l) => action(l));\n this.postboy.fire(query);\n }\n\n private observeCancelation(ev: StartDrawingCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .subscribe<CancelDrawingCommand>(CancelDrawingCommand.ID)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<Geometry>> | null): void {\n if (!!this.drawInteraction) {\n this.map?.removeInteraction(this.drawInteraction);\n layer?.setSource(new Source({}));\n }\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';\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.subscribe<ModifyFeatureCommand>(ModifyFeatureCommand.ID).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 this.addDragging(ev);\n });\n });\n }\n\n private initFeature(layer: Layer<VectorSource<Geometry>>, 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 : new WKT().writeFeature(command.model.feature),\n );\n }\n\n private observeMapRender() {\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).subscribe((m) => {\n this.map = m.map;\n });\n }\n\n private defineLayer(action: (layer: Layer<VectorSource<any>> | null) => void): void {\n const query = new GetLayerQuery(MapConstants.DrawingLayerId);\n query.result.subscribe((l) => action(l));\n this.postboy.fire(query);\n }\n\n private observeCancelation(ev: ModifyFeatureCommand, layer: Layer<VectorSource<any>> | null): Subscription {\n return this.postboy\n .subscribe(CancelFeatureModificationCommand.ID)\n .pipe(first())\n .subscribe(() => {\n ev.finish(null);\n this.clearInteraction(layer);\n });\n }\n\n private clearInteraction(layer: Layer<Source<Geometry>> | null): void {\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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.subscribe<AddControlCommand>(AddControlCommand.ID).subscribe((c) => this.map?.addControl(c.item));\n }\n\n private observeRemoving() {\n this.postboy\n .subscribe<RemoveControlCommand>(RemoveControlCommand.ID)\n .subscribe((c) => this.map?.removeControl(c.item));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MapPostboyService } from './map-postboy.service';\nimport { FitToPolygonsCommand, MapRenderedEvent } 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';\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.registerReplay(MapRenderedEvent.ID);\n this.registerReplay(PlaceLayerFeaturesCommand.ID);\n this.registerReplay(RemoveControlCommand.ID);\n this.registerReplay(AddControlCommand.ID);\n this.registerReplay(SetMapCenterCommand.ID);\n this.registerSubject(AddLayerCommand.ID);\n this.registerSubject(RemoveLayerCommand.ID);\n this.registerSubject(AddTileCommand.ID);\n this.registerSubject(RemoveTileCommand.ID);\n this.registerSubject(MapClickEvent.ID);\n this.registerSubject(CloseTooltipCommand.ID);\n this.registerSubject(FitToFeaturesCommand.ID);\n this.registerSubject(FitToPolygonsCommand.ID);\n this.registerSubject(MapMoveEndEvent.ID);\n this.registerSubject(CancelDrawingCommand.ID);\n this.registerSubject(StartDrawingCommand.ID);\n this.registerSubject(GetLayerQuery.ID);\n this.registerSubject(DrawingFinishedEvent.ID);\n this.registerSubject(GetFeaturesInAreaQuery.ID);\n this.registerSubject(DrawSelectionAreaCommand.ID);\n this.registerSubject(CancelFeatureModificationCommand.ID);\n this.registerSubject(ModifyFeatureCommand.ID);\n this.setExecutors();\n }\n\n private setExecutors() {\n this.registerExecutor(FilterFeaturesInAreaExecutor.ID, (e: FilterFeaturesInAreaExecutor) =>\n FeatureService.filterFeaturesInArea(e),\n );\n this.registerExecutor(CalculateAreaExecutor.ID, (e: CalculateAreaExecutor) =>\n FeatureService.calculateArea(e.polygon?.feature?.getGeometry()),\n );\n this.registerExecutor(GenerateDrawExecutor.ID, (e: GenerateDrawExecutor) => DrawingGenerationService.getDraw(e));\n this.registerExecutor(GenerateZoomControlExecutor.ID, (e: GenerateZoomControlExecutor) =>\n ZoomControlFactory.build(e.settings),\n );\n this.registerExecutor(GetMapPositionExecutor.ID, () => this.state.getMapPosition());\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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';\n\n@Component({\n selector: 'art-osm-tile-layer',\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\n @Input() set url(value: string | undefined) {\n if (!value || this._url === value) return;\n this._url = value;\n this.initLayer();\n }\n\n private _map?: Map;\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 });\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 /**\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 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 /**\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 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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.subscribe<MapMoveEndEvent>(MapMoveEndEvent.ID).pipe(auditTime(250)),\n this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID),\n ]).subscribe(([movement, renderEvent]) => {\n this.checkClusterNecessity(renderEvent.map);\n });\n }\n\n private observeClick() {\n this.postboy.subscribe<MapClickEvent>(MapClickEvent.ID).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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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","import { Injectable } from '@angular/core';\nimport Map from 'ol/Map';\nimport { MapSettings } from '../models';\nimport View from 'ol/View';\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 });\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } 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 { FeatureLayerSettings } 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';\n\n@Component({\n selector: 'art-map-plate',\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})\nexport class MapPlateComponent extends DestructibleComponent implements OnInit {\n map!: Map;\n osmUrl = '';\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 ) {\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 ngOnInit(): void {\n useGeographic();\n this.map = 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.setOsm();\n }\n\n onDestroy = () => {\n this.registrator.down();\n };\n\n private setOsm(): void {\n if (!this.map) return;\n this.osmUrl = `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 this.detector.detectChanges();\n this.map.updateSize();\n }\n}\n","<ng-content></ng-content>\r\n<art-osm-tile-layer *ngIf=\"osmUrl && map\" [map]=\"map\" [url]=\"osmUrl\"></art-osm-tile-layer>\r\n<art-feature-layer *ngIf=\"map\" [settings]=\"drawingLayerSettings\"></art-feature-layer>\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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 { 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 OnInit,\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';\n\n@Component({\n selector: 'art-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent extends DestructibleComponent implements OnInit {\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 autoPanAnimation: { duration: 0 },\n position: coordinates,\n };\n };\n\n private observeMapClick(): Subscription {\n return this.postboy.subscribe<MapClickEvent>(MapClickEvent.ID).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 .subscribe<CloseTooltipCommand>(CloseTooltipCommand.ID)\n .pipe(filter((ev) => ev.tooltipId === this._settings.id))\n .subscribe(() => this.removeOverlay());\n }\n\n private observeMapRender() {\n return this.postboy.subscribe<MapRenderedEvent>(MapRenderedEvent.ID).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-content></ng-content>\r\n</div>\r\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';\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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) => m.feature),\n ),\n );\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 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 .subscribe<MapRenderedEvent>(MapRenderedEvent.ID)\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.execute(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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DestructibleComponent } from './common/destructible.component';\nimport { MapPlateComponent } from './map-plate/map-plate.component';\nimport { TileLayerComponent } from './map-plate/layers/tile-layer/tile-layer.component';\nimport { OsmTileLayerComponent } from './map-plate/layers/osm-tile-layer/osm-tile-layer.component';\nimport { FeatureLayerComponent } from './map-plate/layers/feature-layer/feature-layer.component';\nimport { MarkersComponent } from './map-plate/features/markers/markers.component';\nimport { TooltipComponent } from './map-plate/tooltips/tooltip/tooltip.component';\nimport { PolygonsComponent } from './map-plate/features/polygons/polygons.component';\nimport { ClusterLayerComponent } from './map-plate/layers/cluster-layer/cluster-layer.component';\nimport { MapControlZoomComponent } from './map-plate/controls/map-control-zoom/map-control-zoom.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n DestructibleComponent,\n MapPlateComponent,\n TileLayerComponent,\n OsmTileLayerComponent,\n FeatureLayerComponent,\n MarkersComponent,\n TooltipComponent,\n PolygonsComponent,\n ClusterLayerComponent,\n MapControlZoomComponent,\n ],\n exports: [\n MapPlateComponent,\n FeatureLayerComponent,\n MarkersComponent,\n TileLayerComponent,\n TooltipComponent,\n PolygonsComponent,\n ClusterLayerComponent,\n MapControlZoomComponent,\n ],\n})\nexport class MapModule {}\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 let image = new Image();\n image.src = 'data:image/svg+xml,' + escape(svg);\n return new Style({\n image: new Icon({\n img: image,\n imgSize: 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 a new instance of the Text class with the specified properties.\n *\n * @param {string} text - The text content of the Text object.\n * @param {string} font - The font style of the Text object.\n * @param {string} color - The color of the Text object.\n * @return {Text} A new instance of the Text class.\n */\n public static get(text: string, font: string, color: string): Text {\n return new Text({\n text: text,\n font: font,\n textAlign: 'center',\n fill: new Fill({\n color: color,\n }),\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 * Public API Surface of maps\n */\n\nexport * from './map.module';\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';\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.MapPlateFactory","i3.MessageRegistratorService","i5.OsmTileLayerComponent","i6.FeatureLayerComponent"],"mappings":"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"}