{"version":3,"file":"_nuxt/BBhfrLix.js","sources":["../../../../store/delivery/delivery.constants.ts","../../../../store/delivery/delivery.utils.ts","../../../../utils/findOfDeliveryArea.ts","../../../../store/delivery/delivery.ts","../../../../store/delivery/delivery.types.ts","../../../../node_modules/vue-yandex-maps/dist/vue-yandex-maps-Yuc-0WOp.js","../../../../node_modules/vue-yandex-maps/dist/vue-yandex-maps.js","../../../../constants/delivery.ts","../../../../components/Services/Balloons/BalloonDelivery.vue","../../../../components/Services/Balloons/BalloonTable.vue","../../../../components/Services/Balloons/BalloonTitle.vue","../../../../components/Services/Balloons/BalloonMarker.vue","../../../../components/Services/YandexMap/YandexMapClickedMarker.vue","../../../../components/Services/YandexMap/YandexMapPoints.vue","../../../../components/Services/YandexMap/YandexMapPolygons.vue","../../../../components/AddressSystem/map/AddressSystemMapYandex.vue","../../../../components/Delivery/DeliveryMapError.vue","../../../../node_modules/vue3-google-map/dist/index.mjs","../../../../node_modules/@googlemaps/js-api-loader/dist/index.mjs","../../../../components/Services/GoogleMap/GoogleMapClickedMarker.vue","../../../../assets/images/closed-marker.svg","../../../../assets/images/opened-marker.svg","../../../../components/Services/GoogleMap/GoogleMapPoints.vue","../../../../components/Services/GoogleMap/GoogleMapPolygons.vue","../../../../components/Services/GoogleMap/GoogleMapComponent.vue","../../../../components/Services/YandexMap/YandexMapComponent.vue","../../../../components/Delivery/DeliveryMap.vue","../../../../utils/serializeToRequest.ts","../../../../services/autocomplete/dadataApi.ts","../../../../services/autocomplete/deliveryDadata.ts","../../../../node_modules/google-maps/lib/esm/loader.js","../../../../services/autocomplete/deliveryGoogle.ts","../../../../services/autocomplete/autocompleteService.ts","../../../../components/Delivery/DeliverySearchButtonPosition.vue"],"sourcesContent":["import type { DeliveryState } from '@/store/delivery/delivery.types'\n\nimport { StateGeoAddress } from '@/types/mapServices'\n\nexport const DEFAULT_DELIVERY: DeliveryState = {\n areas: [],\n points: [],\n page: {\n seo: {\n description: undefined,\n title: undefined,\n keywords: undefined,\n },\n title: null,\n pointFilters: [],\n breadcrumbs: [],\n noticeText: null,\n additives: [],\n attentionFactoid: {\n text: null,\n title: null,\n },\n },\n activeTags: [],\n coordinates: [0, 0],\n deliveryAddress: {\n address: {\n place: null,\n address: null,\n },\n details: null,\n state: StateGeoAddress.READY,\n coordinates: [0, 0],\n },\n isLoadingAreas: false,\n}\n","import type { LatLng, PointProperties } from '@/api/modules/delivery/types'\n\n/**\n * Рассчет дистанции по формуле [haversine]\n * @param from - координаты точки откуда\n * @param to - координаты точки докуда\n * @return - возращаем расстояние от точки, до точки\n */\nexport const getDistanceBetweenPoints = (from: LatLng, to: LatLng): number => {\n const R = 6371e3 // радиус\n const f1 = (from[0] * Math.PI) / 180 // - широта\n const f2 = (to[0] * Math.PI) / 180\n const deltaF = ((to[0] - from[0]) * Math.PI) / 180 // долгота\n const deltaLambda = ((to[1] - from[1]) * Math.PI) / 180\n\n const a =\n Math.sin(deltaF / 2) * Math.sin(deltaF / 2) +\n Math.cos(f1) *\n Math.cos(f2) *\n Math.sin(deltaLambda / 2) *\n Math.sin(deltaLambda / 2)\n\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n\n return R * c\n}\n\n/**\n * Фильтрация точек ресторана по тегам\n * @param points - точки ресторна\n * @param tags - фильтры ресторанов\n */\nexport const filterPointsByTags = (\n points: PointProperties[],\n tags: string[],\n): PointProperties[] => {\n if (points.length === 0) return points\n\n const filteredPoints = points.filter((point) => {\n if (!tags.length) return true\n\n const pointTags = point.tags.map(({ slug }) => slug)\n\n for (const tag of tags) {\n if (!pointTags.includes(tag)) return false\n }\n\n return true\n })\n\n return filteredPoints\n}\n","/* Types */\nimport { Position } from 'geojson'\nimport { AreaProperties, LatLng } from '@/api/modules/delivery/types'\n\n/**\n * Рассчет вхождения координат адреса в полигон\n * Теория формулы: https://caxapa.ru/751493.html?todo=full\n * @param polygon\n * @param point\n */\nconst checkAddressInDeliveryArea = (polygon: Position[], point: LatLng) => {\n const x = point[1]\n const y = point[0]\n\n let isInside = false\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i][0]\n const yi = polygon[i][1]\n const xj = polygon[j][0]\n const yj = polygon[j][1]\n\n const intersect =\n yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi\n\n if (intersect) isInside = !isInside\n }\n\n return isInside\n}\n\n/**\n * Поиск данных о полигоне путем вхождения координат адреса в полигоны зон доставки\n * @param polygons - зоны доставки\n * @param coords - координаты адреса\n */\nexport const findOfDeliveryArea = (\n polygons: AreaProperties[],\n coords: LatLng,\n) => {\n for (const polygon of polygons) {\n if (checkAddressInDeliveryArea(polygon.polygon[0], coords)) return polygon\n }\n}\n","import { defineStore } from 'pinia'\n\nimport { StoreId } from '@/store'\nimport { DEFAULT_DELIVERY } from '@/store/delivery/delivery.constants'\nimport type {\n AttentionFactoid,\n DeliveryState,\n} from '@/store/delivery/delivery.types'\nimport { PlacesSearch } from '@/store/delivery/delivery.types'\nimport { filterPointsByTags } from '@/store/delivery/delivery.utils'\nimport { getDistanceBetweenPoints } from '@/store/delivery/delivery.utils'\n\nimport { SuggestedOfAddress } from '@/api/modules/geo/geocode.types'\nimport { Success } from '@/api/results'\nimport type { Seo } from '@/types/main'\nimport { StateGeoAddress } from '@/types/mapServices'\n\nimport type {\n AreaProperties,\n AreasData,\n DeliveryPage,\n DragCoordinates,\n LatLng,\n PointFilter,\n PointProperties,\n Tag,\n} from '@/api/modules/delivery/types'\n\nexport const useDeliveryStore = defineStore({\n id: StoreId.DELIVERY,\n state: (): DeliveryState => DEFAULT_DELIVERY,\n actions: {\n async updateAreas(bounds: DragCoordinates) {\n this.changeLoadingAreas()\n\n // Получаем полигоны в области bounds карты\n await this.setAreasByCoords(bounds)\n\n const [lat, lon] = this.deliveryAddress.coordinates\n\n // Определяем детали зоны доставки адреса\n const polygon = findOfDeliveryArea(this.areas, [lat, lon])\n\n this.setDeliveryData(polygon)\n\n this.changeLoadingAreas()\n },\n setDeliveryData(polygon: AreaProperties | undefined) {\n this.deliveryAddress.details = polygon ? polygon.properties : null\n },\n async setAreasByCoords(coords: DragCoordinates) {\n const { $apiService } = useNuxtApp()\n\n const result = await $apiService.delivery.fetchAreasByCoordinates(coords)\n\n if (!(result instanceof Success)) return\n\n this.setAreasData(result.data)\n },\n\n setAreasData(areasData: AreasData | null) {\n if (!areasData) return\n\n this.points = areasData.points\n this.areas = areasData.areas\n },\n setActiveTags(tag: string) {\n if (this.activeTags.includes(tag)) {\n this.activeTags.splice(this.activeTags.indexOf(tag), 1)\n\n return\n }\n\n this.activeTags.push(tag)\n },\n\n setPoints(points: PointProperties[]) {\n this.points = points\n },\n\n setDeliverySearch(\n place: PlacesSearch,\n address?: SuggestedOfAddress | null,\n ) {\n Object.assign(this.deliveryAddress.address, { place, address })\n },\n\n setDeliveryCoordinates(coords: LatLng) {\n this.deliveryAddress.coordinates = coords\n },\n\n setStateAddress(state: StateGeoAddress) {\n this.deliveryAddress.state = state\n },\n\n setPage(page: DeliveryPage | null) {\n const attentionFactoid: AttentionFactoid = {\n text: page?.factoid_text || '',\n title: page?.factoid_title || '',\n }\n\n this.page.attentionFactoid = attentionFactoid\n\n const seo: Seo = {\n title: page?.title,\n keywords: page?.seo.seo_keywords,\n description: page?.seo.seo_description,\n }\n\n this.page.seo = seo\n\n const defaultEnabledTags = page?.point_filters\n .filter((tag: PointFilter) => tag.enabled)\n .map((tag: PointFilter) => tag.slug)\n\n this.activeTags = defaultEnabledTags || this.activeTags\n\n this.page.additives = page?.additives || this.page?.additives\n\n this.page.breadcrumbs = page?.breadcrumbs || this.page.breadcrumbs\n\n this.page.noticeText = page?.notice_text || this.page.noticeText\n\n this.page.pointFilters = page?.point_filters || this.page.pointFilters\n\n this.page.title = page?.page_title || this.page.title\n\n this.coordinates = page?.coordinates || this.coordinates\n },\n\n setPointsDistance(coordinates: LatLng) {\n this.filteredPoints.forEach((point) => {\n const distance = getDistanceBetweenPoints(\n point.coordinates,\n coordinates,\n )\n\n this.setDistanceForPointById({\n distance,\n id: point.id,\n })\n })\n },\n\n setDistanceForPointById({\n id,\n distance,\n }: {\n id: string | number | undefined\n distance: number\n }) {\n if (!this.points) {\n return\n }\n\n const index = this.points.findIndex((feature) => feature.id === id)\n\n this.points[index].distance = distance\n },\n\n changeLoadingAreas() {\n this.isLoadingAreas = !this.isLoadingAreas\n },\n },\n getters: {\n pickupPoints: ({ points }) => filterPointsByTags(points, ['pickup']),\n\n cafePoints: ({ points }) => filterPointsByTags(points, ['cafe']),\n\n filteredPoints: ({ points, activeTags }) =>\n filterPointsByTags(points, activeTags),\n\n filteredTags: ({ page, points, activeTags }) => {\n if (!page) return []\n\n const filteredPoints = filterPointsByTags(points, activeTags) || []\n\n const tagsFromPoints: Tag[] = filteredPoints.flatMap((item) => item.tags)\n\n const uniqTagsFromPoints: string[] = []\n\n /* Собираем названия тэгов */\n for (const tag of tagsFromPoints) {\n /* Добавляем только уникальные тэги */\n if (!uniqTagsFromPoints.includes(tag.slug)) {\n uniqTagsFromPoints.push(tag.slug)\n }\n }\n\n const tagsFromDelivery = page.pointFilters.filter((f) => f.show)\n\n const filteredTagsList: typeof tagsFromDelivery = []\n\n for (const tagFromDelivery of tagsFromDelivery) {\n if (uniqTagsFromPoints.includes(tagFromDelivery.slug)) {\n filteredTagsList.push(tagFromDelivery)\n }\n }\n\n return filteredTagsList\n },\n\n getPointBySlug:\n ({ points }) =>\n (pointSlug: string): PointProperties | null => {\n if (!points) return null\n\n return points.find(({ slug }) => slug === pointSlug) || null\n },\n\n attentionFactoid: ({ page }) => {\n if (page.attentionFactoid.text || page.attentionFactoid.title)\n return page.attentionFactoid\n\n return {\n title: '',\n text: '',\n }\n },\n },\n})\n","import type { Breadcrumb, Seo } from '@/types/main'\nimport { StateGeoAddress } from '@/types/mapServices'\n\nimport type {\n Additives,\n AreaProperties,\n LatLng,\n PointFilter,\n PointProperties,\n PolygonProperties,\n} from '@/api/modules/delivery/types'\nimport type { SuggestedOfAddress } from '@/api/modules/geo/geocode.types'\n\nexport interface DeliveryDataAddress {\n address: DeliveryAddress\n coordinates: LatLng\n state: StateGeoAddress\n details: PolygonProperties | null\n}\n\nexport interface DeliveryAddress {\n place: PlacesSearch | null\n address: SuggestedOfAddress | null\n}\n\nexport enum PlacesSearch {\n AUTOCOMPLETE = 'autocomplete',\n MAP = 'map',\n DEFAULT = 'default',\n}\n\nexport const enum BalloonType {\n AddressSystem = 'address-system',\n Delivery = 'delivery',\n}\n\nexport type BalloonTableItem = {\n id: string\n visible: boolean\n label: string\n value: string\n}\n\nexport interface AttentionFactoid {\n title: string | null\n text: string | null\n}\n\nexport interface Page {\n seo: Seo\n title: string | null\n attentionFactoid: AttentionFactoid\n noticeText: string | null\n additives: Additives[]\n pointFilters: PointFilter[]\n breadcrumbs: Breadcrumb[]\n}\n\nexport interface DeliveryState {\n areas: AreaProperties[]\n points: PointProperties[]\n page: Page\n activeTags: string[]\n coordinates: [lat: number, lng: number]\n deliveryAddress: DeliveryDataAddress\n isLoadingAreas: boolean\n}\n\nexport enum DeliveryInfoType {\n 'PAYMENT' = 'PAYMENT',\n 'TIME' = 'TIME',\n 'ATTENTION' = 'ATTENTION',\n}\n","import { ref, computed, version, h, toRaw, unref, watch } from \"vue\";\nvar VueYandexMaps;\n((VueYandexMaps2) => {\n VueYandexMaps2.settings = safeRef({\n apikey: \"\"\n });\n VueYandexMaps2.isReadyToInit = safeComputed(() => !!VueYandexMaps2.settings.value.apikey);\n VueYandexMaps2.ymaps = () => ymaps3;\n class YandexMapException2 extends Error {\n constructor(message) {\n super(message);\n this.message = message;\n this.name = \"YandexMapException\";\n }\n }\n VueYandexMaps2.YandexMapException = YandexMapException2;\n VueYandexMaps2.loadStatus = safeRef(\"pending\");\n VueYandexMaps2.isLoaded = safeComputed(() => VueYandexMaps2.loadStatus.value === \"loaded\" || VueYandexMaps2.loadStatus.value === \"error\");\n VueYandexMaps2.loadError = safeRef(null);\n})(VueYandexMaps || (VueYandexMaps = {}));\nfunction safeRef(value) {\n if (typeof window === \"undefined\") {\n return {\n // @ts-expect-error SSR workaround\n value,\n __v_isRef: true\n };\n }\n return ref(value);\n}\nfunction safeComputed(getter, debugOptions) {\n if (typeof window === \"undefined\") {\n return {\n get value() {\n return getter();\n },\n // @ts-expect-error SSR workaround\n __v_isRef: true\n };\n }\n return computed(getter, debugOptions);\n}\nfunction sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\nfunction copy(target) {\n target = toRaw(unref(target));\n if (Array.isArray(target)) return target.map((i) => copy(i));\n if (!target || typeof target !== \"object\" || (target == null ? void 0 : target.constructor) !== void 0 && (target == null ? void 0 : target.constructor) !== Object) return target;\n return Object.keys(target).reduce((carry, key) => {\n const val = target[key];\n carry[key] = copy(val);\n return carry;\n }, {});\n}\nfunction isDev() {\n var _a;\n return typeof process !== \"undefined\" && (((_a = process.env) == null ? void 0 : _a.NODE_ENV) === \"development\" || process.dev);\n}\nfunction getException({\n text,\n isInternal,\n warn\n}) {\n if (warn) {\n text = `Warning: ${text}`;\n }\n if (isInternal) {\n text += \" This is likely Vue Yandex Maps internal bug.\";\n if (isDev()) {\n text += \" You can report this bug here: https://github.com/yandex-maps-unofficial/vue-yandex-maps/issues/new/choose\";\n }\n }\n return new VueYandexMaps.YandexMapException(text);\n}\nfunction throwException(settings) {\n const exception = getException(settings);\n if (settings.warn) {\n console.warn(exception);\n } else {\n throw exception;\n }\n}\nfunction excludeKeys(item, ignoreKeys) {\n for (const [key, value] of Object.entries(item)) {\n if (ignoreKeys.includes(key)) delete item[key];\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n excludeKeys(value, ignoreKeys);\n if (!Object.keys(value).length) delete item[key];\n }\n }\n}\nfunction isVue2() {\n return version.startsWith(\"2\");\n}\nlet fragment;\nasync function setFragment() {\n if (fragment !== void 0) return;\n if (isVue2()) {\n fragment = null;\n return;\n }\n fragment = (await import(\"vue\")).Fragment;\n}\nfunction hF(children, props) {\n if (isVue2()) {\n return h(\"div\", props, children);\n }\n return h(fragment, props, children);\n}\nfunction hVue2(children) {\n if (isVue2() && (children == null ? void 0 : children.length) > 1) {\n return h(\"div\", children);\n }\n return children;\n}\nfunction getAttrsForVueVersion(attrs) {\n if (isVue2()) {\n return { attrs };\n }\n return attrs;\n}\nconst YandexMapException = VueYandexMaps.YandexMapException;\nconst allowedOptionsKeys = {\n apikey: true,\n servicesApikeys: true,\n lang: true,\n initializeOn: true,\n importModules: true,\n version: true,\n strictMode: true,\n domain: true,\n mapsRenderWaitDuration: true,\n mapsScriptWaitDuration: true\n};\nfunction initYmaps() {\n return new Promise((res, rej) => {\n if (typeof ymaps3 !== \"undefined\") {\n if (VueYandexMaps.loadStatus.value !== \"loaded\") VueYandexMaps.loadStatus.value = \"loaded\";\n return res();\n }\n if (typeof window === \"undefined\") return rej(new YandexMapException(\"You must call initYmaps on Client Side only\"));\n if (VueYandexMaps.loadStatus.value === \"loading\") {\n const watcher = watch(VueYandexMaps.loadStatus, (val) => {\n if (!VueYandexMaps.isLoaded.value) return;\n watcher();\n if (val === \"error\") rej(VueYandexMaps.loadError);\n if (val === \"loaded\") res();\n }, {\n immediate: true\n });\n return;\n }\n VueYandexMaps.loadStatus.value = \"loading\";\n const settings = VueYandexMaps.settings.value;\n if (!settings.apikey) {\n throwException({\n text: \"apikey was not set for Yandex Maps initialization. Ensure you have attached needed plugins or called createYmapsOptions with apikey. If you need delayed init, please use VueYandexMaps.isReadyToInit computed as v-if.\"\n });\n }\n const yandexMapScript = document.createElement(\"SCRIPT\");\n const url = new URL(`${settings.domain}/${settings.version}/`);\n url.searchParams.set(\"lang\", settings.lang || \"ru_RU\");\n url.searchParams.set(\"apikey\", settings.apikey);\n yandexMapScript.setAttribute(\"src\", url.toString());\n yandexMapScript.setAttribute(\"async\", \"\");\n yandexMapScript.setAttribute(\"defer\", \"\");\n yandexMapScript.setAttribute(\"type\", \"text/javascript\");\n yandexMapScript.setAttribute(\"id\", \"vue-yandex-maps\");\n document.head.appendChild(yandexMapScript);\n yandexMapScript.onload = async () => {\n try {\n await VueYandexMaps.ymaps().ready;\n if (settings.servicesApikeys && Object.keys(settings.servicesApikeys).length > 0) {\n VueYandexMaps.ymaps().getDefaultConfig().setApikeys(settings.servicesApikeys);\n }\n if (typeof settings.strictMode === \"boolean\") VueYandexMaps.ymaps().strictMode = settings.strictMode;\n if (settings.importModules) {\n await Promise.all(\n settings.importModules.map(\n (module) => VueYandexMaps.ymaps().import(module)\n )\n );\n }\n VueYandexMaps.loadStatus.value = \"loaded\";\n res();\n } catch (e) {\n VueYandexMaps.loadStatus.value = \"error\";\n VueYandexMaps.loadError.value = e;\n rej(e);\n }\n };\n yandexMapScript.onerror = (e) => {\n VueYandexMaps.loadError.value = e;\n rej(e);\n };\n });\n}\nfunction createYmapsOptions(options, ignoreNoCurrentInstance = false) {\n if (VueYandexMaps.isReadyToInit.value) return VueYandexMaps.settings.value;\n const optionsShallowClone = {\n lang: \"ru_RU\",\n initializeOn: \"onComponentMount\",\n importModules: [],\n version: \"v3\",\n strictMode: false,\n domain: \"https://api-maps.yandex.ru\",\n mapsRenderWaitDuration: true,\n mapsScriptWaitDuration: true,\n servicesApikeys: null,\n ...options\n };\n if (!optionsShallowClone.apikey) {\n throwException({\n text: \"You must specify apikey for createYmapsOptions\"\n });\n }\n const notAllowedKeys = Object.keys(optionsShallowClone).filter((key) => !(key in allowedOptionsKeys));\n if (notAllowedKeys.length) {\n throwException({\n text: `You have passed unknown keys to createYmapsOptions: ${notAllowedKeys.join(\", \")}. Only ${Object.keys(allowedOptionsKeys).join(\", \")} are allowed.`\n });\n }\n if (typeof window === \"undefined\") return optionsShallowClone;\n VueYandexMaps.settings.value = optionsShallowClone;\n return optionsShallowClone;\n}\nexport {\n VueYandexMaps as V,\n copy as a,\n hF as b,\n createYmapsOptions as c,\n getAttrsForVueVersion as d,\n excludeKeys as e,\n sleep as f,\n getException as g,\n hVue2 as h,\n initYmaps as i,\n isVue2 as j,\n setFragment as s,\n throwException as t\n};\n","import { t as throwException, g as getException, c as createYmapsOptions, i as initYmaps, V as VueYandexMaps, s as setFragment, a as copy, e as excludeKeys, h as hVue2, b as hF, d as getAttrsForVueVersion, f as sleep, j as isVue2 } from \"./vue-yandex-maps-Yuc-0WOp.js\";\nimport { getCurrentInstance, inject, isRef, watch, defineComponent, shallowRef, ref, provide, computed, onMounted, onBeforeUnmount, nextTick, h, onUpdated } from \"vue\";\nimport './vue-yandex-maps.css';function applyModifier(coords, modifier) {\n const result = {\n x: 0,\n y: 0\n };\n result.x = coords.x * modifier;\n result.y = coords.y * modifier;\n return result;\n}\nfunction applyFunctionModifier(coords, functionModifier) {\n const result = {\n x: 0,\n y: 0\n };\n result.x = functionModifier(coords.x, 1);\n result.y = functionModifier(coords.y, 2);\n return result;\n}\nfunction worldToPixels(coords, modifier) {\n const i = 2 ** modifier / 2 * 256;\n return applyModifier({\n x: coords.x + 1,\n y: 1 - coords.y\n }, i);\n}\nfunction convertWorldCoordinates(projection, coordinates, modifier) {\n const worldCoordinates = projection.toWorldCoordinates(coordinates);\n return worldToPixels(worldCoordinates, modifier);\n}\nfunction pixelsToWorld(coords, modifier) {\n const i = 2 ** modifier / 2 * 256;\n return {\n x: coords.x / i - 1,\n y: 1 - coords.y / i\n };\n}\nfunction findNeededValue(t, e, i) {\n return Math.max(Math.min(t, i), e);\n}\nfunction worldCoordsFromModifier(projection, coords, modifier) {\n const resultCoords = applyFunctionModifier(pixelsToWorld(coords, modifier), (value) => findNeededValue(value, -1, 1 - 1e-15));\n return projection.fromWorldCoordinates(resultCoords);\n}\nfunction convertBounds(projection, bounds, modifier) {\n const topLeft = convertWorldCoordinates(projection, bounds[0], modifier);\n const bottomRight = convertWorldCoordinates(projection, bounds[1], modifier);\n const modified = 2 ** modifier * 256;\n const updatedBounds = [[topLeft.x, topLeft.y], [bottomRight.x, bottomRight.y]];\n if (topLeft.x > bottomRight.x) {\n updatedBounds[0][0] = topLeft.x;\n updatedBounds[1][0] = bottomRight.x + modified;\n }\n if (topLeft.y > bottomRight.y) {\n updatedBounds[0][1] = bottomRight.y;\n updatedBounds[1][1] = topLeft.y;\n }\n return updatedBounds;\n}\nfunction applyMarginToCoords(coords, margin) {\n return {\n x: Math.max(coords.x - (margin ? margin[1] + margin[3] : 0), 1),\n y: Math.max(coords.y - (margin ? margin[0] + margin[2] : 0), 1)\n };\n}\nfunction findZoom(projection, bounds, coords, isSnap, zoomRange) {\n const [[topLeftFirst, topLeftSecond], [bottomRightFirst, bottomRightSecond]] = convertBounds(projection, bounds, 0);\n const firstCalc = Math.max(Math.abs(bottomRightFirst - topLeftFirst), 1e-10);\n const secondCalc = Math.max(Math.abs(bottomRightSecond - topLeftSecond), 1e-10);\n const zoom = findNeededValue(Math.min(Math.log2(coords.x / firstCalc), Math.log2(coords.y / secondCalc)), zoomRange.min, zoomRange.max);\n return isSnap ? Math.floor(zoom + 1e-6) : zoom;\n}\nfunction findCenter(projection, bounds, zoom) {\n const [[topLeftFirst, topLeftSecond], [bottomRightFirst, bottomRightSecond]] = convertBounds(projection, bounds, zoom);\n return worldCoordsFromModifier(projection, {\n x: (topLeftFirst + bottomRightFirst) / 2,\n y: (topLeftSecond + bottomRightSecond) / 2\n }, zoom);\n}\nasync function getLocationFromBounds({\n bounds,\n map,\n roundZoom,\n comfortZoomLevel\n}) {\n var _a;\n const ctxMap = Object.keys(map).find((x) => x.endsWith(\"CtxMap\"));\n if (!ctxMap) {\n throwException({\n text: \"CtxMap was not found in useYMapsGetCenterAndZoomFromBounds\",\n isInternal: true\n });\n }\n const ctx = map[ctxMap];\n const ctxItem = await new Promise((resolve, reject) => {\n ctx.forEach((item, { name }) => {\n if (name !== \"map\") return;\n resolve(item);\n });\n reject(getException({\n text: \"Map item was not found in useYMapsGetCenterAndZoomFromBounds\",\n isInternal: true\n }));\n });\n const ctxItemMapKey = Object.keys(ctxItem).find((x) => x.endsWith(\"_context\"));\n if (!ctxItemMapKey) {\n throwException({\n text: \"CtxMapKey was not found in useYMapsGetCenterAndZoomFromBounds\",\n isInternal: true\n });\n }\n const ctxItemMap = ctxItem[ctxItemMapKey].map;\n const boundsFunc = ctxItemMap.setBounds.toString();\n const funcKey = (_a = boundsFunc.split(\"const{center:e,zoom:i}=\")[1]) == null ? void 0 : _a.split(\"(\")[0];\n if (!funcKey) {\n throwException({\n text: \"funcKey was not found in useYMapsGetCenterAndZoomFromBounds\",\n isInternal: true\n });\n }\n const projection = ctxItemMap.projection;\n const size = ctxItemMap.size;\n const margin = ctxItemMap.margin;\n const isSnap = ctxItemMap.effectiveZoomRounding === \"snap\";\n const zoomRange = ctxItemMap.zoomRange;\n let zoom = findZoom(projection, bounds, applyMarginToCoords(size, margin), isSnap, zoomRange);\n const center = findCenter(projection, bounds, zoom);\n if (roundZoom || comfortZoomLevel) {\n const originalZoom = zoom;\n let roundedZoom = Math[typeof roundZoom === \"string\" ? roundZoom : \"floor\"](zoom);\n if (roundZoom) zoom = roundedZoom;\n if (comfortZoomLevel) {\n const userSettings = typeof comfortZoomLevel === \"object\" ? comfortZoomLevel : {};\n if (userSettings.roundStrategy) roundedZoom = Math[userSettings.roundStrategy](originalZoom);\n const diff2 = originalZoom - roundedZoom;\n const settings = {\n diff: 0.5,\n correction: 1,\n ...userSettings\n };\n if (diff2 < settings.diff) {\n zoom -= settings.correction;\n }\n }\n }\n return {\n zoom,\n center\n };\n}\nconst useYMapsLocationFromBounds = getLocationFromBounds;\nfunction getCenterFromCoords(coordinates) {\n if (coordinates.length === 1) return coordinates[0];\n if (!coordinates.length) {\n throwException({\n text: \"Invalid parameters in getCenterFromCoords: you must pass at least one LngLat\"\n });\n }\n const sum = coordinates.reduce(([accLng, accLat], [lng, lat]) => [\n accLng + lng,\n accLat + lat\n ], [0, 0]);\n return [\n sum[0] / coordinates.length,\n sum[1] / coordinates.length\n ];\n}\nfunction getBoundsFromCoords(coordinates) {\n if (coordinates.length < 2) {\n throwException({\n text: \"Invalid parameters in getBoundsFromCoords: you must pass at least two LngLat\"\n });\n }\n const {\n minLongitude,\n minLatitude,\n maxLongitude,\n maxLatitude\n } = coordinates.reduce(\n (acc, [longitude, latitude]) => ({\n minLongitude: Math.min(acc.minLongitude, longitude),\n minLatitude: Math.min(acc.minLatitude, latitude),\n maxLongitude: Math.max(acc.maxLongitude, longitude),\n maxLatitude: Math.max(acc.maxLatitude, latitude)\n }),\n {\n minLongitude: Infinity,\n minLatitude: Infinity,\n maxLongitude: -Infinity,\n maxLatitude: -Infinity\n }\n );\n return [[minLongitude, minLatitude], [maxLongitude, maxLatitude]];\n}\nfunction createYmaps(settings) {\n return {\n install(app) {\n createYmapsOptions(settings);\n if (settings.initializeOn === \"onPluginInit\") {\n initYmaps().catch(console.error);\n }\n }\n };\n}\nfunction createYmapsVue2(settings) {\n return {\n install(Vue) {\n createYmapsOptions(settings);\n if (settings.initializeOn === \"onPluginInit\") {\n initYmaps().catch(console.error);\n }\n }\n };\n}\nconst isDate = (d) => d instanceof Date;\nconst isEmpty = (o) => Object.keys(o).length === 0;\nconst isObject = (o) => o != null && typeof o === \"object\";\nconst hasOwnProperty = (o, ...args) => Object.prototype.hasOwnProperty.call(o, ...args);\nconst isEmptyObject = (o) => isObject(o) && isEmpty(o);\nconst makeObjectWithoutPrototype = () => /* @__PURE__ */ Object.create(null);\nconst diff = (lhs, rhs) => {\n if (lhs === rhs) return {};\n if (!isObject(lhs) || !isObject(rhs)) return rhs;\n const deletedValues = Object.keys(lhs).reduce((acc, key) => {\n if (!hasOwnProperty(rhs, key)) {\n acc[key] = void 0;\n }\n return acc;\n }, makeObjectWithoutPrototype());\n if (isDate(lhs) || isDate(rhs)) {\n if (lhs.valueOf() == rhs.valueOf()) return {};\n return rhs;\n }\n return Object.keys(rhs).reduce((acc, key) => {\n if (!hasOwnProperty(lhs, key)) {\n acc[key] = rhs[key];\n return acc;\n }\n const difference = diff(lhs[key], rhs[key]);\n if (isEmptyObject(difference) && !isDate(difference) && (isEmptyObject(lhs[key]) || !isEmptyObject(rhs[key])))\n return acc;\n acc[key] = difference;\n return acc;\n }, deletedValues);\n};\nfunction injectMap() {\n if (!getCurrentInstance()) {\n throwException({\n text: \"injectMap must be only called on runtime.\",\n isInternal: true\n });\n }\n const map = inject(\"map\");\n if (!map || !isRef(map)) {\n throwException({\n text: \"Was not able to inject valid map in injectMap.\",\n isInternal: true\n });\n }\n return map;\n}\nfunction injectLayers() {\n if (!getCurrentInstance()) {\n throwException({\n text: \"injectLayers must be only called on runtime.\",\n isInternal: true\n });\n }\n const layers = inject(\"layers\");\n if (!layers || !isRef(layers)) {\n throwException({\n text: \"Was not able to inject valid layers in injectLayers.\",\n isInternal: true\n });\n }\n return layers;\n}\nasync function waitTillYmapInit({\n timeoutCallback,\n waitDuration\n} = {}) {\n if (typeof window === \"undefined\") {\n throwException({\n text: \"waitTillYmapInit cannot be called on SSR.\",\n isInternal: true\n });\n }\n if (typeof ymaps3 !== \"undefined\") return;\n return new Promise((resolve, reject) => {\n if (typeof ymaps3 === \"undefined\") {\n let timeout;\n waitDuration = typeof waitDuration !== \"undefined\" ? waitDuration : VueYandexMaps.settings.value.mapsScriptWaitDuration;\n if (waitDuration !== false) {\n timeout = setTimeout(() => {\n timeoutCallback == null ? void 0 : timeoutCallback(timeout, true);\n reject(new VueYandexMaps.YandexMapException(\"Was not able to wait for map initialization in waitTillYmapInit. Ensure that map was initialized. You can change this behavior by using mapsScriptWaitDuration.\"));\n }, typeof waitDuration === \"number\" ? waitDuration : 5e3);\n timeoutCallback == null ? void 0 : timeoutCallback(timeout, false);\n }\n watch(VueYandexMaps.isLoaded, () => {\n if (timeout) {\n clearTimeout(timeout);\n timeoutCallback == null ? void 0 : timeoutCallback(timeout, true);\n }\n if (VueYandexMaps.loadStatus.value === \"loaded\") {\n resolve();\n } else {\n reject(VueYandexMaps.loadError);\n }\n }, {\n immediate: true\n });\n } else {\n resolve();\n }\n });\n}\nasync function waitTillMapInit({\n map: _map,\n timeoutCallback,\n waitDuration\n} = {}) {\n if (!_map && !getCurrentInstance()) {\n throwException({\n text: \"onMapInit must be only called on runtime.\",\n isInternal: true\n });\n }\n if (typeof window === \"undefined\") {\n throwException({\n text: \"waitTillMapInit cannot be called on SSR.\",\n isInternal: true\n });\n }\n const map = _map || injectMap();\n if (map.value) return;\n return new Promise((resolve, reject) => {\n let timeout;\n waitDuration = typeof waitDuration !== \"undefined\" ? waitDuration : VueYandexMaps.settings.value.mapsRenderWaitDuration;\n if (waitDuration !== false) {\n timeout = setTimeout(() => {\n timeoutCallback == null ? void 0 : timeoutCallback(timeout, true);\n reject(new VueYandexMaps.YandexMapException(\"Was not able to wait for map initialization in waitTillMapInit. You can change this behavior by using mapsRenderWaitDuration.\"));\n }, typeof waitDuration === \"number\" ? waitDuration : 5e3);\n timeoutCallback == null ? void 0 : timeoutCallback(timeout, false);\n }\n let watcher;\n watcher = watch(map, () => {\n if (map.value) {\n watcher == null ? void 0 : watcher();\n if (timeout) {\n clearTimeout(timeout);\n timeoutCallback == null ? void 0 : timeoutCallback(timeout, true);\n }\n resolve();\n }\n }, {\n immediate: true\n });\n });\n}\nfunction deleteMapChild({\n children,\n isMercator,\n root\n}) {\n var _a;\n if (!root) {\n throwException({\n text: \"Failed to execute deleteMapChild due to destroyed root\",\n isInternal: true\n });\n }\n if (children && !isMercator) {\n if (typeof (root == null ? void 0 : root.value) === \"object\" && Array.isArray(root.value)) {\n root.value = root.value.filter((x) => x !== children);\n } else {\n (_a = root.value) == null ? void 0 : _a.removeChild(children);\n }\n } else if (root.value && children && isMercator && \"update\" in root.value) {\n root.value.update({\n projection: void 0\n });\n }\n}\nconst _sfc_main$p = defineComponent({\n name: \"YandexMap\",\n props: {\n modelValue: {\n type: Object,\n default: null\n },\n value: {\n type: Object,\n default: null\n },\n tag: {\n type: String,\n default: \"div\"\n },\n width: {\n type: String,\n default: \"100%\"\n },\n height: {\n type: String,\n default: \"100%\"\n },\n // z-index for Map Container. Without this, elements of the map will be displayed under your site's elements due to high z-index inside of them\n zIndex: {\n type: Number,\n default: 0\n },\n /**\n * @description Settings for cart initialization.,\n *\n * You can modify this object or use map methods, such as setLocation/setBehaviors e.t.c.\n * @see https://yandex.ru/dev/maps/jsapi/doc/3.0/dg/concepts/map.html#map-parms\n * @see https://yandex.com/dev/maps/jsapi/doc/3.0/dg/concepts/map.html#map-parms\n */\n settings: {\n type: Object,\n required: true\n },\n /**\n * @description Makes settings readonly. Enable this if reactivity causes problems\n */\n readonlySettings: {\n type: Boolean,\n default: false\n },\n /**\n * @description Always inserts actual user center or bounds (based on your input) on every location change\n * @note This prop will cause user location change on every settings update (if user did move since last time). Use it with caution.\n */\n realSettingsLocation: {\n type: Boolean,\n default: false\n },\n /**\n * @description You can also add layers through <yandex-*> components\n *\n * Modifying this object after mount will cause no effect.\n *\n * Instead, please use map methods, such as addChild.\n * @see https://yandex.ru/dev/maps/jsapi/doc/3.0/dg/concepts/map.html#layers\n * @see https://yandex.com/dev/maps/jsapi/doc/3.0/dg/concepts/map.html#layers\n */\n layers: {\n type: Array,\n default: () => []\n },\n /**\n * @description Adds cursor: grab/grabbing to ymaps scheme layer\n */\n cursorGrab: {\n type: Boolean,\n default: false\n }\n },\n /**\n * @description Other events are NOT available. You can listen to events via layers prop, addChildren prop or by adding <ymap-listener> as children.\n * @see https://yandex.ru/dev/maps/jsapi/doc/3.0/dg/concepts/events.html\n * @see https://yandex.com/dev/maps/jsapi/doc/3.0/dg/concepts/events.html\n */\n emits: {\n \"input\"(map) {\n return !map || typeof ymaps3 === \"undefined\" || map instanceof ymaps3.YMap;\n },\n \"update:modelValue\"(map) {\n return !map || typeof ymaps3 === \"undefined\" || map instanceof ymaps3.YMap;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const map = shallowRef(null);\n const mapRef = shallowRef(null);\n const layers = shallowRef([]);\n const projection = shallowRef(null);\n const ymapContainer = shallowRef(null);\n const mounted = shallowRef(false);\n const needsToHold = ref(0);\n provide(\"map\", map);\n provide(\"layers\", layers);\n provide(\"projection\", projection);\n provide(\"needsToHold\", needsToHold);\n emit(\"input\", null);\n emit(\"update:modelValue\", null);\n const getSettings = computed(() => ({\n ...props.settings,\n projection: void 0\n }));\n const init = async () => {\n if (!props.settings.location) {\n throwException({\n text: \"You must specify location in YandexMap settings\"\n });\n }\n if (map.value) map.value.destroy();\n const container = ymapContainer.value;\n if (!container) return;\n const settings = getSettings.value;\n if (projection.value) settings.projection = projection.value;\n map.value = new ymaps3.YMap(container, settings, [\n ...layers.value,\n ...props.layers\n ]);\n emit(\"input\", map.value);\n emit(\"update:modelValue\", map.value);\n };\n onMounted(async () => {\n let listener;\n let watcher;\n let cursorGrabTimeout = null;\n onBeforeUnmount(() => {\n if (cursorGrabTimeout) clearTimeout(cursorGrabTimeout);\n });\n const setupWatcher = () => {\n watcher == null ? void 0 : watcher();\n let settings = copy(getSettings);\n watcher = watch(getSettings, (val) => {\n var _a;\n if (!map.value) return;\n const clonedSettings = copy(val);\n if (props.realSettingsLocation && clonedSettings.location) {\n if (\"center\" in clonedSettings.location && \"center\" in settings.location) {\n settings.location.center = map.value.center;\n } else if (\"bounds\" in clonedSettings.location && \"bounds\" in settings.location) {\n settings.location.bounds = map.value.bounds;\n }\n if (\"zoom\" in clonedSettings.location && \"zoom\" in settings.location) settings.location.zoom = map.value.zoom;\n }\n const settingsDiff = Object.keys(diff(settings, clonedSettings));\n if (settingsDiff.length === 0) return;\n const updatedSettings = { ...clonedSettings };\n for (const key in updatedSettings) {\n if (!settingsDiff.includes(key)) delete updatedSettings[key];\n }\n settings = clonedSettings;\n (_a = map.value) == null ? void 0 : _a.update(updatedSettings);\n }, {\n deep: true\n });\n };\n if (!props.readonlySettings) {\n setupWatcher();\n }\n watch(() => props.readonlySettings, (val) => {\n if (!val) {\n watcher == null ? void 0 : watcher();\n } else {\n setupWatcher();\n }\n });\n watch(() => props.cursorGrab, async (val) => {\n await waitTillMapInit({\n map,\n timeoutCallback: (_timeout, isDelete) => {\n if (isDelete) {\n cursorGrabTimeout = null;\n } else {\n cursorGrabTimeout = _timeout;\n }\n }\n }).catch(() => {\n });\n if (!map.value) return;\n if (val) {\n listener = new ymaps3.YMapListener({\n onActionStart: (e) => {\n var _a;\n if (e.type === \"drag\" && props.cursorGrab) (_a = mapRef.value) == null ? void 0 : _a.classList.add(\"__ymap--grabbing\");\n },\n onActionEnd: (e) => {\n var _a;\n if (e.type === \"drag\") (_a = mapRef.value) == null ? void 0 : _a.classList.remove(\"__ymap--grabbing\");\n }\n });\n map.value.addChild(listener);\n } else if (listener) map.value.removeChild(listener);\n }, { immediate: true });\n await setFragment();\n if (!VueYandexMaps.isLoaded.value) {\n if (VueYandexMaps.settings.value.initializeOn === \"onComponentMount\") {\n try {\n await initYmaps();\n } catch (e) {\n console.error(\"An error occured while initializing Yandex Map with onComponentMount setting\");\n console.error(e);\n return;\n }\n } else if (VueYandexMaps.loadStatus.value === \"loading\" || VueYandexMaps.settings.value.initializeOn === \"onPluginInit\") {\n if (VueYandexMaps.settings.value.initializeOn === \"onPluginInit\" && VueYandexMaps.loadStatus.value !== \"loading\") await nextTick();\n await initYmaps();\n }\n if (!VueYandexMaps.isLoaded.value) {\n throwException({\n text: \"You have set up <yandex-map> component without initializing Yandex maps. Please check initializeOn setting or call initYmaps manually before registering this component.\"\n });\n }\n }\n mounted.value = true;\n await nextTick();\n if (needsToHold.value) {\n await new Promise((resolve) => watch(needsToHold, () => {\n if (!needsToHold.value) resolve();\n }, {\n immediate: true\n }));\n }\n await init();\n });\n onBeforeUnmount(() => {\n map.value = null;\n emit(\"input\", map.value);\n emit(\"update:modelValue\", map.value);\n });\n return () => {\n var _a;\n const mapNodeProps = {\n class: [\n \"__ymap\",\n {\n \"__ymap--grab\": props.cursorGrab\n }\n ],\n ref: mapRef,\n style: {\n width: props.width,\n height: props.height,\n \"z-index\": props.zIndex.toString()\n }\n };\n const containerNode = h(\"div\", {\n class: \"__ymap_container\",\n ref: ymapContainer\n });\n const slotsNodeProps = {\n class: \"__ymap_slots\",\n style: { display: \"none\" }\n };\n if (!mounted.value) return h(props.tag, mapNodeProps, [containerNode, h(\"div\", slotsNodeProps)]);\n return h(props.tag, mapNodeProps, [\n containerNode,\n h(\"div\", slotsNodeProps, (_a = slots.default) == null ? void 0 : _a.call(slots, {}))\n ]);\n };\n }\n});\nasync function setupMapChildren({\n returnOnly,\n willDeleteByHand,\n strictMapRoot,\n requiredImport,\n createFunction,\n settings,\n settingsUpdateIgnoreKeys,\n isLayer,\n isMercator,\n isMapRoot,\n mapRootRef,\n duplicateInit\n}) {\n if (!getCurrentInstance()) {\n throwException({\n text: \"setupMapChildren must be only called on runtime.\",\n isInternal: true\n });\n }\n const children = shallowRef();\n const mapRoot = inject(\"mapRoot\", null);\n const initPromises = inject(\"mapRootInitPromises\", null);\n let childrenPromises;\n const map = injectMap();\n const layers = injectLayers();\n let timeouts = null;\n const timeoutCallback = (timeout, isDelete) => {\n if (!timeouts) timeouts = /* @__PURE__ */ new Set();\n if (!isDelete) timeouts.add(timeout);\n else timeouts.delete(timeout);\n };\n if (isMapRoot && !duplicateInit) {\n provide(\"mapRoot\", mapRootRef || children);\n childrenPromises = shallowRef([]);\n provide(\"mapRootInitPromises\", childrenPromises);\n }\n if (!returnOnly && !willDeleteByHand) {\n onBeforeUnmount(() => {\n if (children.value) {\n deleteMapChild({\n children: children.value,\n isMercator,\n root: (mapRoot == null ? void 0 : mapRoot.value) ? mapRoot : map\n });\n }\n if (timeouts == null ? void 0 : timeouts.size) {\n timeouts.forEach((timeout) => clearTimeout(timeout));\n timeouts.clear();\n }\n });\n }\n if (settings) {\n let lastSettings = copy(settings);\n watch(settings, (value) => {\n if (!value) return;\n const settingsDiff = Object.keys(diff(lastSettings, value));\n if (settingsDiff.length === 0) return;\n const updatedSettings = copy(value);\n for (const key in updatedSettings) {\n if (!settingsDiff.includes(key)) delete updatedSettings[key];\n }\n const ignoreKeys = settingsUpdateIgnoreKeys && (isRef(settingsUpdateIgnoreKeys) ? settingsUpdateIgnoreKeys.value : settingsUpdateIgnoreKeys);\n if (ignoreKeys) excludeKeys(updatedSettings, ignoreKeys);\n if (Object.keys(updatedSettings).length === 0) return;\n lastSettings = copy(value);\n if (children.value && \"update\" in children.value) children.value.update(updatedSettings);\n }, { deep: true });\n }\n if (!isLayer && !isMercator) {\n await waitTillMapInit({ timeoutCallback });\n if (!map.value) {\n throwException({\n text: \"map is undefined in setupMapChildren. Please verify that Yandex Maps were initialized successfully and you only use components inside <yandex-map>.\"\n });\n }\n } else {\n await waitTillYmapInit({ timeoutCallback });\n }\n if (strictMapRoot) {\n if (!(mapRoot == null ? void 0 : mapRoot.value)) await nextTick();\n if (!(mapRoot == null ? void 0 : mapRoot.value)) {\n throwException({\n text: `mapRoot is undefined in setupMapChildren. Please verify that you are using component inside it's root: for example, don't use Controls outside <yandex-map-controls>.`\n });\n }\n }\n if (isMapRoot) {\n await nextTick();\n await Promise.all((childrenPromises == null ? void 0 : childrenPromises.value) || []);\n }\n let importData;\n if (requiredImport) {\n const importPromise = requiredImport();\n if (initPromises == null ? void 0 : initPromises.value) initPromises.value.push(Promise.resolve(importPromise));\n importData = await importPromise;\n }\n children.value = createFunction(importData);\n if (!returnOnly && map.value && !isMercator) {\n if (initPromises == null ? void 0 : initPromises.value) {\n await Promise.all(initPromises.value);\n if (!requiredImport) await nextTick();\n }\n if (typeof (mapRoot == null ? void 0 : mapRoot.value) === \"object\" && Array.isArray(mapRoot.value)) {\n mapRoot.value = [\n ...mapRoot.value,\n children.value\n ];\n } else {\n ((mapRoot == null ? void 0 : mapRoot.value) || map.value).addChild(children.value);\n }\n } else if (isLayer) {\n layers.value.push(children.value);\n } else if (isMercator && map.value) {\n map.value.update({\n projection: children.value\n });\n }\n return children.value;\n}\nconst _sfc_main$o = defineComponent({\n name: \"YandexMapListener\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n let mapListener;\n onMounted(async () => {\n mapListener = await setupMapChildren({\n createFunction: () => new ymaps3.YMapListener(props.settings || {}),\n settings: computed(() => props.settings)\n });\n emit(\"input\", mapListener);\n emit(\"update:modelValue\", mapListener);\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$n = defineComponent({\n name: \"YandexMapDefaultFeaturesLayer\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n let mapLayer;\n onMounted(async () => {\n mapLayer = await setupMapChildren({\n createFunction: () => new ymaps3.YMapDefaultFeaturesLayer(props.settings || {}),\n settings: computed(() => props.settings),\n isLayer: true\n });\n emit(\"input\", mapLayer);\n emit(\"update:modelValue\", mapLayer);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$m = defineComponent({\n name: \"YandexMapDefaultSchemeLayer\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n let mapLayer;\n onMounted(async () => {\n mapLayer = await setupMapChildren({\n createFunction: () => new ymaps3.YMapDefaultSchemeLayer(props.settings || {}),\n settings: computed(() => props.settings),\n isLayer: true\n });\n emit(\"input\", mapLayer);\n emit(\"update:modelValue\", mapLayer);\n hold.value--;\n });\n return () => {\n var _a;\n return (_a = slots.default) == null ? void 0 : _a.call(slots, {});\n };\n }\n});\nconst _sfc_main$l = defineComponent({\n name: \"YandexMapDefaultSatelliteLayer\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n let mapLayer;\n onMounted(async () => {\n mapLayer = await setupMapChildren({\n createFunction: () => new ymaps3.YMapDefaultSatelliteLayer(props.settings || {}),\n settings: computed(() => props.settings),\n isLayer: true\n });\n emit(\"input\", mapLayer);\n emit(\"update:modelValue\", mapLayer);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$k = defineComponent({\n name: \"YandexMapTileDataSource\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n let mapChildren;\n onMounted(async () => {\n if (!props.settings.id) {\n throwException({\n text: \"You must specify id in YandexMapTileDataSource settings\"\n });\n }\n mapChildren = await setupMapChildren({\n createFunction: () => new ymaps3.YMapTileDataSource(props.settings),\n settings: computed(() => props.settings),\n isLayer: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$j = defineComponent({\n name: \"YandexMapFeatureDataSource\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n let mapChildren;\n onMounted(async () => {\n if (!props.settings.id) {\n throwException({\n text: \"You must specify id in YandexMapFeatureDataSource settings\"\n });\n }\n mapChildren = await setupMapChildren({\n createFunction: () => new ymaps3.YMapFeatureDataSource(props.settings),\n settings: computed(() => props.settings),\n isLayer: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$i = defineComponent({\n name: \"YandexMapLayer\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n let mapLayer;\n onMounted(async () => {\n if (!props.settings.type) {\n throwException({\n text: \"You must specify type in YandexMapLayer settings\"\n });\n }\n mapLayer = await setupMapChildren({\n createFunction: () => new ymaps3.YMapLayer(props.settings || {}),\n settings: computed(() => props.settings),\n isLayer: true\n });\n emit(\"input\", mapLayer);\n emit(\"update:modelValue\", mapLayer);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nfunction getMarkerContainerProps({\n position,\n containerAttrs,\n wrapperAttrs,\n zeroSizes\n}) {\n const root = {\n class: [\"__ymap-marker\"],\n style: {}\n };\n const children = {\n class: [\"__ymap-marker_wrapper\"],\n style: {}\n };\n const isDefaultPosition = position === \"default\" || position === \"default default\";\n if (position && !isDefaultPosition) {\n if (position.startsWith(\"translate\")) {\n children.style.transform = position;\n } else {\n let translateX = 0;\n let translateY = 0;\n const splitted = position.split(\" \");\n for (let i = 0; i < splitted.length; i++) {\n let local = 0;\n const item = splitted[i];\n switch (item) {\n case \"top\":\n case \"left\":\n local = -100;\n break;\n case \"top-center\":\n case \"left-center\":\n local = -50;\n break;\n case \"bottom\":\n case \"right\":\n local = 100;\n break;\n case \"bottom-center\":\n case \"right-center\":\n local = 50;\n break;\n default:\n local = 0;\n }\n if (item.startsWith(\"left\") || item.startsWith(\"right\")) translateX = local;\n else translateY = local;\n }\n children.style.transform = `translate(${translateX}%, ${translateY}%)`;\n }\n }\n if (zeroSizes === true || zeroSizes !== false && position && !isDefaultPosition) {\n root.style.width = \"0\";\n root.style.height = \"0\";\n if (children.style.transform) children.style.width = \"fit-content\";\n }\n const attrs = {\n root: { ...containerAttrs ?? {} },\n children: { ...wrapperAttrs ?? {} }\n };\n for (const [key, value] of Object.entries(attrs)) {\n const obj = key === \"root\" ? root : children;\n if (value.class) {\n if (!Array.isArray(value.class)) value.class = [value.class];\n value.class = [\n ...obj.class,\n ...value.class\n ];\n }\n if (value == null ? void 0 : value.style) {\n if (typeof value.style !== \"object\" || Array.isArray(value.style)) {\n console.warn(`Style property was given in ${key} of marker, but it is not an object. Style of this prop can only be an object, therefore it was ignored.`);\n } else {\n value.style = {\n ...obj.style,\n ...value.style\n };\n }\n }\n Object.assign(obj, value);\n }\n return {\n root,\n children\n };\n}\nfunction excludeYandexMarkerProps(props) {\n props = { ...props };\n const toExclude = {\n position: true,\n containerAttrs: true,\n wrapperAttrs: true,\n zeroSizes: true\n };\n for (const excluded in toExclude) {\n if (excluded in props) delete props[excluded];\n }\n return props;\n}\nconst _sfc_main$h = defineComponent({\n name: \"YandexMapMarker\",\n inheritAttrs: false,\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n },\n /**\n * @description Sets translate(%, %) to marker to align it properly.\n *\n * If you want to make aligment to be like Yandex Maps 2.0, set this property to \"top left-center\".\n * @default default (as goes in Yandex by default)\n */\n position: {\n type: String\n },\n /**\n * @description Allows you to add any attributes to <div class=\"__ymap-marker\"> container.\n *\n * Important: to pass styles, you must use object-style prop instead of string.\n */\n containerAttrs: {\n type: Object,\n default: () => ({})\n },\n /**\n * @description Allows you to add any attributes to <div class=\"__ymap-marker_wrapper\"> container.\n *\n * Important: to pass styles, you must use object-style prop instead of string.\n */\n wrapperAttrs: {\n type: Object,\n default: () => ({})\n },\n /**\n * @description Will add width and height: 0 to container.\n *\n * Null enables default behavior, false disables it completely (even if position is specified).\n *\n * @default true if position is specified, false otherwise\n */\n zeroSizes: {\n type: Boolean,\n default: null\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit,\n attrs\n }) {\n let mapChildren;\n const element = ref(null);\n function clearElement() {\n var _a, _b, _c;\n if (!((_b = (_a = element.value) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.closest(\"ymaps\"))) (_c = element.value) == null ? void 0 : _c.remove();\n }\n onMounted(async () => {\n if (!props.settings.coordinates) {\n throwException({\n text: \"You must specify coordinates in YandexMapMarker settings\"\n });\n }\n mapChildren = await setupMapChildren({\n settings: computed(() => props.settings),\n createFunction: () => new ymaps3.YMapMarker(props.settings, element.value)\n });\n clearElement();\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n let mapParent = void 0;\n onUpdated(() => {\n var _a, _b, _c, _d;\n if (!mapParent && ((_b = (_a = element.value) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.closest(\"ymaps\"))) mapParent = element.value.parentElement;\n else if (mapParent && element.value && !((_d = (_c = element.value) == null ? void 0 : _c.parentElement) == null ? void 0 : _d.closest(\"ymaps\"))) mapParent.appendChild(element.value);\n clearElement();\n });\n const rootProps = computed(() => getMarkerContainerProps({\n position: props.position,\n containerAttrs: props.containerAttrs,\n wrapperAttrs: props.wrapperAttrs,\n zeroSizes: props.zeroSizes\n }));\n return () => {\n var _a;\n return hF([\n h(\"div\", {\n ...rootProps.value.root,\n ref: element,\n ...getAttrsForVueVersion(attrs)\n }, [\n h(\"div\", {\n ...rootProps.value.children\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, {}))\n ])\n ]);\n };\n }\n});\nconst _sfc_main$g = defineComponent({\n name: \"YandexMapDefaultMarker\",\n inheritAttrs: false,\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit,\n attrs\n }) {\n let mapChildren;\n const popup = ref(null);\n const closeFunc = ref(() => {\n });\n const contentFunc = (close) => {\n closeFunc.value = close;\n return popup.value;\n };\n const getSettings = computed(() => {\n const settings = { ...props.settings };\n if (settings.popup && (typeof settings.popup.content === \"undefined\" || settings.popup.content === \"fromSlot\") && popup.value) {\n settings.popup = {\n ...settings.popup,\n content: contentFunc\n };\n }\n return settings;\n });\n onMounted(async () => {\n if (!props.settings.coordinates) {\n throwException({\n text: \"You must specify coordinates in YandexMapDefaultMarker settings\"\n });\n }\n mapChildren = await setupMapChildren({\n createFunction: ({ YMapDefaultMarker: Marker }) => new Marker(getSettings.value),\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-markers@0.0.1\"),\n settings: getSettings\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n watch(popup, () => {\n var _a;\n if (popup.value) (_a = popup.value.parentNode) == null ? void 0 : _a.removeChild(popup.value);\n });\n return () => {\n var _a;\n if (slots.popup) {\n return hF([\n h(\"div\", {\n ref: popup\n }, (_a = slots.popup) == null ? void 0 : _a.call(slots, { close: closeFunc.value }))\n ]);\n }\n return void 0;\n };\n }\n});\nconst _sfc_main$f = defineComponent({\n name: \"YandexMapFeature\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n let mapChildren;\n onMounted(async () => {\n if (!props.settings.geometry) {\n throwException({\n text: \"You must specify geometry in YandexMapFeature settings\"\n });\n }\n mapChildren = await setupMapChildren({\n createFunction: () => new ymaps3.YMapFeature(props.settings),\n settings: computed(() => props.settings)\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$e = defineComponent({\n name: \"YandexMapControls\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const mapChildren = shallowRef(null);\n onMounted(async () => {\n if (!props.settings.position) {\n throwException({\n text: \"You must specify position in YandexMapControls settings\"\n });\n }\n mapChildren.value = await setupMapChildren({\n createFunction: () => new ymaps3.YMapControls(props.settings),\n isMapRoot: true,\n settings: computed(() => props.settings)\n });\n emit(\"input\", mapChildren.value);\n emit(\"update:modelValue\", mapChildren.value);\n });\n return () => {\n var _a;\n return mapChildren.value ? hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {})) : h(\"div\");\n };\n }\n});\nconst _sfc_main$d = defineComponent({\n name: \"YandexMapControl\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit,\n attrs\n }) {\n let mapChildren;\n const element = ref(null);\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: () => {\n const control = new ymaps3.YMapControl(props.settings);\n class YMapSomeController extends ymaps3.YMapEntity {\n _onAttach() {\n this._element = element.value;\n this._detachDom = ymaps3.useDomContext(this, this._element);\n }\n _onDetach() {\n this._detachDom();\n this._detachDom = null;\n this._element = null;\n }\n }\n control.addChild(new YMapSomeController({}));\n return control;\n },\n settings: computed(() => props.settings),\n strictMapRoot: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hF([\n h(\"div\", {\n ref: element,\n ...getAttrsForVueVersion(attrs)\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, {}))\n ]);\n };\n }\n});\nconst _sfc_main$c = defineComponent({\n name: \"YandexMapControlButton\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit,\n attrs\n }) {\n let mapChildren;\n const element = ref(null);\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: () => new ymaps3.YMapControlButton({\n ...props.settings,\n element: element.value\n }),\n settings: computed(() => ({\n ...props.settings,\n element: element.value\n })),\n strictMapRoot: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hF([\n h(\"div\", {\n ref: element,\n ...getAttrsForVueVersion(attrs)\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, {}))\n ]);\n };\n }\n});\nconst _sfc_main$b = defineComponent({\n name: \"YandexMapGeolocationControl\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n let mapChildren;\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: (controls) => new controls.YMapGeolocationControl(props.settings),\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-controls@0.0.1\"),\n settings: computed(() => props.settings),\n strictMapRoot: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$a = defineComponent({\n name: \"YandexMapZoomControl\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n let mapChildren;\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: (controls) => new controls.YMapZoomControl(props.settings),\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-controls@0.0.1\"),\n settings: computed(() => props.settings),\n strictMapRoot: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$9 = defineComponent({\n name: \"YandexMapScaleControl\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n let mapChildren;\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: () => new ymaps3.YMapScaleControl(props.settings),\n settings: computed(() => props.settings),\n strictMapRoot: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$8 = defineComponent({\n name: \"YandexMapCartesianProjection\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n bounds: {\n type: Array,\n required: true\n },\n cycled: {\n type: Array\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n const projection = inject(\"projection\");\n onMounted(async () => {\n if (!projection) return;\n const cartesian = await setupMapChildren({\n isMercator: true,\n createFunction: ({ Cartesian: CartesianClass }) => new CartesianClass(props.bounds, props.cycled),\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-cartesian-projection@0.0.1\")\n });\n projection.value = cartesian;\n emit(\"input\", cartesian);\n emit(\"update:modelValue\", cartesian);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$7 = defineComponent({\n name: \"YandexMapSphericalMercatorProjection\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const hold = inject(\"needsToHold\");\n hold.value++;\n const projection = inject(\"projection\");\n onMounted(async () => {\n if (!projection) {\n hold.value--;\n return;\n }\n const mercator = await setupMapChildren({\n isMercator: true,\n createFunction: ({ SphericalMercator: Mercator }) => new Mercator(),\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-spherical-mercator-projection@0.0.1\")\n });\n projection.value = mercator;\n emit(\"input\", mercator);\n emit(\"update:modelValue\", mercator);\n hold.value--;\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$6 = defineComponent({\n name: \"YandexMapHint\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n // Property that you will set on YandexMapMarker or YandexMapFeature to display hint content\n hintProperty: {\n type: String,\n required: true\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit,\n attrs\n }) {\n let mapChildren;\n const element = shallowRef(null);\n const hintContent = shallowRef(\"\");\n onMounted(async () => {\n await setupMapChildren({\n createFunction: ({\n YMapHint: MapHint,\n YMapHintContext\n }) => {\n mapChildren = new MapHint({\n hint: (object) => {\n var _a;\n return (_a = object == null ? void 0 : object.properties) == null ? void 0 : _a[props.hintProperty];\n }\n });\n class Hint extends ymaps3.YMapEntity {\n _onAttach() {\n const e = this;\n e._element = element.value;\n e._detachDom = ymaps3.useDomContext(e, e._element, null);\n e._watchContext(YMapHintContext, () => {\n var _a;\n hintContent.value = (_a = e._consumeContext(YMapHintContext)) == null ? void 0 : _a[props.hintProperty];\n }, { immediate: true });\n }\n _onDetach() {\n this._detachDom();\n }\n }\n mapChildren.addChild(new Hint({}));\n return mapChildren;\n },\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-hint@0.0.1\")\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hF([\n h(\"div\", {\n ref: element,\n ...getAttrsForVueVersion(attrs)\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, { content: hintContent.value }))\n ]);\n };\n }\n});\nconst _sfc_main$5 = defineComponent({\n name: \"YandexMapOpenMapsButton\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n let mapChildren;\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: ({ YMapOpenMapsButton: OpenMapsButton }) => new OpenMapsButton(props.settings),\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-controls-extra\"),\n settings: computed(() => props.settings),\n strictMapRoot: true\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n }\n});\nconst _sfc_main$4 = defineComponent({\n name: \"YandexMapClustererCluster\",\n props: {\n clusterMarkerProps: {\n type: Object,\n default: () => ({})\n },\n zoomOnClusterClick: {\n type: [Boolean, Object],\n default: false\n },\n feature: {\n type: Object,\n required: true\n }\n },\n emits: {\n // Exact features bounds returned on cluster click\n trueBounds(bounds) {\n return bounds.length === 2;\n },\n // Auto-corrected features bounds returned on cluster click\n updatedBounds(bounds) {\n return bounds.length === 2;\n },\n updatedCluster(cluserId) {\n return true;\n }\n },\n slots: Object,\n setup(props, { slots, emit }) {\n const map = injectMap();\n const element = ref(null);\n const containerProps = computed(() => {\n var _a, _b, _c, _d;\n return getMarkerContainerProps({\n position: ((_a = props.clusterMarkerProps) == null ? void 0 : _a.position) ?? \"top-center left-center\",\n containerAttrs: (_b = props.clusterMarkerProps) == null ? void 0 : _b.containerAttrs,\n wrapperAttrs: (_c = props.clusterMarkerProps) == null ? void 0 : _c.wrapperAttrs,\n zeroSizes: (_d = props.clusterMarkerProps) == null ? void 0 : _d.zeroSizes\n });\n });\n function updateElement() {\n const _element = element.value;\n if (!_element) return;\n const clusterElement = props.feature.element;\n const clusterer = props.feature.clusterer;\n if (clusterElement.children.length) {\n clusterElement.children.forEach((x) => {\n try {\n clusterElement.removeChild(x);\n } catch (e) {\n console.warn(\"Non-fatal error occurred when updating Map clusterer\", e);\n }\n });\n }\n try {\n clusterElement.addChild(new ymaps3.YMapMarker({\n ...excludeYandexMarkerProps(props.clusterMarkerProps),\n coordinates: clusterer.lnglat,\n onClick: async (e) => {\n var _a, _b, _c, _d;\n (_b = (_a = props.clusterMarkerProps).onClick) == null ? void 0 : _b.call(_a, e);\n if (clusterer.features.length >= 2) {\n const settings = typeof props.zoomOnClusterClick === \"object\" ? props.zoomOnClusterClick : {};\n const featuresCoords = clusterer.features.map((x) => x.geometry.coordinates);\n const bounds = getBoundsFromCoords(featuresCoords);\n emit(\"trueBounds\", bounds);\n if (!props.zoomOnClusterClick) return;\n const defaultDuration = settings.duration ?? 500;\n if (settings.strategy === \"boundsCorrect\") {\n const [[minLongitude, maxLatitude], [maxLongitude, minLatitude]] = bounds;\n const latDiff = maxLatitude - minLatitude;\n const longDiff = maxLongitude - minLongitude;\n const updatedBounds = [[minLongitude - longDiff, maxLatitude - latDiff], [maxLongitude + longDiff, minLatitude + latDiff]];\n emit(\"updatedBounds\", updatedBounds);\n (_c = map.value) == null ? void 0 : _c.setLocation({\n bounds: updatedBounds,\n duration: defaultDuration,\n easing: settings.easing\n });\n } else {\n const { center, zoom } = await getLocationFromBounds({\n bounds,\n map: map.value,\n roundZoom: true,\n comfortZoomLevel: true\n });\n (_d = map.value) == null ? void 0 : _d.setLocation({\n center,\n zoom,\n duration: defaultDuration,\n easing: settings.easing\n });\n await sleep(defaultDuration + 50);\n if (map.value) emit(\"updatedBounds\", map.value.bounds);\n }\n }\n }\n }, _element));\n } catch (e) {\n console.error(e);\n }\n }\n watch(element, updateElement);\n const firstUpdate = ref(false);\n onUpdated(() => {\n if (!firstUpdate.value) {\n firstUpdate.value = true;\n return;\n }\n emit(\"updatedCluster\", props.feature.clusterer.clusterId);\n });\n return () => {\n var _a;\n return hF([\n h(\"div\", {\n ...containerProps.value.root,\n ref: element\n }, [\n h(\"div\", {\n ...containerProps.value.children\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, {\n clusterer: props.feature.clusterer,\n coordinates: props.feature.clusterer.lnglat,\n length: props.feature.clusterer.features.length\n }))\n ])\n ]);\n };\n }\n});\nconst _sfc_main$3 = defineComponent({\n name: \"YandexMapClustererClusters\",\n props: {\n clusterMarkerProps: {\n type: Object,\n default: () => ({})\n },\n zoomOnClusterClick: {\n type: [Boolean, Object],\n default: false\n }\n },\n emits: {\n // Exact features bounds returned on cluster click\n trueBounds(bounds) {\n return bounds.length === 2;\n },\n // Auto-corrected features bounds returned on cluster click\n updatedBounds(bounds) {\n return bounds.length === 2;\n },\n updatedCluster(cluserId) {\n return true;\n }\n },\n slots: Object,\n setup(props, { emit, slots }) {\n const features = inject(\"clusterFeatures\");\n return () => {\n let clusterSlots;\n if (isVue2()) {\n clusterSlots = features.value.map((feature) => h(_sfc_main$4, {\n props: {\n clusterMarkerProps: props.clusterMarkerProps,\n zoomOnClusterClick: props.zoomOnClusterClick,\n feature\n },\n on: {\n trueBounds: (e) => emit(\"trueBounds\", e),\n updatedBounds: (e) => emit(\"updatedBounds\", e),\n updatedCluster: (e) => emit(\"updatedCluster\", e)\n },\n scopedSlots: {\n default: (options) => {\n var _a;\n return h(\"div\", {}, [(_a = slots.default) == null ? void 0 : _a.call(slots, options)]);\n }\n },\n key: feature.clusterer.clusterId\n }));\n } else {\n clusterSlots = features.value.map((feature) => h(_sfc_main$4, {\n clusterMarkerProps: props.clusterMarkerProps,\n zoomOnClusterClick: props.zoomOnClusterClick,\n feature,\n onTrueBounds: (e) => emit(\"trueBounds\", e),\n onUpdatedBounds: (e) => emit(\"updatedBounds\", e),\n onUpdatedCluster: (e) => emit(\"updatedCluster\", e),\n key: feature.clusterer.clusterId\n }, {\n default: (options) => {\n var _a;\n return (_a = slots.default) == null ? void 0 : _a.call(slots, options);\n }\n }));\n }\n return hF(clusterSlots);\n };\n }\n});\nconst _sfc_main$2 = defineComponent({\n name: \"YandexMapClusterer\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n },\n settings: {\n type: Object,\n default: () => ({})\n },\n disableClustersReactivity: {\n type: Boolean,\n default: false\n },\n /**\n * @description All custom (non-settings) props are also supported\n */\n clusterMarkerProps: {\n type: Object,\n default: () => ({})\n },\n /**\n * @description Size of the grid division in pixels\n *\n * Used in settings.method via Yandex clusterByGrid method\n *\n * @see https://yandex.ru/dev/jsapi30/doc/ru/ref/packages/clusterer/\n * @see https://yandex.ru/dev/jsapi30/doc/en/ref/packages/clusterer/\n */\n gridSize: {\n type: Number,\n default: 64\n },\n /**\n * @description Zooms to bounds of features of cluster\n */\n zoomOnClusterClick: {\n type: [Boolean, Object],\n default: false\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n },\n // Exact features bounds returned on cluster click\n trueBounds(bounds) {\n return bounds.length === 2;\n },\n // Auto-corrected features bounds returned on cluster click\n updatedBounds(bounds) {\n return bounds.length === 2;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const mapChildren = shallowRef(null);\n const entities = shallowRef([]);\n const clusterFeatures = shallowRef([]);\n const revision = ref(0);\n const filteredFeatures = computed(() => clusterFeatures.value.filter((x) => x.clusterer.features.length > 1));\n provide(\"clusterFeatures\", filteredFeatures);\n let _clusterByGrid;\n const tickTimeout = computed(() => props.settings.tickTimeout);\n const getSettings = () => {\n const settings = { ...props.settings };\n if (!settings.method && _clusterByGrid) settings.method = _clusterByGrid == null ? void 0 : _clusterByGrid({ gridSize: props.gridSize });\n if (tickTimeout.value) settings.tickTimeout = tickTimeout.value;\n const marker = (feature) => {\n const entity = entities.value.find((x) => x._props.id === feature.id);\n if (!entity) {\n throwException({\n text: `No entity with id ${feature.id} (coordinates: ${feature.geometry.coordinates.join(\", \")}) were found in YandexMapClusterer.`,\n isInternal: true,\n warn: true\n });\n return new ymaps3.YMapMarker({ coordinates: feature.geometry.coordinates });\n }\n return entity;\n };\n const cluster = (coordinates) => {\n const foundCluster = clusterFeatures.value.find((x) => x.clusterer.lnglat[0] === coordinates[0] && x.clusterer.lnglat[1] === coordinates[1]);\n if (!foundCluster) {\n throwException({\n text: `No element with coordinates of ${coordinates.join(\", \")} were found in YandexMapClusterer.`,\n isInternal: true,\n warn: true\n });\n return new ymaps3.YMapMarker({ coordinates });\n }\n return foundCluster.element;\n };\n const features = entities.value.map((entity, i) => {\n if (!entity._props.id) {\n entity.update({\n id: Math.random().toString() + Date.now().toString()\n });\n }\n return {\n type: \"Feature\",\n id: entity._props.id,\n geometry: {\n type: \"Point\",\n coordinates: entity._props.coordinates\n },\n properties: \"properties\" in entity._props ? entity._props.properties : {}\n };\n });\n settings.onRender = (clustersList) => {\n if (clustersList.length <= 1) revision.value++;\n clusterFeatures.value = clustersList.map((clusterer) => {\n var _a;\n clusterer.clusterId = `cluster-${revision.value}-${clusterer.features.map((x) => x.id).join(\",\")}`;\n return {\n clusterer,\n element: ((_a = clusterFeatures.value.find((x) => x.clusterer.clusterId === clusterer.clusterId)) == null ? void 0 : _a.element) || new ymaps3.YMapCollection({})\n };\n });\n if (props.settings.onRender) return props.settings.onRender(clustersList);\n };\n return {\n ...settings,\n marker,\n features,\n cluster\n };\n };\n const update = async () => {\n var _a, _b;\n clusterFeatures.value = [];\n await nextTick();\n (_a = mapChildren.value) == null ? void 0 : _a.update(getSettings());\n (_b = mapChildren.value) == null ? void 0 : _b._render();\n };\n watch(() => [props.settings, props.gridSize], () => {\n update();\n }, {\n deep: true\n });\n const init = async () => {\n mapChildren.value = await setupMapChildren({\n createFunction: ({\n YMapClusterer: Clusterer,\n clusterByGrid: _clusterByGrid_\n }) => {\n _clusterByGrid = _clusterByGrid_;\n return new Clusterer(getSettings());\n },\n requiredImport: () => ymaps3.import(\"@yandex/ymaps3-clusterer@0.0.1\"),\n isMapRoot: true,\n mapRootRef: entities\n });\n emit(\"input\", mapChildren.value);\n emit(\"update:modelValue\", mapChildren.value);\n };\n watch(entities, async () => {\n await nextTick();\n update();\n });\n onMounted(() => {\n init();\n });\n return () => {\n var _a, _b;\n if (!mapChildren.value) return h(\"div\");\n if (isVue2()) {\n return h(\"div\", [\n ...((_a = slots.default) == null ? void 0 : _a.call(slots, {})) || [],\n h(_sfc_main$3, {\n props: {\n clusterMarkerProps: props.clusterMarkerProps,\n zoomOnClusterClick: props.zoomOnClusterClick\n },\n on: {\n trueBounds: (e) => emit(\"trueBounds\", e),\n updatedBounds: (e) => emit(\"updatedBounds\", e),\n updatedCluster: () => revision.value++\n },\n scopedSlots: {\n default: (options) => {\n var _a2;\n return h(\"div\", {}, [(_a2 = slots.cluster) == null ? void 0 : _a2.call(slots, options)]);\n }\n }\n })\n ]);\n }\n return h(\"div\", [\n ...((_b = slots.default) == null ? void 0 : _b.call(slots, {})) || [],\n h(_sfc_main$3, {\n clusterMarkerProps: props.clusterMarkerProps,\n zoomOnClusterClick: props.zoomOnClusterClick,\n onTrueBounds: (e) => emit(\"trueBounds\", e),\n onUpdatedBounds: (e) => emit(\"updatedBounds\", e),\n onUpdatedCluster: (e) => revision.value++\n }, {\n default: (options) => {\n var _a2;\n return (_a2 = slots.cluster) == null ? void 0 : _a2.call(slots, options);\n }\n })\n ]);\n };\n }\n});\nconst _sfc_main$1 = defineComponent({\n name: \"YandexMapCollection\",\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit\n }) {\n const mapChildren = shallowRef(null);\n onMounted(async () => {\n mapChildren.value = await setupMapChildren({\n createFunction: () => new ymaps3.YMapCollection({}),\n isMapRoot: true\n });\n emit(\"input\", mapChildren.value);\n emit(\"update:modelValue\", mapChildren.value);\n });\n return () => {\n if (!mapChildren.value) return h(\"div\");\n return () => {\n var _a;\n return hVue2((_a = slots.default) == null ? void 0 : _a.call(slots, {}));\n };\n };\n }\n});\nconst _sfc_main = defineComponent({\n name: \"YandexMapEntity\",\n inheritAttrs: false,\n props: {\n value: {\n type: Object,\n default: null\n },\n modelValue: {\n type: Object,\n default: null\n }\n },\n emits: {\n \"input\"(item) {\n return true;\n },\n \"update:modelValue\"(item) {\n return true;\n }\n },\n slots: Object,\n setup(props, {\n slots,\n emit,\n attrs\n }) {\n let mapChildren;\n const element = ref(null);\n onMounted(async () => {\n mapChildren = await setupMapChildren({\n createFunction: () => {\n class Entity extends ymaps3.YMapEntity {\n _onAttach() {\n this._element = element.value;\n this._detachDom = ymaps3.useDomContext(this, this._element);\n }\n _onDetach() {\n this._detachDom();\n this._detachDom = null;\n this._element = null;\n }\n }\n return new Entity({});\n }\n });\n emit(\"input\", mapChildren);\n emit(\"update:modelValue\", mapChildren);\n });\n return () => {\n var _a;\n return hF([\n h(\"div\", {\n ref: element,\n ...getAttrsForVueVersion(attrs)\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, {}))\n ]);\n };\n }\n});\nexport {\n VueYandexMaps,\n _sfc_main$p as YandexMap,\n _sfc_main$8 as YandexMapCartesianProjection,\n _sfc_main$2 as YandexMapClusterer,\n _sfc_main$1 as YandexMapCollection,\n _sfc_main$d as YandexMapControl,\n _sfc_main$c as YandexMapControlButton,\n _sfc_main$e as YandexMapControls,\n _sfc_main$n as YandexMapDefaultFeaturesLayer,\n _sfc_main$g as YandexMapDefaultMarker,\n _sfc_main$l as YandexMapDefaultSatelliteLayer,\n _sfc_main$m as YandexMapDefaultSchemeLayer,\n _sfc_main as YandexMapEntity,\n _sfc_main$f as YandexMapFeature,\n _sfc_main$j as YandexMapFeatureDataSource,\n _sfc_main$b as YandexMapGeolocationControl,\n _sfc_main$6 as YandexMapHint,\n _sfc_main$i as YandexMapLayer,\n _sfc_main$o as YandexMapListener,\n _sfc_main$h as YandexMapMarker,\n _sfc_main$5 as YandexMapOpenMapsButton,\n _sfc_main$9 as YandexMapScaleControl,\n _sfc_main$7 as YandexMapSphericalMercatorProjection,\n _sfc_main$k as YandexMapTileDataSource,\n _sfc_main$a as YandexMapZoomControl,\n createYmaps,\n createYmapsOptions,\n createYmapsVue2,\n getBoundsFromCoords,\n getCenterFromCoords,\n getLocationFromBounds,\n initYmaps,\n useYMapsLocationFromBounds\n};\n","export const UPDATE_AREAS = 500\nexport const UPDATE_AREAS_MOBILE = 800\nexport const DISTANCE_SYMMETRY = 0.004\n","<script setup lang=\"ts\">\nimport { BALLOON_TEXT } from '@/constants/statesOfAddressSystem'\n\nimport type { DeliveryDataAddress } from '@/store/delivery/delivery.types'\n\nimport { DeliveryMethods } from '@/api/modules/basket/types'\n\ntype Props = {\n selectedAddress: DeliveryDataAddress | null\n deliveryMethod?: DeliveryMethods\n isLoading?: boolean\n clickable?: boolean\n}\n\ntype Emits = {\n (fn: 'onClick'): void\n}\n\nconst props = defineProps<Props>()\nconst emit = defineEmits<Emits>()\n\nconst balloonImage = computed(() => {\n if (!props.deliveryMethod) return ''\n\n const images: Record<DeliveryMethods, string> = {\n [DeliveryMethods.COURIER]: '/address-system/delivery.webp',\n [DeliveryMethods.PICKUP]: '/address-system/pickup.webp',\n [DeliveryMethods.HALL]: '/address-system/pickup.webp',\n }\n\n return images[props.deliveryMethod]\n})\n\nconst balloonText = computed(() => {\n // В случае если адреса вообще нет\n if (!props.selectedAddress?.address.address) return BALLOON_TEXT.default\n\n // в случае если вне зоны доставки\n if (!props.selectedAddress?.details) return BALLOON_TEXT.outsideDelivery\n\n // В случае если нет адреса\n if (!props.selectedAddress?.address.address?.value) {\n return BALLOON_TEXT.determineAddress\n }\n\n // Время доставки\n if (props.selectedAddress.details.cooking_time) {\n return `~${props.selectedAddress.details.cooking_time} мин.`\n }\n})\n\nconst showErrorText = computed(() => {\n return (\n !props.selectedAddress?.details ||\n !props.selectedAddress?.address.address?.value\n )\n})\n\nconst showImage = computed(() => {\n return !showErrorText.value && balloonText.value && balloonImage.value\n})\n\nconst isAvailableToClick = computed(() => {\n return props.clickable && balloonText.value\n})\n\nconst onClick = () => {\n if (!isAvailableToClick.value) return\n\n emit('onClick')\n}\n</script>\n\n<template>\n <div v-if=\"isLoading\" class=\"balloon-delivery__text\">Ищем ваш адрес..</div>\n\n <div v-else class=\"balloon-delivery__content\" @click=\"onClick\">\n <nuxt-img\n v-if=\"showImage\"\n class=\"balloon-delivery__image\"\n :src=\"balloonImage\"\n format=\"webp\"\n width=\"24\"\n height=\"24\"\n />\n\n <div class=\"balloon-delivery__text\">\n {{ balloonText }}\n </div>\n\n <the-icon\n v-if=\"isAvailableToClick\"\n name=\"expand-down\"\n size=\"16\"\n color=\"var(--ui-white)\"\n />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.balloon-delivery {\n &__text {\n font-size: 12px;\n font-weight: 600;\n line-height: 14px;\n }\n\n &__content {\n position: relative;\n display: flex;\n gap: 5px;\n align-items: center;\n\n &::before {\n position: absolute;\n top: -12px;\n right: -16px;\n bottom: -12px;\n left: -16px;\n content: '';\n }\n }\n\n &__image {\n margin: -4px 0;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useCityStore } from '@/store/city/city'\nimport { BalloonTableItem } from '@/store/delivery/delivery.types'\n\nimport BalloonTableRow from '@/components/Services/Balloons/BalloonTableRow.vue'\n\nimport type { PolygonProperties } from '@/api/modules/delivery/types'\n\nconst DEFAULT_ZERO = 0\n\ntype Props = { data: PolygonProperties }\n\nconst props = defineProps<Props>()\n\nconst { currencySymbol } = useCityStore()\n\nconst tableItems = computed(() => {\n const items: BalloonTableItem[] = [\n {\n id: 'deliveryTime',\n label: 'Время доставки',\n value: `${props.data.cooking_time} мин`,\n visible: props.data.cooking_time > DEFAULT_ZERO,\n },\n {\n id: 'freeDeliveryFrom',\n label: 'Бесплатная доставка',\n value: `от ${props.data.free_delivery_from} ${currencySymbol}`,\n visible: props.data.free_delivery_from > DEFAULT_ZERO,\n },\n {\n id: 'minPrice',\n label: 'Мин. сумма заказа',\n value: `${props.data.min_price} ${currencySymbol}`,\n visible: props.data.min_price > DEFAULT_ZERO,\n },\n ]\n\n props.data.costs.forEach(({ cost, amount_from, amount_to }) => {\n items.push({\n id: `deliveryTime-${cost}`,\n label: `Заказ от ${amount_from} ${currencySymbol} до ${amount_to} ${currencySymbol}`,\n value: `${cost} ${currencySymbol}`,\n visible: cost > DEFAULT_ZERO,\n })\n })\n\n return items.filter(({ visible }) => visible)\n})\n</script>\n\n<template>\n <table class=\"balloon-table\">\n <tbody>\n <balloon-table-row\n v-for=\"item in tableItems\"\n :key=\"item.id\"\n class=\"balloon-table__item\"\n :data=\"item\"\n />\n </tbody>\n </table>\n</template>\n\n<style lang=\"scss\" scoped>\n.balloon-table {\n width: 240px;\n\n &__item {\n &:not(:last-child) {\n margin-bottom: 2px;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { BALLOON_TEXT } from '@/constants/statesOfAddressSystem'\n\nimport type { DeliveryDataAddress } from '@/store/delivery/delivery.types'\n\ntype Props = {\n selectedAddress: DeliveryDataAddress | null\n isEmptyInfo: boolean\n isLoading?: boolean\n}\n\nconst props = defineProps<Props>()\n\nconst titleAddress = computed(() => {\n return (\n props.selectedAddress?.address.address?.value ||\n BALLOON_TEXT.addressNotFound\n )\n})\n</script>\n\n<template>\n <div v-if=\"isEmptyInfo\" class=\"balloon__message\">\n {{ BALLOON_TEXT.outsideDelivery }}\n </div>\n\n <div v-else-if=\"isLoading\" class=\"balloon__progress\">\n <the-loader size=\"14\" color=\"var(--ui-white)\" />\n </div>\n\n <p v-else-if=\"titleAddress\" class=\"balloon__address\">\n {{ titleAddress }}\n </p>\n</template>\n\n<style lang=\"scss\" scoped>\n.balloon {\n &__progress {\n position: relative;\n width: 14px;\n height: 14px;\n margin: 0 5px 8px 0;\n }\n\n &__message {\n margin: 0 auto;\n font-weight: 600;\n }\n\n &__address {\n display: -webkit-box;\n margin-bottom: 8px;\n overflow: hidden;\n font-weight: 800;\n line-height: 14px;\n text-overflow: ellipsis;\n white-space: break-spaces;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useAddressSystem } from '@/store/addressSystem/address-system'\nimport {\n BalloonType,\n type DeliveryDataAddress,\n} from '@/store/delivery/delivery.types'\n\nimport BalloonDelivery from '@/components/Services/Balloons/BalloonDelivery.vue'\nimport BalloonTable from '@/components/Services/Balloons/BalloonTable.vue'\nimport BalloonTitle from '@/components/Services/Balloons/BalloonTitle.vue'\n\nimport type { PolygonProperties } from '@/api/modules/delivery/types'\n\ntype Props = {\n details: PolygonProperties | null\n selectedAddress: DeliveryDataAddress | null\n balloonType?: BalloonType\n isLoading?: boolean\n clickable?: boolean\n}\n\ntype Emits = {\n (fn: 'onClick'): void\n}\n\ndefineProps<Props>()\n\nconst emit = defineEmits<Emits>()\n\nconst { deliveryBasket } = storeToRefs(useAddressSystem())\n</script>\n\n<template>\n <div class=\"balloon-marker\">\n <div class=\"balloon-marker__content\">\n <template v-if=\"balloonType === BalloonType.Delivery\">\n <balloon-title\n :is-loading=\"isLoading\"\n :is-empty-info=\"!details\"\n :selected-address=\"selectedAddress\"\n />\n\n <balloon-table v-if=\"details\" :data=\"details\" />\n </template>\n\n <balloon-delivery\n v-if=\"balloonType === BalloonType.AddressSystem\"\n :is-loading=\"isLoading\"\n :selected-address=\"selectedAddress\"\n :delivery-method=\"deliveryBasket.delivery_method\"\n :clickable=\"clickable\"\n @on-click=\"emit('onClick')\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.balloon-marker {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n font-family: 'Raleways', sans-serif;\n font-weight: 500;\n\n &::before {\n position: absolute;\n bottom: 100%;\n width: 2px;\n height: 20px;\n content: '';\n background: var(--ui-secondary);\n }\n\n &__content {\n position: absolute;\n bottom: 20px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n width: auto;\n min-width: 40px;\n height: auto;\n min-height: 40px;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 500;\n line-height: 14px;\n color: var(--ui-white);\n white-space: nowrap;\n background: var(--ui-secondary);\n border-radius: 20px;\n box-shadow: 0 4px 20px 0 rgba(65, 58, 91, 0.15);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { YandexMapMarker } from 'vue-yandex-maps'\n\nimport type { LngLat } from '@yandex/ymaps3-types'\nimport {\n BalloonType,\n DeliveryDataAddress,\n} from '@/store/delivery/delivery.types'\n\nimport { StateGeoAddress } from '@/types/mapServices'\n\nimport BalloonMarker from '@/components/Services/Balloons/BalloonMarker.vue'\n\nimport type { PolygonProperties } from '@/api/modules/delivery/types'\n\ntype Props = {\n clickedMarkerCoordinates: LngLat\n deliveryAddressDetails: PolygonProperties | null\n selectedAddress: DeliveryDataAddress | null\n balloonType: BalloonType\n}\n\nconst props = defineProps<Props>()\n\nconst generateSettings = computed(() => {\n return {\n coordinates: props.clickedMarkerCoordinates,\n properties: { markerOfClick: true },\n zIndex: 1,\n }\n})\n\nconst isLoading = computed(\n () => props.selectedAddress?.state === StateGeoAddress.LOADING,\n)\n</script>\n\n<template>\n <yandex-map-marker\n :settings=\"generateSettings\"\n position=\"top-center left-center\"\n >\n <balloon-marker\n :is-loading=\"isLoading\"\n :balloon-type=\"balloonType\"\n :details=\"deliveryAddressDetails\"\n :selected-address=\"selectedAddress\"\n />\n </yandex-map-marker>\n</template>\n","<script setup lang=\"ts\">\nimport { YandexMapMarker } from 'vue-yandex-maps'\n\nimport { PointProperties } from '@/api/modules/delivery/types'\n\ntype Props = {\n points: PointProperties[]\n clickedRestaurant: PointProperties | null\n}\n\ndefineProps<Props>()\n\nconst generateSettings = (marker: PointProperties) => {\n return {\n id: `${marker.id}`,\n coordinates: [marker.coordinates[1], marker.coordinates[0]],\n properties: { ...marker },\n }\n}\n\n// Определение иконки точки ресторана\nconst getImageSrc = (isWorking: Boolean) =>\n isWorking ? '/opened-marker.svg' : '/closed-marker.svg'\n</script>\n\n<template>\n <yandex-map-marker\n v-for=\"(marker, index) in points\"\n :key=\"`point-${index}-${marker.id}`\"\n position=\"top-center left-center\"\n :settings=\"generateSettings(marker)\"\n >\n <div class=\"marker\">\n <nuxt-img\n class=\"marker__image\"\n :src=\"getImageSrc(marker.is_open)\"\n alt=\"Маркер точки\"\n width=\"35\"\n height=\"35\"\n />\n\n <div v-if=\"clickedRestaurant?.id === marker.id\" class=\"marker__baloon\">\n {{ marker.address }}\n </div>\n </div>\n </yandex-map-marker>\n</template>\n\n<style lang=\"scss\" scoped>\n.marker {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n\n &__image {\n max-width: unset;\n cursor: pointer;\n background-size: cover;\n border-radius: 50%;\n }\n\n &__baloon {\n position: absolute;\n top: 0;\n left: 50%;\n z-index: -1;\n width: -moz-max-content;\n width: max-content;\n height: 25px;\n padding: 2px 20px;\n font-size: 14px;\n color: var(--ui-text-primary);\n background: var(--ui-white);\n border-radius: 0 5px 5px 0;\n box-shadow: -8px 6px 13px -9px rgb(0 0 0 / 90%);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { YandexMapFeature } from 'vue-yandex-maps'\n\nimport type { LngLat, YMapFeatureProps } from '@yandex/ymaps3-types'\nimport type { AreaProperties } from '@/api/modules/delivery/types'\n\ntype Props = { areas: AreaProperties[] }\n\nwithDefaults(defineProps<Props>(), {\n areas: () => [],\n})\n\n// Инверсия координат lat lon значений\nconst reverseCoords = (area: AreaProperties) => {\n try {\n return [\n area.polygon[0].map(\n (coordinate): LngLat => [coordinate[1], coordinate[0]],\n ),\n ]\n } catch (_) {\n return []\n }\n}\n\nconst generateSettings = (area: AreaProperties): YMapFeatureProps => {\n return {\n properties: { ...area.properties },\n geometry: { type: 'Polygon', coordinates: reverseCoords(area) },\n style: {\n fillOpacity: 0.3,\n fill: area.properties.stroke,\n stroke: [{ opacity: 0 }],\n },\n }\n}\n</script>\n\n<template>\n <yandex-map-feature\n v-for=\"area in areas\"\n :key=\"area.id\"\n :settings=\"generateSettings(area)\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport {\n getBoundsFromCoords,\n YandexMap,\n YandexMapControls,\n YandexMapDefaultFeaturesLayer,\n YandexMapDefaultSchemeLayer,\n YandexMapListener,\n YandexMapZoomControl,\n} from 'vue-yandex-maps'\nimport type { Position } from 'vue-yandex-maps/dist/types/marker'\n\nimport {\n BehaviorMapEventHandler,\n DomEventHandler,\n LngLat,\n LngLatBounds,\n MapEventUpdateHandler,\n YMap,\n YMapControlsProps,\n} from '@yandex/ymaps3-types'\nimport {\n DISTANCE_SYMMETRY,\n UPDATE_AREAS,\n UPDATE_AREAS_MOBILE,\n} from '@/constants/delivery'\n\nimport type { ServiceSettings } from '@/store/city/city.types'\nimport {\n BalloonType,\n DeliveryDataAddress,\n PlacesSearch,\n} from '@/store/delivery/delivery.types'\nimport { useToggleStore } from '@/store/toggle/toggle'\n\nimport { TypesEntity } from '@/types/mapServices'\n\nimport BalloonMarker from '@/components/Services/Balloons/BalloonMarker.vue'\nimport YandexMapClickedMarker from '@/components/Services/YandexMap/YandexMapClickedMarker.vue'\nimport YandexMapPoints from '@/components/Services/YandexMap/YandexMapPoints.vue'\nimport YandexMapPolygons from '@/components/Services/YandexMap/YandexMapPolygons.vue'\n\nimport type {\n AreaProperties,\n DragCoordinates,\n PointProperties,\n PolygonProperties,\n} from '@/api/modules/delivery/types' /* eslint-disable */\nimport { debounce } from 'throttle-debounce'\n\ntype Props = {\n settings: ServiceSettings\n width: string\n areas: AreaProperties[]\n points: PointProperties[]\n positionControl: Position\n clickedRestaurant: PointProperties | null\n selectedAddress: DeliveryDataAddress\n balloonType?: BalloonType\n isDeliveryCourier?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n areas: () => [],\n points: () => [],\n balloonType: BalloonType.Delivery,\n isDeliveryCourier: true,\n})\n\nconst emit = defineEmits([\n 'onUpdateCenterMap',\n 'onClickToMap',\n 'onClickMarker',\n 'onUpdateDistance',\n 'onClickRestaurant',\n 'onUpdateAreas',\n])\n\nconst { newFetchingApiEnabled } = useToggleStore()\n\nconst { isDesktop } = useResponsive()\n\nconst timeDebounceAction = isDesktop.value ? UPDATE_AREAS : UPDATE_AREAS_MOBILE\n\n// Модель карты\nconst yandexMapData = shallowRef<null | YMap>(null)\n// Координаты маркера на карте\nconst clickedMarkerCoordinates = ref<LngLat>([0, 0])\n// Информация от полигона для маркера\nconst deliveryAddressDetails = ref<PolygonProperties | null>(null)\n// Предустановленный zoom\nconst currentZoom = shallowRef(props.settings.zoom)\n\n// Конфигурация настройки карты\nconst startSettings = {\n location: {\n center: [...props.settings.coords].reverse(),\n zoom: props.settings.zoom,\n },\n zoomRange: { min: 10, max: 20 },\n}\n\nconst controlSettings: YMapControlsProps = {\n position: props.positionControl,\n orientation: 'vertical',\n}\n\n// Сетим данные, если выбран ресторан из списка\nwatch(\n () => props.clickedRestaurant,\n async (newPoint: PointProperties | null) => {\n if (!newPoint || !yandexMapData.value) return\n\n const [lat, lon]: LngLat = newPoint.coordinates\n\n // Проверка что центр карты не смещен то точки ресторана\n const isCheckDragged =\n yandexMapData.value?.center[1].toString().includes(String(lat)) &&\n yandexMapData.value?.center[0].toString().includes(String(lon))\n\n setLocationMap([lon, lat])\n\n // Если есть точки области, тагл включен и карта смещена\n const isNeedUpdateAreas =\n yandexMapData.value?.bounds && newFetchingApiEnabled && isCheckDragged\n\n // Динамически обновляем полигоны\n if (isNeedUpdateAreas) await updateAreas(yandexMapData.value.bounds)\n\n emit('onUpdateCenterMap')\n },\n)\n\nwatch(\n () => props.selectedAddress?.coordinates,\n async (newCoordsOfAddress: LngLat) => {\n const [lat, lon] = newCoordsOfAddress\n if (lat === 0 && lon === 0) {\n resetBalloon()\n return\n }\n\n updateCoordsOfMarker([lat, lon])\n\n // Формируем область вокруг точки\n const boundsOfCoordinates = getBoundsFromCoords([\n [lat - DISTANCE_SYMMETRY, lon - DISTANCE_SYMMETRY],\n [lat + DISTANCE_SYMMETRY, lon + DISTANCE_SYMMETRY],\n ])\n\n // В случае, если включен тагл и место вызова автокомплит\n const isNeedUpdateAreas =\n newFetchingApiEnabled &&\n props.selectedAddress.address.place === PlacesSearch.AUTOCOMPLETE\n\n // Динамически обновляем полигоны\n if (isNeedUpdateAreas) await updateAreas(boundsOfCoordinates)\n\n // Для v3\n if (!newFetchingApiEnabled) {\n emit('onUpdateDistance', [lon, lat])\n\n const polygon = findOfDeliveryArea(props.areas, [lat, lon])\n\n deliveryAddressDetails.value = polygon ? polygon.properties : null\n }\n\n const { place } = props.selectedAddress.address\n\n if (place !== PlacesSearch.AUTOCOMPLETE) return\n\n // Для адреса из автокомплита смещаем центр карты\n setLocationMap([lat, lon])\n },\n)\n\nwatch(\n () => props.selectedAddress.details,\n (newDetails) => {\n deliveryAddressDetails.value = newDetails\n },\n)\n\n// Метод зума карты по координатам\nconst setLocationMap = (coords: LngLat, zoom: number = 16) => {\n const location = {\n center: coords,\n zoom,\n }\n\n yandexMapData.value?.setLocation(location)\n}\n\n// Метод обновления координат маркера\nconst updateCoordsOfMarker = (coords: LngLat) => {\n clickedMarkerCoordinates.value = coords\n}\n\n// Сбрасываем маркер c балуном\nconst resetBalloon = () => {\n updateCoordsOfMarker([0, 0])\n deliveryAddressDetails.value = null\n}\n\nconst updateBalloon: DomEventHandler = (object, event) => {\n deliveryAddressDetails.value = object\n ? (object.entity.properties as unknown as PolygonProperties)\n : null\n\n // Меняем центр карты по координатам маркера\n if (!isDesktop.value) setLocationMap(event.coordinates)\n\n emit('onClickToMap', event.coordinates)\n\n updateCoordsOfMarker(event.coordinates)\n}\n\nconst onActionStart: BehaviorMapEventHandler = () => {\n emit('onUpdateCenterMap')\n}\n\nconst onActionEnd = debounce<BehaviorMapEventHandler>(\n timeDebounceAction,\n ({ type, location }) => {\n if (!props.isDeliveryCourier) {\n updateAreas(location.bounds)\n return\n }\n\n if (type === 'scrollZoom' && !isDesktop.value) {\n clickedMarkerCoordinates.value = location.center\n\n emit('onClickToMap', location.center)\n\n updateAreas(location.bounds)\n\n return\n }\n\n if (type !== 'drag') return\n\n if (!isDesktop.value) {\n clickedMarkerCoordinates.value = location.center\n emit('onClickToMap', location.center)\n }\n\n updateAreas(location.bounds)\n },\n)\n\n// Заглушка для сдвига карты\nconst onActionEndOld = () => ({})\n\nconst getReverseCoords = (bounds: LngLatBounds) => {\n const lowerLeftBounds = bounds[0]\n const upperRightBounds = bounds[1]\n\n const coords: DragCoordinates = {\n lower_left: [lowerLeftBounds[1], lowerLeftBounds[0]],\n upper_right: [upperRightBounds[1], upperRightBounds[0]],\n }\n\n return coords\n}\n\nconst debounceActionEnd = debounce(timeDebounceAction, onActionEnd)\n\nconst updateAreas = async (bounds: LngLatBounds, isUpdateDistance = true) => {\n emit('onUpdateAreas', getReverseCoords(bounds), isUpdateDistance)\n}\n\nconst onUpdate = debounce<MapEventUpdateHandler>(\n timeDebounceAction,\n ({ location }) => {\n if (!isDesktop.value) return\n\n if (location.zoom < currentZoom.value) updateAreas(location.bounds)\n\n currentZoom.value = location.zoom\n },\n)\n\nconst clickToMap: DomEventHandler = (object, event) => {\n resetBalloon()\n\n switch (object?.type) {\n // Клик на хотспот\n case TypesEntity.HOTSPOT:\n updateBalloon(undefined, event)\n break\n // Клик по полигону\n case TypesEntity.FEATURE:\n if (!isDesktop.value) break\n updateBalloon(object, event)\n break\n // Клик на маркер\n case TypesEntity.MARKER:\n // Если активный маркер\n if (object.entity.properties?.markerOfClick) {\n resetBalloon()\n break\n }\n\n if (object.entity.properties) {\n emit('onClickRestaurant', object.entity.properties)\n\n setLocationMap(event.coordinates, yandexMapData.value?.zoom)\n }\n\n break\n default:\n if (!isDesktop.value) break\n updateBalloon(object, event)\n break\n }\n}\n\nconst onClickMarker = () => emit('onClickMarker')\n\nconst listenerSettings = {\n onUpdate,\n onClick: clickToMap,\n onActionStart,\n onActionEnd: newFetchingApiEnabled ? debounceActionEnd : onActionEndOld,\n}\n\nonMounted(async () => {\n if (!props.selectedAddress.details) return\n\n const { details, coordinates } = props.selectedAddress\n\n deliveryAddressDetails.value = details\n\n updateCoordsOfMarker(coordinates)\n\n // setTimeout используем для завершения инициализации рендера карты\n setTimeout(() => setLocationMap(coordinates, 20), 0)\n})\n\n// Удаляем карту из DOM\nonBeforeUnmount(() => yandexMapData.value?.destroy())\n</script>\n\n<template>\n <div>\n <yandex-map\n v-model=\"yandexMapData\"\n :settings=\"startSettings\"\n :width=\"width\"\n >\n <yandex-map-default-scheme-layer />\n <yandex-map-default-features-layer />\n\n <yandex-map-listener :settings=\"listenerSettings\" />\n\n <yandex-map-points\n v-if=\"points.length\"\n :points=\"points\"\n :clicked-restaurant=\"clickedRestaurant\"\n />\n\n <yandex-map-polygons v-if=\"areas.length\" :areas=\"areas\" />\n\n <yandex-map-clicked-marker\n v-if=\"isDesktop && isDeliveryCourier\"\n :delivery-address-details=\"deliveryAddressDetails\"\n :clicked-marker-coordinates=\"clickedMarkerCoordinates\"\n :selected-address=\"selectedAddress\"\n :balloon-type=\"balloonType\"\n />\n\n <yandex-map-controls :settings=\"controlSettings\">\n <yandex-map-zoom-control v-if=\"isDesktop\" />\n </yandex-map-controls>\n </yandex-map>\n\n <balloon-marker\n v-if=\"!isDesktop && isDeliveryCourier\"\n class=\"yandex-map__mobile-point\"\n :balloon-type=\"balloonType\"\n :details=\"deliveryAddressDetails\"\n :selected-address=\"selectedAddress\"\n :clickable=\"true\"\n @on-click=\"onClickMarker\"\n />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n:deep(.__ymap_container) {\n height: 100% !important;\n}\n\n.yandex-map__mobile-point {\n position: absolute !important;\n top: 50% !important;\n left: 50% !important;\n transform: translate(-50%, -100%);\n}\n</style>\n","<script setup lang=\"ts\">\nconst ERROR_TEXT_NOT_LOADED_MAP = 'При загрузке карты произошла ошибка'\n</script>\n\n<template>\n <div>\n <span>{{ ERROR_TEXT_NOT_LOADED_MAP }}</span>\n </div>\n</template>\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var a=document.createElement(\"style\");a.appendChild(document.createTextNode(\".mapdiv[data-v-dbf82c40]{width:100%;height:100%}.custom-control-wrapper[data-v-d099a3a6]{display:none}.mapdiv .custom-control-wrapper[data-v-d099a3a6]{display:inline-block}.info-window-wrapper[data-v-cbe1707b]{display:none}.mapdiv .info-window-wrapper[data-v-cbe1707b]{display:inline-block}.custom-marker-wrapper[data-v-2d2d343a]{display:none}.mapdiv .custom-marker-wrapper[data-v-2d2d343a]{display:inline-block}\")),document.head.appendChild(a)}}catch(d){console.error(\"vite-plugin-css-injected-by-js\",d)}})();\nvar qe = Object.defineProperty;\nvar Be = (n, e, t) => e in n ? qe(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;\nvar se = (n, e, t) => (Be(n, typeof e != \"symbol\" ? e + \"\" : e, t), t);\nimport { defineComponent as P, ref as y, provide as G, watch as O, onMounted as Me, onBeforeUnmount as B, markRaw as I, toRef as Z, openBlock as Y, createElementBlock as X, createElementVNode as ae, renderSlot as Q, normalizeProps as Ze, guardReactiveProps as Ne, inject as C, computed as J, Comment as Ee, mergeProps as Pe, createCommentVNode as Oe } from \"vue\";\nconst N = Symbol(\"map\"), U = Symbol(\"api\"), xe = Symbol(\"marker\"), Le = Symbol(\"markerCluster\"), ee = Symbol(\"CustomMarker\"), Se = Symbol(\"mapTilesLoaded\"), q = [\n \"click\",\n \"dblclick\",\n \"drag\",\n \"dragend\",\n \"dragstart\",\n \"mousedown\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"rightclick\"\n];\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction Ue(n, e, t, s) {\n function r(o) {\n return o instanceof t ? o : new t(function(a) {\n a(o);\n });\n }\n return new (t || (t = Promise))(function(o, a) {\n function l(u) {\n try {\n d(s.next(u));\n } catch (c) {\n a(c);\n }\n }\n function i(u) {\n try {\n d(s.throw(u));\n } catch (c) {\n a(c);\n }\n }\n function d(u) {\n u.done ? o(u.value) : r(u.value).then(l, i);\n }\n d((s = s.apply(n, e || [])).next());\n });\n}\nvar De = function n(e, t) {\n if (e === t)\n return !0;\n if (e && t && typeof e == \"object\" && typeof t == \"object\") {\n if (e.constructor !== t.constructor)\n return !1;\n var s, r, o;\n if (Array.isArray(e)) {\n if (s = e.length, s != t.length)\n return !1;\n for (r = s; r-- !== 0; )\n if (!n(e[r], t[r]))\n return !1;\n return !0;\n }\n if (e.constructor === RegExp)\n return e.source === t.source && e.flags === t.flags;\n if (e.valueOf !== Object.prototype.valueOf)\n return e.valueOf() === t.valueOf();\n if (e.toString !== Object.prototype.toString)\n return e.toString() === t.toString();\n if (o = Object.keys(e), s = o.length, s !== Object.keys(t).length)\n return !1;\n for (r = s; r-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(t, o[r]))\n return !1;\n for (r = s; r-- !== 0; ) {\n var a = o[r];\n if (!n(e[a], t[a]))\n return !1;\n }\n return !0;\n }\n return e !== e && t !== t;\n};\nconst de = \"__googleMapsScriptId\";\nvar R;\n(function(n) {\n n[n.INITIALIZED = 0] = \"INITIALIZED\", n[n.LOADING = 1] = \"LOADING\", n[n.SUCCESS = 2] = \"SUCCESS\", n[n.FAILURE = 3] = \"FAILURE\";\n})(R || (R = {}));\nclass T {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey: e, authReferrerPolicy: t, channel: s, client: r, id: o = de, language: a, libraries: l = [], mapIds: i, nonce: d, region: u, retries: c = 3, url: h = \"https://maps.googleapis.com/maps/api/js\", version: p }) {\n if (this.callbacks = [], this.done = !1, this.loading = !1, this.errors = [], this.apiKey = e, this.authReferrerPolicy = t, this.channel = s, this.client = r, this.id = o || de, this.language = a, this.libraries = l, this.mapIds = i, this.nonce = d, this.region = u, this.retries = c, this.url = h, this.version = p, T.instance) {\n if (!De(this.options, T.instance.options))\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(T.instance.options)}`);\n return T.instance;\n }\n T.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy\n };\n }\n get status() {\n return this.errors.length ? R.FAILURE : this.done ? R.SUCCESS : this.loading ? R.LOADING : R.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let e = this.url;\n return e += \"?callback=__googleMapsCallback\", this.apiKey && (e += `&key=${this.apiKey}`), this.channel && (e += `&channel=${this.channel}`), this.client && (e += `&client=${this.client}`), this.libraries.length > 0 && (e += `&libraries=${this.libraries.join(\",\")}`), this.language && (e += `&language=${this.language}`), this.region && (e += `®ion=${this.region}`), this.version && (e += `&v=${this.version}`), this.mapIds && (e += `&map_ids=${this.mapIds.join(\",\")}`), this.authReferrerPolicy && (e += `&auth_referrer_policy=${this.authReferrerPolicy}`), e;\n }\n deleteScript() {\n const e = document.getElementById(this.id);\n e && e.remove();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((e, t) => {\n this.loadCallback((s) => {\n s ? t(s.error) : e(window.google);\n });\n });\n }\n importLibrary(e) {\n return this.execute(), google.maps.importLibrary(e);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(e) {\n this.callbacks.push(e), this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var e, t;\n if (document.getElementById(this.id)) {\n this.callback();\n return;\n }\n const s = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy\n };\n Object.keys(s).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (o) => !s[o] && delete s[o]\n ), !((t = (e = window == null ? void 0 : window.google) === null || e === void 0 ? void 0 : e.maps) === null || t === void 0) && t.importLibrary || ((o) => {\n let a, l, i, d = \"The Google Maps JavaScript API\", u = \"google\", c = \"importLibrary\", h = \"__ib__\", p = document, m = window;\n m = m[u] || (m[u] = {});\n const f = m.maps || (m.maps = {}), g = /* @__PURE__ */ new Set(), v = new URLSearchParams(), w = () => (\n // @ts-ignore\n a || (a = new Promise((_, E) => Ue(this, void 0, void 0, function* () {\n var b;\n yield l = p.createElement(\"script\"), l.id = this.id, v.set(\"libraries\", [...g] + \"\");\n for (i in o)\n v.set(i.replace(/[A-Z]/g, (x) => \"_\" + x[0].toLowerCase()), o[i]);\n v.set(\"callback\", u + \".maps.\" + h), l.src = this.url + \"?\" + v, f[h] = _, l.onerror = () => a = E(Error(d + \" could not load.\")), l.nonce = this.nonce || ((b = p.querySelector(\"script[nonce]\")) === null || b === void 0 ? void 0 : b.nonce) || \"\", p.head.append(l);\n })))\n );\n f[c] ? console.warn(d + \" only loads once. Ignoring:\", o) : f[c] = (_, ...E) => g.add(_) && w().then(() => f[c](_, ...E));\n })(s);\n const r = this.libraries.map((o) => this.importLibrary(o));\n r.length || r.push(this.importLibrary(\"core\")), Promise.all(r).then(() => this.callback(), (o) => {\n const a = new ErrorEvent(\"error\", { error: o });\n this.loadErrorCallback(a);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript(), this.done = !1, this.loading = !1, this.errors = [], this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n this.failed && this.reset();\n }\n loadErrorCallback(e) {\n if (this.errors.push(e), this.errors.length <= this.retries) {\n const t = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${t} ms.`), setTimeout(() => {\n this.deleteScript(), this.setScript();\n }, t);\n } else\n this.onerrorEvent = e, this.callback();\n }\n callback() {\n this.done = !0, this.loading = !1, this.callbacks.forEach((e) => {\n e(this.onerrorEvent);\n }), this.callbacks = [];\n }\n execute() {\n if (this.resetIfRetryingFailed(), this.done)\n this.callback();\n else {\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.This may result in undesirable behavior as options and script parameters may not match.\"), this.callback();\n return;\n }\n this.loading || (this.loading = !0, this.setScript());\n }\n }\n}\nfunction Fe(n) {\n return class extends n.OverlayView {\n constructor(s) {\n super();\n se(this, \"element\");\n se(this, \"opts\");\n const { element: r, ...o } = s;\n this.element = r, this.opts = o, this.opts.map && this.setMap(this.opts.map);\n }\n getPosition() {\n return this.opts.position ? this.opts.position instanceof n.LatLng ? this.opts.position : new n.LatLng(this.opts.position) : null;\n }\n getVisible() {\n if (!this.element)\n return !1;\n const s = this.element;\n return s.style.display !== \"none\" && s.style.visibility !== \"hidden\" && (s.style.opacity === \"\" || Number(s.style.opacity) > 0.01);\n }\n onAdd() {\n if (!this.element)\n return;\n const s = this.getPanes();\n s && s.overlayMouseTarget.appendChild(this.element);\n }\n draw() {\n if (!this.element)\n return;\n const s = this.getProjection(), r = s == null ? void 0 : s.fromLatLngToDivPixel(this.getPosition());\n if (r) {\n this.element.style.position = \"absolute\";\n const o = this.element.offsetHeight, a = this.element.offsetWidth;\n let l, i;\n switch (this.opts.anchorPoint) {\n case \"TOP_CENTER\":\n l = r.x - a / 2, i = r.y;\n break;\n case \"BOTTOM_CENTER\":\n l = r.x - a / 2, i = r.y - o;\n break;\n case \"LEFT_CENTER\":\n l = r.x, i = r.y - o / 2;\n break;\n case \"RIGHT_CENTER\":\n l = r.x - a, i = r.y - o / 2;\n break;\n case \"TOP_LEFT\":\n l = r.x, i = r.y;\n break;\n case \"TOP_RIGHT\":\n l = r.x - a, i = r.y;\n break;\n case \"BOTTOM_LEFT\":\n l = r.x, i = r.y - o;\n break;\n case \"BOTTOM_RIGHT\":\n l = r.x - a, i = r.y - o;\n break;\n default:\n l = r.x - a / 2, i = r.y - o / 2;\n }\n this.element.style.left = l + \"px\", this.element.style.top = i + \"px\", this.element.style.transform = `translateX(${this.opts.offsetX || 0}px) translateY(${this.opts.offsetY || 0}px)`, this.opts.zIndex && (this.element.style.zIndex = this.opts.zIndex.toString());\n }\n }\n onRemove() {\n this.element && this.element.remove();\n }\n setOptions(s) {\n const { element: r, ...o } = s;\n this.element = r, this.opts = o, this.draw();\n }\n };\n}\nlet he;\nconst pe = [\n \"bounds_changed\",\n \"center_changed\",\n \"click\",\n \"contextmenu\",\n \"dblclick\",\n \"drag\",\n \"dragend\",\n \"dragstart\",\n \"heading_changed\",\n \"idle\",\n \"isfractionalzoomenabled_changed\",\n \"mapcapabilities_changed\",\n \"maptypeid_changed\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"projection_changed\",\n \"renderingtype_changed\",\n \"rightclick\",\n \"tilesloaded\",\n \"tilt_changed\",\n \"zoom_changed\"\n], Ve = P({\n props: {\n apiPromise: {\n type: Promise\n },\n apiKey: {\n type: String,\n default: \"\"\n },\n version: {\n type: String,\n default: \"weekly\"\n },\n libraries: {\n type: Array,\n default: () => [\"places\"]\n },\n region: {\n type: String,\n required: !1\n },\n language: {\n type: String,\n required: !1\n },\n backgroundColor: {\n type: String,\n required: !1\n },\n center: {\n type: Object,\n default: () => ({ lat: 0, lng: 0 })\n },\n clickableIcons: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n controlSize: {\n type: Number,\n required: !1\n },\n disableDefaultUi: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n disableDoubleClickZoom: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n draggable: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n draggableCursor: {\n type: String,\n required: !1\n },\n draggingCursor: {\n type: String,\n required: !1\n },\n fullscreenControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n fullscreenControlPosition: {\n type: String,\n required: !1\n },\n gestureHandling: {\n type: String,\n required: !1\n },\n heading: {\n type: Number,\n required: !1\n },\n isFractionalZoomEnabled: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n keyboardShortcuts: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n mapTypeControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n mapTypeControlOptions: {\n type: Object,\n required: !1\n },\n mapTypeId: {\n type: [Number, String],\n required: !1\n },\n mapId: {\n type: String,\n required: !1\n },\n maxZoom: {\n type: Number,\n required: !1\n },\n minZoom: {\n type: Number,\n required: !1\n },\n noClear: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n panControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n panControlPosition: {\n type: String,\n required: !1\n },\n restriction: {\n type: Object,\n required: !1\n },\n rotateControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n rotateControlPosition: {\n type: String,\n required: !1\n },\n scaleControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n scaleControlStyle: {\n type: Number,\n required: !1\n },\n scrollwheel: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n streetView: {\n type: Object,\n required: !1\n },\n streetViewControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n streetViewControlPosition: {\n type: String,\n required: !1\n },\n styles: {\n type: Array,\n required: !1\n },\n tilt: {\n type: Number,\n required: !1\n },\n zoom: {\n type: Number,\n required: !1\n },\n zoomControl: {\n type: Boolean,\n required: !1,\n default: void 0\n },\n zoomControlPosition: {\n type: String,\n required: !1\n },\n nonce: {\n type: String,\n default: \"\"\n }\n },\n emits: pe,\n setup(n, { emit: e }) {\n const t = y(), s = y(!1), r = y(), o = y(), a = y(!1);\n G(N, r), G(U, o), G(Se, a);\n const l = () => {\n const c = { ...n };\n Object.keys(c).forEach((f) => {\n c[f] === void 0 && delete c[f];\n });\n const p = (f) => {\n var g;\n return f ? { position: (g = o.value) == null ? void 0 : g.ControlPosition[f] } : {};\n }, m = {\n scaleControlOptions: n.scaleControlStyle ? { style: n.scaleControlStyle } : {},\n panControlOptions: p(n.panControlPosition),\n zoomControlOptions: p(n.zoomControlPosition),\n rotateControlOptions: p(n.rotateControlPosition),\n streetViewControlOptions: p(n.streetViewControlPosition),\n fullscreenControlOptions: p(n.fullscreenControlPosition),\n disableDefaultUI: n.disableDefaultUi\n };\n return { ...c, ...m };\n }, i = O(\n [o, r],\n ([c, h]) => {\n const p = c, m = h;\n p && m && (p.event.addListenerOnce(m, \"tilesloaded\", () => {\n a.value = !0;\n }), setTimeout(i, 0));\n },\n { immediate: !0 }\n ), d = () => {\n try {\n const { apiKey: c, region: h, version: p, language: m, libraries: f, nonce: g } = n;\n he = new T({ apiKey: c, region: h, version: p, language: m, libraries: f, nonce: g });\n } catch (c) {\n console.error(c);\n }\n }, u = (c) => {\n o.value = I(c.maps), r.value = I(new c.maps.Map(t.value, l()));\n const h = Fe(o.value);\n o.value[ee] = h, pe.forEach((m) => {\n var f;\n (f = r.value) == null || f.addListener(m, (g) => e(m, g));\n }), s.value = !0;\n const p = Object.keys(n).filter(\n (m) => ![\"apiPromise\", \"apiKey\", \"version\", \"libraries\", \"region\", \"language\", \"center\", \"zoom\", \"nonce\"].includes(m)\n ).map((m) => Z(n, m));\n O(\n [() => n.center, () => n.zoom, ...p],\n ([m, f], [g, v]) => {\n var x, M, F;\n const { center: w, zoom: _, ...E } = l();\n (x = r.value) == null || x.setOptions(E), f !== void 0 && f !== v && ((M = r.value) == null || M.setZoom(f));\n const b = !g || m.lng !== g.lng || m.lat !== g.lat;\n m && b && ((F = r.value) == null || F.panTo(m));\n }\n );\n };\n return Me(() => {\n n.apiPromise && n.apiPromise instanceof Promise ? n.apiPromise.then(u) : (d(), he.load().then(u));\n }), B(() => {\n var c;\n a.value = !1, r.value && ((c = o.value) == null || c.event.clearInstanceListeners(r.value));\n }), { mapRef: t, ready: s, map: r, api: o, mapTilesLoaded: a };\n }\n});\nconst te = (n, e) => {\n const t = n.__vccOpts || n;\n for (const [s, r] of e)\n t[s] = r;\n return t;\n}, ze = {\n ref: \"mapRef\",\n class: \"mapdiv\"\n};\nfunction Ge(n, e, t, s, r, o) {\n return Y(), X(\"div\", null, [\n ae(\"div\", ze, null, 512),\n Q(n.$slots, \"default\", Ze(Ne({ ready: n.ready, map: n.map, api: n.api, mapTilesLoaded: n.mapTilesLoaded })), void 0, !0)\n ]);\n}\nconst Et = /* @__PURE__ */ te(Ve, [[\"render\", Ge], [\"__scopeId\", \"data-v-dbf82c40\"]]);\nfunction He(n) {\n return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, \"default\") ? n.default : n;\n}\nvar We = function n(e, t) {\n if (e === t)\n return !0;\n if (e && t && typeof e == \"object\" && typeof t == \"object\") {\n if (e.constructor !== t.constructor)\n return !1;\n var s, r, o;\n if (Array.isArray(e)) {\n if (s = e.length, s != t.length)\n return !1;\n for (r = s; r-- !== 0; )\n if (!n(e[r], t[r]))\n return !1;\n return !0;\n }\n if (e.constructor === RegExp)\n return e.source === t.source && e.flags === t.flags;\n if (e.valueOf !== Object.prototype.valueOf)\n return e.valueOf() === t.valueOf();\n if (e.toString !== Object.prototype.toString)\n return e.toString() === t.toString();\n if (o = Object.keys(e), s = o.length, s !== Object.keys(t).length)\n return !1;\n for (r = s; r-- !== 0; )\n if (!Object.prototype.hasOwnProperty.call(t, o[r]))\n return !1;\n for (r = s; r-- !== 0; ) {\n var a = o[r];\n if (!n(e[a], t[a]))\n return !1;\n }\n return !0;\n }\n return e !== e && t !== t;\n};\nconst $ = /* @__PURE__ */ He(We), Ke = (n) => n === \"Marker\", Je = (n) => n === ee, D = (n, e, t, s) => {\n const r = y(), o = C(N, y()), a = C(U, y()), l = C(Le, y()), i = J(\n () => !!(l.value && a.value && (r.value instanceof a.value.Marker || r.value instanceof a.value[ee]))\n );\n return O(\n [o, t],\n (d, [u, c]) => {\n var p, m, f;\n const h = !$(t.value, c) || o.value !== u;\n !o.value || !a.value || !h || (r.value ? (r.value.setOptions(t.value), i.value && ((p = l.value) == null || p.removeMarker(r.value), (m = l.value) == null || m.addMarker(r.value))) : (Ke(n) ? r.value = I(\n new a.value[n](t.value)\n ) : Je(n) ? r.value = I(\n new a.value[n](t.value)\n ) : r.value = I(\n new a.value[n]({\n ...t.value,\n map: o.value\n })\n ), i.value ? (f = l.value) == null || f.addMarker(r.value) : r.value.setMap(o.value), e.forEach((g) => {\n var v;\n (v = r.value) == null || v.addListener(g, (w) => s(g, w));\n })));\n },\n {\n immediate: !0\n }\n ), B(() => {\n var d, u;\n r.value && ((d = a.value) == null || d.event.clearInstanceListeners(r.value), i.value ? (u = l.value) == null || u.removeMarker(r.value) : r.value.setMap(null));\n }), r;\n}, fe = [\n \"animation_changed\",\n \"click\",\n \"dblclick\",\n \"rightclick\",\n \"dragstart\",\n \"dragend\",\n \"drag\",\n \"mouseover\",\n \"mousedown\",\n \"mouseout\",\n \"mouseup\",\n \"draggable_changed\",\n \"clickable_changed\",\n \"contextmenu\",\n \"cursor_changed\",\n \"flat_changed\",\n \"rightclick\",\n \"zindex_changed\",\n \"icon_changed\",\n \"position_changed\",\n \"shape_changed\",\n \"title_changed\",\n \"visible_changed\"\n], Pt = P({\n name: \"Marker\",\n props: {\n options: {\n type: Object,\n required: !0\n }\n },\n emits: fe,\n setup(n, { emit: e, expose: t, slots: s }) {\n const r = Z(n, \"options\"), o = D(\"Marker\", fe, r, e);\n return G(xe, o), t({ marker: o }), () => {\n var a;\n return (a = s.default) == null ? void 0 : a.call(s);\n };\n }\n}), Ot = P({\n name: \"Polyline\",\n props: {\n options: {\n type: Object,\n required: !0\n }\n },\n emits: q,\n setup(n, { emit: e }) {\n const t = Z(n, \"options\");\n return { polyline: D(\"Polyline\", q, t, e) };\n },\n render: () => null\n}), xt = P({\n name: \"Polygon\",\n props: {\n options: {\n type: Object,\n required: !0\n }\n },\n emits: q,\n setup(n, { emit: e }) {\n const t = Z(n, \"options\");\n return { polygon: D(\"Polygon\", q, t, e) };\n },\n render: () => null\n}), me = q.concat([\"bounds_changed\"]), Lt = P({\n name: \"Rectangle\",\n props: {\n options: {\n type: Object,\n required: !0\n }\n },\n emits: me,\n setup(n, { emit: e }) {\n const t = Z(n, \"options\");\n return { rectangle: D(\"Rectangle\", me, t, e) };\n },\n render: () => null\n}), ge = q.concat([\"center_changed\", \"radius_changed\"]), St = P({\n name: \"Circle\",\n props: {\n options: {\n type: Object,\n required: !0\n }\n },\n emits: ge,\n setup(n, { emit: e }) {\n const t = Z(n, \"options\");\n return { circle: D(\"Circle\", ge, t, e) };\n },\n render: () => null\n}), Ye = P({\n props: {\n position: {\n type: String,\n required: !0\n },\n index: {\n type: Number,\n default: 1\n }\n },\n emits: [\"content:loaded\"],\n setup(n, { emit: e }) {\n const t = y(null), s = C(N, y()), r = C(U, y()), o = C(Se, y(!1)), a = O(\n [o, r, t],\n ([d, u, c]) => {\n u && d && c && (l(n.position), e(\"content:loaded\"), setTimeout(a, 0));\n },\n { immediate: !0 }\n ), l = (d) => {\n if (s.value && r.value && t.value) {\n const u = r.value.ControlPosition[d];\n s.value.controls[u].push(t.value);\n }\n }, i = (d) => {\n if (s.value && r.value) {\n let u = null;\n const c = r.value.ControlPosition[d];\n s.value.controls[c].forEach((h, p) => {\n h === t.value && (u = p);\n }), u !== null && s.value.controls[c].removeAt(u);\n }\n };\n return B(() => i(n.position)), O(\n () => n.position,\n (d, u) => {\n i(u), l(d);\n }\n ), O(\n () => n.index,\n (d) => {\n d && t.value && (t.value.index = n.index);\n }\n ), { controlRef: t };\n }\n});\nconst Xe = {\n ref: \"controlRef\",\n class: \"custom-control-wrapper\"\n};\nfunction Qe(n, e, t, s, r, o) {\n return Y(), X(\"div\", Xe, [\n Q(n.$slots, \"default\", {}, void 0, !0)\n ], 512);\n}\nconst It = /* @__PURE__ */ te(Ye, [[\"render\", Qe], [\"__scopeId\", \"data-v-d099a3a6\"]]), ve = [\"closeclick\", \"content_changed\", \"domready\", \"position_changed\", \"visible\", \"zindex_changed\"], et = P({\n inheritAttrs: !1,\n props: {\n options: {\n type: Object,\n default: () => ({})\n },\n modelValue: {\n type: Boolean\n }\n },\n emits: [...ve, \"update:modelValue\"],\n setup(n, { slots: e, emit: t, expose: s }) {\n const r = y(), o = y(), a = C(N, y()), l = C(U, y()), i = C(xe, y());\n let d, u = n.modelValue;\n const c = J(() => {\n var f;\n return (f = e.default) == null ? void 0 : f.call(e).some((g) => g.type !== Ee);\n }), h = (f) => {\n u = f, t(\"update:modelValue\", f);\n }, p = (f) => {\n r.value && (r.value.open({ map: a.value, anchor: i.value, ...f }), h(!0));\n }, m = () => {\n r.value && (r.value.close(), h(!1));\n };\n return Me(() => {\n O(\n [a, () => n.options],\n ([f, g], [v, w]) => {\n var E;\n const _ = !$(g, w) || a.value !== v;\n a.value && l.value && _ && (r.value ? (r.value.setOptions({\n ...g,\n content: c.value ? o.value : g.content\n }), i.value || p()) : (r.value = I(\n new l.value.InfoWindow({\n ...g,\n content: c.value ? o.value : g.content\n })\n ), i.value && (d = i.value.addListener(\"click\", () => {\n p();\n })), (!i.value || u) && p(), ve.forEach((b) => {\n var x;\n (x = r.value) == null || x.addListener(b, (M) => t(b, M));\n }), (E = r.value) == null || E.addListener(\"closeclick\", () => h(!1))));\n },\n {\n immediate: !0\n }\n ), O(\n () => n.modelValue,\n (f) => {\n f !== u && (f ? p() : m());\n }\n );\n }), B(() => {\n var f;\n d && d.remove(), r.value && ((f = l.value) == null || f.event.clearInstanceListeners(r.value), m());\n }), s({ infoWindow: r, open: p, close: m }), { infoWindow: r, infoWindowRef: o, hasSlotContent: c, open: p, close: m };\n }\n});\nconst tt = {\n key: 0,\n class: \"info-window-wrapper\"\n};\nfunction st(n, e, t, s, r, o) {\n return n.hasSlotContent ? (Y(), X(\"div\", tt, [\n ae(\"div\", Pe({ ref: \"infoWindowRef\" }, n.$attrs), [\n Q(n.$slots, \"default\", {}, void 0, !0)\n ], 16)\n ])) : Oe(\"\", !0);\n}\nconst At = /* @__PURE__ */ te(et, [[\"render\", st], [\"__scopeId\", \"data-v-cbe1707b\"]]), ye = [\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n], re = 1, V = 8;\nclass le {\n /**\n * Creates an index from raw `ArrayBuffer` data.\n * @param {ArrayBuffer} data\n */\n static from(e) {\n if (!(e instanceof ArrayBuffer))\n throw new Error(\"Data must be an instance of ArrayBuffer.\");\n const [t, s] = new Uint8Array(e, 0, 2);\n if (t !== 219)\n throw new Error(\"Data does not appear to be in a KDBush format.\");\n const r = s >> 4;\n if (r !== re)\n throw new Error(`Got v${r} data when expected v${re}.`);\n const o = ye[s & 15];\n if (!o)\n throw new Error(\"Unrecognized array type.\");\n const [a] = new Uint16Array(e, 2, 1), [l] = new Uint32Array(e, 4, 1);\n return new le(l, a, o, e);\n }\n /**\n * Creates an index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBuffer} [data] (For internal use only)\n */\n constructor(e, t = 64, s = Float64Array, r) {\n if (isNaN(e) || e < 0)\n throw new Error(`Unpexpected numItems value: ${e}.`);\n this.numItems = +e, this.nodeSize = Math.min(Math.max(+t, 2), 65535), this.ArrayType = s, this.IndexArrayType = e < 65536 ? Uint16Array : Uint32Array;\n const o = ye.indexOf(this.ArrayType), a = e * 2 * this.ArrayType.BYTES_PER_ELEMENT, l = e * this.IndexArrayType.BYTES_PER_ELEMENT, i = (8 - l % 8) % 8;\n if (o < 0)\n throw new Error(`Unexpected typed array class: ${s}.`);\n r && r instanceof ArrayBuffer ? (this.data = r, this.ids = new this.IndexArrayType(this.data, V, e), this.coords = new this.ArrayType(this.data, V + l + i, e * 2), this._pos = e * 2, this._finished = !0) : (this.data = new ArrayBuffer(V + a + l + i), this.ids = new this.IndexArrayType(this.data, V, e), this.coords = new this.ArrayType(this.data, V + l + i, e * 2), this._pos = 0, this._finished = !1, new Uint8Array(this.data, 0, 2).set([219, (re << 4) + o]), new Uint16Array(this.data, 2, 1)[0] = t, new Uint32Array(this.data, 4, 1)[0] = e);\n }\n /**\n * Add a point to the index.\n * @param {number} x\n * @param {number} y\n * @returns {number} An incremental index associated with the added item (starting from `0`).\n */\n add(e, t) {\n const s = this._pos >> 1;\n return this.ids[s] = s, this.coords[this._pos++] = e, this.coords[this._pos++] = t, s;\n }\n /**\n * Perform indexing of the added points.\n */\n finish() {\n const e = this._pos >> 1;\n if (e !== this.numItems)\n throw new Error(`Added ${e} items when expected ${this.numItems}.`);\n return ie(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0), this._finished = !0, this;\n }\n /**\n * Search the index for items within a given bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number[]} An array of indices correponding to the found items.\n */\n range(e, t, s, r) {\n if (!this._finished)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n const { ids: o, coords: a, nodeSize: l } = this, i = [0, o.length - 1, 0], d = [];\n for (; i.length; ) {\n const u = i.pop() || 0, c = i.pop() || 0, h = i.pop() || 0;\n if (c - h <= l) {\n for (let g = h; g <= c; g++) {\n const v = a[2 * g], w = a[2 * g + 1];\n v >= e && v <= s && w >= t && w <= r && d.push(o[g]);\n }\n continue;\n }\n const p = h + c >> 1, m = a[2 * p], f = a[2 * p + 1];\n m >= e && m <= s && f >= t && f <= r && d.push(o[p]), (u === 0 ? e <= m : t <= f) && (i.push(h), i.push(p - 1), i.push(1 - u)), (u === 0 ? s >= m : r >= f) && (i.push(p + 1), i.push(c), i.push(1 - u));\n }\n return d;\n }\n /**\n * Search the index for items within a given radius.\n * @param {number} qx\n * @param {number} qy\n * @param {number} r Query radius.\n * @returns {number[]} An array of indices correponding to the found items.\n */\n within(e, t, s) {\n if (!this._finished)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n const { ids: r, coords: o, nodeSize: a } = this, l = [0, r.length - 1, 0], i = [], d = s * s;\n for (; l.length; ) {\n const u = l.pop() || 0, c = l.pop() || 0, h = l.pop() || 0;\n if (c - h <= a) {\n for (let g = h; g <= c; g++)\n we(o[2 * g], o[2 * g + 1], e, t) <= d && i.push(r[g]);\n continue;\n }\n const p = h + c >> 1, m = o[2 * p], f = o[2 * p + 1];\n we(m, f, e, t) <= d && i.push(r[p]), (u === 0 ? e - s <= m : t - s <= f) && (l.push(h), l.push(p - 1), l.push(1 - u)), (u === 0 ? e + s >= m : t + s >= f) && (l.push(p + 1), l.push(c), l.push(1 - u));\n }\n return i;\n }\n}\nfunction ie(n, e, t, s, r, o) {\n if (r - s <= t)\n return;\n const a = s + r >> 1;\n Ie(n, e, a, s, r, o), ie(n, e, t, s, a - 1, 1 - o), ie(n, e, t, a + 1, r, 1 - o);\n}\nfunction Ie(n, e, t, s, r, o) {\n for (; r > s; ) {\n if (r - s > 600) {\n const d = r - s + 1, u = t - s + 1, c = Math.log(d), h = 0.5 * Math.exp(2 * c / 3), p = 0.5 * Math.sqrt(c * h * (d - h) / d) * (u - d / 2 < 0 ? -1 : 1), m = Math.max(s, Math.floor(t - u * h / d + p)), f = Math.min(r, Math.floor(t + (d - u) * h / d + p));\n Ie(n, e, t, m, f, o);\n }\n const a = e[2 * t + o];\n let l = s, i = r;\n for (z(n, e, s, t), e[2 * r + o] > a && z(n, e, s, r); l < i; ) {\n for (z(n, e, l, i), l++, i--; e[2 * l + o] < a; )\n l++;\n for (; e[2 * i + o] > a; )\n i--;\n }\n e[2 * s + o] === a ? z(n, e, s, i) : (i++, z(n, e, i, r)), i <= t && (s = i + 1), t <= i && (r = i - 1);\n }\n}\nfunction z(n, e, t, s) {\n ne(n, t, s), ne(e, 2 * t, 2 * s), ne(e, 2 * t + 1, 2 * s + 1);\n}\nfunction ne(n, e, t) {\n const s = n[e];\n n[e] = n[t], n[t] = s;\n}\nfunction we(n, e, t, s) {\n const r = n - t, o = e - s;\n return r * r + o * o;\n}\nconst rt = {\n minZoom: 0,\n // min zoom to generate clusters on\n maxZoom: 16,\n // max zoom level to cluster the points on\n minPoints: 2,\n // minimum points to form a cluster\n radius: 40,\n // cluster radius in pixels\n extent: 512,\n // tile extent (radius is calculated relative to it)\n nodeSize: 64,\n // size of the KD-tree leaf node, affects performance\n log: !1,\n // whether to log timing info\n // whether to generate numeric ids for input features (in vector tiles)\n generateId: !1,\n // a reduce function for calculating custom cluster properties\n reduce: null,\n // (accumulated, props) => { accumulated.sum += props.sum; }\n // properties to use for individual points when running the reducer\n map: (n) => n\n // props => ({sum: props.my_value})\n}, _e = Math.fround || ((n) => (e) => (n[0] = +e, n[0]))(new Float32Array(1)), A = 2, S = 3, oe = 4, L = 5, Ae = 6;\nclass Te {\n constructor(e) {\n this.options = Object.assign(Object.create(rt), e), this.trees = new Array(this.options.maxZoom + 1), this.stride = this.options.reduce ? 7 : 6, this.clusterProps = [];\n }\n load(e) {\n const { log: t, minZoom: s, maxZoom: r } = this.options;\n t && console.time(\"total time\");\n const o = `prepare ${e.length} points`;\n t && console.time(o), this.points = e;\n const a = [];\n for (let i = 0; i < e.length; i++) {\n const d = e[i];\n if (!d.geometry)\n continue;\n const [u, c] = d.geometry.coordinates, h = _e(W(u)), p = _e(K(c));\n a.push(\n h,\n p,\n // projected point coordinates\n 1 / 0,\n // the last zoom the point was processed at\n i,\n // index of the source feature in the original input array\n -1,\n // parent cluster id\n 1\n // number of points in a cluster\n ), this.options.reduce && a.push(0);\n }\n let l = this.trees[r + 1] = this._createTree(a);\n t && console.timeEnd(o);\n for (let i = r; i >= s; i--) {\n const d = +Date.now();\n l = this.trees[i] = this._createTree(this._cluster(l, i)), t && console.log(\"z%d: %d clusters in %dms\", i, l.numItems, +Date.now() - d);\n }\n return t && console.timeEnd(\"total time\"), this;\n }\n getClusters(e, t) {\n let s = ((e[0] + 180) % 360 + 360) % 360 - 180;\n const r = Math.max(-90, Math.min(90, e[1]));\n let o = e[2] === 180 ? 180 : ((e[2] + 180) % 360 + 360) % 360 - 180;\n const a = Math.max(-90, Math.min(90, e[3]));\n if (e[2] - e[0] >= 360)\n s = -180, o = 180;\n else if (s > o) {\n const c = this.getClusters([s, r, 180, a], t), h = this.getClusters([-180, r, o, a], t);\n return c.concat(h);\n }\n const l = this.trees[this._limitZoom(t)], i = l.range(W(s), K(a), W(o), K(r)), d = l.data, u = [];\n for (const c of i) {\n const h = this.stride * c;\n u.push(d[h + L] > 1 ? ke(d, h, this.clusterProps) : this.points[d[h + S]]);\n }\n return u;\n }\n getChildren(e) {\n const t = this._getOriginId(e), s = this._getOriginZoom(e), r = \"No cluster with the specified id.\", o = this.trees[s];\n if (!o)\n throw new Error(r);\n const a = o.data;\n if (t * this.stride >= a.length)\n throw new Error(r);\n const l = this.options.radius / (this.options.extent * Math.pow(2, s - 1)), i = a[t * this.stride], d = a[t * this.stride + 1], u = o.within(i, d, l), c = [];\n for (const h of u) {\n const p = h * this.stride;\n a[p + oe] === e && c.push(a[p + L] > 1 ? ke(a, p, this.clusterProps) : this.points[a[p + S]]);\n }\n if (c.length === 0)\n throw new Error(r);\n return c;\n }\n getLeaves(e, t, s) {\n t = t || 10, s = s || 0;\n const r = [];\n return this._appendLeaves(r, e, t, s, 0), r;\n }\n getTile(e, t, s) {\n const r = this.trees[this._limitZoom(e)], o = Math.pow(2, e), { extent: a, radius: l } = this.options, i = l / a, d = (s - i) / o, u = (s + 1 + i) / o, c = {\n features: []\n };\n return this._addTileFeatures(\n r.range((t - i) / o, d, (t + 1 + i) / o, u),\n r.data,\n t,\n s,\n o,\n c\n ), t === 0 && this._addTileFeatures(\n r.range(1 - i / o, d, 1, u),\n r.data,\n o,\n s,\n o,\n c\n ), t === o - 1 && this._addTileFeatures(\n r.range(0, d, i / o, u),\n r.data,\n -1,\n s,\n o,\n c\n ), c.features.length ? c : null;\n }\n getClusterExpansionZoom(e) {\n let t = this._getOriginZoom(e) - 1;\n for (; t <= this.options.maxZoom; ) {\n const s = this.getChildren(e);\n if (t++, s.length !== 1)\n break;\n e = s[0].properties.cluster_id;\n }\n return t;\n }\n _appendLeaves(e, t, s, r, o) {\n const a = this.getChildren(t);\n for (const l of a) {\n const i = l.properties;\n if (i && i.cluster ? o + i.point_count <= r ? o += i.point_count : o = this._appendLeaves(e, i.cluster_id, s, r, o) : o < r ? o++ : e.push(l), e.length === s)\n break;\n }\n return o;\n }\n _createTree(e) {\n const t = new le(e.length / this.stride | 0, this.options.nodeSize, Float32Array);\n for (let s = 0; s < e.length; s += this.stride)\n t.add(e[s], e[s + 1]);\n return t.finish(), t.data = e, t;\n }\n _addTileFeatures(e, t, s, r, o, a) {\n for (const l of e) {\n const i = l * this.stride, d = t[i + L] > 1;\n let u, c, h;\n if (d)\n u = $e(t, i, this.clusterProps), c = t[i], h = t[i + 1];\n else {\n const f = this.points[t[i + S]];\n u = f.properties;\n const [g, v] = f.geometry.coordinates;\n c = W(g), h = K(v);\n }\n const p = {\n type: 1,\n geometry: [[\n Math.round(this.options.extent * (c * o - s)),\n Math.round(this.options.extent * (h * o - r))\n ]],\n tags: u\n };\n let m;\n d || this.options.generateId ? m = t[i + S] : m = this.points[t[i + S]].id, m !== void 0 && (p.id = m), a.features.push(p);\n }\n }\n _limitZoom(e) {\n return Math.max(this.options.minZoom, Math.min(Math.floor(+e), this.options.maxZoom + 1));\n }\n _cluster(e, t) {\n const { radius: s, extent: r, reduce: o, minPoints: a } = this.options, l = s / (r * Math.pow(2, t)), i = e.data, d = [], u = this.stride;\n for (let c = 0; c < i.length; c += u) {\n if (i[c + A] <= t)\n continue;\n i[c + A] = t;\n const h = i[c], p = i[c + 1], m = e.within(i[c], i[c + 1], l), f = i[c + L];\n let g = f;\n for (const v of m) {\n const w = v * u;\n i[w + A] > t && (g += i[w + L]);\n }\n if (g > f && g >= a) {\n let v = h * f, w = p * f, _, E = -1;\n const b = ((c / u | 0) << 5) + (t + 1) + this.points.length;\n for (const x of m) {\n const M = x * u;\n if (i[M + A] <= t)\n continue;\n i[M + A] = t;\n const F = i[M + L];\n v += i[M] * F, w += i[M + 1] * F, i[M + oe] = b, o && (_ || (_ = this._map(i, c, !0), E = this.clusterProps.length, this.clusterProps.push(_)), o(_, this._map(i, M)));\n }\n i[c + oe] = b, d.push(v / g, w / g, 1 / 0, b, -1, g), o && d.push(E);\n } else {\n for (let v = 0; v < u; v++)\n d.push(i[c + v]);\n if (g > 1)\n for (const v of m) {\n const w = v * u;\n if (!(i[w + A] <= t)) {\n i[w + A] = t;\n for (let _ = 0; _ < u; _++)\n d.push(i[w + _]);\n }\n }\n }\n }\n return d;\n }\n // get index of the point from which the cluster originated\n _getOriginId(e) {\n return e - this.points.length >> 5;\n }\n // get zoom of the point from which the cluster originated\n _getOriginZoom(e) {\n return (e - this.points.length) % 32;\n }\n _map(e, t, s) {\n if (e[t + L] > 1) {\n const a = this.clusterProps[e[t + Ae]];\n return s ? Object.assign({}, a) : a;\n }\n const r = this.points[e[t + S]].properties, o = this.options.map(r);\n return s && o === r ? Object.assign({}, o) : o;\n }\n}\nfunction ke(n, e, t) {\n return {\n type: \"Feature\",\n id: n[e + S],\n properties: $e(n, e, t),\n geometry: {\n type: \"Point\",\n coordinates: [nt(n[e]), ot(n[e + 1])]\n }\n };\n}\nfunction $e(n, e, t) {\n const s = n[e + L], r = s >= 1e4 ? `${Math.round(s / 1e3)}k` : s >= 1e3 ? `${Math.round(s / 100) / 10}k` : s, o = n[e + Ae], a = o === -1 ? {} : Object.assign({}, t[o]);\n return Object.assign(a, {\n cluster: !0,\n cluster_id: n[e + S],\n point_count: s,\n point_count_abbreviated: r\n });\n}\nfunction W(n) {\n return n / 360 + 0.5;\n}\nfunction K(n) {\n const e = Math.sin(n * Math.PI / 180), t = 0.5 - 0.25 * Math.log((1 + e) / (1 - e)) / Math.PI;\n return t < 0 ? 0 : t > 1 ? 1 : t;\n}\nfunction nt(n) {\n return (n - 0.5) * 360;\n}\nfunction ot(n) {\n const e = (180 - n * 360) * Math.PI / 180;\n return 360 * Math.atan(Math.exp(e)) / Math.PI - 90;\n}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction ce(n, e) {\n var t = {};\n for (var s in n)\n Object.prototype.hasOwnProperty.call(n, s) && e.indexOf(s) < 0 && (t[s] = n[s]);\n if (n != null && typeof Object.getOwnPropertySymbols == \"function\")\n for (var r = 0, s = Object.getOwnPropertySymbols(n); r < s.length; r++)\n e.indexOf(s[r]) < 0 && Object.prototype.propertyIsEnumerable.call(n, s[r]) && (t[s[r]] = n[s[r]]);\n return t;\n}\nclass k {\n static isAdvancedMarkerAvailable(e) {\n return google.maps.marker && e.getMapCapabilities().isAdvancedMarkersAvailable === !0;\n }\n static isAdvancedMarker(e) {\n return google.maps.marker && e instanceof google.maps.marker.AdvancedMarkerElement;\n }\n static setMap(e, t) {\n this.isAdvancedMarker(e) ? e.map = t : e.setMap(t);\n }\n static getPosition(e) {\n if (this.isAdvancedMarker(e)) {\n if (e.position) {\n if (e.position instanceof google.maps.LatLng)\n return e.position;\n if (e.position.lat && e.position.lng)\n return new google.maps.LatLng(e.position.lat, e.position.lng);\n }\n return new google.maps.LatLng(null);\n }\n return e.getPosition();\n }\n static getVisible(e) {\n return this.isAdvancedMarker(e) ? !0 : e.getVisible();\n }\n}\nclass H {\n constructor({ markers: e, position: t }) {\n this.markers = e, t && (t instanceof google.maps.LatLng ? this._position = t : this._position = new google.maps.LatLng(t));\n }\n get bounds() {\n if (this.markers.length === 0 && !this._position)\n return;\n const e = new google.maps.LatLngBounds(this._position, this._position);\n for (const t of this.markers)\n e.extend(k.getPosition(t));\n return e;\n }\n get position() {\n return this._position || this.bounds.getCenter();\n }\n /**\n * Get the count of **visible** markers.\n */\n get count() {\n return this.markers.filter((e) => k.getVisible(e)).length;\n }\n /**\n * Add a marker to the cluster.\n */\n push(e) {\n this.markers.push(e);\n }\n /**\n * Cleanup references and remove marker from map.\n */\n delete() {\n this.marker && (k.setMap(this.marker, null), this.marker = void 0), this.markers.length = 0;\n }\n}\nconst it = (n, e, t, s) => {\n const r = Re(n.getBounds(), e, s);\n return t.filter((o) => r.contains(k.getPosition(o)));\n}, Re = (n, e, t) => {\n const { northEast: s, southWest: r } = at(n, e), o = lt({ northEast: s, southWest: r }, t);\n return ct(o, e);\n}, Ce = (n, e, t) => {\n const s = Re(n, e, t), r = s.getNorthEast(), o = s.getSouthWest();\n return [o.lng(), o.lat(), r.lng(), r.lat()];\n}, at = (n, e) => ({\n northEast: e.fromLatLngToDivPixel(n.getNorthEast()),\n southWest: e.fromLatLngToDivPixel(n.getSouthWest())\n}), lt = ({ northEast: n, southWest: e }, t) => (n.x += t, n.y -= t, e.x -= t, e.y += t, { northEast: n, southWest: e }), ct = ({ northEast: n, southWest: e }, t) => {\n const s = t.fromDivPixelToLatLng(e), r = t.fromDivPixelToLatLng(n);\n return new google.maps.LatLngBounds(s, r);\n};\nclass je {\n constructor({ maxZoom: e = 16 }) {\n this.maxZoom = e;\n }\n /**\n * Helper function to bypass clustering based upon some map state such as\n * zoom, number of markers, etc.\n *\n * ```typescript\n * cluster({markers, map}: AlgorithmInput): Cluster[] {\n * if (shouldBypassClustering(map)) {\n * return this.noop({markers})\n * }\n * }\n * ```\n */\n noop({ markers: e }) {\n return dt(e);\n }\n}\nclass ut extends je {\n constructor(e) {\n var { viewportPadding: t = 60 } = e, s = ce(e, [\"viewportPadding\"]);\n super(s), this.viewportPadding = 60, this.viewportPadding = t;\n }\n calculate({ markers: e, map: t, mapCanvasProjection: s }) {\n return t.getZoom() >= this.maxZoom ? {\n clusters: this.noop({\n markers: e\n }),\n changed: !1\n } : {\n clusters: this.cluster({\n markers: it(t, s, e, this.viewportPadding),\n map: t,\n mapCanvasProjection: s\n })\n };\n }\n}\nconst dt = (n) => n.map((t) => new H({\n position: k.getPosition(t),\n markers: [t]\n}));\nclass ht extends je {\n constructor(e) {\n var { maxZoom: t, radius: s = 60 } = e, r = ce(e, [\"maxZoom\", \"radius\"]);\n super({ maxZoom: t }), this.state = { zoom: -1 }, this.superCluster = new Te(Object.assign({ maxZoom: this.maxZoom, radius: s }, r));\n }\n calculate(e) {\n let t = !1;\n const s = { zoom: e.map.getZoom() };\n if (!$(e.markers, this.markers)) {\n t = !0, this.markers = [...e.markers];\n const r = this.markers.map((o) => {\n const a = k.getPosition(o);\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: [a.lng(), a.lat()]\n },\n properties: { marker: o }\n };\n });\n this.superCluster.load(r);\n }\n return t || (this.state.zoom <= this.maxZoom || s.zoom <= this.maxZoom) && (t = !$(this.state, s)), this.state = s, t && (this.clusters = this.cluster(e)), { clusters: this.clusters, changed: t };\n }\n cluster({ map: e }) {\n return this.superCluster.getClusters([-180, -90, 180, 90], Math.round(e.getZoom())).map((t) => this.transformCluster(t));\n }\n transformCluster({ geometry: { coordinates: [e, t] }, properties: s }) {\n if (s.cluster)\n return new H({\n markers: this.superCluster.getLeaves(s.cluster_id, 1 / 0).map((o) => o.properties.marker),\n position: { lat: t, lng: e }\n });\n const r = s.marker;\n return new H({\n markers: [r],\n position: k.getPosition(r)\n });\n }\n}\nclass pt extends ut {\n constructor(e) {\n var { maxZoom: t, radius: s = 60, viewportPadding: r = 60 } = e, o = ce(e, [\"maxZoom\", \"radius\", \"viewportPadding\"]);\n super({ maxZoom: t, viewportPadding: r }), this.superCluster = new Te(Object.assign({ maxZoom: this.maxZoom, radius: s }, o)), this.state = { zoom: -1, view: [0, 0, 0, 0] };\n }\n calculate(e) {\n const t = {\n zoom: Math.round(e.map.getZoom()),\n view: Ce(e.map.getBounds(), e.mapCanvasProjection, this.viewportPadding)\n };\n let s = !$(this.state, t);\n if (!$(e.markers, this.markers)) {\n s = !0, this.markers = [...e.markers];\n const r = this.markers.map((o) => {\n const a = k.getPosition(o);\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: [a.lng(), a.lat()]\n },\n properties: { marker: o }\n };\n });\n this.superCluster.load(r);\n }\n return s && (this.clusters = this.cluster(e), this.state = t), { clusters: this.clusters, changed: s };\n }\n cluster({ map: e, mapCanvasProjection: t }) {\n const s = {\n zoom: Math.round(e.getZoom()),\n view: Ce(e.getBounds(), t, this.viewportPadding)\n };\n return this.superCluster.getClusters(s.view, s.zoom).map((r) => this.transformCluster(r));\n }\n transformCluster({ geometry: { coordinates: [e, t] }, properties: s }) {\n if (s.cluster)\n return new H({\n markers: this.superCluster.getLeaves(s.cluster_id, 1 / 0).map((o) => o.properties.marker),\n position: { lat: t, lng: e }\n });\n const r = s.marker;\n return new H({\n markers: [r],\n position: k.getPosition(r)\n });\n }\n}\nclass ft {\n constructor(e, t) {\n this.markers = { sum: e.length };\n const s = t.map((o) => o.count), r = s.reduce((o, a) => o + a, 0);\n this.clusters = {\n count: t.length,\n markers: {\n mean: r / t.length,\n sum: r,\n min: Math.min(...s),\n max: Math.max(...s)\n }\n };\n }\n}\nclass mt {\n /**\n * The default render function for the library used by {@link MarkerClusterer}.\n *\n * Currently set to use the following:\n *\n * ```typescript\n * // change color if this cluster has more markers than the mean cluster\n * const color =\n * count > Math.max(10, stats.clusters.markers.mean)\n * ? \"#ff0000\"\n * : \"#0000ff\";\n *\n * // create svg url with fill color\n * const svg = window.btoa(`\n * <svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\">\n * <circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n * <circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n * <circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n * <circle cx=\"120\" cy=\"120\" opacity=\".1\" r=\"130\" />\n * </svg>`);\n *\n * // create marker using svg icon\n * return new google.maps.Marker({\n * position,\n * icon: {\n * url: `data:image/svg+xml;base64,${svg}`,\n * scaledSize: new google.maps.Size(45, 45),\n * },\n * label: {\n * text: String(count),\n * color: \"rgba(255,255,255,0.9)\",\n * fontSize: \"12px\",\n * },\n * // adjust zIndex to be above other markers\n * zIndex: 1000 + count,\n * });\n * ```\n */\n render({ count: e, position: t }, s, r) {\n const a = `<svg fill=\"${e > Math.max(10, s.clusters.markers.mean) ? \"#ff0000\" : \"#0000ff\"}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"50\" height=\"50\">\n<circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n<text x=\"50%\" y=\"50%\" style=\"fill:#fff\" text-anchor=\"middle\" font-size=\"50\" dominant-baseline=\"middle\" font-family=\"roboto,arial,sans-serif\">${e}</text>\n</svg>`, l = `Cluster of ${e} markers`, i = Number(google.maps.Marker.MAX_ZINDEX) + e;\n if (k.isAdvancedMarkerAvailable(r)) {\n const u = document.createElement(\"div\");\n u.innerHTML = a;\n const c = u.firstElementChild;\n c.setAttribute(\"transform\", \"translate(0 25)\");\n const h = {\n map: r,\n position: t,\n zIndex: i,\n title: l,\n content: c\n };\n return new google.maps.marker.AdvancedMarkerElement(h);\n }\n const d = {\n position: t,\n zIndex: i,\n title: l,\n icon: {\n url: `data:image/svg+xml;base64,${btoa(a)}`,\n anchor: new google.maps.Point(25, 25)\n }\n };\n return new google.maps.Marker(d);\n }\n}\nfunction gt(n, e) {\n for (let t in e.prototype)\n n.prototype[t] = e.prototype[t];\n}\nclass ue {\n constructor() {\n gt(ue, google.maps.OverlayView);\n }\n}\nvar j;\n(function(n) {\n n.CLUSTERING_BEGIN = \"clusteringbegin\", n.CLUSTERING_END = \"clusteringend\", n.CLUSTER_CLICK = \"click\";\n})(j || (j = {}));\nconst vt = (n, e, t) => {\n t.fitBounds(e.bounds);\n};\nclass yt extends ue {\n constructor({ map: e, markers: t = [], algorithmOptions: s = {}, algorithm: r = new ht(s), renderer: o = new mt(), onClusterClick: a = vt }) {\n super(), this.markers = [...t], this.clusters = [], this.algorithm = r, this.renderer = o, this.onClusterClick = a, e && this.setMap(e);\n }\n addMarker(e, t) {\n this.markers.includes(e) || (this.markers.push(e), t || this.render());\n }\n addMarkers(e, t) {\n e.forEach((s) => {\n this.addMarker(s, !0);\n }), t || this.render();\n }\n removeMarker(e, t) {\n const s = this.markers.indexOf(e);\n return s === -1 ? !1 : (k.setMap(e, null), this.markers.splice(s, 1), t || this.render(), !0);\n }\n removeMarkers(e, t) {\n let s = !1;\n return e.forEach((r) => {\n s = this.removeMarker(r, !0) || s;\n }), s && !t && this.render(), s;\n }\n clearMarkers(e) {\n this.markers.length = 0, e || this.render();\n }\n /**\n * Recalculates and draws all the marker clusters.\n */\n render() {\n const e = this.getMap();\n if (e instanceof google.maps.Map && e.getProjection()) {\n google.maps.event.trigger(this, j.CLUSTERING_BEGIN, this);\n const { clusters: t, changed: s } = this.algorithm.calculate({\n markers: this.markers,\n map: e,\n mapCanvasProjection: this.getProjection()\n });\n if (s || s == null) {\n const r = /* @__PURE__ */ new Set();\n for (const a of t)\n a.markers.length == 1 && r.add(a.markers[0]);\n const o = [];\n for (const a of this.clusters)\n a.marker != null && (a.markers.length == 1 ? r.has(a.marker) || k.setMap(a.marker, null) : o.push(a.marker));\n this.clusters = t, this.renderClusters(), requestAnimationFrame(() => o.forEach((a) => k.setMap(a, null)));\n }\n google.maps.event.trigger(this, j.CLUSTERING_END, this);\n }\n }\n onAdd() {\n this.idleListener = this.getMap().addListener(\"idle\", this.render.bind(this)), this.render();\n }\n onRemove() {\n google.maps.event.removeListener(this.idleListener), this.reset();\n }\n reset() {\n this.markers.forEach((e) => k.setMap(e, null)), this.clusters.forEach((e) => e.delete()), this.clusters = [];\n }\n renderClusters() {\n const e = new ft(this.markers, this.clusters), t = this.getMap();\n this.clusters.forEach((s) => {\n s.markers.length === 1 ? s.marker = s.markers[0] : (s.marker = this.renderer.render(s, e, t), s.markers.forEach((r) => k.setMap(r, null)), this.onClusterClick && s.marker.addListener(\n \"click\",\n /* istanbul ignore next */\n (r) => {\n google.maps.event.trigger(this, j.CLUSTER_CLICK, s), this.onClusterClick(r, s, t);\n }\n )), k.setMap(s.marker, t);\n });\n }\n}\nconst be = Object.values(j), Tt = P({\n name: \"MarkerCluster\",\n props: {\n options: {\n type: Object,\n default: () => ({})\n }\n },\n emits: be,\n setup(n, { emit: e, expose: t, slots: s }) {\n const r = y(), o = C(N, y()), a = C(U, y());\n return G(Le, r), O(\n o,\n () => {\n o.value && (r.value = I(\n new yt({\n map: o.value,\n // Better perf than the default `SuperClusterAlgorithm`. See:\n // https://github.com/googlemaps/js-markerclusterer/pull/640\n algorithm: new pt(n.options.algorithmOptions ?? {}),\n ...n.options\n })\n ), be.forEach((l) => {\n var i;\n (i = r.value) == null || i.addListener(l, (d) => e(l, d));\n }));\n },\n {\n immediate: !0\n }\n ), B(() => {\n var l;\n r.value && ((l = a.value) == null || l.event.clearInstanceListeners(r.value), r.value.clearMarkers(), r.value.setMap(null));\n }), t({ markerCluster: r }), () => {\n var l;\n return (l = s.default) == null ? void 0 : l.call(s);\n };\n }\n}), wt = P({\n inheritAttrs: !1,\n props: {\n options: {\n type: Object,\n required: !0\n }\n },\n setup(n, { slots: e, emit: t, expose: s }) {\n const r = y(), o = J(() => {\n var i;\n return (i = e.default) == null ? void 0 : i.call(e).some((d) => d.type !== Ee);\n }), a = J(() => ({\n ...n.options,\n element: r.value\n })), l = D(ee, [], a, t);\n return s({\n customMarker: l\n }), { customMarkerRef: r, customMarker: l, hasSlotContent: o };\n }\n});\nconst _t = {\n key: 0,\n class: \"custom-marker-wrapper\"\n};\nfunction kt(n, e, t, s, r, o) {\n return n.hasSlotContent ? (Y(), X(\"div\", _t, [\n ae(\"div\", Pe({\n ref: \"customMarkerRef\",\n style: { cursor: n.$attrs.onClick ? \"pointer\" : void 0 }\n }, n.$attrs), [\n Q(n.$slots, \"default\", {}, void 0, !0)\n ], 16)\n ])) : Oe(\"\", !0);\n}\nconst $t = /* @__PURE__ */ te(wt, [[\"render\", kt], [\"__scopeId\", \"data-v-2d2d343a\"]]), Rt = P({\n name: \"HeatmapLayer\",\n props: {\n options: {\n type: Object,\n default: () => ({})\n }\n },\n setup(n) {\n const e = y(), t = C(N, y()), s = C(U, y());\n return O(\n [t, () => n.options],\n ([r, o], [a, l]) => {\n var d;\n const i = !$(o, l) || t.value !== a;\n if (t.value && s.value && i) {\n const u = structuredClone(o);\n if (u.data && !(u.data instanceof s.value.MVCArray)) {\n const c = s.value.LatLng;\n u.data = (d = u.data) == null ? void 0 : d.map((h) => h instanceof c || \"location\" in h && (h.location instanceof c || h.location === null) ? h : \"location\" in h ? { ...h, location: new c(h.location) } : new c(h));\n }\n e.value ? e.value.setOptions(u) : e.value = I(\n new s.value.visualization.HeatmapLayer({\n ...u,\n map: t.value\n })\n );\n }\n },\n { immediate: !0 }\n ), B(() => {\n e.value && e.value.setMap(null);\n }), { heatmapLayer: e };\n },\n render: () => null\n});\nexport {\n St as Circle,\n It as CustomControl,\n $t as CustomMarker,\n Et as GoogleMap,\n Rt as HeatmapLayer,\n At as InfoWindow,\n Pt as Marker,\n Tt as MarkerCluster,\n xt as Polygon,\n Ot as Polyline,\n Lt as Rectangle\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEqual = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual);\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback&loading=async`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.loading) {\n // do nothing but wait\n return;\n }\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader. \" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n this.loading = true;\n this.setScript();\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.mjs.map\n","<script setup lang=\"ts\">\nimport { CustomMarker } from 'vue3-google-map'\n\nimport type { DeliveryDataAddress } from '@/store/delivery/delivery.types'\n\nimport type { IGoogleCoords } from '@/types/mapServices'\n\nimport BalloonMarker from '@/components/Services/Balloons/BalloonMarker.vue'\n\nimport type { PolygonProperties } from '@/api/modules/delivery/types'\n\ntype Props = {\n clickedMarkerCoordinates: IGoogleCoords\n deliveryAddressDetails: PolygonProperties | null\n selectedAddress: DeliveryDataAddress | null\n}\n\nconst props = defineProps<Props>()\n\nconst optionsMarker = computed((): google.maps.CustomMarkerOptions => {\n return {\n position: props.clickedMarkerCoordinates,\n anchorPoint: 'BOTTOM_CENTER',\n }\n})\n</script>\n\n<template>\n <custom-marker :options=\"optionsMarker\">\n <balloon-marker\n :details=\"deliveryAddressDetails\"\n :selected-address=\"selectedAddress\"\n />\n </custom-marker>\n</template>\n","export default \"__VITE_ASSET__B8p3DW6W__\"","export default \"__VITE_ASSET__XWITadkw__\"","<script setup lang=\"ts\">\nimport { Marker as GoogleMarker } from 'vue3-google-map'\n\nimport {\n GoogleClickEvent,\n IGoogleCoords,\n TypesEntity,\n} from '@/types/mapServices'\n\nimport type { PointProperties } from '@/api/modules/delivery/types'\nimport closeMarkerImage from 'assets/images/closed-marker.svg'\nimport openMarkerImage from 'assets/images/opened-marker.svg'\n\ntype Props = {\n points: PointProperties[]\n clickedRestaurant: PointProperties | null\n}\n\nwithDefaults(defineProps<Props>(), {\n points: () => [],\n})\n\nconst emits = defineEmits(['clickedToMapOfElement'])\n\n// Определяем опции для точки на карте\nconst generateOptionOfPoint = (marker: PointProperties) => {\n return {\n position: {\n lat: marker.coordinates[0],\n lng: marker.coordinates[1],\n },\n icon: marker.is_open ? openMarkerImage : closeMarkerImage,\n }\n}\n\nconst clickedPoint = (marker: PointProperties, event: GoogleClickEvent) => {\n const markerCoords: IGoogleCoords = {\n lat: event.latLng.lat(),\n lng: event.latLng.lng(),\n }\n\n emits('clickedToMapOfElement', {\n type: TypesEntity.MARKER,\n coords: markerCoords,\n point: marker,\n })\n}\n</script>\n\n<template>\n <google-marker\n v-for=\"(marker, index) in points\"\n :key=\"`point-${index}-${marker.id}`\"\n :options=\"generateOptionOfPoint(marker)\"\n @click=\"clickedPoint(marker, $event)\"\n />\n</template>\n","<script setup lang=\"ts\">\n// Components of Module\nimport { Polygon as GooglePolygon } from 'vue3-google-map'\n\n// Types\nimport { AreaProperties } from '@/api/modules/delivery/types'\nimport {\n GoogleClickEvent,\n IGoogleCoords,\n TypesEntity,\n} from '@/types/mapServices'\n\ntype Props = {\n areas: AreaProperties[]\n}\n\nwithDefaults(defineProps<Props>(), {\n areas: () => [],\n})\n\nconst emits = defineEmits(['clickedToMapOfElement'])\n\n// Генерация объекта для полигона\nconst transformCoords = (area: AreaProperties) => {\n return area.polygon[0].map((coordinate) => ({\n lat: coordinate[0],\n lng: coordinate[1],\n }))\n}\n\nconst generateOptionPolygon = (area: AreaProperties) => {\n return {\n strokeOpacity: 0,\n fillOpacity: 0.3,\n fillColor: area.properties.stroke,\n strokeColor: area.properties.stroke,\n paths: [...transformCoords(area)],\n }\n}\n\nconst clickedPolygon = (event: GoogleClickEvent) => {\n const clickedCoords: IGoogleCoords = {\n lat: event.latLng.lat(),\n lng: event.latLng.lng(),\n }\n\n emits('clickedToMapOfElement', {\n type: TypesEntity.FEATURE,\n coords: clickedCoords,\n })\n}\n</script>\n\n<template>\n <google-polygon\n v-for=\"area in areas\"\n :key=\"area.id\"\n :options=\"generateOptionPolygon(area)\"\n @click=\"clickedPolygon\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { GoogleMap, InfoWindow } from 'vue3-google-map'\n\nimport { Loader } from '@googlemaps/js-api-loader'\nimport { findOfDeliveryArea } from '@/utils/findOfDeliveryArea'\n\nimport type { ServiceSettings } from '@/store/city/city.types'\nimport type { DeliveryDataAddress } from '@/store/delivery/delivery.types'\n\nimport {\n EmitDataOfMap,\n GoogleClickEvent,\n IGoogleCoords,\n TypesEntity,\n} from '@/types/mapServices'\n\nimport GoogleMapClickedMarker from '@/components/Services/GoogleMap/GoogleMapClickedMarker.vue'\nimport GoogleMapPoints from '@/components/Services/GoogleMap/GoogleMapPoints.vue'\nimport GoogleMapPolygons from '@/components/Services/GoogleMap/GoogleMapPolygons.vue'\n\nimport type {\n AreaProperties,\n LatLng,\n PointProperties,\n PolygonProperties,\n} from '@/api/modules/delivery/types'\n\nconst LANGUAGE_GOOGLE_MAP = 'ru'\n\ntype Props = {\n settings: ServiceSettings\n areas: AreaProperties[]\n points: PointProperties[]\n clickedRestaurant: PointProperties | null\n selectedAddress: DeliveryDataAddress\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n areas: () => [],\n points: () => [],\n})\n\nconst emit = defineEmits([\n 'onClickMap',\n 'onClickRestaurant',\n 'onUpdateCenterMap',\n 'onUpdateDistance',\n])\n\n// Координаты маркера на карте\nconst clickedMarkerCoordinates = ref<IGoogleCoords | null>(null)\n\n// Информация доставке адреса\nconst deliveryAddressDetails = ref<PolygonProperties | null>(null)\n\nconst refGoogleMap = ref<InstanceType<typeof GoogleMap>>()\n\nconst baloonOfRestaurant = ref<InstanceType<typeof InfoWindow>>()\n\nconst loaderGoogleInstance = new Loader({\n apiKey: props.settings.api_key,\n language: LANGUAGE_GOOGLE_MAP,\n})\n\nconst promiseLoadMap = loaderGoogleInstance.load()\n\nconst positionCenterMap: google.maps.LatLngLiteral = {\n lat: props.settings.coords[0],\n lng: props.settings.coords[1],\n}\n\nconst optionsInfoWindow = computed(() => {\n if (!props.clickedRestaurant) return\n\n const [lat, lng] = props.clickedRestaurant.coordinates\n\n return {\n position: { lat, lng },\n content: props.clickedRestaurant.address,\n }\n})\n\n// Сетим данные, если выбран ресторан из списка\nwatch(\n () => props.clickedRestaurant,\n (newPoint: PointProperties | null) => {\n if (!newPoint) return\n\n const [lat, lng] = newPoint.coordinates\n\n const coords = { lat, lng }\n\n setLocationMap(coords)\n\n emit('onUpdateCenterMap')\n\n baloonOfRestaurant?.value?.open()\n },\n)\n\n// Обновляем карту если обновился autocomplete\nwatch(\n () => props.selectedAddress?.coordinates,\n (newCoordsOfAddress: LatLng) => {\n const coords = {\n lat: newCoordsOfAddress[1],\n lng: newCoordsOfAddress[0],\n }\n\n setLocationMap(coords)\n\n clickedMarkerCoordinates.value = coords\n\n emit('onUpdateDistance', [coords.lat, coords.lng])\n\n // TO-DO: В будущем вынести рассчет в WebWorker\n updateBaloonOfMarker(newCoordsOfAddress)\n },\n)\n\nconst setLocationMap = (coords: IGoogleCoords, zoom: number = 16) => {\n refGoogleMap?.value?.map?.panTo(coords)\n refGoogleMap?.value?.map?.setZoom(zoom)\n}\n\nconst updateBaloonOfMarker = (coords: LatLng) => {\n const polygon = findOfDeliveryArea(props.areas, coords)\n\n deliveryAddressDetails.value = polygon ? polygon.properties : null\n}\n\n// Handle клика вне зоны доставки\nconst clickedToMap = (event: GoogleClickEvent) => {\n deliveryAddressDetails.value = null\n\n clickedMarkerCoordinates.value = {\n lat: event.latLng.lat(),\n lng: event.latLng.lng(),\n }\n\n emit('onClickMap', [event.latLng.lng(), event.latLng.lat()])\n}\n\n// Handle клика маркера или точки в зоне доставки\nconst clickedToMapOfElement = (event: EmitDataOfMap) => {\n setLocationMap(event.coords)\n\n switch (event.type) {\n case TypesEntity.MARKER:\n if (!event.point) break\n\n baloonOfRestaurant.value?.open()\n\n emit('onClickRestaurant', event.point)\n\n break\n case TypesEntity.FEATURE:\n emit('onClickMap', [event.coords.lng, event.coords.lat])\n\n clickedMarkerCoordinates.value = event.coords\n\n updateBaloonOfMarker([event.coords.lng, event.coords.lat])\n\n break\n\n default:\n break\n }\n}\n</script>\n\n<template>\n <google-map\n ref=\"refGoogleMap\"\n :api-promise=\"promiseLoadMap\"\n :center=\"positionCenterMap\"\n :zoom=\"settings.zoom\"\n :fullscreen-control=\"false\"\n :map-type-control=\"false\"\n :pan-control=\"false\"\n :scale-control=\"false\"\n @click=\"clickedToMap\"\n >\n <google-map-points\n v-if=\"points.length\"\n :points=\"points\"\n :clicked-restaurant=\"clickedRestaurant\"\n @clicked-to-map-of-element=\"clickedToMapOfElement\"\n />\n\n <google-map-polygons\n v-if=\"areas\"\n :areas=\"areas\"\n @clicked-to-map-of-element=\"clickedToMapOfElement\"\n />\n\n <info-window\n v-if=\"clickedRestaurant\"\n ref=\"baloonOfRestaurant\"\n :options=\"optionsInfoWindow\"\n />\n\n <google-map-clicked-marker\n v-if=\"clickedMarkerCoordinates\"\n :delivery-address-details=\"deliveryAddressDetails\"\n :clicked-marker-coordinates=\"clickedMarkerCoordinates\"\n :selected-address=\"selectedAddress\"\n />\n </google-map>\n</template>\n","<script setup lang=\"ts\">\nimport {\n YandexMap,\n YandexMapControls,\n YandexMapDefaultFeaturesLayer,\n YandexMapDefaultSchemeLayer,\n YandexMapListener,\n YandexMapZoomControl,\n} from 'vue-yandex-maps'\n\nimport {\n BehaviorMapEventHandler,\n DomEventHandler,\n LngLat,\n LngLatBounds,\n YMap,\n YMapControlsProps,\n} from '@yandex/ymaps3-types'\nimport { findOfDeliveryArea } from '@/utils/findOfDeliveryArea'\n\nimport { UPDATE_AREAS } from '@/constants/delivery'\n\nimport { ServiceSettings } from '@/store/city/city.types'\nimport { useDeliveryStore } from '@/store/delivery/delivery'\nimport {\n BalloonType,\n type DeliveryDataAddress,\n} from '@/store/delivery/delivery.types'\nimport { useToggleStore } from '@/store/toggle/toggle'\n\nimport {\n AreaProperties,\n DragCoordinates,\n LatLng,\n PointProperties,\n PolygonProperties,\n} from '@/api/modules/delivery/types'\nimport { TypesEntity } from '@/types/mapServices'\n\nimport YandexMapClickedMarker from '@/components/Services/YandexMap/YandexMapClickedMarker.vue'\nimport YandexMapPoints from '@/components/Services/YandexMap/YandexMapPoints.vue'\nimport YandexMapPolygons from '@/components/Services/YandexMap/YandexMapPolygons.vue'\n\n/* eslint-disable */\nimport { debounce } from 'throttle-debounce'\n\ntype Props = {\n settings: ServiceSettings\n width: string\n areas: AreaProperties[]\n points: PointProperties[]\n clickedRestaurant: PointProperties | null\n selectedAddress: DeliveryDataAddress\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n areas: () => [],\n points: () => [],\n isDeliveryCourier: true,\n})\n\nconst emit = defineEmits([\n 'onClickToMap',\n 'onClickRestaurant',\n 'onUpdateCenterMap',\n])\n\nconst deliveryStore = useDeliveryStore()\nconst { newFetchingApiEnabled } = useToggleStore()\n\nconst { isMobileOrTablet } = useDevice()\n\n// Модель карты\nconst yandexMapData = shallowRef<null | YMap>(null)\n// Координаты маркера на карте\nconst clickedMarkerCoordinates = ref<LngLat>([0, 0])\n// Информация от полигона для маркера\nconst deliveryAddressDetails = ref<PolygonProperties | null>(null)\n\n// Конфигурация настройки карты\nconst startSettings = {\n location: {\n center: [...props.settings.coords].reverse(),\n zoom: props.settings.zoom,\n },\n zoomRange: {\n min: 10,\n max: 20,\n },\n}\n\nconst controlSettings: YMapControlsProps = {\n position: 'left bottom',\n orientation: 'vertical',\n}\n\n// Сетим данные, если выбран ресторан из списка\nwatch(\n () => props.clickedRestaurant,\n async (newPoint: PointProperties | null) => {\n if (!newPoint) return\n\n const coords: LngLat = [newPoint.coordinates[1], newPoint.coordinates[0]]\n\n setLocationMap(coords)\n\n // Динамически обновляем полигоны\n if (yandexMapData.value?.bounds && newFetchingApiEnabled) {\n await onUpdateAreas(yandexMapData.value?.bounds)\n }\n\n emit('onUpdateCenterMap')\n },\n)\n\nwatch(\n () => props.selectedAddress?.coordinates,\n async (newCoordsOfAddress: LngLat) => {\n setLocationMap(newCoordsOfAddress)\n\n // Динамически обновляем полигоны\n if (yandexMapData.value?.bounds && newFetchingApiEnabled) {\n await onUpdateAreas(yandexMapData.value?.bounds, false)\n }\n\n updateCoordsOfMarker(newCoordsOfAddress)\n\n // Обновляем дистанцию точек после выставления балуна\n updateDistance()\n\n // TODO: В будущем вынести рассчет в WebWorker\n const polygon = findOfDeliveryArea(props.areas, newCoordsOfAddress)\n deliveryAddressDetails.value = polygon ? polygon.properties : null\n },\n)\n\n// Метод зума карты по координатам\nconst setLocationMap = (coords: LngLat, zoom: number = 16) => {\n yandexMapData.value?.setLocation({\n center: coords,\n zoom,\n })\n}\n\n// Метод обновления данных о маркере\nconst updateCoordsOfMarker = (coords: LngLat) => {\n clickedMarkerCoordinates.value = coords\n}\n\n// Сбрасываем маркер c балуном\nconst resetBalloon = () => {\n updateCoordsOfMarker([0, 0])\n deliveryAddressDetails.value = null\n}\n\nconst updateBalloon: DomEventHandler = (object, event) => {\n deliveryAddressDetails.value = object\n ? (object.entity.properties as unknown as PolygonProperties)\n : null\n\n updateCoordsOfMarker(event.coordinates)\n\n // Меняем центр карты по координатам маркера\n if (isMobileOrTablet) setLocationMap(event.coordinates)\n\n emit('onClickToMap', event.coordinates)\n}\n\nconst onActionStart: BehaviorMapEventHandler = () => {\n emit('onUpdateCenterMap')\n}\n\nconst onActionEnd: BehaviorMapEventHandler = (event) => {\n if (event.type !== 'drag' && event.type !== 'scrollZoom') {\n return\n }\n\n onUpdateAreas(event.location.bounds)\n}\n\nconst getReverseCoords = (bounds: LngLatBounds) => {\n const lowerLeftBounds = bounds[0]\n const upperRightBounds = bounds[1]\n\n const coords: DragCoordinates = {\n lower_left: [lowerLeftBounds[1], lowerLeftBounds[0]],\n upper_right: [upperRightBounds[1], upperRightBounds[0]],\n }\n\n return coords\n}\n\nconst debounceActionEnd = debounce(UPDATE_AREAS, onActionEnd)\n\n// Заглушка для сдвига карты\nconst onActionEndOld = () => ({})\n\nconst clickToMap: DomEventHandler = (object, event) => {\n switch (object?.type) {\n // Клик на хотспот\n case TypesEntity.HOTSPOT:\n updateBalloon(undefined, event)\n break\n // Клик по полигону\n case TypesEntity.FEATURE:\n updateBalloon(object, event)\n break\n // Клик на маркер\n case TypesEntity.MARKER:\n // Если активный маркер\n if (object.entity.properties?.markerOfClick) {\n resetBalloon()\n\n break\n }\n\n if (object.entity.properties) {\n emit('onClickRestaurant', object.entity.properties)\n\n setLocationMap(event.coordinates)\n }\n\n break\n default:\n updateBalloon(object, event)\n break\n }\n}\n\n// Удаляем карту из DOM\nonBeforeUnmount(() => yandexMapData.value?.destroy())\n\nconst updateDistance = () => {\n if (clickedMarkerCoordinates.value[0] !== 0) {\n const reverseCoords: LatLng = [\n clickedMarkerCoordinates.value[1],\n clickedMarkerCoordinates.value[0],\n ]\n // Рассчитываем дистанцию от клика маркера до маркеров точек\n deliveryStore.setPointsDistance(reverseCoords)\n }\n}\n\nconst onUpdateAreas = async (\n bounds: LngLatBounds,\n isNeedUpdateDistance = true,\n) => {\n const coords = getReverseCoords(bounds)\n await deliveryStore.updateAreas(coords)\n\n if (isNeedUpdateDistance) {\n updateDistance()\n }\n}\n\nconst listenerSettings = {\n onClick: clickToMap,\n onActionStart,\n onActionEnd: newFetchingApiEnabled ? debounceActionEnd : onActionEndOld,\n}\n</script>\n\n<template>\n <div>\n <yandex-map\n v-model=\"yandexMapData\"\n :settings=\"startSettings\"\n :width=\"width\"\n >\n <yandex-map-default-scheme-layer />\n <yandex-map-default-features-layer />\n\n <yandex-map-listener :settings=\"listenerSettings\" />\n\n <yandex-map-points\n v-if=\"points.length\"\n :points=\"points\"\n :clicked-restaurant=\"clickedRestaurant\"\n />\n\n <yandex-map-polygons v-if=\"areas.length\" :areas=\"areas\" />\n\n <yandex-map-clicked-marker\n :delivery-address-details=\"deliveryAddressDetails\"\n :clicked-marker-coordinates=\"clickedMarkerCoordinates\"\n :selected-address=\"selectedAddress\"\n :balloon-type=\"BalloonType.Delivery\"\n />\n\n <yandex-map-controls :settings=\"controlSettings\">\n <yandex-map-zoom-control />\n </yandex-map-controls>\n </yandex-map>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n:deep(.__ymap_container) {\n height: 100% !important;\n\n .ymaps3x0--map-container {\n border-radius: 10px !important;\n }\n}\n\n.yandex-map__mobile-point {\n position: absolute !important;\n top: 50% !important;\n left: 50% !important;\n transform: translate(-50%, -100%);\n}\n</style>\n","<script setup lang=\"ts\">\nimport { VueYandexMaps } from 'vue-yandex-maps'\nimport type { Position } from 'vue-yandex-maps/dist/types/marker'\n\nimport { STATE_OF_MAP } from '@/constants/statesOfAddressSystem'\n\nimport type { DeliveryDataAddress } from '@/store/delivery/delivery.types'\nimport { BalloonType } from '@/store/delivery/delivery.types'\nimport { useMapSettingsStore } from '@/store/map-settings/map-settings'\nimport { useToggleStore } from '@/store/toggle/toggle'\n\nimport { TypeMaps, TypesProvider } from '@/types/mapServices'\n\nimport AddressSystemMapYandex from '@/components/AddressSystem/map/AddressSystemMapYandex.vue'\nimport DeliveryMapError from '@/components/Delivery/DeliveryMapError.vue'\nimport GoogleMapComponent from '@/components/Services/GoogleMap/GoogleMapComponent.vue'\nimport YandexMapComponent from '@/components/Services/YandexMap/YandexMapComponent.vue'\n\nimport type {\n AreaProperties,\n DragCoordinates,\n LatLng,\n PointProperties,\n PolygonProperties,\n} from '@/api/modules/delivery/types'\n\ntype Props = {\n positionControl: Position\n areas: AreaProperties[]\n points: PointProperties[]\n deliveryAddress: DeliveryDataAddress\n selectedRestaurant: PointProperties | null\n isLoadingAreas: boolean\n balloonType?: BalloonType\n isDeliveryCourier?: boolean\n componentMap: TypeMaps\n}\n\ntype Emits = {\n (fn: 'onUpdateCenterMap'): void\n (\n fn: 'onClickToMap',\n newCoords: LatLng,\n deliveryDetails: PolygonProperties | null,\n ): void\n (fn: 'onClickMarker'): void\n (fn: 'onUpdateDistance', coords: LatLng): void\n (fn: 'onClickRestaurant', restaurant: PointProperties): void\n (\n fn: 'onUpdateAreas',\n bounds: DragCoordinates,\n isUpdateDistance: boolean,\n ): void\n}\n\nconst props = defineProps<Props>()\n\nconst emit = defineEmits<Emits>()\n\nconst { $metrics } = useNuxtApp()\n\nenum TypeComponentMaps {\n YANDEX_DELIVERY = 'DELIVERY',\n YANDEX_ADDRESS_SYSTEM = 'ADDRESS_SYSTEM',\n GOOGLE_DELIVERY = 'GOOGLE_DELIVERY',\n}\n\nconst COMPONENT_MAPS: Record<TypeComponentMaps, Component> = {\n [TypeComponentMaps.YANDEX_DELIVERY]: YandexMapComponent,\n [TypeComponentMaps.YANDEX_ADDRESS_SYSTEM]: AddressSystemMapYandex,\n [TypeComponentMaps.GOOGLE_DELIVERY]: GoogleMapComponent,\n}\n\nconst { $sentryCaptureException } = useNuxtApp()\n\nconst { isDesktop } = useResponsive()\n\nconst mapSettingsStore = useMapSettingsStore()\nconst { newFetchingApiEnabled } = useToggleStore()\n\nconst currentMap = ref<Component | null>(null)\n\nconst serviceSettings = mapSettingsStore.mapSettings.service_settings\n\n// Инициализация модуля Яндекс карты в процессе setup\nconst { createYmapsOptions } = await import('vue-yandex-maps')\n\nconst isStateLoadMap = computed(() => mapSettingsStore.stateLoadMap)\n\n// Состояние что карта загружена\nconst isMapLoaded = computed(() => isStateLoadMap.value === STATE_OF_MAP.loaded)\n\nconst initModuleYandexMap = () => {\n const { provider, api_key } = serviceSettings\n\n // Для гугла не требуется вручную прокидывать инстанс карты\n if (provider === TypesProvider.GOOGLE) {\n currentMap.value = COMPONENT_MAPS[TypeComponentMaps.GOOGLE_DELIVERY]\n return\n }\n\n const isComponent =\n props.componentMap === TypeMaps.DELIVERY\n ? COMPONENT_MAPS[TypeComponentMaps.YANDEX_DELIVERY]\n : COMPONENT_MAPS[TypeComponentMaps.YANDEX_ADDRESS_SYSTEM]\n\n currentMap.value = isComponent\n\n if (provider === TypesProvider.YANDEX) createYmapsOptions({ apikey: api_key })\n}\n\nwatch(VueYandexMaps.loadStatus, (newStatus: VueYandexMaps.LoadStatus) => {\n mapSettingsStore.setStateLoadMap(newStatus)\n\n if (newStatus !== STATE_OF_MAP.loaded) return\n\n $metrics?.eventSendGoal({ ym: 'map_loaded_for_address' })\n})\n\n// Т.к модуль не предоставляет тип, property, оставляем any\nwatch(VueYandexMaps.loadError, (newLoadError: any) => {\n if (!newLoadError) return\n\n mapSettingsStore.setStateLoadMap(STATE_OF_MAP.error)\n\n $sentryCaptureException(\n 'Не удалось загрузить яндекс карту',\n VueYandexMaps.loadError,\n )\n})\n\nconst onClickToMap = (\n newCoords: LatLng,\n deliveryDetails: PolygonProperties | null,\n) => emit('onClickToMap', newCoords, deliveryDetails)\n\nconst clickRestaurant = (restaurant: PointProperties) => {\n emit('onClickRestaurant', restaurant)\n}\n\nconst updateCenterMap = () => emit('onUpdateCenterMap')\n\nconst updateDistance = (coords: LatLng) => emit('onUpdateDistance', coords)\n\nconst updateAreas = (bounds: DragCoordinates, isUpdateDistance: boolean) =>\n emit('onUpdateAreas', bounds, isUpdateDistance)\n\nconst onClickMarker = () => emit('onClickMarker')\n\nonMounted(() => {\n initModuleYandexMap()\n\n mapSettingsStore.setStateLoadMap(STATE_OF_MAP.loaded)\n})\n</script>\n\n<template>\n <div class=\"delivery-map\">\n <the-loader\n v-if=\"isStateLoadMap === STATE_OF_MAP.loading\"\n color=\"var(--ui-secondary)\"\n />\n\n <component\n :is=\"currentMap\"\n v-if=\"isMapLoaded\"\n class=\"delivery-map__yandex\"\n :settings=\"serviceSettings\"\n width=\"100%\"\n :areas=\"areas\"\n :points=\"points\"\n :clicked-restaurant=\"selectedRestaurant\"\n :selected-address=\"deliveryAddress\"\n :position-control=\"positionControl\"\n :balloon-type=\"balloonType\"\n :is-delivery-courier=\"isDeliveryCourier\"\n @on-click-to-map=\"onClickToMap\"\n @on-click-restaurant=\"clickRestaurant\"\n @on-click-marker=\"onClickMarker\"\n @on-update-center-map=\"updateCenterMap\"\n @on-update-distance=\"updateDistance\"\n @on-update-areas=\"updateAreas\"\n />\n\n <delivery-map-error\n v-if=\"isStateLoadMap === STATE_OF_MAP.error\"\n class=\"delivery-map__error\"\n />\n\n <transition v-if=\"newFetchingApiEnabled && isDesktop\" name=\"ui-fade\">\n <app-loader-rolls\n v-show=\"isLoadingAreas\"\n class=\"loader-areas\"\n icon-size=\"21\"\n absolute\n />\n </transition>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.loader-areas {\n position: absolute;\n top: 15px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.delivery-map {\n position: relative;\n width: 100%;\n\n &__yandex {\n height: 100% !important;\n }\n\n &__google {\n width: 100%;\n height: 100%;\n }\n\n &__error {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n }\n}\n</style>\n","/**\n * Преобразование параметров в строку для поиска\n * @param request - строка запроса\n * @param country - страна\n * @param region - регион\n * @param city - город\n */\nexport const serializeToRequest = (\n request: string,\n country: string,\n region: string,\n city: string,\n): string => {\n let fullRequest = request\n\n if (city === 'Адлер') {\n return (fullRequest = `${country}, ${region}, Сочи, ${fullRequest}`)\n }\n\n if (region) {\n const stateReg = new RegExp(region, 'gi')\n\n if (request.search(stateReg) === -1)\n fullRequest = `${region}, ${fullRequest}`\n }\n\n if (city) {\n const cityReg = new RegExp(city, 'gi')\n\n if (request.search(cityReg) === -1) fullRequest = `${city}, ${fullRequest}`\n }\n\n if (country) {\n const countryReg = new RegExp(country, 'gi')\n\n if (request.search(countryReg) === -1)\n fullRequest = `${country}, ${fullRequest}`\n }\n\n return fullRequest\n}\n","import axios from 'axios'\n\n/* Types */\nimport {\n RequestBody,\n SuggestionAddress,\n} from '@/types/api/dadata/suggestionAddress'\n\nconst dadataApi = {\n url: null as null | string,\n config: {},\n init(url: string, apiKey: string) {\n this.url = url\n this.config = {\n headers: {\n authorization: `Token ${apiKey}`,\n },\n }\n return this\n },\n async getSuggestions(\n query: string,\n option?: {\n count?: number\n locations_boost?: string\n from_bound?: string\n bound?: string\n },\n ) {\n try {\n const body: RequestBody = {\n query,\n locations: [\n {\n country: '*',\n },\n ],\n }\n\n if (option) {\n if (option.count) body.count = option.count\n if (option.locations_boost)\n body.locations_boost = option.locations_boost\n if (option.from_bound) body.from_bound = option.from_bound\n if (option.bound) body.bound = option.bound\n }\n\n const result = await axios.post<SuggestionAddress>(\n `${this.url}suggest/address`,\n body,\n this.config,\n )\n return result.data.suggestions\n } catch (error) {\n if (error.response?.status) {\n switch (error.response.status) {\n case 400:\n throw new Error(`Некорректный запрос (невалидный JSON или XML)`)\n case 401:\n throw new Error(`В запросе отсутствует API-ключ`)\n case 403:\n throw new Error(`В запросе указан несуществующий API-ключ...`)\n case 405:\n throw new Error(`Запрос сделан с методом, отличным от POST`)\n case 413:\n throw new Error(\n `Слишком большая длина запроса или слишком много условий`,\n )\n case 429:\n throw new Error(`Слишком много запросов в секунду`)\n case error.response.status > 500:\n throw new Error(`Произошла внутренняя ошибка сервиса`)\n default:\n throw new Error(`Произошла ошибка с кодом ${error.response.status}`)\n }\n }\n throw error\n }\n },\n}\nexport default dadataApi\n","/* Types */\nimport {\n AutocompleteService,\n AutocompleteSuggestion,\n} from '@/types/mapServices'\nimport { StateOfAutocomplete } from '@/constants/components/autocomplete'\nimport { Suggestion } from '@/types/api/dadata/suggestionAddress'\n\n/* Utils */\nimport { joinPartsOfAddress } from '@/utils/joinPartsOfAddress'\n\n/* Services */\nimport dadata from '@/services/autocomplete/dadataApi'\n\n/**\n * Формирование полей адреса в одну строку\n * @param suggestion - данные адреса\n */\nexport const makeDadataAddressString = (\n suggestion: Suggestion,\n): string | null => {\n const addressData = suggestion.data\n const region = addressData.region_with_type\n const settlement = addressData.settlement_with_type\n const city =\n (addressData.city !== addressData.region &&\n joinPartsOfAddress([addressData.city_type, addressData.city], ' ')) ||\n ''\n const street = joinPartsOfAddress(\n [addressData.street_type, addressData.street],\n ' ',\n )\n const house = joinPartsOfAddress(\n [\n addressData.house_type,\n addressData.house,\n addressData.block_type,\n addressData.block,\n ],\n ' ',\n )\n\n const address =\n joinPartsOfAddress([city, settlement, street, house]) || region\n\n if (!address) return null\n\n return address\n}\n\n/**\n * Формирование полей адреса в одну короткую строку\n * @param suggestion - данные адреса\n */\nexport const makeShortDadataAddressString = (\n suggestion: Suggestion,\n): string | undefined => {\n const addressData = suggestion.data\n const region = addressData.region_with_type\n const settlement = addressData.settlement_with_type\n const city =\n (addressData.city !== addressData.region &&\n joinPartsOfAddress([addressData.city_type, addressData.city], ' ')) ||\n ''\n const street = joinPartsOfAddress(\n [addressData.street_type, addressData.street],\n ' ',\n )\n const house = joinPartsOfAddress(\n [\n addressData.house_type,\n addressData.house,\n addressData.block_type,\n addressData.block,\n ],\n ' ',\n )\n\n let address = joinPartsOfAddress([settlement, street, house])\n\n if (!address) address = city\n\n if (!address) address = region\n\n if (!address) return undefined\n\n return address\n}\n\n/**\n * Формируем список найденных адресов api\n * @param dadataSuggestions - список адресов\n */\nexport const transformDadataAutocomplete = (\n dadataSuggestions: Suggestion[],\n): AutocompleteSuggestion[] => {\n const autocompleteList: AutocompleteSuggestion[] = []\n\n dadataSuggestions.forEach((suggestion) => {\n const address = makeDadataAddressString(suggestion)\n\n if (address)\n autocompleteList.push({\n value: address,\n })\n })\n\n if (autocompleteList.length === 0) throw new Error(StateOfAutocomplete.EMPTY)\n\n return autocompleteList\n}\n\n/**\n * Получаем список адресов с api dadata\n * @param apiKey - ключ для запроса dadata\n */\nexport const makeDadataAutocompleteService = (\n apiKey: string,\n): AutocompleteService => {\n const dadataApi = dadata.init(\n 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/',\n apiKey,\n )\n async function getSuggestions(\n request: string,\n ): Promise<AutocompleteSuggestion[]> {\n const suggestions = await dadataApi.getSuggestions(request, {\n count: 25,\n bound: 'house',\n })\n return transformDadataAutocomplete(suggestions)\n }\n\n // @ts-ignore\n return { getSuggestions }\n}\n","export class Loader {\n constructor(apiKey = null, options = {}) {\n this.apiKey = apiKey;\n this.options = options;\n if (typeof window === 'undefined') {\n throw new Error('google-maps is supported only in browser environment');\n }\n }\n load() {\n if (typeof this.api !== 'undefined') {\n return Promise.resolve(this.api);\n }\n if (typeof this.loader !== 'undefined') {\n return this.loader;\n }\n window[Loader.CALLBACK_NAME] = () => {\n this.api = window['google'];\n if (typeof this.resolve === 'undefined') {\n throw new Error('Should not happen');\n }\n this.resolve(this.api);\n };\n window['gm_authFailure'] = () => {\n if (typeof this.reject === 'undefined') {\n throw new Error('Should not happen');\n }\n this.reject(new Error('google-maps: authentication error'));\n };\n return this.loader = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n const script = document.createElement('script');\n script.src = this.createUrl();\n script.async = true;\n script.onerror = (e) => reject(e);\n document.head.appendChild(script);\n });\n }\n createUrl() {\n const parameters = [\n `callback=${Loader.CALLBACK_NAME}`,\n ];\n if (this.apiKey) {\n parameters.push(`key=${this.apiKey}`);\n }\n for (let name in this.options) {\n if (this.options.hasOwnProperty(name)) {\n let value = this.options[name];\n if (name === 'version') {\n name = 'v';\n }\n if (name === 'libraries') {\n value = value.join(',');\n }\n parameters.push(`${name}=${value}`);\n }\n }\n return `https://maps.googleapis.com/maps/api/js?${parameters.join('&')}`;\n }\n}\nLoader.CALLBACK_NAME = '_dk_google_maps_loader_cb';\n//# sourceMappingURL=loader.js.map","import { google, Loader } from 'google-maps'\n\n/* Utils */\nimport { joinPartsOfAddress } from '@/utils/joinPartsOfAddress'\n\n/* Types */\nimport {\n AutocompleteService,\n AutocompleteSuggestion,\n} from '@/types/mapServices'\nimport { StateOfAutocomplete } from '@/constants/components/autocomplete'\n\nlet api = null as null | Promise<google>\n\nexport function getGoogleApi(apiKey: string): Promise<google> {\n if (!api) {\n const loader = new Loader(apiKey, {\n libraries: ['places', 'geometry'],\n language: 'ru',\n })\n api = loader.load()\n }\n\n return api\n}\n\nexport function makeGoogleAddressString(\n suggestion: google.maps.places.AutocompletePrediction,\n): string | null {\n const street = suggestion.structured_formatting.main_text.split(', ')[0]\n const house = suggestion.structured_formatting.main_text.split(', ')[1]\n const locality =\n suggestion.structured_formatting.secondary_text.split(', ')[0]\n\n const address = joinPartsOfAddress([locality, street, house], ', ')\n\n if (!address) return null\n\n return address\n}\n\nexport function makeShortGoogleAddressString(\n suggestion: google.maps.places.AutocompletePrediction,\n): string | undefined {\n const street = suggestion.structured_formatting.main_text.split(', ')[0]\n const house = suggestion.structured_formatting.main_text.split(', ')[1]\n const locality =\n suggestion.structured_formatting.secondary_text.split(', ')[0]\n\n const address = joinPartsOfAddress([street, house])\n\n if (!address) return locality\n\n if (!address) return undefined\n\n return address\n}\nexport function transformGoogleAutocomplete(\n googleSuggestions: google.maps.places.AutocompletePrediction[],\n): AutocompleteSuggestion[] {\n const autocompleteList: AutocompleteSuggestion[] = []\n\n googleSuggestions.forEach((suggestion) => {\n const address = makeGoogleAddressString(suggestion)\n const shortAddress = makeShortGoogleAddressString(suggestion)\n\n if (address && shortAddress)\n autocompleteList.push({\n value: address || shortAddress,\n })\n })\n\n if (autocompleteList.length === 0) throw new Error(StateOfAutocomplete.EMPTY)\n\n return autocompleteList\n}\n\nexport async function makeGoogleAutocompleteService(\n apiKey: string,\n): Promise<AutocompleteService> {\n const googleApi = await getGoogleApi(apiKey)\n const autocompleteService = new googleApi.maps.places.AutocompleteService()\n\n function getSuggestions(request: string): Promise<AutocompleteSuggestion[]> {\n return new Promise((resolve, reject) => {\n autocompleteService.getPlacePredictions(\n { input: request, types: ['geocode'] },\n (result: any, status: any) => {\n switch (status) {\n case googleApi.maps.places.PlacesServiceStatus.ZERO_RESULTS:\n case googleApi.maps.places.PlacesServiceStatus.OK:\n try {\n resolve(transformGoogleAutocomplete(result))\n } catch (error) {\n reject(new Error(error))\n }\n break\n default:\n reject(new Error(status))\n }\n },\n )\n })\n }\n\n return {\n getSuggestions,\n }\n}\n","/* Types */\nimport { AutocompleteService } from '@/types/mapServices'\nimport { SuggestionSettings } from '@/store/city/city.types'\n\n/* Services */\nimport { makeDadataAutocompleteService } from '@/services/autocomplete/deliveryDadata'\nimport { makeGoogleAutocompleteService } from '@/services/autocomplete/deliveryGoogle'\n\nlet autocompleteService = null as null | AutocompleteService\n\n// TODO: В будущем все будет заменено на api бэкенда\nexport const autocompleteServiceFactory = async (\n providerData: SuggestionSettings,\n): Promise<AutocompleteService> => {\n switch (providerData.provider) {\n case 'google': {\n autocompleteService = await makeGoogleAutocompleteService(\n providerData.api_key,\n )\n break\n }\n case 'dadata':\n default: {\n autocompleteService = makeDadataAutocompleteService(providerData.api_key)\n }\n }\n return autocompleteService\n}\n\nexport const getAutocompleteService = (\n providerData: SuggestionSettings,\n): Promise<AutocompleteService> => {\n // @ts-ignore\n if (autocompleteService) return autocompleteService\n\n return autocompleteServiceFactory(providerData)\n}\n","<script setup lang=\"ts\">\nimport { StateOfAutocomplete } from '@/constants/components/autocomplete'\n\nimport { useAddressSystem } from '@/store/addressSystem/address-system'\nimport { PlacesSearch } from '@/store/delivery/delivery.types'\n\nimport { Success } from '@/api/results'\n\nconst emits = defineEmits(['onHandleErrorGeoPosition', 'setDeliveryAddress'])\n\nconst { resetDeliveryAddress } = useAddressSystem()\n\nconst isLoading = shallowRef(false)\nconst isDisabledButton = shallowRef(true)\n\nconst { $sentryCaptureException } = useNuxtApp()\n\nonMounted(() => {\n if (navigator.geolocation) isDisabledButton.value = !isDisabledButton.value\n})\n\n// Запрашиваем геопозицию клиента\nconst getMyPosition = (): any => {\n return new Promise((resolve, reject) => {\n if (!navigator.geolocation) {\n reject(new Error('Геолокация не поддеживается вашим браузером'))\n }\n\n navigator.geolocation.getCurrentPosition(resolve, reject)\n })\n}\n\n// Получаем геопозицию клиента\nconst geolocationClickHandler = async () => {\n isLoading.value = true\n\n try {\n const { coords } = await getMyPosition()\n\n const { latitude, longitude } = coords\n\n const { $apiService } = useNuxtApp()\n\n const result = await $apiService.geocode.getAddressByCoordinates([\n latitude,\n longitude,\n ])\n\n if (!(result instanceof Success)) {\n emits('onHandleErrorGeoPosition', StateOfAutocomplete.NOT_DETECTED)\n\n resetDeliveryAddress(PlacesSearch.AUTOCOMPLETE) // Убираем балун\n\n isLoading.value = false\n\n return\n }\n\n const address = result instanceof Success ? result.data : null\n\n emits('setDeliveryAddress', address, [longitude, latitude])\n } catch (error) {\n emits('onHandleErrorGeoPosition', StateOfAutocomplete.BAN_GEO)\n\n $sentryCaptureException('Не удалось определить геопозицию клиента', error)\n }\n\n isLoading.value = false\n}\n</script>\n\n<template>\n <the-button\n icon=\"navigation\"\n :loading=\"isLoading\"\n :disabled=\"isDisabledButton\"\n variant=\"primary\"\n size=\"sm\"\n :icon-size=\"18\"\n @click=\"geolocationClickHandler\"\n />\n</template>\n"],"names":["DEFAULT_DELIVERY","StateGeoAddress","getDistanceBetweenPoints","from","to","f1","f2","deltaF","deltaLambda","a","filterPointsByTags","points","tags","point","pointTags","slug","tag","checkAddressInDeliveryArea","polygon","x","y","isInside","i","j","xi","yi","xj","yj","findOfDeliveryArea","polygons","coords","useDeliveryStore","defineStore","StoreId","bounds","lat","lon","$apiService","useNuxtApp","result","Success","areasData","place","address","state","page","attentionFactoid","seo","defaultEnabledTags","_a","coordinates","distance","id","index","feature","activeTags","tagsFromPoints","item","uniqTagsFromPoints","tagsFromDelivery","f","filteredTagsList","tagFromDelivery","pointSlug","PlacesSearch","BalloonType","DeliveryInfoType","VueYandexMaps","VueYandexMaps2","safeRef","safeComputed","YandexMapException2","message","value","ref","getter","debugOptions","computed","sleep","ms","resolve","copy","target","toRaw","unref","carry","key","val","isDev","define_process_env_default","getException","text","isInternal","warn","throwException","settings","exception","excludeKeys","ignoreKeys","isVue2","version","fragment","setFragment","__vitePreload","Fragment","hF","children","props","h","hVue2","getAttrsForVueVersion","attrs","YandexMapException","allowedOptionsKeys","initYmaps","res","rej","watcher","watch","yandexMapScript","url","module","e","createYmapsOptions","options","ignoreNoCurrentInstance","optionsShallowClone","notAllowedKeys","applyModifier","modifier","applyFunctionModifier","functionModifier","worldToPixels","convertWorldCoordinates","projection","worldCoordinates","pixelsToWorld","findNeededValue","t","worldCoordsFromModifier","resultCoords","convertBounds","topLeft","bottomRight","modified","updatedBounds","applyMarginToCoords","margin","findZoom","isSnap","zoomRange","topLeftFirst","topLeftSecond","bottomRightFirst","bottomRightSecond","firstCalc","secondCalc","zoom","findCenter","getLocationFromBounds","map","roundZoom","comfortZoomLevel","ctxMap","ctx","ctxItem","reject","name","ctxItemMapKey","ctxItemMap","size","center","originalZoom","roundedZoom","userSettings","diff2","useYMapsLocationFromBounds","getCenterFromCoords","sum","accLng","accLat","lng","getBoundsFromCoords","minLongitude","minLatitude","maxLongitude","maxLatitude","acc","longitude","latitude","createYmaps","app","createYmapsVue2","Vue","isDate","d","isEmpty","o","isObject","hasOwnProperty","args","isEmptyObject","makeObjectWithoutPrototype","diff","lhs","rhs","deletedValues","difference","injectMap","getCurrentInstance","inject","isRef","injectLayers","layers","waitTillYmapInit","timeoutCallback","waitDuration","timeout","waitTillMapInit","_map","deleteMapChild","isMercator","root","_sfc_main$p","defineComponent","slots","emit","shallowRef","mapRef","ymapContainer","mounted","needsToHold","provide","getSettings","init","container","onMounted","listener","cursorGrabTimeout","onBeforeUnmount","setupWatcher","clonedSettings","settingsDiff","updatedSettings","_timeout","isDelete","nextTick","mapNodeProps","containerNode","slotsNodeProps","setupMapChildren","returnOnly","willDeleteByHand","strictMapRoot","requiredImport","createFunction","settingsUpdateIgnoreKeys","isLayer","isMapRoot","mapRootRef","duplicateInit","mapRoot","initPromises","childrenPromises","timeouts","lastSettings","importData","importPromise","_sfc_main$o","mapListener","_sfc_main$n","hold","mapLayer","_sfc_main$m","_sfc_main$l","_sfc_main$k","mapChildren","_sfc_main$j","_sfc_main$i","getMarkerContainerProps","position","containerAttrs","wrapperAttrs","zeroSizes","isDefaultPosition","translateX","translateY","splitted","local","obj","excludeYandexMarkerProps","toExclude","excluded","_sfc_main$h","element","clearElement","_b","_c","mapParent","onUpdated","_d","rootProps","_sfc_main$g","popup","closeFunc","contentFunc","close","Marker","_sfc_main$f","_sfc_main$e","_sfc_main$d","control","YMapSomeController","_sfc_main$c","_sfc_main$b","controls","_sfc_main$a","_sfc_main$9","_sfc_main$8","cartesian","CartesianClass","_sfc_main$7","mercator","Mercator","_sfc_main$6","hintContent","MapHint","YMapHintContext","object","Hint","_sfc_main$5","OpenMapsButton","_sfc_main$4","cluserId","containerProps","updateElement","_element","clusterElement","clusterer","featuresCoords","defaultDuration","latDiff","longDiff","firstUpdate","_sfc_main$3","features","clusterSlots","_sfc_main$2","entities","clusterFeatures","revision","filteredFeatures","_clusterByGrid","tickTimeout","marker","entity","cluster","foundCluster","clustersList","update","Clusterer","_clusterByGrid_","_a2","_sfc_main$1","_sfc_main","Entity","UPDATE_AREAS","UPDATE_AREAS_MOBILE","DISTANCE_SYMMETRY","__props","__emit","balloonImage","DeliveryMethods","balloonText","BALLOON_TEXT","showErrorText","showImage","isAvailableToClick","onClick","DEFAULT_ZERO","currencySymbol","useCityStore","tableItems","items","cost","amount_from","amount_to","visible","titleAddress","deliveryBasket","storeToRefs","useAddressSystem","generateSettings","isLoading","getImageSrc","isWorking","reverseCoords","area","coordinate","newFetchingApiEnabled","useToggleStore","isDesktop","useResponsive","timeDebounceAction","yandexMapData","clickedMarkerCoordinates","deliveryAddressDetails","currentZoom","startSettings","controlSettings","newPoint","isCheckDragged","setLocationMap","updateAreas","newCoordsOfAddress","resetBalloon","updateCoordsOfMarker","boundsOfCoordinates","newDetails","location","updateBalloon","event","onActionStart","onActionEnd","debounce","type","onActionEndOld","getReverseCoords","lowerLeftBounds","upperRightBounds","debounceActionEnd","isUpdateDistance","onUpdate","clickToMap","TypesEntity","onClickMarker","listenerSettings","details","ERROR_TEXT_NOT_LOADED_MAP","qe","Be","n","se","N","U","xe","Le","ee","Se","q","Ue","s","l","u","c","De","de","R","T","m","g","v","w","_","E","b","Fe","r","he","pe","Ve","P","G","p","O","I","Z","M","F","Me","B","te","ze","Ge","Y","X","ae","Q","Ze","Ne","Et","He","We","$","Ke","Je","D","C","J","fe","Pt","xt","ve","et","Ee","tt","st","Pe","Oe","At","wt","_t","kt","$t","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","step","rejected","getDefaultExportFromCjs","fastDeepEqual","equal","length","keys","isEqual","DEFAULT_ID","LoaderStatus","Loader$1","Loader","apiKey","authReferrerPolicy","channel","client","language","libraries","mapIds","nonce","region","retries","script","err","fn","params","k","libraryPromises","library","error","delay","cb","optionsMarker","closeMarkerImage","openMarkerImage","emits","generateOptionOfPoint","clickedPoint","markerCoords","transformCoords","generateOptionPolygon","clickedPolygon","clickedCoords","LANGUAGE_GOOGLE_MAP","refGoogleMap","baloonOfRestaurant","promiseLoadMap","positionCenterMap","optionsInfoWindow","updateBaloonOfMarker","clickedToMap","clickedToMapOfElement","deliveryStore","isMobileOrTablet","useDevice","onUpdateAreas","updateDistance","isNeedUpdateDistance","$metrics","COMPONENT_MAPS","YandexMapComponent","AddressSystemMapYandex","GoogleMapComponent","$sentryCaptureException","mapSettingsStore","useMapSettingsStore","currentMap","serviceSettings","__temp","__restore","_withAsyncContext","vueYandexMaps","isStateLoadMap","isMapLoaded","STATE_OF_MAP","initModuleYandexMap","provider","api_key","TypesProvider","isComponent","TypeMaps","newStatus","newLoadError","onClickToMap","newCoords","deliveryDetails","clickRestaurant","restaurant","updateCenterMap","serializeToRequest","request","country","city","fullRequest","stateReg","cityReg","countryReg","dadataApi","query","option","body","axios","makeDadataAddressString","suggestion","addressData","settlement","joinPartsOfAddress","street","house","transformDadataAutocomplete","dadataSuggestions","autocompleteList","StateOfAutocomplete","makeDadataAutocompleteService","dadata","getSuggestions","suggestions","parameters","api","getGoogleApi","makeGoogleAddressString","locality","makeShortGoogleAddressString","transformGoogleAutocomplete","googleSuggestions","shortAddress","makeGoogleAutocompleteService","googleApi","autocompleteService","status","autocompleteServiceFactory","providerData","getAutocompleteService","resetDeliveryAddress","isDisabledButton","getMyPosition","geolocationClickHandler"],"mappings":"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A,wBACA,aACA,cACA,eACA,cACF,EAAGC,GAAKC,EAAE,CACR,MAAO,CACL,WAAY,CACV,KAAM,OACP,EACD,OAAQ,CACN,KAAM,OACN,QAAS,EACV,EACD,QAAS,CACP,KAAM,OACN,QAAS,QACV,EACD,UAAW,CACT,KAAM,MACN,QAAS,IAAM,CAAC,QAAQ,CACzB,EACD,OAAQ,CACN,KAAM,OACN,SAAU,EACX,EACD,SAAU,CACR,KAAM,OACN,SAAU,EACX,EACD,gBAAiB,CACf,KAAM,OACN,SAAU,EACX,EACD,OAAQ,CACN,KAAM,OACN,QAAS,KAAO,CAAE,IAAK,EAAG,IAAK,CAAG,EACnC,EACD,eAAgB,CACd,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,YAAa,CACX,KAAM,OACN,SAAU,EACX,EACD,iBAAkB,CAChB,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,uBAAwB,CACtB,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,UAAW,CACT,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,gBAAiB,CACf,KAAM,OACN,SAAU,EACX,EACD,eAAgB,CACd,KAAM,OACN,SAAU,EACX,EACD,kBAAmB,CACjB,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,0BAA2B,CACzB,KAAM,OACN,SAAU,EACX,EACD,gBAAiB,CACf,KAAM,OACN,SAAU,EACX,EACD,QAAS,CACP,KAAM,OACN,SAAU,EACX,EACD,wBAAyB,CACvB,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,kBAAmB,CACjB,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,eAAgB,CACd,KAAM,QACN,SAAU,GACV,QAAS,MACV,EACD,sBAAuB,CACrB,KAAM,OACN,SAAU,EACX,EACD,UAAW,CACT,KAAM,CAAC,OAAQ,MAAM,EACrB,SAAU,EACX,EACD,MAAO,CACL,KAAM,OACN,SAAU,EACX,EACD,QAAS,CACP,KAAM,OACN,SAAU,EACX,EACD,QAAS,CACP,KAAM,OACN,SAAU,EACX,EACD,QAAS,CACP,KAAM,QACN,SAAU,GACV,QA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","ignoreList":[5,6,17,18,30],"debug_id":"c0f3d5de-895c-5dea-b185-8f9c8b613006"}