mahal_map 1.5.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/mahal_map.sdk.js +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/CameraController.ts","../src/config/constants.ts","../src/markers/defaultMarkerSvg.ts","../src/markers/MahalMapDefaultMarker.ts","../src/markers/marker.adapter.ts","../src/core/MahalMap.ts","../src/services/index.ts","../src/services/httpClient.ts","../src/services/authKey.ts","../src/services/routing/routing.api.ts","../src/utils/index.ts","../src/utils/coordinates.ts","../src/utils/debounce.ts","../src/utils/polyline/geojsonPolyline.ts","../src/utils/polyline/geometryPolyline.ts","../src/utils/trimValue.ts","../src/services/routing/routing.service.ts","../src/services/search/search.api.ts","../src/services/search/search.service.ts"],"sourcesContent":["import type { Map, FlyToOptions } from \"maplibre-gl\";\r\n\r\nexport class CameraController {\r\n constructor(private map: Map) {}\r\n\r\n setZoom(zoom: number, smooth = true) {\r\n if (smooth) {\r\n this.map.easeTo({ zoom });\r\n } else {\r\n this.map.setZoom(zoom);\r\n }\r\n }\r\n\r\n setBearing(bearing: number, smooth = true) {\r\n smooth ? this.map.easeTo({ bearing }) : this.map.setBearing(bearing);\r\n }\r\n\r\n setPitch(pitch: number, smooth = true) {\r\n smooth ? this.map.easeTo({ pitch }) : this.map.setPitch(pitch);\r\n }\r\n\r\n toggle3D(is3D: boolean) {\r\n this.map.easeTo({\r\n pitch: is3D ? 60 : 0,\r\n bearing: is3D ? this.map.getBearing() : 0,\r\n duration: 800,\r\n });\r\n }\r\n\r\n resetNorth() {\r\n this.map.easeTo({\r\n bearing: 0,\r\n pitch: 0,\r\n duration: 600,\r\n });\r\n }\r\n\r\n flyTo(options: FlyToOptions) {\r\n this.map.flyTo({\r\n speed: 1.2,\r\n curve: 1.42,\r\n essential: true,\r\n ...options,\r\n });\r\n }\r\n\r\n getPitch() {\r\n return this.map.getPitch();\r\n }\r\n}\r\n","const BASE_URL = \"https://platform.mahal.tj/api/\";\r\nconst LATLNGREGEX =\r\n /^([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?)),\\s*([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?))$/;\r\nconst LNGLATREGEX =\r\n /^([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?)),\\s*([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?))$/;\r\n\r\nconst REGEX =\r\n /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n\r\nconst DARK = \"https://mtile.gram.tj/custom-styles/dark-style.json\";\nconst LIGHT = \"https://mtile.gram.tj/custom-styles/mapstyle.json\";\nconst VECTOR =\n \"https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json\";\n\nconst STYLE_LANG_PARAM = \"ru\";\n\nfunction buildStyleUrl(styleUrl: string, lang?: string) {\n if (lang !== STYLE_LANG_PARAM) {\n return styleUrl;\n }\n\n const separator = styleUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${styleUrl}${separator}lang=${STYLE_LANG_PARAM}`;\n}\n\nexport {\n BASE_URL,\n LATLNGREGEX,\n LNGLATREGEX,\n REGEX,\n DARK,\n LIGHT,\n VECTOR,\n buildStyleUrl,\n};\n","type DefaultMarkerInnerIconOptions = {\r\n innerSvg?: string;\r\n innerUrl?: string;\r\n};\r\n\r\nconst SVG_ROOT_PATTERN = /<svg[\\s>]/i;\r\nconst SVG_MARKUP_PATTERN =\r\n /<(svg|path|g|circle|rect|polygon|line|polyline|ellipse|use)\\b/i;\r\n\r\nconst updateSvgAttribute = (\r\n svg: string,\r\n attribute: string,\r\n value: string,\r\n): string => {\r\n const attributePattern = new RegExp(`\\\\s${attribute}=\"[^\"]*\"`, \"i\");\r\n\r\n if (attributePattern.test(svg)) {\r\n return svg.replace(attributePattern, ` ${attribute}=\"${value}\"`);\r\n }\r\n\r\n return svg.replace(/<svg\\b/i, `<svg ${attribute}=\"${value}\"`);\r\n};\r\n\r\nconst escapeSvgAttribute = (value: string): string =>\r\n value.replace(/&/g, \"&\").replace(/\"/g, \""\");\r\n\r\nconst createImageTag = (url: string): string =>\r\n `<image href=\"${escapeSvgAttribute(url)}\" x=\"14\" y=\"12\" width=\"22\" height=\"22\" style=\"filter: brightness(0) invert(1);\" />`;\r\n\r\nconst normalizeInnerSvg = (svg: string): string => {\r\n const trimmedSvg = svg.trim();\r\n\r\n if (SVG_ROOT_PATTERN.test(trimmedSvg)) {\r\n let normalizedSvg = updateSvgAttribute(trimmedSvg, \"x\", \"14\");\r\n normalizedSvg = updateSvgAttribute(normalizedSvg, \"y\", \"12\");\r\n normalizedSvg = updateSvgAttribute(normalizedSvg, \"width\", \"22\");\r\n normalizedSvg = updateSvgAttribute(normalizedSvg, \"height\", \"22\");\r\n\r\n if (!/\\spreserveAspectRatio=\"/i.test(normalizedSvg)) {\r\n normalizedSvg = normalizedSvg.replace(\r\n /<svg\\b/i,\r\n `<svg preserveAspectRatio=\"xMidYMid meet\"`,\r\n );\r\n }\r\n\r\n return normalizedSvg;\r\n }\r\n\r\n return `<g transform=\"translate(14 12)\">${trimmedSvg}</g>`;\r\n};\r\n\r\nconst resolveInnerIcon = ({\r\n innerSvg,\r\n innerUrl,\r\n}: DefaultMarkerInnerIconOptions): string => {\r\n const trimmedInnerSvg = innerSvg?.trim();\r\n const trimmedInnerUrl = innerUrl?.trim();\r\n\r\n if (trimmedInnerSvg) {\r\n if (SVG_MARKUP_PATTERN.test(trimmedInnerSvg)) {\r\n return normalizeInnerSvg(trimmedInnerSvg);\r\n }\r\n\r\n return createImageTag(trimmedInnerSvg);\r\n }\r\n\r\n if (trimmedInnerUrl) {\r\n return createImageTag(trimmedInnerUrl);\r\n }\r\n\r\n return \"\";\r\n};\r\n\r\nconst createDefaultMarkerSvg = (\r\n color: string,\r\n innerIconOptions: DefaultMarkerInnerIconOptions = {},\r\n) => `<svg\r\n width=\"50\"\r\n height=\"62\"\r\n viewBox=\"0 0 50 62\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g filter=\"url(#filter0_d_367_31358)\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M25 2C36.598 2 46 11.402 46 23C46 33.1603 38.7844 41.6353 29.198 43.5803L25.6524 48.6575C25.5788 48.7633 25.4812 48.8497 25.3676 48.9093C25.254 48.9689 25.128 49 25 49C24.872 49 24.746 48.9689 24.6324 48.9093C24.5188 48.8497 24.4212 48.7633 24.3476 48.6575L20.802 43.5803C11.2156 41.6353 4 33.1603 4 23C4 11.402 13.402 2 25 2Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n />\r\n </g>\r\n <path\r\n d=\"M25 51C27.7614 51 30 53.2386 30 56C30 58.7614 27.7614 61 25 61C22.2386 61 20 58.7614 20 56C20 53.2386 22.2386 51 25 51Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <g clip-path=\"url(#clip0_367_31358)\">\r\n ${resolveInnerIcon(innerIconOptions)}\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_367_31358\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"50\"\r\n height=\"55\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feOffset dy=\"2\" />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.250234 0 0 0 0 0.660089 0 0 0 0 0.488619 0 0 0 0.24 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_367_31358\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_367_31358\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath id=\"clip0_367_31358\">\r\n <rect\r\n width=\"22\"\r\n height=\"22\"\r\n fill=\"white\"\r\n transform=\"translate(14 12)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>`;\r\n\r\nexport { createDefaultMarkerSvg };\r\n","import { createDefaultMarkerSvg } from \"./defaultMarkerSvg\";\r\nimport type { MahalMapDefaultMarkerProps } from \"@sdk-types\";\r\n\r\nclass MahalMapDefaultMarker {\r\n private element: HTMLElement;\r\n\r\n constructor(private props: MahalMapDefaultMarkerProps) {\r\n this.element = this.createElement();\r\n }\r\n\r\n private createElement(): HTMLElement {\r\n const el = document.createElement(\"div\");\r\n el.style.cursor = \"pointer\";\r\n\r\n const svg = this.props.svg\r\n ? this.applyColorToCustomSvg(this.props.svg)\r\n : createDefaultMarkerSvg(\r\n this.props.color ?? \"#278960\",\r\n {\r\n innerSvg: this.props.innerSvg,\r\n innerUrl: this.props.innerUrl,\r\n },\r\n );\r\n\r\n el.innerHTML = svg;\r\n\r\n if (this.props.draggable) {\r\n el.draggable = true;\r\n }\r\n\r\n return el;\r\n }\r\n\r\n private applyColorToCustomSvg(svg: string): string {\r\n if (!this.props.color) return svg;\r\n return svg.replace(/fill=\"[^\"]*\"/g, `fill=\"${this.props.color}\"`);\r\n }\r\n\r\n getElement() {\r\n return this.element;\r\n }\r\n\r\n getCoordinates() {\r\n return this.props.coordinates;\r\n }\r\n\r\n isDraggable() {\r\n return !!this.props.draggable;\r\n }\r\n\r\n getAnchor() {\r\n return this.props.anchor || \"center\";\r\n }\r\n}\r\n\r\nexport { MahalMapDefaultMarker };\r\n","import type { Map, Marker } from \"maplibre-gl\";\r\nimport type { IMapMarker } from \"@sdk-types\";\r\n\r\ntype MapLibreMarkerFactory = {\r\n Marker: new (...args: ConstructorParameters<typeof Marker>) => Marker;\r\n};\r\n\r\nexport function addMarker(\r\n maplibregl: MapLibreMarkerFactory,\r\n map: Map,\r\n marker: IMapMarker,\r\n) {\r\n const mapMarker = new maplibregl.Marker({\r\n element: marker.getElement(),\r\n draggable: marker.isDraggable?.() ?? false,\r\n anchor: marker.getAnchor?.() ?? \"center\",\r\n })\r\n .setLngLat(marker.getCoordinates())\r\n .addTo(map);\r\n\r\n return mapMarker;\r\n}\r\n","import type { Map as MapType, Marker } from \"maplibre-gl\";\nimport { DARK, LIGHT, VECTOR, buildStyleUrl } from \"@config\";\nimport { CameraController } from \"./CameraController\";\n\nimport type {\n IMahalMapOptions,\n IMapMarker,\n MapLanguage,\n Theme,\n} from \"@sdk-types\";\n\n// Adapter\nimport { addMarker } from \"@markers\";\n\nconst defaultStyles = { dark: DARK, light: LIGHT };\nconst logoColors = { dark: \"#ffffff\", light: \"#19191a\" };\n\ntype MapLibreApi = {\n Map: new (...args: ConstructorParameters<typeof MapType>) => MapType;\n Marker: new (...args: ConstructorParameters<typeof Marker>) => Marker;\n};\n\nexport class MahalMap {\n private static instances = new Map<string, MahalMap>();\n private static defaultLanguage: MapLanguage = \"tj\";\n\n private isReady = false;\n private readyCallbacks: Array<(map: MapType) => void> = [];\n\n private map!: MapType;\n private maplibre!: MapLibreApi;\n private camera!: CameraController;\n private logoHost?: HTMLDivElement;\n private logoShadow?: ShadowRoot;\n private logoObserver?: MutationObserver;\n\n private options!: IMahalMapOptions;\n private language: MapLanguage = \"tj\";\n private instanceKey = \"\";\n\n private constructor() {}\n\n private static getInstanceKey(options: IMahalMapOptions) {\n return typeof options.container === \"string\" && options.container\n ? options.container\n : \"map\";\n }\n\n private static normalizeLanguage(lang?: string | null): MapLanguage {\n return lang === \"ru\" ? \"ru\" : \"tj\";\n }\n\n static setDefaultLanguage(lang?: string | null) {\n MahalMap.defaultLanguage = MahalMap.normalizeLanguage(lang);\n }\n\n private static getDefaultStyle(theme: Theme, lang: MapLanguage) {\n return buildStyleUrl(defaultStyles[theme], lang);\n }\n\n static create(options: IMahalMapOptions, maplibreObject?: MapLibreApi) {\n const globalMaplibre =\n typeof window !== \"undefined\"\n ? (window as unknown as { maplibregl?: MapLibreApi }).maplibregl\n : undefined;\n const maplibre = globalMaplibre || maplibreObject;\n\n if (!maplibre) {\n throw new Error(\n \"[MahalMap SDK] MapLibre GL was not found. Pass it as the second argument or include it through a script.\",\n );\n }\n\n const language = MahalMap.normalizeLanguage(\n options.lang || MahalMap.defaultLanguage,\n );\n const theme = options.theme === \"dark\" ? \"dark\" : \"light\";\n const finalStyle = options.autoAddVectorSource\n ? VECTOR\n : options.style\n ? options.style\n : MahalMap.getDefaultStyle(theme, language);\n\n const instance = new MahalMap();\n const instanceKey = MahalMap.getInstanceKey(options);\n\n instance.options = options;\n instance.language = language;\n instance.instanceKey = instanceKey;\n instance.maplibre = maplibre;\n instance.map = new maplibre.Map({\n container: options.container || \"map\",\n style: finalStyle as string,\n center: options.center || [69.624024, 40.279687],\n zoom: options.zoom || 5,\n attributionControl: false,\n });\n instance.addLogo(theme);\n\n instance.map.on(\"load\", () => {\n instance.isReady = true;\n\n instance.camera = new CameraController(instance.map);\n\n instance.readyCallbacks.forEach((cb) => cb(instance.map));\n instance.readyCallbacks = [];\n });\n\n MahalMap.instances.set(instanceKey, instance);\n return instance;\n }\n\n static onReady(container: string, callback: (map: MapType) => void) {\n if (!MahalMap.instances.has(container)) {\n const check = setInterval(() => {\n if (MahalMap.instances.has(container)) {\n clearInterval(check);\n MahalMap.onReady(container, callback);\n }\n }, 50);\n return;\n }\n\n const instance = MahalMap.getInstance(container);\n\n if (instance.isReady) {\n callback(instance.map);\n } else {\n instance.readyCallbacks.push(callback);\n }\n }\n\n static getInstance(container: string): MahalMap {\n const instance = MahalMap.instances.get(container);\n\n if (!instance) {\n throw new Error(\"[MahalMap SDK] Map instance is not created\");\n }\n\n return instance;\n }\n\n static hasInstance(container: string): boolean {\n return MahalMap.instances.has(container);\n }\n\n static removeInstance(container: string): boolean {\n return MahalMap.instances.delete(container);\n }\n\n static addMarker(instance: MahalMap, marker: IMapMarker) {\n return instance.addMarker(marker);\n }\n\n static getCamera(instance: MahalMap) {\n return instance.getCamera();\n }\n\n static getMap(instance: MahalMap): MapType {\n return instance.getMap();\n }\n\n static setStyle(instance: MahalMap, theme: Theme) {\n instance.setStyle(theme);\n }\n\n static setLanguage(instance: MahalMap, lang: MapLanguage) {\n instance.setLanguage(lang);\n }\n\n static setCenter(instance: MahalMap, center: [number, number]) {\n instance.setCenter(center);\n }\n\n static setZoom(instance: MahalMap, zoom: number) {\n instance.setZoom(zoom);\n }\n\n static destroy(instance: MahalMap) {\n instance.destroy();\n }\n\n addMarker(marker: IMapMarker) {\n return addMarker(this.maplibre, this.map, marker);\n }\n\n init(map: MapType) {\n this.map = map;\n this.camera = new CameraController(map);\n }\n\n getCamera() {\n return this.camera;\n }\n\n getMap(): MapType {\n return this.map;\n }\n\n setStyle(theme: Theme) {\n if (this.options.autoAddVectorSource) {\n return;\n }\n\n this.options.theme = theme;\n\n if (!this.options.style) {\n this.map.setStyle(MahalMap.getDefaultStyle(theme, this.language));\n }\n\n this.updateLogoColor(theme);\n }\n\n setLanguage(lang: MapLanguage) {\n this.language = MahalMap.normalizeLanguage(lang);\n this.options.lang = this.language;\n\n if (this.options.autoAddVectorSource || this.options.style) {\n return;\n }\n\n const theme = this.options.theme === \"dark\" ? \"dark\" : \"light\";\n this.map.setStyle(MahalMap.getDefaultStyle(theme, this.language));\n }\n\n setCenter(center: [number, number]) {\n this.map.setCenter(center);\n }\n\n setZoom(zoom: number) {\n this.map.setZoom(zoom);\n }\n\n destroy() {\n this.logoObserver?.disconnect();\n this.logoObserver = undefined;\n this.logoHost?.remove();\n this.logoHost = undefined;\n this.logoShadow = undefined;\n this.map.remove();\n MahalMap.instances.delete(this.instanceKey);\n }\n\n private addLogo(theme: \"dark\" | \"light\") {\n const container = this.map.getContainer();\n const logoHost = document.createElement(\"div\");\n const logoShadow = logoHost.attachShadow({ mode: \"closed\" });\n\n logoHost.setAttribute(\"aria-label\", \"Mahal\");\n logoHost.dataset.mahal = Math.random().toString(36).slice(2);\n this.logoHost = logoHost;\n this.logoShadow = logoShadow;\n\n this.applyLogoHostStyles();\n this.renderLogo(theme);\n container.appendChild(logoHost);\n this.observeLogo(container);\n }\n\n private updateLogoColor(theme: \"dark\" | \"light\") {\n if (!this.logoShadow) {\n return;\n }\n\n this.renderLogo(theme);\n }\n\n private renderLogo(theme: \"dark\" | \"light\") {\n if (!this.logoShadow) {\n return;\n }\n\n this.logoShadow.innerHTML = `\n <style>\n :host {\n all: initial;\n }\n\n .logo-wrap {\n display: block;\n width: 80px;\n height: 18.45px;\n line-height: 0;\n pointer-events: none;\n user-select: none;\n }\n\n svg {\n display: block;\n }\n </style>\n <span class=\"logo-wrap\" aria-hidden=\"true\">\n ${this.getLogoSvg(logoColors[theme])}\n </span>\n `;\n }\n\n private applyLogoHostStyles() {\n if (!this.logoHost) {\n return;\n }\n\n const style = this.logoHost.style;\n\n style.setProperty(\"position\", \"absolute\", \"important\");\n style.setProperty(\"right\", \"10px\", \"important\");\n style.setProperty(\"bottom\", \"40px\", \"important\");\n style.setProperty(\"z-index\", \"1\", \"important\");\n style.setProperty(\"display\", \"block\", \"important\");\n style.setProperty(\"visibility\", \"visible\", \"important\");\n style.setProperty(\"opacity\", \"1\", \"important\");\n style.setProperty(\"pointer-events\", \"none\", \"important\");\n style.setProperty(\"line-height\", \"0\", \"important\");\n style.setProperty(\"width\", \"80px\", \"important\");\n style.setProperty(\"height\", \"18.45px\", \"important\");\n }\n\n private observeLogo(container: HTMLElement) {\n if (!this.logoHost) {\n return;\n }\n\n this.logoObserver?.disconnect();\n this.logoObserver = new MutationObserver(() => {\n if (!this.logoHost) {\n return;\n }\n\n this.applyLogoHostStyles();\n\n if (!container.contains(this.logoHost)) {\n container.appendChild(this.logoHost);\n }\n });\n\n this.logoObserver.observe(container, { childList: true });\n this.logoObserver.observe(this.logoHost, {\n attributes: true,\n attributeFilter: [\"class\", \"style\", \"hidden\"],\n });\n }\n\n private getLogoSvg(color: string) {\n return `\n <svg class=\"logo\" width=\"80\" viewBox=\"0 0 143 33\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"opacity: 0.95;\">\n <g clip-path=\"url(#mahal-logo-text)\">\n <path d=\"M57.2317 27.0218H52.8158V17.4678C52.8522 16.33 52.5154 15.2116 51.8567 14.2832C51.5507 13.8592 51.1439 13.5179 50.6731 13.2903C50.2023 13.0627 49.6822 12.9558 49.1598 12.9793C48.6266 12.9617 48.0969 13.0725 47.6154 13.3022C47.1338 13.532 46.7145 13.874 46.3926 14.2995C45.6965 15.2066 45.3323 16.3248 45.3607 17.4678V27.0218H40.9472V9.14261H45.0371L45.3631 11.3142C45.7779 10.4819 46.4682 9.81897 47.3166 9.4381C48.1797 9.04305 49.1182 8.83982 50.0674 8.84243C52.6721 8.84243 54.4332 9.9525 55.3509 12.1726C56.7283 10.001 58.7194 8.91514 61.324 8.91514C63.8255 8.91514 65.7133 9.6445 66.9875 11.1032C68.2617 12.5618 68.8949 14.6553 68.8871 17.3834V27.0102H64.4688V17.3952C64.4688 16.1178 64.1913 15.0742 63.6363 14.2644C63.0813 13.4545 62.2371 13.0504 61.1036 13.052C60.5671 13.0338 60.0336 13.1404 59.5453 13.3634C59.0569 13.5864 58.6271 13.9197 58.2894 14.3371C57.5684 15.2182 57.1895 16.3298 57.2223 17.4678L57.2317 27.0218Z\" fill=\"${color}\" />\n <path d=\"M87.3807 11.6402L87.5261 9.18015H91.7614V27.0218H87.5988L87.3807 24.4164C86.851 25.4268 85.997 26.2296 84.9559 26.6959C83.911 27.2275 82.7623 27.5237 81.5906 27.5636C78.8656 27.587 76.6525 26.7725 74.9516 25.12C73.2506 23.4674 72.4001 21.1223 72.4001 18.0846C72.4001 15.1141 73.2748 12.8096 75.0243 11.1712C76.7737 9.5327 78.9992 8.72439 81.7008 8.74628C82.8702 8.73859 84.0244 9.01209 85.066 9.54366C86.0248 10.0029 86.8291 10.7314 87.3807 11.6402ZM82.0972 12.6908C81.4026 12.6688 80.7104 12.7854 80.0614 13.0339C79.4123 13.2823 78.8193 13.6575 78.3168 14.1377C77.3162 15.1008 76.8151 16.4156 76.8136 18.0822C76.812 19.7488 77.3131 21.0699 78.3168 22.0455C78.8166 22.5305 79.4089 22.9103 80.0583 23.162C80.7077 23.4138 81.401 23.5325 82.0972 23.5112C83.3119 23.549 84.4998 23.1505 85.446 22.3879C86.304 21.7164 86.8944 20.761 87.111 19.6933C87.3151 18.6471 87.3151 17.5713 87.111 16.525C86.8973 15.451 86.3068 14.4887 85.446 13.8118C84.4984 13.0487 83.3085 12.651 82.0925 12.6908H82.0972Z\" fill=\"${color}\" />\n <path d=\"M95.483 1.6875H99.8989V11.605C101.273 9.818 103.131 8.92531 105.471 8.92687C107.933 8.92687 109.767 9.69295 110.973 11.2251C112.178 12.7572 112.781 14.8858 112.781 17.6109V27.0218H108.367V17.6413C108.367 16.0779 107.999 14.914 107.263 14.1495C106.526 13.385 105.543 13.0042 104.313 13.0074C103.714 12.9928 103.119 13.1115 102.571 13.3548C102.024 13.5982 101.537 13.9601 101.147 14.4144C100.308 15.3743 99.862 16.6156 99.8989 17.8899V27.0101H95.483V1.6875Z\" fill=\"${color}\" />\n <path d=\"M130.515 11.6402L130.66 9.18015H134.893V27.0218H130.733L130.515 24.4164C129.984 25.4263 129.13 26.229 128.09 26.6959C127.045 27.2273 125.896 27.5235 124.724 27.5636C121.998 27.587 119.784 26.7725 118.083 25.12C116.382 23.4674 115.532 21.1223 115.532 18.0846C115.532 15.1141 116.406 12.8096 118.156 11.1712C119.905 9.5327 122.131 8.72439 124.832 8.74628C126.002 8.73804 127.156 9.01157 128.198 9.54366C129.157 10.0029 129.962 10.7313 130.515 11.6402ZM125.231 12.6908C124.536 12.6688 123.844 12.7853 123.194 13.0337C122.545 13.2822 121.951 13.6575 121.448 14.1377C120.446 15.1008 119.946 16.4156 119.947 18.0822C119.949 19.7488 120.449 21.0699 121.448 22.0455C121.949 22.5306 122.541 22.9103 123.191 23.1621C123.841 23.4139 124.534 23.5326 125.231 23.5112C126.445 23.5495 127.632 23.1509 128.577 22.3879C129.436 21.7171 130.027 20.7614 130.243 19.6933C130.447 18.6471 130.447 17.5713 130.243 16.525C130.03 15.4506 129.439 14.488 128.577 13.8118C127.632 13.0494 126.445 12.6516 125.231 12.6908Z\" fill=\"${color}\" />\n <path d=\"M138.622 1.72498H143V27.0218H138.622V1.72498Z\" fill=\"${color}\" />\n </g>\n <g clip-path=\"url(#mahal-logo-mark)\">\n <path d=\"M30.4142 14.0273H22.0831L27.974 8.1364C28.4165 7.69383 28.6651 7.09361 28.665 6.46779C28.6649 5.84197 28.4163 5.2418 27.9737 4.79932C27.5311 4.35684 26.9309 4.10829 26.3051 4.10835C25.6793 4.10841 25.0791 4.35708 24.6366 4.79965L18.7463 10.6906V2.35952C18.7463 1.73373 18.4978 1.13358 18.0553 0.691086C17.6128 0.248591 17.0126 0 16.3868 0C15.761 0 15.1609 0.248591 14.7184 0.691086C14.2759 1.13358 14.0273 1.73373 14.0273 2.35952V10.6906L8.13639 4.79965C7.69268 4.3631 7.09445 4.11958 6.472 4.12211C5.84955 4.12465 5.25332 4.37304 4.81318 4.81318C4.37304 5.25332 4.12465 5.84955 4.12211 6.472C4.11958 7.09445 4.3631 7.69268 4.79965 8.1364L10.6906 14.0273H2.35952C1.73373 14.0273 1.13358 14.2759 0.691084 14.7184C0.248589 15.1609 0 15.7611 0 16.3868C0 17.0126 0.248589 17.6128 0.691084 18.0553C1.13358 18.4978 1.73373 18.7464 2.35952 18.7464H10.6906L4.79965 24.6373C4.3631 25.081 4.11958 25.6792 4.12211 26.3017C4.12465 26.9241 4.37304 27.5203 4.81318 27.9605C5.25332 28.4006 5.84955 28.649 6.472 28.6516C7.09445 28.6541 7.69268 28.4106 8.13639 27.974L14.0273 22.0831V30.4142C14.0273 31.0399 14.2759 31.6401 14.7184 32.0826C15.1609 32.5251 15.761 32.7737 16.3868 32.7737C17.0126 32.7737 17.6128 32.5251 18.0553 32.0826C18.4978 31.6401 18.7463 31.0399 18.7463 30.4142V22.0831L24.6366 27.974C25.0791 28.4166 25.6793 28.6653 26.3051 28.6653C26.9309 28.6654 27.5311 28.4168 27.9737 27.9743C28.4163 27.5319 28.6649 26.9317 28.665 26.3059C28.6651 25.6801 28.4165 25.0798 27.974 24.6373L22.0831 18.7464H30.4142C31.0399 18.7464 31.6401 18.4978 32.0826 18.0553C32.5251 17.6128 32.7737 17.0126 32.7737 16.3868C32.7737 15.7611 32.5251 15.1609 32.0826 14.7184C31.6401 14.2759 31.0399 14.0273 30.4142 14.0273Z\" fill=\"#278960\" />\n </g>\n <defs>\n <clipPath id=\"mahal-logo-text\">\n <rect width=\"102.055\" height=\"25.8761\" fill=\"white\" transform=\"translate(40.9449 1.6875)\" />\n </clipPath>\n <clipPath id=\"mahal-logo-mark\">\n <rect width=\"32.7737\" height=\"32.7737\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n `;\n }\n}\n","export * from \"./authKey\";\nexport * from \"./routing\";\nexport * from \"./search\";\n","import axios from \"axios\";\r\nimport { BASE_URL } from \"@config\";\r\nimport { clearKey } from \"./authKey\";\r\n\r\nexport const api = axios.create({\r\n baseURL: BASE_URL,\r\n});\r\n\r\napi.interceptors.response.use(\r\n (response) => response,\r\n (error) => {\r\n if (error.response?.status === 401) {\r\n clearKey();\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","import { api } from \"./httpClient\";\r\n\r\nlet apiKey: string = \"\";\n\r\nfunction saveKey(param: string) {\r\n if (param === \"\") return;\r\n apiKey = param;\r\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${param}`;\r\n}\r\n\r\nfunction clearKey() {\r\n apiKey = \"\";\r\n api.defaults.headers.common[\"Authorization\"] = \"\";\r\n}\r\n\r\nconst getApiKey = () => apiKey;\r\n\r\nexport { saveKey, clearKey, getApiKey };\n","import { getApiKey } from \"../authKey\";\r\nimport { api } from \"../httpClient\";\r\n\r\nconst routingApi = async (param: number[][], token: string) => {\r\n try {\r\n const points: { lng: number; lat: number }[] = [];\r\n\r\n param.forEach((e) => {\r\n points.push({ lng: e[0], lat: e[1] });\r\n });\r\n const response = await api.post(\"services/getRoutes\", {\r\n points,\r\n token: token ? token : getApiKey(),\r\n });\r\n return response.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport { routingApi };\r\n","export * from \"./coordinates\";\r\nexport * from \"./debounce\";\r\nexport * from \"./polyline\";\r\nexport * from \"./trimValue\";\r\n","import { LATLNGREGEX, LNGLATREGEX } from \"@config\";\r\n\r\nexport function checkCoordinates(coordinates: string) {\r\n let lat, lng;\r\n if (LATLNGREGEX.test(coordinates)) {\r\n const match = coordinates.match(LATLNGREGEX);\r\n if (match) {\r\n [, lat, lng] = match; // Первый элемент — полное совпадение, пропускаем его\r\n }\r\n } else if (LNGLATREGEX.test(coordinates)) {\r\n const match = coordinates.match(LNGLATREGEX);\r\n if (match) {\r\n [, lng, lat] = match; // Меняем местами\r\n }\r\n } else {\r\n console.log(\"Неверный формат координат\");\r\n return null;\r\n }\r\n return { lat, lng };\r\n}\r\n","function debounce<F extends (...args: any[]) => Promise<any>>(\r\n fn: F,\r\n delay: number,\r\n) {\r\n let timer: ReturnType<typeof setTimeout>;\r\n\r\n return (...args: Parameters<F>): Promise<ReturnType<F>> => {\r\n if (timer) clearTimeout(timer);\r\n return new Promise((resolve) => {\r\n timer = setTimeout(async () => {\r\n const result = await fn(...args);\r\n resolve(result);\r\n }, delay);\r\n }) as Promise<ReturnType<F>>;\r\n };\r\n}\r\n\r\nexport { debounce };\r\n","function geojsonPolyline(encoded: string): number[][] {\r\n let points = [];\r\n let index = 0,\r\n len = encoded.length;\r\n let lat = 0,\r\n lng = 0;\r\n\r\n while (index < len) {\r\n let b,\r\n shift = 0,\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlat = result & 1 ? ~(result >> 1) : result >> 1;\r\n lat += dlat;\r\n\r\n shift = 0;\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlng = result & 1 ? ~(result >> 1) : result >> 1;\r\n lng += dlng;\r\n\r\n points.push([lng * 1e-5, lat * 1e-5]);\r\n }\r\n\r\n return points;\r\n}\r\n\r\nexport { geojsonPolyline };\r\n\r\n// Пример использования:\r\n\r\n// geojsonPolyline(\"yzocFzynhVq}@n}@o}@nzD\")\r\n\r\n// Вернёт массив вида [\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ].\r\n","function geometryPolyline(coordinates: number[][]): string {\r\n let encoded = '';\r\n let prevLat = 0;\r\n let prevLng = 0;\r\n\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const [lng, lat] = coordinates[i];\r\n \r\n // Умножаем координаты на 1e5 и округляем\r\n const latE5 = Math.round(lat * 1e5);\r\n const lngE5 = Math.round(lng * 1e5);\r\n\r\n // Вычисляем разницу от предыдущих значений\r\n const dLat = latE5 - prevLat;\r\n const dLng = lngE5 - prevLng;\r\n\r\n // Обновляем предыдущие значения\r\n prevLat = latE5;\r\n prevLng = lngE5;\r\n\r\n // Добавляем к закодированной строке\r\n encoded += encodeSignedNumber(dLat) + encodeSignedNumber(dLng);\r\n }\r\n\r\n return encoded;\r\n}\r\n\r\nfunction encodeSignedNumber(num: number) {\r\n let sgnNum = num << 1;\r\n if (num < 0) {\r\n sgnNum = ~sgnNum;\r\n }\r\n return encodeNumber(sgnNum);\r\n}\r\n\r\nfunction encodeNumber(num :number) {\r\n let encoded = '';\r\n while (num >= 0x20) {\r\n encoded += String.fromCharCode((0x20 | (num & 0x1f)) + 63);\r\n num >>= 5;\r\n }\r\n encoded += String.fromCharCode(num + 63);\r\n return encoded;\r\n}\r\n\r\nexport default geometryPolyline\r\n\r\n\r\n// Пример использования:\r\n\r\n// geometryPolyline([\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ])\r\n\r\n// Вернёт строку вида \"yzocFzynhVq}@n}@o}@nzD\".","function trimValue(value: string, cut: number): string {\r\n if (cut <= 0) return \"\";\r\n\r\n // только обрезаем пробелы в начале и конце\r\n const cleanValue = value.trim();\r\n\r\n if (cut >= cleanValue.length) return cleanValue;\r\n\r\n return cleanValue.slice(0, cut);\r\n}\r\n\r\nexport { trimValue };\r\n","import { routingApi } from \"./routing.api\";\r\nimport { geojsonPolyline } from \"@utils\";\r\nimport type { IRoute } from \"@sdk-types\";\r\n\r\nasync function Router(\r\n param: number[][],\r\n typeData: string,\r\n token: string,\r\n): Promise<IRoute[]> {\r\n try {\r\n const res = await routingApi(param, token);\r\n\r\n if (!res?.data) return res;\r\n\r\n const data: IRoute[] = res.data;\r\n\r\n return data.map((route) => {\r\n const updated = { ...route };\r\n\r\n if (updated.route?.routes?.length) {\r\n updated.route.routes = updated.route.routes.map((r) => ({\r\n ...r,\r\n geometry:\r\n typeData === \"geojson\" && typeof r.geometry === \"string\"\r\n ? geojsonPolyline(r.geometry)\r\n : r.geometry,\r\n }));\r\n }\r\n\r\n return updated as IRoute;\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Router };\r\n","import { api } from \"../httpClient\";\nimport type {\n ISearchByLocationParam,\n ISearchParam,\n ISearchResponse,\n IReponse,\n} from \"@sdk-types\";\n\nconst searchPost = async (params: ISearchParam) => {\n try {\n const response = await api.post<IReponse<ISearchResponse[]>>(\n \"services/getAddress\",\n null,\n {\n params,\n },\n );\n return response.data;\n } catch (error) {\n console.error(\"Error while searching address:\", error);\n throw error;\n }\n};\n\nconst searchByLocationPost = async (params: ISearchByLocationParam) => {\n try {\n const response = await api.post<IReponse<ISearchResponse[]>>(\n \"services/getAddressByLocation\",\n null,\n {\n params,\n },\n );\n return response.data;\n } catch (error) {\n console.error(\"Error while searching address by location:\", error);\n throw error;\n }\n};\n\nexport { searchPost, searchByLocationPost };\n","import { searchByLocationPost, searchPost } from \"./search.api\";\r\nimport {\r\n IAdditionalParamType,\r\n ISearchByLocationParam,\r\n ISearchParam,\r\n ISearchResponse,\r\n} from \"@sdk-types\";\r\nimport { getApiKey } from \"../authKey\";\r\nimport { debounce } from \"@utils\";\r\n// import { checkCoordinates } from \"@utils\";\r\n// import { REGEX } from \"@config\";\r\n\r\nasync function getSearch(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearchResponse> {\r\n let searchData: ISearchParam = {\r\n text: param,\r\n token: token ? token : getApiKey(),\r\n ...additionalParam,\r\n };\r\n\r\n // if (param !== \"\") {\r\n // if (REGEX.test(param)) {\r\n // let coordinates = await checkCoordinates(param);\r\n // if (coordinates) {\r\n // searchData = {\r\n // lat: coordinates.lat ?? \"\",\r\n // lng: coordinates.lng ?? \"\",\r\n // };\r\n // }\r\n // } else {\r\n // searchData.text = param;\r\n // }\r\n // } else {\r\n // searchData.text = \"\";\r\n // }\r\n\r\n try {\r\n const res: any = await searchPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nconst debouncedFn = debounce(getSearch, 500);\r\n\r\nasync function Search(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearchResponse> {\r\n return await debouncedFn(param, token, additionalParam);\r\n}\r\n\r\nasync function SearchByLocation(\r\n params: ISearchByLocationParam,\r\n): Promise<ISearchResponse> {\r\n const searchData: ISearchByLocationParam = {\r\n ...params,\r\n token: params.token ? params.token : getApiKey(),\r\n };\r\n\r\n try {\r\n const res: any = await searchByLocationPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Search, SearchByLocation };\r\n"],"mappings":"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","names":["CameraController","map","zoom","smooth","bearing","pitch","is3D","options","BASE_URL","LATLNGREGEX","LNGLATREGEX","DARK","LIGHT","VECTOR","buildStyleUrl","styleUrl","lang","separator","SVG_ROOT_PATTERN","SVG_MARKUP_PATTERN","updateSvgAttribute","svg","attribute","value","attributePattern","escapeSvgAttribute","createImageTag","url","normalizeInnerSvg","trimmedSvg","normalizedSvg","resolveInnerIcon","innerSvg","innerUrl","trimmedInnerSvg","trimmedInnerUrl","createDefaultMarkerSvg","color","innerIconOptions","MahalMapDefaultMarker","props","el","svg","createDefaultMarkerSvg","addMarker","maplibregl","map","marker","defaultStyles","DARK","LIGHT","logoColors","_MahalMap","options","lang","theme","buildStyleUrl","maplibreObject","maplibre","language","finalStyle","VECTOR","instance","instanceKey","CameraController","cb","container","callback","check","marker","center","zoom","addMarker","map","logoHost","logoShadow","style","color","MahalMap","services_exports","__export","Router","Search","SearchByLocation","clearKey","getApiKey","saveKey","axios","api","axios","BASE_URL","response","error","clearKey","apiKey","saveKey","param","api","clearKey","getApiKey","routingApi","param","token","points","e","api","getApiKey","err","utils_exports","__export","checkCoordinates","debounce","geojsonPolyline","geometryPolyline_default","trimValue","checkCoordinates","coordinates","lat","lng","LATLNGREGEX","match","LNGLATREGEX","debounce","fn","delay","timer","args","resolve","result","geojsonPolyline","encoded","points","index","len","lat","lng","b","shift","result","dlat","dlng","geometryPolyline","coordinates","encoded","prevLat","prevLng","i","lng","lat","latE5","lngE5","dLat","dLng","encodeSignedNumber","num","sgnNum","encodeNumber","geometryPolyline_default","trimValue","value","cut","cleanValue","Router","param","typeData","token","res","routingApi","route","updated","r","geojsonPolyline","error","searchPost","params","api","error","searchByLocationPost","getSearch","param","token","additionalParam","searchData","getApiKey","searchPost","error","debouncedFn","debounce","Search","SearchByLocation","params","searchByLocationPost"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/CameraController.ts","../src/config/constants.ts","../src/markers/defaultMarkerSvg.ts","../src/markers/MahalMapDefaultMarker.ts","../src/markers/marker.adapter.ts","../src/core/MahalMap.ts","../src/services/index.ts","../src/services/httpClient.ts","../src/services/authKey.ts","../src/services/routing/routing.api.ts","../src/utils/index.ts","../src/utils/coordinates.ts","../src/utils/debounce.ts","../src/utils/polyline/geojsonPolyline.ts","../src/utils/polyline/geometryPolyline.ts","../src/utils/trimValue.ts","../src/services/routing/routing.service.ts","../src/services/search/search.api.ts","../src/services/search/search.service.ts"],"sourcesContent":["import type { Map, FlyToOptions } from \"maplibre-gl\";\r\n\r\nexport class CameraController {\r\n constructor(private map: Map) {}\r\n\r\n setZoom(zoom: number, smooth = true) {\r\n if (smooth) {\r\n this.map.easeTo({ zoom });\r\n } else {\r\n this.map.setZoom(zoom);\r\n }\r\n }\r\n\r\n setBearing(bearing: number, smooth = true) {\r\n smooth ? this.map.easeTo({ bearing }) : this.map.setBearing(bearing);\r\n }\r\n\r\n setPitch(pitch: number, smooth = true) {\r\n smooth ? this.map.easeTo({ pitch }) : this.map.setPitch(pitch);\r\n }\r\n\r\n toggle3D(is3D: boolean) {\r\n this.map.easeTo({\r\n pitch: is3D ? 60 : 0,\r\n bearing: is3D ? this.map.getBearing() : 0,\r\n duration: 800,\r\n });\r\n }\r\n\r\n resetNorth() {\r\n this.map.easeTo({\r\n bearing: 0,\r\n pitch: 0,\r\n duration: 600,\r\n });\r\n }\r\n\r\n flyTo(options: FlyToOptions) {\r\n this.map.flyTo({\r\n speed: 1.2,\r\n curve: 1.42,\r\n essential: true,\r\n ...options,\r\n });\r\n }\r\n\r\n getPitch() {\r\n return this.map.getPitch();\r\n }\r\n}\r\n","const BASE_URL = \"https://platform.mahal.tj/api/\";\r\nconst LATLNGREGEX =\r\n /^([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?)),\\s*([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?))$/;\r\nconst LNGLATREGEX =\r\n /^([-+]?(?:180(?:\\.0+)?|(?:(?:1[0-7]\\d)|(?:[1-9]?\\d))(?:\\.\\d+)?)),\\s*([-+]?(?:[1-8]?\\d(?:\\.\\d+)?|90(?:\\.0+)?))$/;\r\n\r\nconst REGEX =\r\n /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n\r\nconst DARK = \"https://mtile.gram.tj/custom-styles/dark-style.json\";\nconst LIGHT = \"https://mtile.gram.tj/custom-styles/mapstyle.json\";\nconst VECTOR =\n \"https://mtile.gram.tj/custom-styles/style_maptiler_basic_hn.json\";\n\nconst STYLE_LANG_PARAM = \"ru\";\n\nfunction buildStyleUrl(styleUrl: string, lang?: string) {\n if (lang !== STYLE_LANG_PARAM) {\n return styleUrl;\n }\n\n const separator = styleUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${styleUrl}${separator}lang=${STYLE_LANG_PARAM}`;\n}\n\nexport {\n BASE_URL,\n LATLNGREGEX,\n LNGLATREGEX,\n REGEX,\n DARK,\n LIGHT,\n VECTOR,\n buildStyleUrl,\n};\n","type DefaultMarkerInnerIconOptions = {\r\n innerSvg?: string;\r\n innerUrl?: string;\r\n};\r\n\r\nconst SVG_ROOT_PATTERN = /<svg[\\s>]/i;\r\nconst SVG_MARKUP_PATTERN =\r\n /<(svg|path|g|circle|rect|polygon|line|polyline|ellipse|use)\\b/i;\r\n\r\nconst updateSvgAttribute = (\r\n svg: string,\r\n attribute: string,\r\n value: string,\r\n): string => {\r\n const attributePattern = new RegExp(`\\\\s${attribute}=\"[^\"]*\"`, \"i\");\r\n\r\n if (attributePattern.test(svg)) {\r\n return svg.replace(attributePattern, ` ${attribute}=\"${value}\"`);\r\n }\r\n\r\n return svg.replace(/<svg\\b/i, `<svg ${attribute}=\"${value}\"`);\r\n};\r\n\r\nconst escapeSvgAttribute = (value: string): string =>\r\n value.replace(/&/g, \"&\").replace(/\"/g, \""\");\r\n\r\nconst createImageTag = (url: string): string =>\r\n `<image href=\"${escapeSvgAttribute(url)}\" x=\"14\" y=\"12\" width=\"22\" height=\"22\" style=\"filter: brightness(0) invert(1);\" />`;\r\n\r\nconst normalizeInnerSvg = (svg: string): string => {\r\n const trimmedSvg = svg.trim();\r\n\r\n if (SVG_ROOT_PATTERN.test(trimmedSvg)) {\r\n let normalizedSvg = updateSvgAttribute(trimmedSvg, \"x\", \"14\");\r\n normalizedSvg = updateSvgAttribute(normalizedSvg, \"y\", \"12\");\r\n normalizedSvg = updateSvgAttribute(normalizedSvg, \"width\", \"22\");\r\n normalizedSvg = updateSvgAttribute(normalizedSvg, \"height\", \"22\");\r\n\r\n if (!/\\spreserveAspectRatio=\"/i.test(normalizedSvg)) {\r\n normalizedSvg = normalizedSvg.replace(\r\n /<svg\\b/i,\r\n `<svg preserveAspectRatio=\"xMidYMid meet\"`,\r\n );\r\n }\r\n\r\n return normalizedSvg;\r\n }\r\n\r\n return `<g transform=\"translate(14 12)\">${trimmedSvg}</g>`;\r\n};\r\n\r\nconst resolveInnerIcon = ({\r\n innerSvg,\r\n innerUrl,\r\n}: DefaultMarkerInnerIconOptions): string => {\r\n const trimmedInnerSvg = innerSvg?.trim();\r\n const trimmedInnerUrl = innerUrl?.trim();\r\n\r\n if (trimmedInnerSvg) {\r\n if (SVG_MARKUP_PATTERN.test(trimmedInnerSvg)) {\r\n return normalizeInnerSvg(trimmedInnerSvg);\r\n }\r\n\r\n return createImageTag(trimmedInnerSvg);\r\n }\r\n\r\n if (trimmedInnerUrl) {\r\n return createImageTag(trimmedInnerUrl);\r\n }\r\n\r\n return \"\";\r\n};\r\n\r\nconst createDefaultMarkerSvg = (\r\n color: string,\r\n innerIconOptions: DefaultMarkerInnerIconOptions = {},\r\n) => `<svg\r\n width=\"50\"\r\n height=\"62\"\r\n viewBox=\"0 0 50 62\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g filter=\"url(#filter0_d_367_31358)\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M25 2C36.598 2 46 11.402 46 23C46 33.1603 38.7844 41.6353 29.198 43.5803L25.6524 48.6575C25.5788 48.7633 25.4812 48.8497 25.3676 48.9093C25.254 48.9689 25.128 49 25 49C24.872 49 24.746 48.9689 24.6324 48.9093C24.5188 48.8497 24.4212 48.7633 24.3476 48.6575L20.802 43.5803C11.2156 41.6353 4 33.1603 4 23C4 11.402 13.402 2 25 2Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n />\r\n </g>\r\n <path\r\n d=\"M25 51C27.7614 51 30 53.2386 30 56C30 58.7614 27.7614 61 25 61C22.2386 61 20 58.7614 20 56C20 53.2386 22.2386 51 25 51Z\"\r\n fill=\"${color ? color : \"#278960\"}\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n />\r\n <g clip-path=\"url(#clip0_367_31358)\">\r\n ${resolveInnerIcon(innerIconOptions)}\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_d_367_31358\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"50\"\r\n height=\"55\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feOffset dy=\"2\" />\r\n <feGaussianBlur stdDeviation=\"2\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.250234 0 0 0 0 0.660089 0 0 0 0 0.488619 0 0 0 0.24 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_367_31358\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_367_31358\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath id=\"clip0_367_31358\">\r\n <rect\r\n width=\"22\"\r\n height=\"22\"\r\n fill=\"white\"\r\n transform=\"translate(14 12)\"\r\n />\r\n </clipPath>\r\n </defs>\r\n </svg>`;\r\n\r\nexport { createDefaultMarkerSvg };\r\n","import { createDefaultMarkerSvg } from \"./defaultMarkerSvg\";\r\nimport type { MahalMapDefaultMarkerProps } from \"@sdk-types\";\r\n\r\nclass MahalMapDefaultMarker {\r\n private element: HTMLElement;\r\n\r\n constructor(private props: MahalMapDefaultMarkerProps) {\r\n this.element = this.createElement();\r\n }\r\n\r\n private createElement(): HTMLElement {\r\n const el = document.createElement(\"div\");\r\n el.style.cursor = \"pointer\";\r\n\r\n const svg = this.props.svg\r\n ? this.applyColorToCustomSvg(this.props.svg)\r\n : createDefaultMarkerSvg(\r\n this.props.color ?? \"#278960\",\r\n {\r\n innerSvg: this.props.innerSvg,\r\n innerUrl: this.props.innerUrl,\r\n },\r\n );\r\n\r\n el.innerHTML = svg;\r\n\r\n if (this.props.draggable) {\r\n el.draggable = true;\r\n }\r\n\r\n return el;\r\n }\r\n\r\n private applyColorToCustomSvg(svg: string): string {\r\n if (!this.props.color) return svg;\r\n return svg.replace(/fill=\"[^\"]*\"/g, `fill=\"${this.props.color}\"`);\r\n }\r\n\r\n getElement() {\r\n return this.element;\r\n }\r\n\r\n getCoordinates() {\r\n return this.props.coordinates;\r\n }\r\n\r\n isDraggable() {\r\n return !!this.props.draggable;\r\n }\r\n\r\n getAnchor() {\r\n return this.props.anchor || \"center\";\r\n }\r\n}\r\n\r\nexport { MahalMapDefaultMarker };\r\n","import type { Map, Marker } from \"maplibre-gl\";\r\nimport type { IMapMarker } from \"@sdk-types\";\r\n\r\ntype MapLibreMarkerFactory = {\r\n Marker: new (...args: ConstructorParameters<typeof Marker>) => Marker;\r\n};\r\n\r\nexport function addMarker(\r\n maplibregl: MapLibreMarkerFactory,\r\n map: Map,\r\n marker: IMapMarker,\r\n) {\r\n const mapMarker = new maplibregl.Marker({\r\n element: marker.getElement(),\r\n draggable: marker.isDraggable?.() ?? false,\r\n anchor: marker.getAnchor?.() ?? \"center\",\r\n })\r\n .setLngLat(marker.getCoordinates())\r\n .addTo(map);\r\n\r\n return mapMarker;\r\n}\r\n","import type { Map as MapType, Marker } from \"maplibre-gl\";\nimport { DARK, LIGHT, VECTOR, buildStyleUrl } from \"@config\";\nimport { CameraController } from \"./CameraController\";\n\nimport type {\n IMahalMapOptions,\n IMapMarker,\n MapLanguage,\n Theme,\n} from \"@sdk-types\";\n\n// Adapter\nimport { addMarker } from \"@markers\";\n\nconst defaultStyles = { dark: DARK, light: LIGHT };\nconst logoColors = { dark: \"#ffffff\", light: \"#19191a\" };\n\ntype MapLibreApi = {\n Map: new (...args: ConstructorParameters<typeof MapType>) => MapType;\n Marker: new (...args: ConstructorParameters<typeof Marker>) => Marker;\n};\n\nexport class MahalMap {\n private static instances = new Map<string, MahalMap>();\n private static defaultLanguage: MapLanguage = \"tj\";\n\n private isReady = false;\n private readyCallbacks: Array<(map: MapType) => void> = [];\n\n private map!: MapType;\n private maplibre!: MapLibreApi;\n private camera!: CameraController;\n private logoHost?: HTMLDivElement;\n private logoShadow?: ShadowRoot;\n private logoObserver?: MutationObserver;\n\n private options!: IMahalMapOptions;\n private language: MapLanguage = \"tj\";\n private instanceKey = \"\";\n\n private constructor() {}\n\n private static getInstanceKey(options: IMahalMapOptions) {\n return typeof options.container === \"string\" && options.container\n ? options.container\n : \"map\";\n }\n\n private static normalizeLanguage(lang?: string | null): MapLanguage {\n return lang === \"ru\" ? \"ru\" : \"tj\";\n }\n\n static setDefaultLanguage(lang?: string | null) {\n MahalMap.defaultLanguage = MahalMap.normalizeLanguage(lang);\n }\n\n private static getDefaultStyle(theme: Theme, lang: MapLanguage) {\n return buildStyleUrl(defaultStyles[theme], lang);\n }\n\n static create(options: IMahalMapOptions, maplibreObject?: MapLibreApi) {\n const globalMaplibre =\n typeof window !== \"undefined\"\n ? (window as unknown as { maplibregl?: MapLibreApi }).maplibregl\n : undefined;\n const maplibre = globalMaplibre || maplibreObject;\n\n if (!maplibre) {\n throw new Error(\n \"[MahalMap SDK] MapLibre GL was not found. Pass it as the second argument or include it through a script.\",\n );\n }\n\n const language = MahalMap.normalizeLanguage(\n options.lang || MahalMap.defaultLanguage,\n );\n const theme = options.theme === \"dark\" ? \"dark\" : \"light\";\n const finalStyle = options.autoAddVectorSource\n ? VECTOR\n : options.style\n ? options.style\n : MahalMap.getDefaultStyle(theme, language);\n\n const instance = new MahalMap();\n const instanceKey = MahalMap.getInstanceKey(options);\n\n instance.options = options;\n instance.language = language;\n instance.instanceKey = instanceKey;\n instance.maplibre = maplibre;\n instance.map = new maplibre.Map({\n container: options.container || \"map\",\n style: finalStyle as string,\n center: options.center || [69.624024, 40.279687],\n zoom: options.zoom || 5,\n attributionControl: false,\n });\n instance.addLogo(theme);\n\n instance.map.on(\"load\", () => {\n instance.isReady = true;\n\n instance.camera = new CameraController(instance.map);\n\n instance.readyCallbacks.forEach((cb) => cb(instance.map));\n instance.readyCallbacks = [];\n });\n\n MahalMap.instances.set(instanceKey, instance);\n return instance;\n }\n\n static onReady(container: string, callback: (map: MapType) => void) {\n if (!MahalMap.instances.has(container)) {\n const check = setInterval(() => {\n if (MahalMap.instances.has(container)) {\n clearInterval(check);\n MahalMap.onReady(container, callback);\n }\n }, 50);\n return;\n }\n\n const instance = MahalMap.getInstance(container);\n\n if (instance.isReady) {\n callback(instance.map);\n } else {\n instance.readyCallbacks.push(callback);\n }\n }\n\n static getInstance(container: string): MahalMap {\n const instance = MahalMap.instances.get(container);\n\n if (!instance) {\n throw new Error(\"[MahalMap SDK] Map instance is not created\");\n }\n\n return instance;\n }\n\n static hasInstance(container: string): boolean {\n return MahalMap.instances.has(container);\n }\n\n static removeInstance(container: string): boolean {\n return MahalMap.instances.delete(container);\n }\n\n static addMarker(instance: MahalMap, marker: IMapMarker) {\n return instance.addMarker(marker);\n }\n\n static getCamera(instance: MahalMap) {\n return instance.getCamera();\n }\n\n static getMap(instance: MahalMap): MapType {\n return instance.getMap();\n }\n\n static setStyle(instance: MahalMap, theme: Theme) {\n instance.setStyle(theme);\n }\n\n static setLanguage(instance: MahalMap, lang: MapLanguage) {\n instance.setLanguage(lang);\n }\n\n static setCenter(instance: MahalMap, center: [number, number]) {\n instance.setCenter(center);\n }\n\n static setZoom(instance: MahalMap, zoom: number) {\n instance.setZoom(zoom);\n }\n\n static destroy(instance: MahalMap) {\n instance.destroy();\n }\n\n addMarker(marker: IMapMarker) {\n return addMarker(this.maplibre, this.map, marker);\n }\n\n init(map: MapType) {\n this.map = map;\n this.camera = new CameraController(map);\n }\n\n getCamera() {\n return this.camera;\n }\n\n getMap(): MapType {\n return this.map;\n }\n\n setStyle(theme: Theme) {\n if (this.options.autoAddVectorSource) {\n return;\n }\n\n this.options.theme = theme;\n\n if (!this.options.style) {\n this.map.setStyle(MahalMap.getDefaultStyle(theme, this.language));\n }\n\n this.updateLogoColor(theme);\n }\n\n setLanguage(lang: MapLanguage) {\n this.language = MahalMap.normalizeLanguage(lang);\n this.options.lang = this.language;\n\n if (this.options.autoAddVectorSource || this.options.style) {\n return;\n }\n\n const theme = this.options.theme === \"dark\" ? \"dark\" : \"light\";\n this.map.setStyle(MahalMap.getDefaultStyle(theme, this.language));\n }\n\n setCenter(center: [number, number]) {\n this.map.setCenter(center);\n }\n\n setZoom(zoom: number) {\n this.map.setZoom(zoom);\n }\n\n destroy() {\n this.logoObserver?.disconnect();\n this.logoObserver = undefined;\n this.logoHost?.remove();\n this.logoHost = undefined;\n this.logoShadow = undefined;\n this.map.remove();\n MahalMap.instances.delete(this.instanceKey);\n }\n\n private addLogo(theme: \"dark\" | \"light\") {\n const container = this.map.getContainer();\n const logoHost = document.createElement(\"div\");\n const logoShadow = logoHost.attachShadow({ mode: \"closed\" });\n\n logoHost.setAttribute(\"aria-label\", \"Mahal\");\n logoHost.dataset.mahal = Math.random().toString(36).slice(2);\n this.logoHost = logoHost;\n this.logoShadow = logoShadow;\n\n this.applyLogoHostStyles();\n this.renderLogo(theme);\n container.appendChild(logoHost);\n this.observeLogo(container);\n }\n\n private updateLogoColor(theme: \"dark\" | \"light\") {\n if (!this.logoShadow) {\n return;\n }\n\n this.renderLogo(theme);\n }\n\n private renderLogo(theme: \"dark\" | \"light\") {\n if (!this.logoShadow) {\n return;\n }\n\n this.logoShadow.innerHTML = `\n <style>\n :host {\n all: initial;\n }\n\n .logo-wrap {\n display: block;\n width: 80px;\n height: 18.45px;\n line-height: 0;\n pointer-events: none;\n user-select: none;\n }\n\n svg {\n display: block;\n }\n </style>\n <span class=\"logo-wrap\" aria-hidden=\"true\">\n ${this.getLogoSvg(logoColors[theme])}\n </span>\n `;\n }\n\n private applyLogoHostStyles() {\n if (!this.logoHost) {\n return;\n }\n\n const style = this.logoHost.style;\n\n style.setProperty(\"position\", \"absolute\", \"important\");\n style.setProperty(\"right\", \"10px\", \"important\");\n style.setProperty(\"bottom\", \"10px\", \"important\");\n style.setProperty(\"z-index\", \"1\", \"important\");\n style.setProperty(\"display\", \"block\", \"important\");\n style.setProperty(\"visibility\", \"visible\", \"important\");\n style.setProperty(\"opacity\", \"1\", \"important\");\n style.setProperty(\"pointer-events\", \"none\", \"important\");\n style.setProperty(\"line-height\", \"0\", \"important\");\n style.setProperty(\"width\", \"80px\", \"important\");\n style.setProperty(\"height\", \"18.45px\", \"important\");\n }\n\n private observeLogo(container: HTMLElement) {\n if (!this.logoHost) {\n return;\n }\n\n this.logoObserver?.disconnect();\n this.logoObserver = new MutationObserver(() => {\n if (!this.logoHost) {\n return;\n }\n\n this.applyLogoHostStyles();\n\n if (!container.contains(this.logoHost)) {\n container.appendChild(this.logoHost);\n }\n });\n\n this.logoObserver.observe(container, { childList: true });\n this.logoObserver.observe(this.logoHost, {\n attributes: true,\n attributeFilter: [\"class\", \"style\", \"hidden\"],\n });\n }\n\n private getLogoSvg(color: string) {\n return `\n <svg class=\"logo\" width=\"80\" viewBox=\"0 0 143 33\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"opacity: 0.95;\">\n <g clip-path=\"url(#mahal-logo-text)\">\n <path d=\"M57.2317 27.0218H52.8158V17.4678C52.8522 16.33 52.5154 15.2116 51.8567 14.2832C51.5507 13.8592 51.1439 13.5179 50.6731 13.2903C50.2023 13.0627 49.6822 12.9558 49.1598 12.9793C48.6266 12.9617 48.0969 13.0725 47.6154 13.3022C47.1338 13.532 46.7145 13.874 46.3926 14.2995C45.6965 15.2066 45.3323 16.3248 45.3607 17.4678V27.0218H40.9472V9.14261H45.0371L45.3631 11.3142C45.7779 10.4819 46.4682 9.81897 47.3166 9.4381C48.1797 9.04305 49.1182 8.83982 50.0674 8.84243C52.6721 8.84243 54.4332 9.9525 55.3509 12.1726C56.7283 10.001 58.7194 8.91514 61.324 8.91514C63.8255 8.91514 65.7133 9.6445 66.9875 11.1032C68.2617 12.5618 68.8949 14.6553 68.8871 17.3834V27.0102H64.4688V17.3952C64.4688 16.1178 64.1913 15.0742 63.6363 14.2644C63.0813 13.4545 62.2371 13.0504 61.1036 13.052C60.5671 13.0338 60.0336 13.1404 59.5453 13.3634C59.0569 13.5864 58.6271 13.9197 58.2894 14.3371C57.5684 15.2182 57.1895 16.3298 57.2223 17.4678L57.2317 27.0218Z\" fill=\"${color}\" />\n <path d=\"M87.3807 11.6402L87.5261 9.18015H91.7614V27.0218H87.5988L87.3807 24.4164C86.851 25.4268 85.997 26.2296 84.9559 26.6959C83.911 27.2275 82.7623 27.5237 81.5906 27.5636C78.8656 27.587 76.6525 26.7725 74.9516 25.12C73.2506 23.4674 72.4001 21.1223 72.4001 18.0846C72.4001 15.1141 73.2748 12.8096 75.0243 11.1712C76.7737 9.5327 78.9992 8.72439 81.7008 8.74628C82.8702 8.73859 84.0244 9.01209 85.066 9.54366C86.0248 10.0029 86.8291 10.7314 87.3807 11.6402ZM82.0972 12.6908C81.4026 12.6688 80.7104 12.7854 80.0614 13.0339C79.4123 13.2823 78.8193 13.6575 78.3168 14.1377C77.3162 15.1008 76.8151 16.4156 76.8136 18.0822C76.812 19.7488 77.3131 21.0699 78.3168 22.0455C78.8166 22.5305 79.4089 22.9103 80.0583 23.162C80.7077 23.4138 81.401 23.5325 82.0972 23.5112C83.3119 23.549 84.4998 23.1505 85.446 22.3879C86.304 21.7164 86.8944 20.761 87.111 19.6933C87.3151 18.6471 87.3151 17.5713 87.111 16.525C86.8973 15.451 86.3068 14.4887 85.446 13.8118C84.4984 13.0487 83.3085 12.651 82.0925 12.6908H82.0972Z\" fill=\"${color}\" />\n <path d=\"M95.483 1.6875H99.8989V11.605C101.273 9.818 103.131 8.92531 105.471 8.92687C107.933 8.92687 109.767 9.69295 110.973 11.2251C112.178 12.7572 112.781 14.8858 112.781 17.6109V27.0218H108.367V17.6413C108.367 16.0779 107.999 14.914 107.263 14.1495C106.526 13.385 105.543 13.0042 104.313 13.0074C103.714 12.9928 103.119 13.1115 102.571 13.3548C102.024 13.5982 101.537 13.9601 101.147 14.4144C100.308 15.3743 99.862 16.6156 99.8989 17.8899V27.0101H95.483V1.6875Z\" fill=\"${color}\" />\n <path d=\"M130.515 11.6402L130.66 9.18015H134.893V27.0218H130.733L130.515 24.4164C129.984 25.4263 129.13 26.229 128.09 26.6959C127.045 27.2273 125.896 27.5235 124.724 27.5636C121.998 27.587 119.784 26.7725 118.083 25.12C116.382 23.4674 115.532 21.1223 115.532 18.0846C115.532 15.1141 116.406 12.8096 118.156 11.1712C119.905 9.5327 122.131 8.72439 124.832 8.74628C126.002 8.73804 127.156 9.01157 128.198 9.54366C129.157 10.0029 129.962 10.7313 130.515 11.6402ZM125.231 12.6908C124.536 12.6688 123.844 12.7853 123.194 13.0337C122.545 13.2822 121.951 13.6575 121.448 14.1377C120.446 15.1008 119.946 16.4156 119.947 18.0822C119.949 19.7488 120.449 21.0699 121.448 22.0455C121.949 22.5306 122.541 22.9103 123.191 23.1621C123.841 23.4139 124.534 23.5326 125.231 23.5112C126.445 23.5495 127.632 23.1509 128.577 22.3879C129.436 21.7171 130.027 20.7614 130.243 19.6933C130.447 18.6471 130.447 17.5713 130.243 16.525C130.03 15.4506 129.439 14.488 128.577 13.8118C127.632 13.0494 126.445 12.6516 125.231 12.6908Z\" fill=\"${color}\" />\n <path d=\"M138.622 1.72498H143V27.0218H138.622V1.72498Z\" fill=\"${color}\" />\n </g>\n <g clip-path=\"url(#mahal-logo-mark)\">\n <path d=\"M30.4142 14.0273H22.0831L27.974 8.1364C28.4165 7.69383 28.6651 7.09361 28.665 6.46779C28.6649 5.84197 28.4163 5.2418 27.9737 4.79932C27.5311 4.35684 26.9309 4.10829 26.3051 4.10835C25.6793 4.10841 25.0791 4.35708 24.6366 4.79965L18.7463 10.6906V2.35952C18.7463 1.73373 18.4978 1.13358 18.0553 0.691086C17.6128 0.248591 17.0126 0 16.3868 0C15.761 0 15.1609 0.248591 14.7184 0.691086C14.2759 1.13358 14.0273 1.73373 14.0273 2.35952V10.6906L8.13639 4.79965C7.69268 4.3631 7.09445 4.11958 6.472 4.12211C5.84955 4.12465 5.25332 4.37304 4.81318 4.81318C4.37304 5.25332 4.12465 5.84955 4.12211 6.472C4.11958 7.09445 4.3631 7.69268 4.79965 8.1364L10.6906 14.0273H2.35952C1.73373 14.0273 1.13358 14.2759 0.691084 14.7184C0.248589 15.1609 0 15.7611 0 16.3868C0 17.0126 0.248589 17.6128 0.691084 18.0553C1.13358 18.4978 1.73373 18.7464 2.35952 18.7464H10.6906L4.79965 24.6373C4.3631 25.081 4.11958 25.6792 4.12211 26.3017C4.12465 26.9241 4.37304 27.5203 4.81318 27.9605C5.25332 28.4006 5.84955 28.649 6.472 28.6516C7.09445 28.6541 7.69268 28.4106 8.13639 27.974L14.0273 22.0831V30.4142C14.0273 31.0399 14.2759 31.6401 14.7184 32.0826C15.1609 32.5251 15.761 32.7737 16.3868 32.7737C17.0126 32.7737 17.6128 32.5251 18.0553 32.0826C18.4978 31.6401 18.7463 31.0399 18.7463 30.4142V22.0831L24.6366 27.974C25.0791 28.4166 25.6793 28.6653 26.3051 28.6653C26.9309 28.6654 27.5311 28.4168 27.9737 27.9743C28.4163 27.5319 28.6649 26.9317 28.665 26.3059C28.6651 25.6801 28.4165 25.0798 27.974 24.6373L22.0831 18.7464H30.4142C31.0399 18.7464 31.6401 18.4978 32.0826 18.0553C32.5251 17.6128 32.7737 17.0126 32.7737 16.3868C32.7737 15.7611 32.5251 15.1609 32.0826 14.7184C31.6401 14.2759 31.0399 14.0273 30.4142 14.0273Z\" fill=\"#278960\" />\n </g>\n <defs>\n <clipPath id=\"mahal-logo-text\">\n <rect width=\"102.055\" height=\"25.8761\" fill=\"white\" transform=\"translate(40.9449 1.6875)\" />\n </clipPath>\n <clipPath id=\"mahal-logo-mark\">\n <rect width=\"32.7737\" height=\"32.7737\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n `;\n }\n}\n","export * from \"./authKey\";\nexport * from \"./routing\";\nexport * from \"./search\";\n","import axios from \"axios\";\r\nimport { BASE_URL } from \"@config\";\r\nimport { clearKey } from \"./authKey\";\r\n\r\nexport const api = axios.create({\r\n baseURL: BASE_URL,\r\n});\r\n\r\napi.interceptors.response.use(\r\n (response) => response,\r\n (error) => {\r\n if (error.response?.status === 401) {\r\n clearKey();\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n","import { api } from \"./httpClient\";\r\n\r\nlet apiKey: string = \"\";\n\r\nfunction saveKey(param: string) {\r\n if (param === \"\") return;\r\n apiKey = param;\r\n api.defaults.headers.common[\"Authorization\"] = `Bearer ${param}`;\r\n}\r\n\r\nfunction clearKey() {\r\n apiKey = \"\";\r\n api.defaults.headers.common[\"Authorization\"] = \"\";\r\n}\r\n\r\nconst getApiKey = () => apiKey;\r\n\r\nexport { saveKey, clearKey, getApiKey };\n","import { getApiKey } from \"../authKey\";\r\nimport { api } from \"../httpClient\";\r\n\r\nconst routingApi = async (param: number[][], token: string) => {\r\n try {\r\n const points: { lng: number; lat: number }[] = [];\r\n\r\n param.forEach((e) => {\r\n points.push({ lng: e[0], lat: e[1] });\r\n });\r\n const response = await api.post(\"services/getRoutes\", {\r\n points,\r\n token: token ? token : getApiKey(),\r\n });\r\n return response.data;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport { routingApi };\r\n","export * from \"./coordinates\";\r\nexport * from \"./debounce\";\r\nexport * from \"./polyline\";\r\nexport * from \"./trimValue\";\r\n","import { LATLNGREGEX, LNGLATREGEX } from \"@config\";\r\n\r\nexport function checkCoordinates(coordinates: string) {\r\n let lat, lng;\r\n if (LATLNGREGEX.test(coordinates)) {\r\n const match = coordinates.match(LATLNGREGEX);\r\n if (match) {\r\n [, lat, lng] = match; // Первый элемент — полное совпадение, пропускаем его\r\n }\r\n } else if (LNGLATREGEX.test(coordinates)) {\r\n const match = coordinates.match(LNGLATREGEX);\r\n if (match) {\r\n [, lng, lat] = match; // Меняем местами\r\n }\r\n } else {\r\n console.log(\"Неверный формат координат\");\r\n return null;\r\n }\r\n return { lat, lng };\r\n}\r\n","function debounce<F extends (...args: any[]) => Promise<any>>(\r\n fn: F,\r\n delay: number,\r\n) {\r\n let timer: ReturnType<typeof setTimeout>;\r\n\r\n return (...args: Parameters<F>): Promise<ReturnType<F>> => {\r\n if (timer) clearTimeout(timer);\r\n return new Promise((resolve) => {\r\n timer = setTimeout(async () => {\r\n const result = await fn(...args);\r\n resolve(result);\r\n }, delay);\r\n }) as Promise<ReturnType<F>>;\r\n };\r\n}\r\n\r\nexport { debounce };\r\n","function geojsonPolyline(encoded: string): number[][] {\r\n let points = [];\r\n let index = 0,\r\n len = encoded.length;\r\n let lat = 0,\r\n lng = 0;\r\n\r\n while (index < len) {\r\n let b,\r\n shift = 0,\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlat = result & 1 ? ~(result >> 1) : result >> 1;\r\n lat += dlat;\r\n\r\n shift = 0;\r\n result = 0;\r\n do {\r\n b = encoded.charCodeAt(index++) - 63;\r\n result |= (b & 0x1f) << shift;\r\n shift += 5;\r\n } while (b >= 0x20);\r\n let dlng = result & 1 ? ~(result >> 1) : result >> 1;\r\n lng += dlng;\r\n\r\n points.push([lng * 1e-5, lat * 1e-5]);\r\n }\r\n\r\n return points;\r\n}\r\n\r\nexport { geojsonPolyline };\r\n\r\n// Пример использования:\r\n\r\n// geojsonPolyline(\"yzocFzynhVq}@n}@o}@nzD\")\r\n\r\n// Вернёт массив вида [\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ].\r\n","function geometryPolyline(coordinates: number[][]): string {\r\n let encoded = '';\r\n let prevLat = 0;\r\n let prevLng = 0;\r\n\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const [lng, lat] = coordinates[i];\r\n \r\n // Умножаем координаты на 1e5 и округляем\r\n const latE5 = Math.round(lat * 1e5);\r\n const lngE5 = Math.round(lng * 1e5);\r\n\r\n // Вычисляем разницу от предыдущих значений\r\n const dLat = latE5 - prevLat;\r\n const dLng = lngE5 - prevLng;\r\n\r\n // Обновляем предыдущие значения\r\n prevLat = latE5;\r\n prevLng = lngE5;\r\n\r\n // Добавляем к закодированной строке\r\n encoded += encodeSignedNumber(dLat) + encodeSignedNumber(dLng);\r\n }\r\n\r\n return encoded;\r\n}\r\n\r\nfunction encodeSignedNumber(num: number) {\r\n let sgnNum = num << 1;\r\n if (num < 0) {\r\n sgnNum = ~sgnNum;\r\n }\r\n return encodeNumber(sgnNum);\r\n}\r\n\r\nfunction encodeNumber(num :number) {\r\n let encoded = '';\r\n while (num >= 0x20) {\r\n encoded += String.fromCharCode((0x20 | (num & 0x1f)) + 63);\r\n num >>= 5;\r\n }\r\n encoded += String.fromCharCode(num + 63);\r\n return encoded;\r\n}\r\n\r\nexport default geometryPolyline\r\n\r\n\r\n// Пример использования:\r\n\r\n// geometryPolyline([\r\n// [102.0, 0.5],\r\n// [103.0, 1.0],\r\n// [104.0, 0.5],\r\n// [105.0, 0.0]\r\n// ])\r\n\r\n// Вернёт строку вида \"yzocFzynhVq}@n}@o}@nzD\".","function trimValue(value: string, cut: number): string {\r\n if (cut <= 0) return \"\";\r\n\r\n // только обрезаем пробелы в начале и конце\r\n const cleanValue = value.trim();\r\n\r\n if (cut >= cleanValue.length) return cleanValue;\r\n\r\n return cleanValue.slice(0, cut);\r\n}\r\n\r\nexport { trimValue };\r\n","import { routingApi } from \"./routing.api\";\r\nimport { geojsonPolyline } from \"@utils\";\r\nimport type { IRoute } from \"@sdk-types\";\r\n\r\nasync function Router(\r\n param: number[][],\r\n typeData: string,\r\n token: string,\r\n): Promise<IRoute[]> {\r\n try {\r\n const res = await routingApi(param, token);\r\n\r\n if (!res?.data) return res;\r\n\r\n const data: IRoute[] = res.data;\r\n\r\n return data.map((route) => {\r\n const updated = { ...route };\r\n\r\n if (updated.route?.routes?.length) {\r\n updated.route.routes = updated.route.routes.map((r) => ({\r\n ...r,\r\n geometry:\r\n typeData === \"geojson\" && typeof r.geometry === \"string\"\r\n ? geojsonPolyline(r.geometry)\r\n : r.geometry,\r\n }));\r\n }\r\n\r\n return updated as IRoute;\r\n });\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Router };\r\n","import { api } from \"../httpClient\";\nimport type {\n ISearchByLocationParam,\n ISearchParam,\n ISearchResponse,\n IReponse,\n} from \"@sdk-types\";\n\nconst searchPost = async (params: ISearchParam) => {\n try {\n const response = await api.post<IReponse<ISearchResponse[]>>(\n \"services/getAddress\",\n null,\n {\n params,\n },\n );\n return response.data;\n } catch (error) {\n console.error(\"Error while searching address:\", error);\n throw error;\n }\n};\n\nconst searchByLocationPost = async (params: ISearchByLocationParam) => {\n try {\n const response = await api.post<IReponse<ISearchResponse[]>>(\n \"services/getAddressByLocation\",\n null,\n {\n params,\n },\n );\n return response.data;\n } catch (error) {\n console.error(\"Error while searching address by location:\", error);\n throw error;\n }\n};\n\nexport { searchPost, searchByLocationPost };\n","import { searchByLocationPost, searchPost } from \"./search.api\";\r\nimport {\r\n IAdditionalParamType,\r\n ISearchByLocationParam,\r\n ISearchParam,\r\n ISearchResponse,\r\n} from \"@sdk-types\";\r\nimport { getApiKey } from \"../authKey\";\r\nimport { debounce } from \"@utils\";\r\n// import { checkCoordinates } from \"@utils\";\r\n// import { REGEX } from \"@config\";\r\n\r\nasync function getSearch(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearchResponse> {\r\n let searchData: ISearchParam = {\r\n text: param,\r\n token: token ? token : getApiKey(),\r\n ...additionalParam,\r\n };\r\n\r\n // if (param !== \"\") {\r\n // if (REGEX.test(param)) {\r\n // let coordinates = await checkCoordinates(param);\r\n // if (coordinates) {\r\n // searchData = {\r\n // lat: coordinates.lat ?? \"\",\r\n // lng: coordinates.lng ?? \"\",\r\n // };\r\n // }\r\n // } else {\r\n // searchData.text = param;\r\n // }\r\n // } else {\r\n // searchData.text = \"\";\r\n // }\r\n\r\n try {\r\n const res: any = await searchPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nconst debouncedFn = debounce(getSearch, 500);\r\n\r\nasync function Search(\r\n param: string,\r\n token: string,\r\n additionalParam?: IAdditionalParamType,\r\n): Promise<ISearchResponse> {\r\n return await debouncedFn(param, token, additionalParam);\r\n}\r\n\r\nasync function SearchByLocation(\r\n params: ISearchByLocationParam,\r\n): Promise<ISearchResponse> {\r\n const searchData: ISearchByLocationParam = {\r\n ...params,\r\n token: params.token ? params.token : getApiKey(),\r\n };\r\n\r\n try {\r\n const res: any = await searchByLocationPost(searchData);\r\n return res;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\nexport { Search, SearchByLocation };\r\n"],"mappings":"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","names":["CameraController","map","zoom","smooth","bearing","pitch","is3D","options","BASE_URL","LATLNGREGEX","LNGLATREGEX","DARK","LIGHT","VECTOR","buildStyleUrl","styleUrl","lang","separator","SVG_ROOT_PATTERN","SVG_MARKUP_PATTERN","updateSvgAttribute","svg","attribute","value","attributePattern","escapeSvgAttribute","createImageTag","url","normalizeInnerSvg","trimmedSvg","normalizedSvg","resolveInnerIcon","innerSvg","innerUrl","trimmedInnerSvg","trimmedInnerUrl","createDefaultMarkerSvg","color","innerIconOptions","MahalMapDefaultMarker","props","el","svg","createDefaultMarkerSvg","addMarker","maplibregl","map","marker","defaultStyles","DARK","LIGHT","logoColors","_MahalMap","options","lang","theme","buildStyleUrl","maplibreObject","maplibre","language","finalStyle","VECTOR","instance","instanceKey","CameraController","cb","container","callback","check","marker","center","zoom","addMarker","map","logoHost","logoShadow","style","color","MahalMap","services_exports","__export","Router","Search","SearchByLocation","clearKey","getApiKey","saveKey","axios","api","axios","BASE_URL","response","error","clearKey","apiKey","saveKey","param","api","clearKey","getApiKey","routingApi","param","token","points","e","api","getApiKey","err","utils_exports","__export","checkCoordinates","debounce","geojsonPolyline","geometryPolyline_default","trimValue","checkCoordinates","coordinates","lat","lng","LATLNGREGEX","match","LNGLATREGEX","debounce","fn","delay","timer","args","resolve","result","geojsonPolyline","encoded","points","index","len","lat","lng","b","shift","result","dlat","dlng","geometryPolyline","coordinates","encoded","prevLat","prevLng","i","lng","lat","latE5","lngE5","dLat","dLng","encodeSignedNumber","num","sgnNum","encodeNumber","geometryPolyline_default","trimValue","value","cut","cleanValue","Router","param","typeData","token","res","routingApi","route","updated","r","geojsonPolyline","error","searchPost","params","api","error","searchByLocationPost","getSearch","param","token","additionalParam","searchData","getApiKey","searchPost","error","debouncedFn","debounce","Search","SearchByLocation","params","searchByLocationPost"]}
|