{"version":3,"file":"assets/js/chunks/89.6f5960cee91617ad1274.js","mappings":"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","sources":["webpack://frontend-setup/./src/components/atoms/label/label.tsx","webpack://frontend-setup/./src/components/atoms/marker/marker.tsx","webpack://frontend-setup/./src/features/area-map/utilities/map/zoom.ts","webpack://frontend-setup/./src/components/molecules/map-panel/utilities/map-panel.ts","webpack://frontend-setup/./src/components/molecules/map-panel/map-panel.tsx","webpack://frontend-setup/./src/store/area-map/store.ts","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/utilities/filter-names.ts","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/utilities/property-type.ts","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/utilities/get-filter-status.ts","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/utilities/status.ts","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/area-map-filter.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/utilities/construct-filters.ts","webpack://frontend-setup/./src/components/molecules/map-card/map-card.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-card/area-map-card.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-poi/area-map-poi.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-travel-types/area-map-travel-types.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-isochrone/area-map-isochrone.tsx","webpack://frontend-setup/./src/features/area-map/utilities/area-map-is-mobile.ts","webpack://frontend-setup/./src/components/molecules/map-search/map-search.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-directions/area-map-directions.tsx","webpack://frontend-setup/./src/features/area-map/components/area-map-info/area-map-info.tsx","webpack://frontend-setup/./src/features/area-map/utilities/filter-area.ts","webpack://frontend-setup/./src/utilities/api-calls/poi-markers.ts","webpack://frontend-setup/./src/features/area-map/utilities/get-poi-map-data.ts","webpack://frontend-setup/./src/features/area-map/utilities/area-map-constants.ts","webpack://frontend-setup/./src/features/area-map/utilities/map/extend-data-with-map.ts","webpack://frontend-setup/./src/features/area-map/utilities/map/theme.tsx","webpack://frontend-setup/./src/features/area-map/area-map.tsx","webpack://frontend-setup/./src/features/area-map/utilities/filter-empty-map-data-items.ts","webpack://frontend-setup/./src/utilities/two-finger-pan.ts","webpack://frontend-setup/./src/features/area-map/utilities/get-map-card-title.ts","webpack://frontend-setup/./src/utilities/api-utilities/is-nhg.ts","webpack://frontend-setup/./src/components/molecules/map-panel/map-panel.scss","webpack://frontend-setup/./src/features/area-map/area-map.scss","webpack://frontend-setup/./src/features/area-map/components/area-map-directions/area-map-directions.scss","webpack://frontend-setup/./src/features/area-map/components/area-map-filter/area-map-filter.scss","webpack://frontend-setup/./src/features/area-map/components/area-map-info/area-map-info.scss","webpack://frontend-setup/./src/features/area-map/components/area-map-isochrone/area-map-isochrone.scss","webpack://frontend-setup/./src/features/area-map/components/area-map-poi/area-map-poi.scss"],"sourcesContent":["import { h } from '@atomify/jsx';\nimport { StatusColor } from '@source/utilities/api-formatters';\n\nexport interface LabelProps {\n classes?: string;\n color?: string; // Color class\n formattedStatusColor?: StatusColor; // FormattedStatusColor\n text: string | Text;\n highlighted?: boolean;\n}\n\nconst formattedStatusColorClass: { [key in StatusColor]: string } = {\n green: 'label--positive',\n orange: 'label--attention',\n grey: '',\n purple: 'label--progression',\n red: 'label--urgent',\n};\n\nconst Label = (data: LabelProps) => {\n let color = data.color ? `label--${data.color}` : '';\n\n if (data.formattedStatusColor) {\n color = formattedStatusColorClass[data.formattedStatusColor];\n }\n\n let className = 'c-label';\n className += ` ${color}`;\n if (data.classes) className += ` ${data.classes}`;\n if (data.highlighted) className += ` is-highlighted`;\n\n return {data.text};\n};\n\nexport { Label };\n","import { h } from '@atomify/jsx';\nimport { Label } from '@atoms/label/label';\n\nimport { BPDFunctionalSvg } from '../svg/svg';\n\ntype MarkerVariant =\n | 'eye'\n | '360'\n | 'entrance'\n | 'exit'\n | 'stair'\n | 'generic'\n | 'number'\n | 'house'\n | string;\n\ninterface MarkerGenericProps {\n variant: MarkerVariant;\n icon?: string;\n element?: string;\n url?: string | null;\n onClick?: Function;\n eyeDirection?: string | null;\n tooltip?: string | null;\n classes?: string;\n style?: Object;\n size?: 'small' | 'large';\n}\n\ninterface MarkerBaseProps extends MarkerGenericProps {\n pin?: boolean;\n children?: ChildNode[];\n}\n\ninterface MarkerProps extends MarkerGenericProps {\n number?: string | number;\n}\n\nconst MarkerBase = (data: MarkerBaseProps) => {\n const attributes: { [key: string]: any } = {\n class: `c-marker marker--${data.variant} marker--${data.size || 'large'}`,\n };\n\n if (data.url) attributes.href = data.url;\n if (data.pin) attributes.class += ' marker--pin';\n if (data.classes) attributes.class += ` ${data.classes}`;\n if (data.eyeDirection)\n attributes.class += ` marker--direction-${data.eyeDirection.toLowerCase()}`;\n if (data.onClick) attributes.onClick = data.onClick;\n if (data.style) attributes.style = data.style;\n\n const Tag = data.url ? 'a' : data.element || 'button';\n\n return (\n \n {data.pin && (\n
\n \n
\n )}\n \n {data.children && data.children}\n {data.icon && }\n {data.tooltip && \n
\n );\n};\n\nconst Marker = (data: MarkerProps) => {\n switch (data.variant) {\n case 'eye':\n return (\n \n \n \n \n \n );\n case '360':\n return 360°;\n case 'entrance':\n return ;\n case 'exit':\n return ;\n case 'stair':\n return ;\n case 'generic':\n return ;\n case 'number':\n return {data.number || ''};\n }\n};\n\nexport { Marker, MarkerProps, MarkerVariant };\n","import { Coordinate } from '@bpd-library/types';\n\nconst ZOOM_STEPS = [\n {\n type: 'areaProject',\n zoom: 13.5,\n },\n {\n type: 'district',\n zoom: 15.5,\n },\n {\n type: 'propertyType',\n zoom: 17,\n },\n {\n type: 'constructionNumber',\n zoom: 18,\n },\n];\n\nconst ZOOM_RANGES = {\n areaProject: {\n min: 1,\n max: 13.9,\n },\n district: {\n min: 15,\n max: 16,\n },\n projectPhase: {\n min: 16.5,\n max: 24,\n },\n apartmentBuilding: {\n min: 16.5,\n max: 24,\n },\n propertyType: {\n min: 16.5,\n max: 24,\n },\n constructionNumber: {\n min: 16.5,\n max: 24,\n },\n};\n\nclass AreaMapZoomStep {\n currentZoomStep: number = 0;\n animationSettings = { duration: 600 };\n mapInstance: mapboxgl.Map;\n\n constructor(mapInstance: mapboxgl.Map) {\n this.mapInstance = mapInstance;\n\n this.bindEvents();\n this.updateCurrentZoomStep();\n }\n\n /**\n * @description Zooms the area-map in/out. Zoom steps are based on ZOOM_STEPS\n * @param {('in' | 'out')} direction\n * @param {Coordinate} [centerCoordinates]\n * @return {*}\n * @memberof AreaMapZoom\n */\n public setZoom(direction: 'in' | 'out', centerCoordinates?: Coordinate) {\n if (!this.mapInstance) return;\n\n const nextZoom = direction === 'in' ? this.currentZoomStep + 1 : this.currentZoomStep - 1;\n\n if (ZOOM_STEPS[nextZoom]) {\n this.currentZoomStep = nextZoom;\n\n if (centerCoordinates) {\n this.mapInstance.flyTo({\n ...this.animationSettings,\n center: centerCoordinates,\n zoom: ZOOM_STEPS[nextZoom].zoom,\n });\n } else {\n this.mapInstance.zoomTo(ZOOM_STEPS[nextZoom].zoom, this.animationSettings);\n }\n } else if (direction === 'out') {\n this.mapInstance.zoomOut(this.animationSettings);\n }\n }\n\n private bindEvents() {\n this.mapInstance.on('zoomend', () => this.updateCurrentZoomStep());\n }\n\n /**\n * @description Sets the currentZoomStep to the closest zoomStep, based on the actual zoom level\n * @memberof AreaMapZoomStep\n */\n private updateCurrentZoomStep() {\n const currentZoom = this.mapInstance.getZoom();\n\n let closestStep:\n | {\n distance: number;\n index: number;\n }\n | undefined;\n\n ZOOM_STEPS.forEach((step, index) => {\n const distance = Math.abs(currentZoom - step.zoom);\n\n if (!closestStep || distance < closestStep.distance) {\n closestStep = { distance, index };\n }\n });\n\n if (closestStep) {\n this.currentZoomStep = closestStep.index;\n }\n }\n\n get currentZoomStepType() {\n return ZOOM_STEPS[this.currentZoomStep].type;\n }\n}\n\nexport { AreaMapZoomStep, ZOOM_STEPS, ZOOM_RANGES };\n","import {\n defineElement,\n FC,\n onDidLoad,\n useBindMethod,\n useElement,\n useListen,\n useProp,\n} from '@atomify/hooks';\nimport { ContentCollapseElement } from '@atoms/content-collapse/utilities/content-collapse';\nimport { useStylesheet, useTranslate } from '@source/utilities/hooks';\n\nimport style from '../map-panel.scss';\nimport { MapPanelProps } from '../map-panel.types';\n\nconst EXPANDED_CLASS = 'map-panel--expanded';\nconst COLLAPSED_CLASS = 'map-panel--collapsed';\n\nconst MapPanel: FC = ({ element }) => {\n const [collapseWidth] = useProp('collapseWidth', false);\n const [name] = useProp('name', '');\n const [labelDictionaryKey] = useProp('labelDictionaryKey', null);\n const [, setExpanded] = useProp('expanded', false);\n\n const contentCollapseElement = useElement('bpd-content-collapse');\n const button = useElement('[js-hook-map-panel-button]');\n const buttonInner = useElement('[js-hook-map-panel-button-inner]');\n const labelContainer = useElement('[js-hook-map-panel-label-container]');\n const totalContainer = useElement('[js-hook-map-panel-total-container]');\n\n useStylesheet(style);\n\n useBindMethod('open', open);\n useBindMethod('close', close);\n useBindMethod('setTotal', setTotal);\n useBindMethod('clearTotal', clearTotal);\n\n useListen(button, 'click', toggle);\n\n useListen(\n document,\n `contentCollapse[${name}]::expand`,\n () => {\n setExpanded(true);\n\n element.classList.add(EXPANDED_CLASS);\n element.classList.remove(COLLAPSED_CLASS);\n\n element.style.width = '';\n },\n {\n capture: true,\n },\n );\n\n useListen(\n document,\n `contentCollapse[${name}]::collapse`,\n () => {\n setExpanded(false);\n\n element.classList.add(COLLAPSED_CLASS);\n element.classList.remove(EXPANDED_CLASS);\n\n if (collapseWidth) {\n setCollapsedWidth();\n }\n },\n {\n capture: true,\n },\n );\n\n onDidLoad(() => {\n if (labelDictionaryKey) {\n labelContainer.current?.append(\n useTranslate(labelDictionaryKey, {\n onUpdate: () => {\n if (collapseWidth) setCollapsedWidth();\n },\n }),\n );\n }\n });\n\n function setCollapsedWidth() {\n const buttonWidth = buttonInner.current!.clientWidth;\n element.style.width = `${buttonWidth}px`;\n }\n\n function toggle() {\n const isExpanded = contentCollapseElement.current!.expanded;\n\n if (isExpanded) {\n close();\n } else {\n open();\n }\n }\n\n function close() {\n contentCollapseElement.current!.expanded = false;\n }\n\n function open() {\n contentCollapseElement.current!.expanded = true;\n }\n\n function setTotal(total: number) {\n if (!total) clearTotal();\n\n totalContainer.current!.innerHTML = `${total}`;\n }\n\n function clearTotal() {\n totalContainer.current!.innerHTML = '';\n }\n};\n\nMapPanel.props = {\n label: {\n type: String,\n required: true,\n },\n name: {\n type: String,\n reflectToAttr: true,\n required: true,\n },\n icon: {\n type: String,\n },\n collapseWidth: {\n type: Boolean,\n },\n expanded: {\n type: Boolean,\n },\n labelDictionaryKey: {\n type: String,\n },\n};\n\ndefineElement('map-panel', MapPanel);\n","import './utilities/map-panel';\n\nimport { h } from '@atomify/jsx';\nimport { ContentCollapseContent } from '@atoms/content-collapse';\nimport { BPDFunctionalSvg } from '@source/components/atoms';\n\nconst MapPanel = ({\n label,\n labelDictionaryKey,\n name,\n icon,\n collapseWidth,\n noPadding,\n largeFont,\n children,\n expanded,\n total,\n}: {\n label?: string;\n total?: number;\n labelDictionaryKey?: string | null;\n name: string;\n icon?: string;\n collapseWidth?: boolean;\n noPadding?: boolean;\n largeFont?: boolean;\n children?: NodeList;\n expanded?: boolean;\n}) => (\n \n \n \n {icon && (\n \n \n \n )}\n\n \n {label}\n \n\n \n {total && total}\n \n \n\n \n \n \n \n\n \n
\n {children}\n
\n
\n \n);\n\nexport { MapPanel };\n","import { Coordinate } from '@bpd-library/types';\nimport { ExtendedApiObject, ExtendedAreaModels, ExtendedAreaProject } from '@bpd-library/utilities';\nimport { AreaMapFilterItem, AreaMapFilterSettings } from '@features/area-map/area-map.types';\nimport { PoiMarkersCategory } from '@source/utilities/api-calls/poi-markers';\nimport createStore from '@utilities/store';\n\nexport interface AreaMapState {\n selectedCard?: ExtendedApiObject;\n area?: ExtendedAreaModels;\n areaProjects?: ExtendedAreaProject[];\n filters?: AreaMapFilterSettings;\n poiCategories: PoiMarkersCategory[];\n initialCenter?: Coordinate;\n customIsochroneCenter?: Coordinate;\n hasActiveDirections?: boolean;\n}\n\nconst SET_SELECTED_POLYGON = 'setSelectedCard';\nconst CLEAR_SELECTED_POLYGON = 'clearSelectedCard';\nconst SET_AREA_DATA = 'setAreaData';\nconst SET_AREA_PROJECTS_DATA = 'setAreaProjectsData';\nconst SET_AREA_MAP_FILTERS = 'setAreaMapFilters';\nconst SET_POI_CATEGORIES = 'setPoiCategory';\nconst UPDATE_AREA_MAP_FILTER = 'updateAreaMapFilter';\nconst SET_CUSTOM_ISOCHRONE_CENTER = 'setCustomIsochroneCenter';\nconst SET_INITIAL_CENTER = 'initialCenter';\nconst SET_HAS_ACTIVE_DIRECTIONS = 'setHasActiveDirections';\n\nconst initialState: AreaMapState = {\n poiCategories: [],\n};\n\nconst actions = {\n [SET_SELECTED_POLYGON]: (state: AreaMapState, selected: ExtendedApiObject) => {\n state.selectedCard = undefined;\n state.selectedCard = selected;\n\n return state;\n },\n [CLEAR_SELECTED_POLYGON]: (state: AreaMapState) => {\n state.selectedCard = undefined;\n return state;\n },\n [SET_AREA_DATA]: (state: AreaMapState, area: ExtendedAreaModels) => {\n state.area = area;\n\n return state;\n },\n [SET_AREA_PROJECTS_DATA]: (state: AreaMapState, areaProjects: ExtendedAreaProject[]) => {\n state.areaProjects = areaProjects;\n\n return state;\n },\n [SET_AREA_MAP_FILTERS]: (state: AreaMapState, filters: AreaMapFilterSettings) => {\n state.filters = filters;\n\n return state;\n },\n [UPDATE_AREA_MAP_FILTER]: (\n state: AreaMapState,\n { filterItemId, checked }: { filterItemId: string; checked: boolean },\n ) => {\n let filterItem: AreaMapFilterItem | undefined;\n\n if (!state.filters) return state;\n\n state.filters.forEach(({ items }) => {\n if (!filterItem) {\n filterItem = items.find(({ id }) => id === filterItemId);\n }\n });\n\n if (filterItem) {\n filterItem.checked = checked;\n\n state.filters = [...state.filters];\n }\n\n return state;\n },\n [SET_POI_CATEGORIES]: (state: AreaMapState, poiCategories?: PoiMarkersCategory[]) => {\n state.poiCategories = poiCategories ? [...poiCategories] : [];\n\n return state;\n },\n [SET_CUSTOM_ISOCHRONE_CENTER]: (state: AreaMapState, customIsochroneCenter: Coordinate) => {\n state.customIsochroneCenter = customIsochroneCenter;\n\n return state;\n },\n [SET_INITIAL_CENTER]: (state: AreaMapState, center: Coordinate) => {\n state.initialCenter = center;\n return state;\n },\n [SET_HAS_ACTIVE_DIRECTIONS]: (state: AreaMapState, hasActiveDirections: boolean) => {\n state.hasActiveDirections = hasActiveDirections;\n return state;\n },\n};\n\nexport const areaMapStore = createStore({\n initialState,\n actions,\n});\n\nexport const setSelectedCard = (selected: ExtendedApiObject) => {\n areaMapStore.dispatch(SET_SELECTED_POLYGON, selected);\n};\n\nexport const clearSelectedCard = () => {\n areaMapStore.dispatch(CLEAR_SELECTED_POLYGON);\n};\n\nexport const setAreaData = (area: ExtendedAreaModels) => {\n areaMapStore.dispatch(SET_AREA_DATA, area);\n};\n\nexport const setAreaProjectsData = (areaProjects: ExtendedAreaProject[]) => {\n areaMapStore.dispatch(SET_AREA_PROJECTS_DATA, areaProjects);\n};\n\nexport const setAreaMapFilters = (filters: AreaMapFilterSettings) => {\n areaMapStore.dispatch(SET_AREA_MAP_FILTERS, filters);\n};\n\nexport const updateAreaMapFilter = (props: { filterItemId: string; checked: boolean }) => {\n areaMapStore.dispatch(UPDATE_AREA_MAP_FILTER, props);\n};\n\nexport const setAreaMapPoiCategories = (poiCategories?: PoiMarkersCategory[]) => {\n areaMapStore.dispatch(SET_POI_CATEGORIES, poiCategories);\n};\n\nexport const getAreaMapPoiCategories = () => areaMapStore.getState().poiCategories;\n\nexport const setCustomIsochroneCenter = (customIsochroneCenter: Coordinate) => {\n areaMapStore.dispatch(SET_CUSTOM_ISOCHRONE_CENTER, customIsochroneCenter);\n};\n\nexport const setInitialCenter = (customInitialCenter: Coordinate) => {\n if (areaMapStore.getState().initialCenter) return;\n areaMapStore.dispatch(SET_INITIAL_CENTER, customInitialCenter);\n};\n\nexport const setHasActiveDirections = (hasActiveDirections: boolean) => {\n areaMapStore.dispatch(SET_HAS_ACTIVE_DIRECTIONS, hasActiveDirections);\n};\n","export const AREA_MAP_FILTER_NAMES: { [key: string]: string } = {\n propertyTypes: 'property-types',\n status: 'status',\n};\n","import { ExtendedAreaModels, ExtendedPropertyType } from '@bpd-library/utilities';\nimport { AreaMapFilterSetting } from '@features/area-map/area-map.types';\nimport { translateItem } from '@source/utilities/hooks';\n\nimport { AREA_MAP_FILTER_NAMES } from './filter-names';\n\nconst getHouseTypes = async (data: ExtendedAreaModels): Promise<[string[], string[]]> => {\n const houseTypes: string[] = [];\n\n const addPropertyTypeHouseType = (propertyType: ExtendedPropertyType) => {\n const { houseType } = propertyType;\n\n if (!propertyType || !houseType || houseTypes.includes(houseType)) return;\n\n houseTypes.push(houseType);\n };\n\n // get unique houseTypes\n data.constructionNumbers.forEach(({ propertyType }) => {\n if (propertyType) addPropertyTypeHouseType(propertyType);\n });\n\n // Get unique houseTypes for property types\n data.propertyTypes.forEach(addPropertyTypeHouseType);\n\n // Get unique houseTypes for apartmentBuilding propertyTypes\n data.apartmentBuildings.forEach(({ propertyTypes }) => {\n propertyTypes?.forEach(addPropertyTypeHouseType);\n });\n\n // Translate houseTypes\n const translatedHouseTypes = await Promise.all(\n houseTypes.map(\n async (houseType) => await translateItem(`PropertyTypeName-${houseType.toLowerCase()}`),\n ),\n );\n\n return [houseTypes, translatedHouseTypes];\n};\n\nconst getPropertyTypeFilterSetting = async (\n area: ExtendedAreaModels,\n): Promise => {\n const [houseTypes, translatedHouseTypes] = await getHouseTypes(area);\n\n const filterName = AREA_MAP_FILTER_NAMES.propertyTypes;\n\n return {\n title: await translateItem('HouseType'),\n filterName,\n filterFunctions: {\n constructionNumber: (constructionNumber, filterValue) =>\n constructionNumber.propertyType?.houseType === filterValue,\n propertyType: (propertyType, filterValue) => propertyType.houseType === filterValue,\n apartmentBuilding: (apartmentBuilding, filterValue) => {\n const propertyTypesHasMatch = !!apartmentBuilding.propertyTypes?.find(\n ({ houseType }) => filterValue === houseType,\n );\n const constructionNumbersHasMatch = !!apartmentBuilding.constructionNumbers?.find(\n ({ propertyType }) => propertyType?.houseType === filterValue,\n );\n\n return propertyTypesHasMatch || constructionNumbersHasMatch;\n },\n },\n items: houseTypes.map((houseType, i) => ({\n id: `${filterName}-${houseType}`,\n label: translatedHouseTypes[i],\n value: houseType,\n name: filterName,\n checked: false,\n })),\n };\n};\n\nexport { getPropertyTypeFilterSetting };\n","import {\n ExtendedApartmentBuilding,\n ExtendedConstructionNumber,\n ExtendedPropertyType,\n} from '@bpd-library/utilities';\nimport { AreaMapFilterStatus } from '@features/area-map/area-map.types';\n\nconst getFilterStatus = (\n apiObject: ExtendedConstructionNumber | ExtendedPropertyType | ExtendedApartmentBuilding,\n): AreaMapFilterStatus | undefined => {\n if (apiObject.objectType === 'constructionNumber') {\n switch (apiObject.status) {\n case 'InPreparation':\n case 'Available':\n case 'InOption':\n case 'Sold':\n case 'UnderConstruction':\n return apiObject.status;\n case 'AssigningOn':\n case 'Reserved':\n return 'InOption';\n case 'Rented':\n return 'Sold';\n }\n }\n\n if (apiObject.objectType === 'propertyType') {\n switch (apiObject.status) {\n case 'InPreparation':\n case 'SaleSoon':\n return 'InPreparation';\n case 'AmountAvailable':\n case 'SaleStarted':\n case 'ForRent':\n return 'Available';\n case 'AssigningOn':\n case 'InOption':\n return 'InOption';\n case 'Sold':\n case 'Rented':\n return 'Sold';\n case 'UnderConstruction':\n return 'UnderConstruction';\n }\n }\n\n if (apiObject.objectType === 'apartmentBuilding') {\n switch (apiObject.status) {\n case 'InPreparation':\n case 'SaleSoon':\n return 'InPreparation';\n case 'AmountAvailable':\n case 'Available':\n case 'SaleStarted':\n case 'ForRent':\n return 'Available';\n case 'AssigningOn':\n case 'InOption':\n return 'InOption';\n case 'Sold':\n case 'Rented':\n return 'Sold';\n case 'UnderConstruction':\n return 'UnderConstruction';\n }\n }\n\n return;\n};\n\nexport { AreaMapFilterStatus, getFilterStatus };\n","import { ExtendedAreaModels } from '@bpd-library/utilities';\nimport {\n AreaMapFilterSetting,\n AreaMapFilterStatus,\n AreaMapStatusColor,\n} from '@features/area-map/area-map.types';\nimport { CONSTRUCTION_NUMBER_STATUS_TRANSLATIONS } from '@source/utilities/api-formatters';\nimport { translateItem } from '@source/utilities/hooks';\n\nimport { AREA_MAP_FILTER_NAMES } from './filter-names';\nimport { getFilterStatus } from './get-filter-status';\n\nconst STATUSES_ORDER: AreaMapFilterStatus[] = [\n 'InPreparation',\n 'Available',\n 'InOption',\n 'Sold',\n 'UnderConstruction',\n];\n\nconst STATUS_COLOR: { [key in AreaMapFilterStatus]: AreaMapStatusColor } = {\n InPreparation: 'grey',\n Available: 'green',\n InOption: 'orange',\n Sold: 'red',\n UnderConstruction: 'purple',\n};\n\nconst getUniqueStatuses = (area: ExtendedAreaModels) => {\n let uniqueStatuses: AreaMapFilterStatus[] = [];\n\n const apiObjects = [\n ...area.constructionNumbers,\n ...area.propertyTypes,\n ...area.apartmentBuildings,\n ];\n\n apiObjects.forEach((apiObject) => {\n const status = getFilterStatus(apiObject);\n\n if (!status || uniqueStatuses.includes(status)) return;\n\n uniqueStatuses.push(status);\n });\n\n uniqueStatuses = uniqueStatuses.sort((a, b) =>\n STATUSES_ORDER.indexOf(a) < STATUSES_ORDER.indexOf(b) ? -1 : 1,\n );\n\n return uniqueStatuses;\n};\n\nconst getStatusFilterSetting = async (area: ExtendedAreaModels): Promise => {\n const uniqueStatuses = getUniqueStatuses(area);\n const filterName = AREA_MAP_FILTER_NAMES.status;\n\n return {\n title: await translateItem('Filters.Availability.label'),\n filterName,\n filterFunctions: {\n constructionNumber: (constructionNumber, filterValue) =>\n constructionNumber.status === filterValue,\n propertyType: (propertyType, filterValue) =>\n getFilterStatus(propertyType) === filterValue,\n apartmentBuilding: (apartmentBuilding, filterValue) =>\n getFilterStatus(apartmentBuilding) === filterValue,\n },\n items: await Promise.all(\n uniqueStatuses.map(async (status) => ({\n id: `${filterName}-${status}`,\n label: await translateItem(CONSTRUCTION_NUMBER_STATUS_TRANSLATIONS[status]),\n value: status,\n name: filterName,\n checked: false,\n color: STATUS_COLOR[status],\n })),\n ),\n };\n};\n\nexport { getStatusFilterSetting };\n","import { defineElement, FC, onDidLoad, useElement } from '@atomify/hooks';\nimport { Fragment, h } from '@atomify/jsx';\nimport { useStore } from '@atomify/kit';\nimport { getMapInstance } from '@bpd-library/components';\nimport { ExtendedAreaModels } from '@bpd-library/utilities';\nimport { ZOOM_RANGES } from '@features/area-map/utilities/map/zoom';\nimport { MapPanel } from '@molecules/map-panel/map-panel';\nimport { MapPanelProps } from '@molecules/map-panel/map-panel.types';\nimport { CheckboxElement } from '@source/components/atoms/form-elements/checkbox/checkbox';\nimport {\n AreaMapState,\n areaMapStore,\n setAreaMapFilters,\n updateAreaMapFilter,\n} from '@source/store/area-map';\nimport { useStylesheet } from '@source/utilities/hooks';\nimport { GTMPush } from '@utilities/gtm';\n\nimport style from './area-map-filter.scss';\nimport { constructFilters } from './utilities/construct-filters';\nimport { AREA_MAP_FILTER_NAMES } from './utilities/filter-names';\n\nexport const MAP_FILTER_PANEL_NAME = 'filter-panel';\nconst VISIBLE_CLASS = 'area-map-filter--visible';\n\nconst AreaMapFilter: FC = ({ element }) => {\n const [, subscribe] = useStore(areaMapStore);\n\n const mapPanel = useElement('map-panel');\n const container = useElement('[js-hook-area-map-filter-container]');\n\n let mapInstance: mapboxgl.Map | undefined;\n\n useStylesheet(style);\n\n onDidLoad(() => {\n mapInstance = getMapInstance();\n\n bindEvents();\n handleZoom();\n });\n\n subscribe(\n ({ area }) => {\n if (area) renderFilters(area);\n },\n ['area'],\n );\n\n function bindEvents() {\n const mapPanelNames = Object.values(AREA_MAP_FILTER_NAMES);\n\n mapPanelNames.forEach((name) => {\n document.addEventListener(`contentCollapse[${name}]::expand`, handleExpandCollapse);\n document.addEventListener(`contentCollapse[${name}]::collapse`, handleExpandCollapse);\n });\n\n mapInstance?.on('zoomend', handleZoom);\n }\n\n function handleExpandCollapse() {\n let hasExpandedPanels: boolean = false;\n\n const childMapPanels = Array.from(\n mapPanel.current!.querySelectorAll('map-panel'),\n );\n\n childMapPanels.forEach((mapPanel) => {\n if (mapPanel.expanded) hasExpandedPanels = true;\n });\n\n if (!hasExpandedPanels) mapPanel.current!.close();\n }\n\n function handleZoom() {\n if (!mapInstance) return;\n\n const currentZoom = mapInstance.getZoom();\n\n if (\n currentZoom >= ZOOM_RANGES.constructionNumber.min &&\n currentZoom <= ZOOM_RANGES.constructionNumber.max\n ) {\n element.classList.add(VISIBLE_CLASS);\n } else {\n element.classList.remove(VISIBLE_CLASS);\n }\n }\n\n async function renderFilters(area: ExtendedAreaModels) {\n const filters = await constructFilters(area);\n\n setAreaMapFilters(filters);\n\n container.current!.innerHTML = '';\n container.current!.append(\n \n {filters.map((filter) => (\n \n
\n {filter.items.map((item) => (\n \n ))}\n
\n \n ))}\n
,\n );\n\n bindFormEvents();\n }\n\n function bindFormEvents() {\n const inputElements = Array.from(element.querySelectorAll('input'));\n\n inputElements.forEach((inputElement) => {\n inputElement.addEventListener('change', () => {\n updateAreaMapFilter({\n filterItemId: inputElement.id,\n checked: inputElement.checked,\n });\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'General filter',\n eventLabel: inputElement.checked\n ? `add ${inputElement.value}`\n : `remove ${inputElement.value}`,\n filterCategory: inputElement.name,\n });\n });\n });\n }\n\n return (\n \n \n
\n \n
\n );\n};\n\ndefineElement('area-map-filter', AreaMapFilter);\n","import { ExtendedAreaModels } from '@bpd-library/utilities';\nimport { AreaMapFilterSettings } from '@features/area-map/area-map.types';\n\nimport { getPropertyTypeFilterSetting } from './property-type';\nimport { getStatusFilterSetting } from './status';\n\nconst constructFilters = async (area: ExtendedAreaModels): Promise => {\n const filterSettings: AreaMapFilterSettings = [\n await getPropertyTypeFilterSetting(area),\n await getStatusFilterSetting(area),\n ];\n\n return filterSettings;\n};\n\nexport { constructFilters };\n","import { h } from '@atomify/jsx';\nimport { ButtonRound } from '@source/components/atoms/button-round/button-round';\nimport { Button, ButtonA } from '@source/components/atoms/button/button';\nimport { Image } from '@source/components/atoms/image';\nimport { COLOR_CLASSES, FormattedPrice, FormattedStatus } from '@source/utilities/api-formatters';\n\ninterface MapCardProps {\n title: string;\n image?: string | null;\n description?: string | null;\n status?: FormattedStatus | null;\n price?: FormattedPrice | null;\n isNhg?: boolean | null;\n specs?:\n | {\n title: string | Text;\n subtitle: string | Text;\n }[]\n | null;\n buttonLabel?: string | Text | null;\n buttonUrl?: string | null;\n onButtonClick?: (event: MouseEvent) => void;\n onClose?: Function | null;\n}\n\nconst MapCard = ({\n image,\n title,\n description,\n status,\n price,\n specs,\n isNhg,\n buttonLabel,\n buttonUrl,\n onButtonClick,\n onClose,\n}: MapCardProps) => {\n return (\n
\n {image && (\n
\n \n
\n )}\n\n {onClose && (\n \n )}\n\n
\n
\n {status && (\n \n {status.label}\n \n )}\n\n

{title}

\n\n {price && (\n \n {price.prefix && (\n \n {price.prefix}\n \n )}\n {price.amount && price.amount}\n {price.suffix && (\n \n {price.suffix}\n \n )}\n {isNhg && (\n NHG\n )}\n \n )}\n\n {description &&

{description}

}\n
\n\n {specs && (\n
\n {specs.map((spec) => (\n
\n
{spec.title}
\n

{spec.subtitle}

\n
\n ))}\n
\n )}\n\n {buttonLabel && buttonUrl && (\n \n )}\n\n {buttonLabel && !buttonUrl && onButtonClick && (\n \n )}\n
\n
\n );\n};\n\nexport { MapCard };\n","import { defineElement, FC, useElement, useProp } from '@atomify/hooks';\nimport { h } from '@atomify/jsx';\nimport { useStore } from '@atomify/kit';\nimport {\n ExtendedApartmentBuilding,\n ExtendedConstructionNumber,\n ExtendedDistrict,\n ExtendedProjectPhase,\n ExtendedPropertyType,\n} from '@bpd-library/utilities';\nimport { getMapCardTitle } from '@features/area-map/utilities/get-map-card-title';\nimport { MapCard } from '@molecules/map-card/map-card';\nimport { AreaMapState, areaMapStore, clearSelectedCard } from '@source/store/area-map';\nimport {\n formatApartmentBuildingStatus,\n formatConstructionNumberStatus,\n formatDetailPageUrl,\n formatLivingArea,\n formatPlotArea,\n formatPrice,\n formatProjectPhaseStatus,\n formatPropertyTypeStatus,\n formatRooms,\n} from '@source/utilities/api-formatters';\nimport { GTMPush } from '@source/utilities/gtm';\nimport { useTranslate } from '@source/utilities/hooks';\nimport { isConstructionNumberNhg } from '@utilities/api-utilities/is-nhg';\nexport const MAP_INFO_PANEL_NAME = 'info-panel';\n\nconst AreaMapCard: FC = () => {\n const [onRender] = useProp('onRender', null);\n const [onClose] = useProp('onClose', null);\n\n const [, subscribe] = useStore(areaMapStore);\n\n const container = useElement('[js-hook-area-map-card-container]');\n\n subscribe(\n ({ selectedCard }) => {\n if (selectedCard) {\n switch (selectedCard.objectType) {\n case 'constructionNumber':\n renderConstructionNumber(selectedCard);\n break;\n case 'propertyType':\n renderPropertyType(selectedCard);\n break;\n case 'apartmentBuilding':\n renderApartmentBuilding(selectedCard);\n break;\n case 'projectPhase':\n renderProjectPhase(selectedCard);\n break;\n case 'district':\n renderDistrict(selectedCard);\n break;\n }\n } else {\n removeCard();\n }\n },\n ['selectedCard'],\n );\n\n async function renderConstructionNumber(constructionNumber: ExtendedConstructionNumber) {\n const formattedStatus = formatConstructionNumberStatus(constructionNumber);\n const livingArea = formatLivingArea(constructionNumber);\n const plotArea = formatPlotArea(constructionNumber);\n const rooms = formatRooms(constructionNumber);\n\n const title = await getMapCardTitle(constructionNumber);\n const projectPhaseName = constructionNumber.projectPhaseName;\n const url = formatDetailPageUrl({ constructionNumber });\n\n const type = constructionNumber.objectType;\n\n const isNhg = isConstructionNumberNhg(constructionNumber);\n\n let formattedPrice;\n\n const showPriceAndButton =\n constructionNumber.status !== 'UnderConstruction' &&\n constructionNumber.status !== 'Sold';\n\n if (showPriceAndButton) {\n formattedPrice = formatPrice({ constructionNumber });\n }\n\n const specs = [];\n\n if (livingArea)\n specs.push({\n title: `${livingArea.value} ${livingArea.suffix || ''}`,\n subtitle: useTranslate('houses-infobox-living'),\n });\n\n if (plotArea)\n specs.push({\n title: `${plotArea.value} ${plotArea.suffix || ''}`,\n subtitle: useTranslate('houses-infobox-lot'),\n });\n\n if (rooms)\n specs.push({\n title: `${rooms.value} ${rooms.suffix || ''}`,\n subtitle: useTranslate('Rooms'),\n });\n\n container.current!.innerHTML = '';\n container.current!.append(\n {\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: `${type} details`,\n eventLabel: `${constructionNumber.propertyTypeName}_${constructionNumber.id}`,\n });\n }}\n onClose={close}\n />,\n );\n\n if (onRender) onRender();\n }\n\n async function renderPropertyType(propertyType: ExtendedPropertyType) {\n const url = formatDetailPageUrl({ propertyType });\n const livingArea = formatLivingArea(propertyType);\n const plotArea = formatPlotArea(propertyType);\n const rooms = formatRooms(propertyType);\n\n const title = await getMapCardTitle(propertyType);\n const formattedStatus = formatPropertyTypeStatus(propertyType);\n const formattedPrice = formatPrice({ propertyType });\n\n const type = propertyType.objectType;\n\n const specs = [];\n\n if (livingArea)\n specs.push({\n title: `${livingArea.value} ${livingArea.suffix || ''}`,\n subtitle: useTranslate('houses-infobox-living'),\n });\n\n if (plotArea)\n specs.push({\n title: `${plotArea.value} ${plotArea.suffix || ''}`,\n subtitle: useTranslate('houses-infobox-lot'),\n });\n\n if (rooms)\n specs.push({\n title: `${rooms.value} ${rooms.suffix || ''}`,\n subtitle: useTranslate('Rooms'),\n });\n\n container.current!.innerHTML = '';\n container.current!.append(\n {\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: `${type} details`,\n eventLabel: `${propertyType.name}_${propertyType.id}`,\n });\n }}\n onClose={close}\n />,\n );\n\n if (onRender) onRender();\n }\n\n async function renderApartmentBuilding(apartmentBuilding: ExtendedApartmentBuilding) {\n const title = await getMapCardTitle(apartmentBuilding);\n const formattedStatus = formatApartmentBuildingStatus(apartmentBuilding);\n const formattedPrice = formatPrice({ apartmentBuilding });\n\n const rooms = formatRooms(apartmentBuilding);\n const livingArea = formatLivingArea(apartmentBuilding);\n const url = `${window.__ENVIRONMENT_DETAILS__.areaHouseOverviewUrl}?apartmentBuildingId=${apartmentBuilding.id}`;\n\n const type = apartmentBuilding.objectType;\n\n const specs = [];\n\n if (livingArea)\n specs.push({\n title: `${livingArea.value} ${livingArea.suffix || ''}`,\n subtitle: useTranslate('houses-infobox-living'),\n });\n\n if (rooms)\n specs.push({\n title: `${rooms.value} ${rooms.suffix || ''}`,\n subtitle: useTranslate('Rooms'),\n });\n\n container.current!.innerHTML = '';\n container.current!.append(\n {\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: `${type} details`,\n eventLabel: `${apartmentBuilding.displayName}_${apartmentBuilding.id}`,\n });\n }}\n onClose={close}\n />,\n );\n\n if (onRender) onRender();\n }\n\n async function renderProjectPhase(projectPhase: ExtendedProjectPhase) {\n const title = await getMapCardTitle(projectPhase);\n const formattedStatus = formatProjectPhaseStatus(projectPhase);\n\n container.current!.innerHTML = '';\n container.current!.append(\n ,\n );\n\n if (onRender) onRender();\n }\n\n async function renderDistrict(district: ExtendedDistrict) {\n const districts = areaMapStore.getState().area?.districts;\n const hasMultipleDistricts = districts ? districts.length > 1 : false;\n\n const title = await getMapCardTitle(district);\n const buttonLabel = hasMultipleDistricts ? useTranslate('ViewDetails') : undefined;\n const buttonUrl = hasMultipleDistricts ? district.url : undefined;\n\n const type = district.objectType;\n\n container.current!.innerHTML = '';\n container.current!.append(\n {\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: `${type} details`,\n eventLabel: `${district.name}_${district.id}`,\n });\n }}\n onClose={close}\n />,\n );\n\n if (onRender) onRender();\n }\n\n function close() {\n clearSelectedCard();\n\n if (onClose) onClose();\n }\n\n function removeCard() {\n container.current!.innerHTML = '';\n }\n\n return
;\n};\n\nAreaMapCard.props = {\n onRender: {\n type: Function,\n },\n onClose: {\n type: Function,\n },\n};\n\ndefineElement('area-map-card', AreaMapCard);\n","import {\n Component,\n defineElement,\n FC,\n useBindMethod,\n useElement,\n useElements,\n useProp,\n} from '@atomify/hooks';\nimport { h } from '@atomify/jsx';\nimport { BPDFormElement, FormElement } from '@source/components/atoms';\nimport { ChipCheckbox } from '@source/components/atoms/form-elements/chip/chip';\nimport { setAreaMapPoiCategories } from '@source/store/area-map';\nimport { PoiMarkersCategory } from '@source/utilities/api-calls/poi-markers';\nimport { useFormChanges, useStylesheet, useTranslate } from '@source/utilities/hooks';\nimport { GTMPush } from '@utilities/gtm';\n\nimport style from './area-map-poi.scss';\n\nexport const MAP_INFO_PANEL_NAME = 'info-panel';\n\nconst POI_ELEMENTS: {\n category: PoiMarkersCategory;\n icon: string;\n key: string;\n}[] = [\n {\n category: 'education',\n icon: 'hotspot-education',\n key: 'Education',\n },\n {\n category: 'care',\n icon: 'hotspot-care',\n key: 'Feature.overigvoorzieningen',\n },\n {\n category: 'transport',\n icon: 'hotspot-transport',\n key: 'Accessibility',\n },\n {\n category: 'shopping',\n icon: 'hotspot-shopping',\n key: 'Shopping',\n },\n {\n category: 'drinking',\n icon: 'hotspot-drinking',\n key: 'GoingOut',\n },\n {\n category: 'playing',\n icon: 'hotspot-playing',\n key: 'SportsAndGames',\n },\n];\n\nexport interface AreaMapPoiProps extends Component {\n resetFilter: () => void;\n}\n\nconst AreaMapPoi: FC = () => {\n const [poiCategory] = useProp('poiCategory', null);\n\n const poiForm = useElement('[js-hook-area-map-poi-form]');\n const poiInputs = useElements('[js-hook-area-map-poi-form] input');\n\n useStylesheet(style);\n\n useBindMethod('resetFilter', resetFilter);\n\n useFormChanges(poiForm, ({ additions, deletions }) => {\n const categoryRemoved = deletions[0]?.value as PoiMarkersCategory;\n const categoryClicked = additions[0]?.value as PoiMarkersCategory;\n\n const categories = Array.from(poiInputs.current)\n .filter((input) => input!.checked)\n .map((input) => input!.value) as PoiMarkersCategory[];\n\n const eventLabel = additions.length\n ? `add ${categoryClicked}`\n : `remove ${categoryRemoved}`;\n\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'Provision filter',\n eventLabel,\n });\n\n setAreaMapPoiCategories(categories);\n });\n\n function resetFilter() {\n Array.from(poiInputs.current).forEach((input) => {\n input!.checked = false;\n });\n\n setAreaMapPoiCategories([]);\n }\n\n return (\n \n
\n {POI_ELEMENTS.map((poiElement) => (\n
\n \n
\n ))}\n
\n
\n );\n};\n\nAreaMapPoi.props = {\n poiCategory: {\n type: String,\n },\n};\n\ndefineElement('area-map-poi', AreaMapPoi);\n","import { Fragment, h } from '@atomify/jsx';\nimport { MapTransportProfile } from '@bpd-library/types';\nimport { ChipRadio } from '@source/components/atoms/form-elements/chip/chip';\nimport { useTranslate } from '@utilities/hooks';\n\ninterface TravelTypeProperties {\n uniqueName: string;\n storedProfile?: string | undefined;\n hook: string;\n}\n\nconst ISOCHRONE_PROFILES: {\n profile: MapTransportProfile;\n icon: string;\n}[] = [\n {\n profile: 'walking',\n icon: 'icons-walking',\n },\n {\n profile: 'cycling',\n icon: 'icons-cycling',\n },\n {\n profile: 'driving',\n icon: 'icons-driving',\n },\n];\n\nconst AreaMapTravelTypes = ({ uniqueName, storedProfile, hook }: TravelTypeProperties) => {\n return (\n \n

\n {useTranslate('SelectModeOfTransport')}\n

\n ({\n id: `${uniqueName}-${profile.icon}`,\n icon: profile.icon,\n value: profile.profile,\n checked: profile.profile == storedProfile,\n }))}\n hook={hook}\n />\n
\n );\n};\n\nexport default AreaMapTravelTypes;\n","import { Component, defineElement, FC, useBindMethod, useElement, useListen } from '@atomify/hooks';\nimport { h } from '@atomify/jsx';\nimport { BPDRadio } from '@atoms/form-elements/utilities/radio';\nimport { clearIsochrone, getMapInstance, setIsochrone } from '@bpd-library/components';\nimport { Coordinate, MapTransportProfile } from '@bpd-library/types';\nimport { getApiObjectCenter } from '@bpd-library/utilities';\nimport { BPDFormElement } from '@source/components/atoms';\nimport { ChipRadio } from '@source/components/atoms/form-elements/chip/chip';\nimport { FormElement } from '@source/components/atoms/form-elements/form/form';\nimport { useStylesheet, useTranslate } from '@source/utilities/hooks';\nimport { useFormChanges } from '@source/utilities/hooks/use-form-changes';\nimport { areaMapStore } from '@store/area-map';\nimport { GTMPush } from '@utilities/gtm';\n\nimport AreaMapTravelTypes from '../area-map-travel-types';\nimport style from './area-map-isochrone.scss';\n\nexport const MAP_INFO_PANEL_NAME = 'info-panel';\n\nconst ISOCHRONE_MINUTES: number[] = [10, 30, 60];\n\nconst DEFAULT_MINUTES: number = 10;\nconst DEFAULT_PROFILE: MapTransportProfile = 'walking';\n\nconst PROFILE = 'profile';\nconst MINUTES = 'minutes';\n\nexport interface AreaMapIsochroneProps extends Component {\n resetFilter: () => void;\n}\n\nconst AreaMapIsochrone: FC = () => {\n const form = useElement('[js-hook-area-map-isochrone-form]');\n const profileRadio = useElement('[js-hook-area-map-isochrone-profile]');\n const minutesRadio = useElement('[js-hook-area-map-isochrone-minutes]');\n\n let preIsochroneBounds: mapboxgl.LngLatBounds | null = null;\n\n useStylesheet(style);\n\n useBindMethod('resetFilter', resetFilter);\n\n useListen(form, 'change', () => {\n const selectedProfile = profileRadio.current?.getSelectedInput()?.value;\n const selectedMinutes = minutesRadio.current?.getSelectedInput()?.value;\n\n if (selectedProfile || selectedMinutes) {\n let profile: MapTransportProfile;\n let minutes: number;\n\n if (selectedProfile) {\n profile = selectedProfile as MapTransportProfile;\n } else {\n profile = DEFAULT_PROFILE;\n profileRadio.current?.setCheckedByValue(DEFAULT_PROFILE);\n }\n\n if (selectedMinutes) {\n minutes = parseInt(selectedMinutes);\n } else {\n minutes = DEFAULT_MINUTES;\n minutesRadio.current?.setCheckedByValue(DEFAULT_MINUTES);\n }\n\n createIsochrone(profile, minutes);\n }\n });\n\n useFormChanges(form, ({ additions }) => {\n additions.forEach((item) => {\n const { key } = item;\n\n if (key == PROFILE) {\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'Transport',\n eventLabel: item.value,\n });\n }\n\n if (key == MINUTES) {\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'Time Range',\n eventLabel: `${item.value}min`,\n });\n }\n });\n });\n\n function createIsochrone(profile: MapTransportProfile, minutes: number) {\n const coordinate = getIsochroneCenter();\n\n if (coordinate) {\n preIsochroneBounds = !preIsochroneBounds\n ? getMapInstance()?.getBounds() || null\n : preIsochroneBounds;\n\n setIsochrone({\n coordinate,\n profile,\n minutes,\n fitBounds: true,\n });\n }\n }\n\n function getIsochroneCenter(): Coordinate | undefined {\n const state = areaMapStore.getState();\n\n /*\n Use the custom isochrone center in the store, if set\n */\n const customCenter = state.customIsochroneCenter;\n\n if (customCenter) return customCenter;\n\n /*\n If there's no custom isochrone center, use the area project center instead\n */\n const areaProject = state.area?.areaProject;\n\n if (areaProject) {\n const areaProjectCenter = getApiObjectCenter(areaProject, { as: 'coordinate' });\n\n if (areaProjectCenter) return areaProjectCenter;\n }\n\n return;\n }\n\n function resetFilter() {\n clearIsochrone();\n\n const selectedProfile = profileRadio.current!.getSelectedInput();\n const selectedMinutes = minutesRadio.current!.getSelectedInput();\n\n if (selectedProfile) selectedProfile.checked = false;\n if (selectedMinutes) selectedMinutes.checked = false;\n\n if (preIsochroneBounds) {\n getMapInstance()?.fitBounds(preIsochroneBounds, {\n animate: true,\n duration: 1000,\n });\n\n preIsochroneBounds = null;\n }\n }\n\n return (\n \n \n\n

{useTranslate('Time')}

\n\n ({\n id: `area-map-isochrone-minute-${minute}`,\n label: `${minute}min`,\n value: `${minute}`,\n }))}\n />\n
\n );\n};\n\ndefineElement('area-map-isochrone', AreaMapIsochrone);\n","import { deviceWidth } from '@source/utilities/media-query';\n\n/**\n * @description Returns if the window is currently on a mobile breakpoint\n * @return {*} {boolean}\n */\nfunction areaMapIsMobile(): boolean {\n return deviceWidth.isMobilePlusAndSmaller();\n}\n\nexport default areaMapIsMobile;\n","import { h } from '@atomify/jsx';\nimport { InputElement } from '@atoms/form-elements/input/input';\nimport { BPDFunctionalSvg } from '@atoms/svg/svg';\n\ninterface MapSearchProperties {\n id: string;\n hook: string;\n label: Text | string;\n}\n\nconst MapSearch = ({ hook, id, label }: MapSearchProperties) => {\n return (\n \n
\n \n\n \n
\n\n
\n \n );\n};\n\nexport default MapSearch;\n","import { defineElement, FC, useElement, useListen } from '@atomify/hooks';\nimport { Fragment, h } from '@atomify/jsx';\nimport { BPDInput } from '@atoms/form-elements/utilities/input';\nimport { BPDRadio } from '@atoms/form-elements/utilities/radio';\nimport { BPDFunctionalSvg } from '@atoms/svg/svg';\nimport { clearDirections, getMapInstance, mapStore, setDirections } from '@bpd-library/components';\nimport { Coordinate, MapTransportProfile } from '@bpd-library/types';\nimport { getApiObjectCenter } from '@bpd-library/utilities';\nimport areaMapIsMobile from '@features/area-map/utilities/area-map-is-mobile';\nimport { getMapCardTitle } from '@features/area-map/utilities/get-map-card-title';\nimport MapSearch from '@molecules/map-search/map-search';\nimport { BPDFormElement } from '@source/components/atoms';\nimport { useStylesheet, useTranslate } from '@source/utilities/hooks';\nimport { areaMapStore, setHasActiveDirections } from '@store/area-map';\nimport { GTMPush } from '@utilities/gtm';\nimport cookie from 'js-cookie';\n\nimport AreaMapTravelTypes from '../area-map-travel-types/';\nimport style from './area-map-directions.scss';\n\nconst COOKIE_DIRECTION_NAME = 'directionInput';\nconst DEFAULT_PROFILE: MapTransportProfile = 'walking';\n\ntype RoutePoint = {\n location?: Coordinate | null;\n name?: string | null;\n};\n\nconst AreaMapDirections: FC = ({ element }) => {\n const form = useElement('[js-hook-area-map-directions-form]');\n const profileRadio = useElement('[js-hook-area-map-directions-radio]');\n const mapSearchInput = useElement('[js-hook-area-map-directions-search] bpd-input');\n\n const storedProfile = cookie.get(COOKIE_DIRECTION_NAME) as MapTransportProfile;\n let profile = storedProfile || DEFAULT_PROFILE;\n\n let preDirectionsBounds: mapboxgl.LngLatBounds | null = null;\n\n const start: RoutePoint = {};\n const end: RoutePoint = {};\n\n useStylesheet(style);\n\n useListen(form, 'change', () => {\n const selectedProfile = profileRadio.current?.getSelectedInput()\n ?.value as MapTransportProfile;\n\n profile = selectedProfile || DEFAULT_PROFILE;\n\n cookie.set(COOKIE_DIRECTION_NAME, profile);\n profileRadio.current?.setCheckedByValue(profile);\n addDirections();\n });\n\n areaMapStore.subscribe(\n async ({ selectedCard, area, initialCenter }) => {\n if (selectedCard) {\n start.name = await getMapCardTitle(selectedCard);\n start.location = getApiObjectCenter(selectedCard, { as: 'coordinate' }) || null;\n addDirections();\n } else {\n // TODO (for district names): possibly add the initial name in the store along with the center\n start.name = area?.areaProject.name;\n start.location = initialCenter;\n clearDirections();\n }\n },\n ['selectedCard'],\n );\n\n mapStore.subscribe(\n ({ searchResult }) => {\n if (searchResult) {\n end.location = searchResult.result.center;\n end.name = searchResult.result.text;\n addDirections();\n }\n },\n ['searchResult'],\n );\n\n function addDirections() {\n if (!end.location) return;\n\n if (!start.location) {\n const { area, initialCenter } = areaMapStore.getState();\n if (!initialCenter) return;\n\n start.name = area?.areaProject.name || null;\n start.location = initialCenter;\n }\n\n preDirectionsBounds = !preDirectionsBounds\n ? getMapInstance()?.getBounds() || null\n : preDirectionsBounds;\n\n setDirections({\n profile,\n start: start.location,\n end: end.location,\n startLabel: () => ,\n endLabel: () => ,\n durationLabel: ({ hours, minutes }) => (\n \n ),\n boundsPadding: getDirectionBoundsPadding(),\n });\n GTMPush({\n event: 'Map interaction',\n eventCategory: 'Map',\n eventAction: 'routeCreated',\n eventLabel: profile,\n });\n\n setHasActiveDirections(true);\n }\n\n function removeDirections() {\n clearDirections();\n\n mapSearchInput.current?.rebindValue('');\n end.location = null;\n end.name = null;\n\n if (preDirectionsBounds) {\n getMapInstance()?.fitBounds(preDirectionsBounds, {\n animate: true,\n duration: 1000,\n });\n\n preDirectionsBounds = null;\n }\n\n setHasActiveDirections(false);\n }\n\n function getDirectionBoundsPadding() {\n const directionsRect = element.getBoundingClientRect();\n const paddingLeft = directionsRect.x + directionsRect.width + 50;\n return areaMapIsMobile()\n ? { top: 50, bottom: 200, left: 50, right: 50 }\n : { top: 50, bottom: 50, left: paddingLeft, right: 50 };\n }\n\n const DirectionsPopup = ({\n label,\n profile,\n isDuration,\n }: {\n label: string;\n profile?: MapTransportProfile;\n isDuration?: boolean;\n }) => (\n
\n {profile && }\n {label}\n {isDuration && (\n \n )}\n
\n );\n\n return (\n \n \n \n \n \n \n );\n};\n\ndefineElement('area-map-directions', AreaMapDirections);\n","import '@features/area-map/components/area-map-card';\nimport '@features/area-map/components/area-map-poi';\nimport '@features/area-map/components/area-map-isochrone';\nimport '@features/area-map/components/area-map-directions';\n\nimport {\n Component,\n defineElement,\n FC,\n useBindMethod,\n useElement,\n useEvent,\n useListen,\n useProp,\n} from '@atomify/hooks';\nimport { h } from '@atomify/jsx';\nimport { useStore } from '@atomify/kit';\nimport { Button } from '@atoms/button/button';\nimport areaMapIsMobile from '@features/area-map/utilities/area-map-is-mobile';\nimport { MapPanel } from '@molecules/map-panel/map-panel';\nimport { MapPanelProps } from '@molecules/map-panel/map-panel.types';\nimport { PoiMarkersCategory } from '@source/utilities/api-calls/poi-markers';\nimport { getChildrenHeight } from '@source/utilities/get-children-height';\nimport { useStylesheet, useTranslate } from '@source/utilities/hooks';\nimport { useMedia } from '@source/utilities/media-query';\nimport { AreaMapState, areaMapStore } from '@store/area-map';\n\nimport { MAP_FILTER_PANEL_NAME } from '../area-map-filter/area-map-filter';\nimport { AreaMapIsochroneProps } from '../area-map-isochrone/area-map-isochrone';\nimport { AreaMapPoiProps } from '../area-map-poi/area-map-poi';\nimport style from './area-map-info.scss';\n\nexport const MAP_INFO_PANEL_NAME = 'info-panel';\nexport const MAP_DIRECTIONS_PANEL = 'info-directions';\n\nconst HIDDEN_CLASS = 'area-map-info--hidden';\nconst COLLAPSED_CLASS = 'area-map-info--collapsed';\n\nexport interface AreaMapInfoProps extends Component {\n toggleMapCard: () => void;\n collapseMapCard: () => void;\n expandMapCard: () => void;\n}\n\nconst AreaMapInfo: FC = ({ element }) => {\n const [, subscribeAreaMap] = useStore(areaMapStore);\n\n const [poiCategory] = useProp('poiCategory', null);\n\n const isochroneElement = useElement('area-map-isochrone');\n const poiElement = useElement('area-map-poi');\n\n let mapCardIsCollapsed: boolean = true;\n\n const mapCardExpandEvent = useEvent({ eventName: 'mapCardExpand' });\n const mapCardCollapseEvent = useEvent({ eventName: 'mapCardCollapse' });\n\n useStylesheet(style);\n\n useBindMethod('toggleMapCard', toggle);\n useBindMethod('collapseMapCard', collapseMapCard);\n useBindMethod('expandMapCard', expandMapCard);\n\n useMedia(() => {\n if (!areaMapIsMobile() && mapCardIsCollapsed) {\n expandMapCard();\n }\n });\n\n subscribeAreaMap(\n ({ poiCategories }) => {\n const mapPanelInfo = getMapPanelByName(MAP_INFO_PANEL_NAME);\n const totalSelectedCategories = poiCategories.length;\n\n if (!mapPanelInfo) return;\n\n if (totalSelectedCategories) {\n mapPanelInfo.setTotal(totalSelectedCategories);\n } else {\n mapPanelInfo.clearTotal();\n }\n },\n ['poiCategories'],\n );\n\n /*\n When the filter panel expands, this one should be hidden\n */\n useListen(document, `contentCollapse[${MAP_FILTER_PANEL_NAME}]::expand`, () => {\n element.classList.add(HIDDEN_CLASS);\n });\n\n /*\n When the filter panel collapses, this one should be shown\n */\n useListen(document, `contentCollapse[${MAP_FILTER_PANEL_NAME}]::collapse`, () => {\n element.classList.remove(HIDDEN_CLASS);\n });\n\n /**\n * @description Collapses the area-map-card\n */\n function expandMapCard() {\n const mapCardImage = element.querySelector('[js-hook-map-card-image]');\n\n if (mapCardImage) {\n mapCardImage.style.marginTop = `0`;\n }\n\n element.classList.remove(COLLAPSED_CLASS);\n element.style.height = 'auto';\n\n mapCardIsCollapsed = false;\n mapCardExpandEvent.emit(true);\n }\n\n /**\n * @description Collapses the area-map-card\n */\n function collapseMapCard() {\n const childHeight = getChildrenHeight(element);\n element.style.height = `${childHeight}px`;\n\n const mapCardImage = element.querySelector('[js-hook-map-card-image]');\n const mapCardMainContent = element.querySelector(\n '[js-hook-map-card-main-content]',\n );\n\n if (mapCardImage && mapCardMainContent) {\n const imageHeight = getChildrenHeight(mapCardImage);\n const mainContentHeight = mapCardMainContent.clientHeight;\n\n mapCardImage.style.marginTop = `-${imageHeight}px`;\n element.style.height = `${mainContentHeight + 32}px`;\n\n element.scrollTo({ top: 0 });\n\n mapCardIsCollapsed = true;\n }\n\n element.classList.add(COLLAPSED_CLASS);\n mapCardCollapseEvent.emit(true);\n }\n\n /**\n * @description Toggles the area-map-card\n */\n function toggle() {\n if (mapCardIsCollapsed) {\n expandMapCard();\n } else {\n collapseMapCard();\n }\n }\n\n function resetFilter() {\n isochroneElement.current?.resetFilter();\n poiElement.current?.resetFilter();\n }\n\n function viewMap() {\n const mapPanelInfo = getMapPanelByName(MAP_INFO_PANEL_NAME);\n const mapPanelDirections = getMapPanelByName(MAP_DIRECTIONS_PANEL);\n\n mapPanelInfo?.close();\n mapPanelDirections?.close();\n\n if (!mapCardIsCollapsed) {\n collapseMapCard();\n }\n }\n\n function getMapPanelByName(name: string): MapPanelProps | null {\n return element.querySelector(`map-panel[name=\"${name}\"]`);\n }\n\n return (\n
\n
\n {\n if (areaMapIsMobile()) {\n collapseMapCard();\n }\n }}\n onClose={() => {\n expandMapCard();\n }}\n />\n \n
\n \n\n
\n\n \n\n \n\n \n
\n \n \n \n \n
\n
\n );\n};\n\nAreaMapInfo.props = {\n poiCategory: {\n type: String,\n },\n};\n\ndefineElement('area-map-info', AreaMapInfo);\n","import { ExtendedAreaModels } from '@bpd-library/utilities';\n\nimport { AreaMapFilterItem, AreaMapFilterSetting, AreaMapFilterSettings } from '../area-map.types';\n\nconst getCheckedFilters = (filters: AreaMapFilterSettings): AreaMapFilterSettings => {\n const filterItemIsChecked = (filterItem: AreaMapFilterItem) => !!filterItem.checked;\n const hasCheckedItems = (filter: AreaMapFilterSetting) =>\n !!filter.items.find(filterItemIsChecked);\n\n const checkedFilters = filters.filter(hasCheckedItems).map(filter => ({\n ...filter,\n items: filter.items.filter(filterItemIsChecked),\n }));\n\n return checkedFilters;\n};\n\nconst filterArea = (\n area: ExtendedAreaModels,\n filters: AreaMapFilterSettings,\n): ExtendedAreaModels => {\n const filteredArea = { ...area };\n\n const checkedFilters = getCheckedFilters(filters);\n\n filteredArea.constructionNumbers = filteredArea.constructionNumbers.filter(\n constructionNumber => {\n const isCheckedPerFilter: boolean[] = [];\n\n checkedFilters.forEach(filter => {\n let isChecked = false;\n\n filter.items.forEach(item => {\n if (filter.filterFunctions.constructionNumber(constructionNumber, item.value)) {\n isChecked = true;\n }\n });\n\n isCheckedPerFilter.push(isChecked);\n });\n\n return !isCheckedPerFilter.includes(false);\n },\n );\n\n filteredArea.propertyTypes = filteredArea.propertyTypes.filter(propertyType => {\n const isCheckedPerFilter: boolean[] = [];\n\n checkedFilters.forEach(filter => {\n let isChecked = false;\n\n filter.items.forEach(item => {\n if (filter.filterFunctions.propertyType(propertyType, item.value)) {\n isChecked = true;\n }\n });\n\n isCheckedPerFilter.push(isChecked);\n });\n\n return !isCheckedPerFilter.includes(false);\n });\n\n filteredArea.apartmentBuildings = filteredArea.apartmentBuildings.filter(apartmentBuilding => {\n const isCheckedPerFilter: boolean[] = [];\n\n checkedFilters.forEach(filter => {\n let isChecked = false;\n\n filter.items.forEach(item => {\n if (filter.filterFunctions.apartmentBuilding(apartmentBuilding, item.value)) {\n isChecked = true;\n }\n });\n\n isCheckedPerFilter.push(isChecked);\n });\n\n return !isCheckedPerFilter.includes(false);\n });\n\n return filteredArea;\n};\n\nexport { filterArea };\n","import { Coordinates } from '@bpd-library/types';\n\nimport environment from '../environment';\n\nconst ENDPOINT = '/umbraco/api/marker/markers';\n\ntype PoiMarkersCategory = 'education' | 'care' | 'transport' | 'shopping' | 'playing' | 'drinking';\n\ninterface PoiMarker {\n coordinates: Coordinates;\n id: string;\n title?: string;\n description?: string;\n category: string;\n}\n\nconst fetchPoiMarkers = async ({\n coordinates,\n category,\n}: {\n coordinates: Coordinates;\n category: PoiMarkersCategory;\n}): Promise => {\n const { nodeId } = window.__ENVIRONMENT_DETAILS__;\n\n let url: URL;\n\n const latitude = coordinates[0][0][1];\n const longitude = coordinates[0][0][0];\n\n if (environment.isLocal) {\n url = new URL(`${window.__ENVIRONMENT_DETAILS__.baseApi}${ENDPOINT}`);\n\n url.searchParams.append('nodeId', `${nodeId}`);\n url.searchParams.append('category', category);\n url.searchParams.append('latitude', '52.083194');\n url.searchParams.append('longitude', '4.356749');\n } else {\n url = new URL(`${window.location.origin}${ENDPOINT}`);\n\n url.searchParams.append('nodeId', `${nodeId}`);\n url.searchParams.append('category', category);\n url.searchParams.append('latitude', `${latitude}`);\n url.searchParams.append('longitude', `${longitude}`);\n }\n\n try {\n const response = await fetch(url.toString(), {\n method: 'GET',\n });\n\n const data = await response?.json();\n const transformedData = transformData(data);\n\n return transformedData;\n } catch (e) {\n if (e && environment.isLocal) {\n console.log(e);\n }\n }\n\n return;\n};\n\nconst transformData = (data: any): PoiMarker[] => {\n const transformedData: PoiMarker[] = [];\n\n data.features.forEach((feature: any) => {\n if (feature.geometry?.coordinates && feature.properties.category) {\n transformedData.push({\n id: feature.id,\n coordinates: [[feature.geometry.coordinates]],\n title: feature.properties.title,\n description: feature.properties.description,\n category: feature.properties.category,\n });\n }\n });\n\n return transformedData;\n};\n\nexport { fetchPoiMarkers, PoiMarkersCategory, PoiMarker };\n","import { MapDataItem } from '@bpd-library/types';\nimport { ExtendedAreaModels, getApiObjectCenter } from '@bpd-library/utilities';\nimport { getAreaMapPoiCategories } from '@store/area-map';\nimport { fetchPoiMarkers, PoiMarker, PoiMarkersCategory } from '@utilities/api-calls/poi-markers';\n\nconst poiMapDataItems: { [key in PoiMarkersCategory]?: MapDataItem[] } = {};\n\nconst getPoiMapData = async (area: ExtendedAreaModels): Promise => {\n const areaProjectCenter = area.areaProject && getApiObjectCenter(area.areaProject);\n const poiCategories = getAreaMapPoiCategories();\n\n if (!areaProjectCenter || !poiCategories.length) return [];\n\n const mapDataItems: MapDataItem[] = [];\n\n await Promise.all(\n poiCategories.map(async (poiCategory) => {\n if (poiMapDataItems[poiCategory]) {\n // Return cached mapDataItems if they exist\n mapDataItems.push(...poiMapDataItems[poiCategory]!);\n return;\n } else {\n // If they're not cached, fetch and compose the mapDataItems\n const markers = await fetchPoiMarkers({\n category: poiCategory,\n coordinates: areaProjectCenter,\n });\n\n if (markers) {\n const items = composeMapDataItems(markers, poiCategory);\n\n poiMapDataItems[poiCategory] = items;\n\n mapDataItems.push(...items);\n }\n }\n }),\n );\n\n return mapDataItems;\n};\n\nconst composeMapDataItems = (markers: PoiMarker[], category: PoiMarkersCategory): MapDataItem[] => {\n const mapDataItems: MapDataItem[] = [];\n\n markers.forEach(({ id, coordinates, description, title }) => {\n mapDataItems.push({\n coordinates,\n id,\n title,\n description,\n category,\n variant: 'poi',\n });\n });\n\n return mapDataItems;\n};\n\nexport { getPoiMapData };\n","export const IN_PREPARATION = 'inPreparation';\nexport const AVAILABLE = 'available';\nexport const IN_OPTION = 'inOption';\nexport const SOLD = 'sold';\nexport const UNDER_CONSTRUCTION = 'underConstruction';\nexport const RESERVED = 'reserved';\n","import {\n ExtendedApartmentBuilding,\n ExtendedAreaModels,\n ExtendedAreaProject,\n ExtendedConstructionNumber,\n ExtendedDistrict,\n ExtendedProjectPhase,\n ExtendedPropertyType,\n getApiObjectCoordinates,\n} from '@bpd-library/utilities';\nimport {\n formatDistrictStatusAsync,\n formatProjectPhaseStatusAsync,\n} from '@source/utilities/api-formatters';\nimport shouldDrawPolygon from '@source/utilities/api-utilities/should-draw-polygon';\nimport environment from '@source/utilities/environment';\n\nimport {\n AVAILABLE,\n IN_OPTION,\n IN_PREPARATION,\n RESERVED,\n SOLD,\n UNDER_CONSTRUCTION,\n} from '../area-map-constants';\n\nconst extendDistrict = async (district: ExtendedDistrict) => {\n const { id, name } = district;\n const coordinates = getApiObjectCoordinates(district);\n\n const formattedStatus = await formatDistrictStatusAsync(district);\n\n if (coordinates) {\n district.mapDataItems = [\n {\n coordinates,\n variant: 'district',\n id,\n objectType: 'district',\n },\n {\n coordinates,\n variant: 'districtLabel',\n id: `${id}-pointer`,\n title: name,\n status: formattedStatus?.label,\n },\n {\n coordinates,\n variant: 'district_outline',\n id: `${id}-outline`,\n },\n ];\n }\n};\n\nconst extendProjectPhase = async (projectPhase: ExtendedProjectPhase) => {\n if (!shouldDrawPolygon(projectPhase)) return;\n\n const { status, id } = projectPhase;\n const coordinates = getApiObjectCoordinates(projectPhase);\n\n let variant = undefined;\n\n switch (status) {\n case 'InPreparation':\n variant = `projectPhase_${IN_PREPARATION}`;\n break;\n case 'ForRent':\n case 'OnSale':\n variant = `projectPhase_${AVAILABLE}`;\n break;\n case 'Rented':\n case 'Sold':\n variant = `projectPhase_${SOLD}`;\n break;\n }\n\n const formattedStatus = await formatProjectPhaseStatusAsync(projectPhase);\n\n if (coordinates && variant) {\n projectPhase.mapDataItems = [\n {\n coordinates,\n variant,\n id,\n objectType: 'projectPhase',\n },\n {\n coordinates,\n variant: 'projectPhaseLabel',\n id: `${id}-pointer`,\n title: projectPhase.name,\n status: formattedStatus?.label,\n },\n ];\n }\n};\n\nconst extendApartmentBuilding = (apartmentBuilding: ExtendedApartmentBuilding) => {\n const { status, id } = apartmentBuilding;\n const coordinates = getApiObjectCoordinates(apartmentBuilding);\n\n let variant = undefined;\n\n switch (status) {\n case 'SaleSoon':\n case 'InPreparation':\n variant = `apartmentBuilding_${IN_PREPARATION}`;\n break;\n case 'AmountAvailable':\n case 'SaleStarted':\n case 'ForRent':\n case 'Available':\n variant = `apartmentBuilding_${AVAILABLE}`;\n break;\n case 'InOption':\n case 'AssigningOn':\n variant = `apartmentBuilding_${IN_OPTION}`;\n break;\n case 'Sold':\n case 'Rented':\n variant = `apartmentBuilding_${SOLD}`;\n break;\n case 'UnderConstruction':\n variant = `apartmentBuilding_${UNDER_CONSTRUCTION}`;\n break;\n }\n\n if (coordinates && variant) {\n apartmentBuilding.mapDataItems = [\n {\n coordinates,\n variant,\n id,\n objectType: 'apartmentBuilding',\n },\n ];\n\n if (environment.isDebugMode) {\n apartmentBuilding.mapDataItems.push({\n coordinates,\n variant: 'debugLabel',\n id: `${id}-debug`,\n objectType: 'apartmentBuilding',\n });\n }\n }\n};\n\nconst extendPropertyType = (propertyType: ExtendedPropertyType) => {\n if (!shouldDrawPolygon(propertyType)) return;\n\n const { status, id } = propertyType;\n const coordinates = getApiObjectCoordinates(propertyType);\n\n let variant: string | undefined = undefined;\n\n switch (status) {\n case 'SaleSoon':\n case 'InPreparation':\n variant = `propertyType_${IN_PREPARATION}`;\n break;\n case 'AmountAvailable':\n case 'SaleStarted':\n case 'ForRent':\n variant = `propertyType_${AVAILABLE}`;\n break;\n case 'InOption':\n case 'AssigningOn':\n variant = `propertyType_${IN_OPTION}`;\n break;\n case 'Sold':\n case 'Rented':\n variant = `propertyType_${SOLD}`;\n break;\n case 'UnderConstruction':\n variant = `propertyType_${UNDER_CONSTRUCTION}`;\n break;\n }\n\n if (coordinates && variant) {\n propertyType.mapDataItems = [\n {\n coordinates,\n variant,\n id,\n objectType: 'propertyType',\n },\n ];\n\n if (environment.isDebugMode) {\n propertyType.mapDataItems.push({\n coordinates,\n variant: 'debugLabel',\n id: `${id}-debug`,\n objectType: 'propertyType',\n });\n }\n }\n};\n\nconst extendConstructionNumber = (constructionNumber: ExtendedConstructionNumber) => {\n if (!shouldDrawPolygon(constructionNumber)) return;\n\n const { status, id } = constructionNumber;\n const coordinates = getApiObjectCoordinates(constructionNumber);\n\n let variant = undefined;\n\n switch (status) {\n case 'InPreparation':\n variant = `constructionNumber_${IN_PREPARATION}`;\n break;\n case 'Available':\n variant = `constructionNumber_${AVAILABLE}`;\n break;\n case 'Reserved':\n variant = `constructionNumber_${RESERVED}`;\n break;\n case 'InOption':\n case 'AssigningOn':\n variant = `constructionNumber_${IN_OPTION}`;\n break;\n case 'Rented':\n case 'Sold':\n variant = `constructionNumber_${SOLD}`;\n break;\n case 'UnderConstruction':\n variant = `constructionNumber_${UNDER_CONSTRUCTION}`;\n break;\n }\n\n if (coordinates && variant) {\n constructionNumber.mapDataItems = [\n {\n coordinates,\n variant,\n id,\n objectType: 'constructionNumber',\n },\n ];\n\n if (environment.isDebugMode) {\n constructionNumber.mapDataItems.push({\n coordinates,\n variant: 'debugLabel',\n id: `${id}-debug`,\n objectType: 'constructionNumber',\n });\n }\n }\n};\n\nconst extendAreaProject = (areaProject: ExtendedAreaProject) => {\n const { id, name } = areaProject;\n const coordinates = getApiObjectCoordinates(areaProject);\n\n if (coordinates) {\n areaProject.mapDataItems = [\n {\n coordinates,\n variant: 'areaProject',\n id,\n objectType: 'areaProject',\n },\n {\n coordinates,\n variant: 'areaProjectLabel',\n title: name,\n id: `areaProjectLabel-${id}`,\n },\n ];\n }\n};\n\nconst extendAreaProjectPointer = (areaProject: ExtendedAreaProject) => {\n const { id } = areaProject;\n const coordinates = getApiObjectCoordinates(areaProject);\n\n if (coordinates) {\n areaProject.mapDataItems = [\n {\n coordinates,\n variant: 'areaProjectPointer',\n id,\n objectType: 'areaProjectPointer',\n url: areaProject.url,\n title: areaProject.name,\n },\n ];\n }\n};\n\nconst extendDataWithMap = async (area: ExtendedAreaModels, areaProjects: ExtendedAreaProject[]) => {\n // Extend all area projects\n areaProjects.filter(({ id }) => area.areaProject.id !== id).forEach(extendAreaProjectPointer);\n\n // Extend area\n extendAreaProject(area.areaProject);\n await Promise.all(area.districts.map(extendDistrict));\n await Promise.all(area.projectPhases.map(extendProjectPhase));\n area.apartmentBuildings.forEach(extendApartmentBuilding);\n area.propertyTypes.forEach(extendPropertyType);\n area.constructionNumbers.forEach(extendConstructionNumber);\n};\n\nexport { extendDataWithMap };\n","import { h } from '@atomify/jsx';\nimport { MapTheme, RGBA } from '@bpd-library/types';\nimport { MapLabel } from '@source/components/atoms/map-label';\nimport { Marker } from '@source/components/atoms/marker/marker';\nimport { PoiMarkersCategory } from '@source/utilities/api-calls/poi-markers';\nimport environment from '@source/utilities/environment';\n\nimport {\n AVAILABLE,\n IN_OPTION,\n IN_PREPARATION,\n RESERVED,\n SOLD,\n UNDER_CONSTRUCTION,\n} from '../area-map-constants';\nimport { ZOOM_RANGES } from './zoom';\n\nconst HOVER: {\n fill: RGBA;\n stroke: RGBA;\n} = {\n fill: [50, 193, 222, 0.8],\n stroke: [255, 255, 255, 0.8],\n};\n\ntype RGB = [number, number, number];\n\nconst RED: RGB = [237, 63, 59]; // #ED3F3B\nconst WHITE: RGB = [255, 255, 255]; // #FFFFFF\nconst BLACK: RGB = [0, 0, 0]; // #000000\nconst GREEN: RGB = [176, 209, 72]; // #B0D148\nconst PURPLE: RGB = [217, 63, 115]; // #D93F73\nconst ORANGE: RGB = [237, 155, 2]; // #ED9B02\n\nconst POI_ICONS: {\n [key in PoiMarkersCategory]: string;\n} = {\n care: 'hotspot-care',\n drinking: 'hotspot-drinking',\n education: 'hotspot-education',\n playing: 'hotspot-playing',\n shopping: 'hotspot-shopping',\n transport: 'hotspot-transport',\n};\n\nconst THEME: MapTheme = {\n polygon: {\n settings: [\n {\n variant: 'areaProject',\n normal: {\n fill: [...RED, 0.2],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.areaProject.min,\n maxzoom: ZOOM_RANGES.areaProject.max,\n },\n {\n variant: 'district',\n normal: {\n fill: [...RED, 0.2],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.district.min,\n maxzoom: ZOOM_RANGES.district.max,\n },\n {\n variant: 'district_outline',\n normal: {\n stroke: [...BLACK, 1],\n },\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n {\n variant: `projectPhase_${IN_PREPARATION}`,\n normal: {\n fill: [...WHITE, 0.5],\n stroke: [...BLACK, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.projectPhase.min,\n maxzoom: ZOOM_RANGES.projectPhase.max,\n },\n {\n variant: `projectPhase_${AVAILABLE}`,\n normal: {\n fill: [...GREEN, 0.5],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.projectPhase.min,\n maxzoom: ZOOM_RANGES.projectPhase.max,\n },\n {\n variant: `projectPhase_${UNDER_CONSTRUCTION}`,\n normal: {\n fill: [...PURPLE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.projectPhase.min,\n maxzoom: ZOOM_RANGES.projectPhase.max,\n },\n {\n variant: `propertyType_${IN_PREPARATION}`,\n normal: {\n fill: [...WHITE, 0.5],\n stroke: [...BLACK, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.propertyType.min,\n maxzoom: ZOOM_RANGES.propertyType.max,\n },\n {\n variant: `propertyType_${AVAILABLE}`,\n normal: {\n fill: [...GREEN, 0.5],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.propertyType.min,\n maxzoom: ZOOM_RANGES.propertyType.max,\n },\n {\n variant: `propertyType_${IN_OPTION}`,\n normal: {\n fill: [...ORANGE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.propertyType.min,\n maxzoom: ZOOM_RANGES.propertyType.max,\n },\n {\n variant: `propertyType_${SOLD}`,\n normal: {\n fill: [...RED, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.propertyType.min,\n maxzoom: ZOOM_RANGES.propertyType.max,\n },\n {\n variant: `propertyType_${UNDER_CONSTRUCTION}`,\n normal: {\n fill: [...PURPLE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.propertyType.min,\n maxzoom: ZOOM_RANGES.propertyType.max,\n },\n {\n variant: `apartmentBuilding_${IN_PREPARATION}`,\n normal: {\n fill: [...WHITE, 0.5],\n stroke: [...BLACK, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.apartmentBuilding.min,\n maxzoom: ZOOM_RANGES.apartmentBuilding.max,\n },\n {\n variant: `apartmentBuilding_${AVAILABLE}`,\n normal: {\n fill: [...GREEN, 0.5],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.apartmentBuilding.min,\n maxzoom: ZOOM_RANGES.apartmentBuilding.max,\n },\n {\n variant: `apartmentBuilding_${IN_OPTION}`,\n normal: {\n fill: [...ORANGE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.apartmentBuilding.min,\n maxzoom: ZOOM_RANGES.apartmentBuilding.max,\n },\n {\n variant: `apartmentBuilding_${SOLD}`,\n normal: {\n fill: [...RED, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.apartmentBuilding.min,\n maxzoom: ZOOM_RANGES.apartmentBuilding.max,\n },\n {\n variant: `apartmentBuilding_${UNDER_CONSTRUCTION}`,\n normal: {\n fill: [...PURPLE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.apartmentBuilding.min,\n maxzoom: ZOOM_RANGES.apartmentBuilding.max,\n },\n {\n variant: `constructionNumber_${IN_PREPARATION}`,\n normal: {\n fill: [...WHITE, 0.5],\n stroke: [...BLACK, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n {\n variant: `constructionNumber_${AVAILABLE}`,\n normal: {\n fill: [...GREEN, 0.5],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n {\n variant: `constructionNumber_${RESERVED}`,\n normal: {\n fill: [...ORANGE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n {\n variant: `constructionNumber_${IN_OPTION}`,\n normal: {\n fill: [...ORANGE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n {\n variant: `constructionNumber_${SOLD}`,\n normal: {\n fill: [...RED, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n {\n variant: `constructionNumber_${UNDER_CONSTRUCTION}`,\n normal: {\n fill: [...PURPLE, 0.7],\n stroke: [...WHITE, 1],\n },\n hover: HOVER,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n },\n ],\n },\n pointer: {\n settings: [\n {\n variant: 'projectPhaseLabel',\n minzoom: ZOOM_RANGES.projectPhase.min,\n maxzoom: ZOOM_RANGES.projectPhase.max,\n disablePointerEvents: true,\n createElement: (item) => ,\n },\n {\n variant: 'districtLabel',\n minzoom: ZOOM_RANGES.district.min,\n maxzoom: ZOOM_RANGES.district.max,\n disablePointerEvents: true,\n createElement: (item) => ,\n },\n {\n variant: 'areaProjectPointer',\n minzoom: ZOOM_RANGES.areaProject.min,\n maxzoom: ZOOM_RANGES.areaProject.max,\n createElement: () => (\n \n ),\n },\n {\n variant: 'areaProjectLabel',\n minzoom: ZOOM_RANGES.areaProject.min,\n maxzoom: ZOOM_RANGES.areaProject.max,\n disablePointerEvents: true,\n createElement: (item) => (\n \n ),\n },\n {\n variant: 'poi',\n createElement: (item) => {\n const category = item.category as PoiMarkersCategory;\n const icon = POI_ICONS[category];\n\n return ;\n },\n },\n ],\n cluster: (total) => ,\n },\n};\n\nif (environment.isDebugMode) {\n THEME.pointer!.settings.push({\n variant: 'debugLabel',\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n disablePointerEvents: true,\n createElement: (item) => (\n
\n
{item.objectType}
\n
\n ),\n });\n}\n\nexport { THEME };\n","import '@atoms/form-elements';\nimport '@bpd-library/components/dist/molecules/map/map';\nimport '@features/area-map/components/area-map-filter';\nimport '@features/area-map/components/area-map-info';\n\nimport { defineElement, FC, onDidLoad, useElement, useListen, useProp } from '@atomify/hooks';\nimport { Fragment, h } from '@atomify/jsx';\nimport { useStore } from '@atomify/kit';\nimport { BPDFunctionalSvg } from '@atoms/svg/svg';\nimport { MapState, mapStore, setLayerRaster, updateMapData } from '@bpd-library/components';\nimport { Coordinate, MapDataItem } from '@bpd-library/types';\nimport {\n calculateCenter,\n calculateMapDataCenter,\n extendedArea,\n ExtendedAreaModels,\n ExtendedAreaProject,\n findExtendedObjectById,\n getApiObjectCenter,\n getApiObjectLayerRaster,\n getExtendedAreaProjects,\n} from '@bpd-library/utilities';\nimport { AreaMapInfoProps } from '@features/area-map/components/area-map-info/area-map-info';\nimport { ButtonSquare } from '@source/components/atoms/button-square/button-square';\nimport { MapLabel } from '@source/components/atoms/map-label';\nimport {\n AreaMapState,\n areaMapStore,\n setAreaData,\n setAreaMapPoiCategories,\n setAreaProjectsData,\n setCustomIsochroneCenter,\n setInitialCenter,\n setSelectedCard,\n} from '@source/store/area-map';\nimport { getDebuggerMapOptions } from '@store/debugger';\nimport { hasConsent, ServiceConsentState, serviceConsentStore } from '@store/service-consent';\nimport { PoiMarkersCategory } from '@utilities/api-calls/poi-markers';\nimport getExtendedAreaMapData from '@utilities/api-utilities/get-extended-area-map-data';\nimport { GTMPush } from '@utilities/gtm';\nimport { handleGTMPolygonInteraction } from '@utilities/gtm-map';\nimport { useStylesheet, useTranslate } from '@utilities/hooks';\nimport twoFingerPan from '@utilities/two-finger-pan';\nimport mapboxgl from 'mapbox-gl';\n\nimport style from './area-map.scss';\nimport areaMapIsMobile from './utilities/area-map-is-mobile';\nimport { filterArea } from './utilities/filter-area';\nimport { filterEmptyMapDataItems } from './utilities/filter-empty-map-data-items';\nimport { getPoiMapData } from './utilities/get-poi-map-data';\nimport { extendDataWithMap } from './utilities/map/extend-data-with-map';\nimport { THEME } from './utilities/map/theme';\nimport { AreaMapZoomStep, ZOOM_RANGES, ZOOM_STEPS } from './utilities/map/zoom';\n\nconst HAS_SELECTED_CARD = 'area-map--has-selected-card';\nconst MAP_CARD_COLLAPSED_CLASS = 'area-map--map-card-collapsed';\nconst MAP_HAS_ACTIVE_DIRECTIONS = 'area-map--has-active-directions';\n\nconst AREA_MAP_INFO_SELECTOR = 'area-map-info';\nconst AREA_MAP_CONTROL_COMPASS_SELECTOR = '[js-hook-area-map-controls-compass]';\n\ninterface AreaMapElement extends Element {}\n\nconst AreaMap: FC = ({ element }) => {\n const [, subscribeMap] = useStore(mapStore);\n const [, subscribeAreaMap] = useStore(areaMapStore);\n\n const [, subscribeConsentStore] = useStore(serviceConsentStore);\n\n const [longitude] = useProp('longitude', null);\n const [latitude] = useProp('latitude', null);\n const [isochroneLongitude] = useProp('isochroneLongitude', null);\n const [isochroneLatitude] = useProp('isochroneLatitude', null);\n\n const [zoom] = useProp('zoom', null);\n const [poiCategory] = useProp('poiCategory', null);\n\n const areaMapInfo = useElement(AREA_MAP_INFO_SELECTOR);\n const areaMapControlsCompass = useElement(AREA_MAP_CONTROL_COMPASS_SELECTOR);\n\n useStylesheet(style);\n\n let area: ExtendedAreaModels | undefined;\n let filteredArea: ExtendedAreaModels | undefined;\n let areaProjects: ExtendedAreaProject[] = [];\n let ZoomStep: AreaMapZoomStep;\n\n let currentPopup: mapboxgl.Popup | undefined;\n\n onDidLoad(() => handleConsent(hasConsent('mapbox')));\n subscribeConsentStore(({ mapbox }) => handleConsent(mapbox), ['mapbox']);\n\n subscribeMap(\n ({ click }) => {\n switch (click?.objectType) {\n case 'areaProjectPointer':\n const isCurrentArea = click.id === area?.areaProject.id;\n\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'Outbound click',\n eventLabel: click.title,\n });\n\n if (isCurrentArea) {\n ZoomStep.setZoom('in');\n } else if (click.url) {\n window.location.href = click.url;\n }\n\n break;\n case 'areaProject':\n ZoomStep.setZoom('in', calculateCenter(click.coordinates));\n GTMPush({\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'Polygon interaction',\n eventLabel: area?.areaProject.name,\n polygonCategory: 'area',\n });\n\n break;\n case 'constructionNumber':\n case 'propertyType':\n case 'apartmentBuilding':\n case 'projectPhase':\n case 'district':\n const apiObject = findExtendedObjectById(area!, click.id);\n\n const isDistrict = apiObject?.objectType === 'district';\n const isProjectPhase = apiObject?.objectType === 'projectPhase';\n\n // District polygon should zoom in\n if (isDistrict) {\n ZoomStep.setZoom('in', calculateCenter(click.coordinates));\n }\n\n handleGTMPolygonInteraction(apiObject);\n\n if (apiObject) {\n // Project phase card should only be show on desktop\n if (isProjectPhase && areaMapIsMobile()) break;\n\n // District card should only be shown when on desktop and when there's multiple districts\n if (isDistrict && areaMapIsMobile()) break;\n\n setSelectedCard(apiObject);\n }\n\n break;\n }\n },\n ['click'],\n );\n\n subscribeMap(\n ({ hover }) => {\n if (!hover) return;\n\n const { previous, current } = hover;\n\n // Clear previous/mouseleave hover popups\n if (previous) {\n if (previous.variant === 'areaProjectPointer') removePopup();\n if (previous.variant === 'poi') removePopup();\n }\n\n // Add a popup for the following variants\n if (current) {\n switch (current.variant) {\n case 'areaProjectPointer':\n addAreaProjectPopup(current);\n break;\n case 'poi':\n addPoiPopup(current);\n break;\n }\n }\n },\n ['hover'],\n );\n\n subscribeAreaMap(\n ({ filters }) => {\n if (!area) return;\n\n filteredArea = filters ? filterArea(area, filters) : area;\n\n updateMap(filteredArea, areaProjects);\n },\n ['filters'],\n );\n\n subscribeAreaMap(() => {\n if (!area) return;\n\n updateMap(filteredArea || area, areaProjects);\n }, ['poiCategories']);\n\n subscribeAreaMap(\n ({ selectedCard }) => {\n if (selectedCard) {\n element.classList.add(HAS_SELECTED_CARD);\n } else {\n element.classList.remove(HAS_SELECTED_CARD);\n areaMapInfo.current!.expandMapCard();\n }\n },\n ['selectedCard'],\n );\n\n subscribeMap(\n (state) => {\n if (!state.mapInstance) return;\n\n setupMapBehaviour(state.mapInstance);\n\n state.mapInstance.on('rotate', () => {\n if (!state.mapInstance || !areaMapControlsCompass.current) return;\n\n const mapRotateDegrees = state.mapInstance.getBearing();\n\n areaMapControlsCompass.current.style.transform = `rotate(${-mapRotateDegrees}deg)`;\n });\n },\n ['mapInstance'],\n );\n\n subscribeAreaMap(\n ({ hasActiveDirections }) => {\n if (hasActiveDirections) {\n element.classList.add(MAP_HAS_ACTIVE_DIRECTIONS);\n } else {\n element.classList.remove(MAP_HAS_ACTIVE_DIRECTIONS);\n }\n },\n ['hasActiveDirections'],\n );\n\n useListen(areaMapInfo, 'mapCardCollapse', () => {\n element.classList.add(MAP_CARD_COLLAPSED_CLASS);\n });\n\n useListen(areaMapInfo, 'mapCardExpand', () => {\n element.classList.remove(MAP_CARD_COLLAPSED_CLASS);\n });\n\n function handleConsent(consent: boolean) {\n if (consent) {\n renderAreaMap();\n initAreaMap();\n } else {\n // removeAreaMap();\n renderNoConsent();\n }\n }\n\n async function initAreaMap() {\n // If isochrone location is set, update store\n if (isochroneLongitude && isochroneLatitude) {\n setCustomIsochroneCenter([isochroneLongitude, isochroneLatitude]);\n }\n\n [area, areaProjects] = await Promise.all([\n extendedArea.getData(window.__ENVIRONMENT_DETAILS__.areaId),\n getExtendedAreaProjects(),\n ]);\n\n // Extend the data with mapDataItems\n await extendDataWithMap(area, areaProjects);\n\n // Filter area items that have no mapDataItems\n area = filterEmptyMapDataItems(area);\n\n // Update store with area data\n setAreaData(area);\n setAreaProjectsData(areaProjects);\n setAreaMapPoiCategories(poiCategory ? [poiCategory] : []);\n\n // Update map data\n updateMap(area, areaProjects);\n setInitialZoomAndCenter(area);\n\n // Set layer raster\n const layerRaster = getApiObjectLayerRaster(area.areaProject);\n if (layerRaster) {\n setLayerRaster({\n layerRaster,\n minzoom: ZOOM_RANGES.constructionNumber.min,\n maxzoom: ZOOM_RANGES.constructionNumber.max,\n });\n }\n }\n\n /**\n * @description Creates a popup, bases on an Area Project mapDataItem\n * @param {MapDataItem} mapDataItem\n */\n function addAreaProjectPopup(mapDataItem: MapDataItem) {\n const center = calculateCenter(mapDataItem.coordinates);\n\n addPopup({\n center,\n title: mapDataItem.title,\n subtitle: useTranslate('ViewTheNeighborhood'),\n });\n }\n\n /**\n * @description Creates a popup, bases on a Point of Interest mapDataItem\n * @param {MapDataItem} mapDataItem\n */\n function addPoiPopup(mapDataItem: MapDataItem) {\n const center = calculateCenter(mapDataItem.coordinates);\n\n addPopup({\n center,\n title: mapDataItem.title,\n subtitle: mapDataItem.description,\n });\n }\n\n /**\n * @description Adds a mapbox popup based on a mapDataItem\n * @param {MapDataItem} item\n * @return {*}\n */\n function addPopup({\n center,\n title,\n subtitle,\n }: {\n center: Coordinate;\n title: string;\n subtitle?: string | Text;\n }) {\n const mapInstance = mapStore.getState().mapInstance;\n\n if (!mapInstance) return;\n\n currentPopup = new mapboxgl.Popup({\n closeButton: false,\n offset: 32,\n })\n .setLngLat(center)\n .setDOMContent()\n .addTo(mapInstance);\n }\n\n /**\n * @description Removes the current popup, if it exists\n */\n function removePopup() {\n currentPopup?.remove();\n currentPopup = undefined;\n }\n\n /**\n * @description Enables/disables dragging the map based on the current breakpoint\n * @return {*}\n */\n function setDragPan(mapInstance: mapboxgl.Map) {\n if (areaMapIsMobile()) {\n mapInstance.dragPan.disable();\n } else {\n mapInstance.dragPan.enable();\n }\n }\n\n /**\n * @description Updates the map with the current area, area projects and POI markers\n * @param {ExtendedAreaModels} area\n * @param {ExtendedAreaProject[]} areaProjects\n * @return {*}\n */\n async function updateMap(area: ExtendedAreaModels, areaProjects: ExtendedAreaProject[]) {\n if (!hasConsent('mapbox')) return;\n\n // Combine map data of area projects, POI and area\n const areaMapData = getExtendedAreaMapData(area);\n const areaProjectsMapData = areaProjects\n .filter(({ mapDataItems }) => !!mapDataItems?.length)\n .map(({ mapDataItems }) => mapDataItems![0]) as MapDataItem[];\n const poiMapData = await getPoiMapData(area);\n\n const mapData = [...areaMapData, ...areaProjectsMapData, ...poiMapData];\n\n if (!mapData.length) return;\n\n updateMapData(mapData);\n }\n\n /**\n * @description Determines and sets the correct initial zoom and center\n * @param {ExtendedAreaModels} area\n */\n function setInitialZoomAndCenter(area: ExtendedAreaModels) {\n const mapInstance = mapStore.getState().mapInstance;\n const { districtId } = window.__ENVIRONMENT_DETAILS__;\n\n let initialCenter: Coordinate | false =\n !!longitude && !!latitude ? [longitude, latitude] : false;\n let initialZoomLevel = zoom;\n\n if (districtId) {\n if (!initialCenter) {\n // For district page, set center based on district coordinates\n const currDistrict = area.districts.find(({ id }) => districtId === id);\n initialCenter =\n !!currDistrict && getApiObjectCenter(currDistrict, { as: 'coordinate' });\n }\n if (!initialZoomLevel) {\n initialZoomLevel = ZOOM_STEPS.find(({ type }) => type === 'district')?.zoom || 16;\n }\n } else {\n if (!initialCenter) {\n const areaMapData = getExtendedAreaMapData(area);\n // For area page, set center based on area coordinates\n initialCenter = calculateMapDataCenter(areaMapData);\n }\n if (!initialZoomLevel) {\n initialZoomLevel =\n ZOOM_STEPS.find(({ type }) => type === 'areaProject')?.zoom || 16;\n }\n }\n\n if (mapInstance && initialCenter) {\n mapInstance.setCenter(initialCenter);\n mapInstance.setZoom(initialZoomLevel);\n setInitialCenter(initialCenter);\n }\n }\n\n /**\n * @description Sets up mapbox dragging and zooming behaviour\n * @param {mapboxgl.Map} mapInstance\n */\n function setupMapBehaviour(mapInstance: mapboxgl.Map) {\n ZoomStep = new AreaMapZoomStep(mapInstance);\n mapInstance.touchPitch.disable();\n twoFingerPan(mapInstance);\n setDragPan(mapInstance);\n }\n\n function renderAreaMap() {\n element.innerHTML = '';\n element.append(\n \n \n\n
\n {\n areaMapInfo.current!.toggleMapCard();\n }}>\n \n {useTranslate('MoreInformation')}\n \n \n {useTranslate('LessInformation')}\n \n \n\n \n
\n\n \n\n
\n
\n \n
\n
\n {\n ZoomStep.setZoom('in');\n }}\n />\n ZoomStep.setZoom('out')}\n />\n
\n
\n
,\n );\n areaMapInfo.current = element.querySelector(AREA_MAP_INFO_SELECTOR);\n areaMapControlsCompass.current = element.querySelector(AREA_MAP_CONTROL_COMPASS_SELECTOR);\n }\n\n function renderNoConsent() {\n element.innerHTML = '';\n element.append(
);\n }\n};\n\nAreaMap.props = {\n zoom: {\n type: Number,\n },\n longitude: {\n type: Number,\n },\n latitude: {\n type: Number,\n },\n poiCategory: {\n type: String,\n },\n isochroneLongitude: {\n type: Number,\n },\n isochroneLatitude: {\n type: Number,\n },\n};\n\ndefineElement('area-map', AreaMap);\n","import { ExtendedAreaModels } from '@bpd-library/utilities';\n\nconst filterEmptyMapDataItems = (data: ExtendedAreaModels): ExtendedAreaModels => {\n const stagedData: ExtendedAreaModels = {\n ...data,\n apartmentBuildings: data.apartmentBuildings.filter(\n ({ mapDataItems }) => !!mapDataItems?.length,\n ),\n projectPhases: data.projectPhases.filter(({ mapDataItems }) => !!mapDataItems?.length),\n constructionNumbers: data.constructionNumbers.filter(\n ({ mapDataItems }) => !!mapDataItems?.length,\n ),\n propertyTypes: data.propertyTypes.filter(({ mapDataItems }) => !!mapDataItems?.length),\n };\n return stagedData;\n};\n\nexport { filterEmptyMapDataItems };\n","export default (mapInstance: mapboxgl.Map) => {\n const container = mapInstance.getContainer();\n\n container.addEventListener(\n 'touchstart',\n event => {\n if (event.touches.length > 1) {\n mapInstance?.dragPan.enable();\n }\n },\n { capture: true },\n );\n\n container.addEventListener(\n 'touchmove',\n event => {\n if (event.touches.length > 1) {\n mapInstance?.dragPan.enable();\n }\n },\n { capture: true },\n );\n\n container.addEventListener(\n 'touchend',\n () => {\n mapInstance?.dragPan.disable();\n },\n { capture: true },\n );\n};\n","import { ExtendedApiObject } from '@bpd-library/utilities';\nimport { translateItem } from '@utilities/hooks';\n\nconst getMapCardTitle = async (apiObject: ExtendedApiObject) => {\n switch (apiObject.objectType) {\n case 'constructionNumber':\n const houseTypeTranslationKey = `PropertyTypeName-${apiObject.propertyType?.houseType?.toLowerCase()}`;\n const houseTypeTranslated = await translateItem(houseTypeTranslationKey);\n return `${houseTypeTranslated} ${apiObject.identifier}`;\n case 'propertyType':\n return `${apiObject.name} ${apiObject.projectPhaseName || ''}`;\n case 'apartmentBuilding':\n return apiObject.displayName || '';\n case 'projectPhase':\n return apiObject.name || '';\n case 'district':\n return apiObject.name || '';\n case 'areaProject':\n return apiObject.name || '';\n }\n};\n\nexport { getMapCardTitle };\n","import { ExtendedConstructionNumber, showPrice } from '@bpd-library/utilities';\nimport { isGermany } from '@utilities/is-germany';\n\nimport { translateItem } from '../hooks';\n\nconst NHG_LIMIT_KEY = 'NHGLimit';\nconst NGH_ECO_LIMIT_KEY = 'NHGEcoLimit';\n\nconst translateNhgLimit = async () => parseInt(await translateItem(NHG_LIMIT_KEY));\nconst translateNhgEcoLimit = async () => parseInt(await translateItem(NGH_ECO_LIMIT_KEY));\n\nconst nhgChecker = () => {\n let nhgLimit: number;\n let nhgEcoLimit: number;\n\n const init = async () => {\n nhgLimit = await translateNhgLimit();\n nhgEcoLimit = await translateNhgEcoLimit();\n };\n\n const isNhg = (amount: number, options?: { ecoLimit?: boolean }) => {\n if (options?.ecoLimit) return amount < nhgEcoLimit;\n return amount <= nhgLimit;\n };\n\n const isConstructionNumberNhg = (constructionNumber: ExtendedConstructionNumber) => {\n if (isGermany() || !showPrice({ constructionNumber })) return false;\n const price = constructionNumber.salesPrice?.amount?.from;\n return !!price && isNhg(price, { ecoLimit: constructionNumber.isEnergyNeutral });\n };\n\n init();\n\n return { isConstructionNumberNhg };\n};\n\nconst { isConstructionNumberNhg } = nhgChecker();\n\nexport { isConstructionNumberNhg };\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"map-panel{display:block;overflow:hidden;-webkit-transition:width .35s ease-in-out;transition:width .35s ease-in-out;width:31rem}map-panel+map-panel{border-top:1px solid var(--color-grey-10)}.map-panel__content{background-color:var(--color-bg);padding-left:2.4rem;padding-right:2.4rem}.map-panel__content--no-padding{padding-left:0;padding-right:0}.map-panel__button{height:6.4rem;position:relative;width:100%}.map-panel__button-inner{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:2.4rem;padding-right:2.4rem}.map-panel__button-icon,.map-panel__button-inner{-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.map-panel__button-icon{margin-right:2rem}.map-panel__button-label:first-letter{text-transform:uppercase}.map-panel__arrow{position:absolute;right:2rem;top:50%;-webkit-transform:translateY(-50%) rotate(90deg);transform:translateY(-50%) rotate(90deg);-webkit-transition:.35s ease-in-out;transition:.35s ease-in-out;-webkit-transition-property:-webkit-transform opacity;transition-property:-webkit-transform opacity;transition-property:transform opacity;transition-property:transform opacity,-webkit-transform opacity}.map-panel--collapse-width .map-panel__arrow{opacity:0}.map-panel--expanded>.map-panel__button .map-panel__arrow{opacity:1;-webkit-transform:translateY(-50%) rotate(-90deg);transform:translateY(-50%) rotate(-90deg)}.map-panel__arrow .svg{height:2rem;width:1.2rem}.map-panel__button-total{display:none}.map-panel__button-total:not(:empty){background-color:var(--color-secondary);border-radius:50%;color:var(--color-white);display:block;height:3.2rem;line-height:3.2rem;position:absolute;right:4.8rem;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:3.2rem}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23333%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23333%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23333%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23333%27%3E%3Cpath d=%27m10.5 14 4-8 4 8h-8z%27/%3E%3Cpath d=%27m10.5 16 4 8 4-8h-8z%27 fill=%27%23ccc%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23333%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23aaa%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath d=%27m14 5 1 1-9 9-1-1 9-9z%27 fill=%27red%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%2333b5e5%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_8___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23e58978%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_9___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%2333b5e5%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_10___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23e54e33%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_11___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2788%27 height=%2723%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:xlink=%27http://www.w3.org/1999/xlink%27 fill-rule=%27evenodd%27%3E%3Cdefs%3E%3Cpath id=%27a%27 d=%27M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 0 1 3.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z%27/%3E%3Cpath id=%27b%27 d=%27M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 0 0-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 0 0 4.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 0 1-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 0 1 .3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 0 1-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z%27/%3E%3C/defs%3E%3Cmask id=%27c%27%3E%3Crect width=%27100%25%27 height=%27100%25%27 fill=%27%23fff%27/%3E%3Cuse xlink:href=%27%23a%27/%3E%3Cuse xlink:href=%27%23b%27/%3E%3C/mask%3E%3Cg opacity=%27.3%27 stroke=%27%23000%27 stroke-width=%273%27%3E%3Ccircle mask=%27url%28%23c%29%27 cx=%2711.5%27 cy=%2711.5%27 r=%279.25%27/%3E%3Cuse xlink:href=%27%23b%27 mask=%27url%28%23c%29%27/%3E%3C/g%3E%3Cg opacity=%27.9%27 fill=%27%23fff%27%3E%3Cuse xlink:href=%27%23a%27/%3E%3Cuse xlink:href=%27%23b%27/%3E%3C/g%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_12___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23fff%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_13___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23fff%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_14___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23fff%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_15___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23fff%27%3E%3Cpath d=%27M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_16___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23fff%27%3E%3Cpath d=%27m10.5 14 4-8 4 8h-8z%27/%3E%3Cpath d=%27m10.5 16 4 8 4-8h-8z%27 fill=%27%23999%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_17___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23fff%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_18___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23999%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath d=%27m14 5 1 1-9 9-1-1 9-9z%27 fill=%27red%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_19___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2788%27 height=%2723%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:xlink=%27http://www.w3.org/1999/xlink%27 fill-rule=%27evenodd%27%3E%3Cdefs%3E%3Cpath id=%27a%27 d=%27M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 0 1 3.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z%27/%3E%3Cpath id=%27b%27 d=%27M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 0 0-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 0 0 4.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 0 1-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 0 1 .3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 0 1-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z%27/%3E%3C/defs%3E%3Cmask id=%27c%27%3E%3Crect width=%27100%25%27 height=%27100%25%27 fill=%27%23fff%27/%3E%3Cuse xlink:href=%27%23a%27/%3E%3Cuse xlink:href=%27%23b%27/%3E%3C/mask%3E%3Cg stroke=%27%23000%27 stroke-width=%273%27%3E%3Ccircle mask=%27url%28%23c%29%27 cx=%2711.5%27 cy=%2711.5%27 r=%279.25%27/%3E%3Cuse xlink:href=%27%23b%27 mask=%27url%28%23c%29%27/%3E%3C/g%3E%3Cg fill=%27%23fff%27%3E%3Cuse xlink:href=%27%23a%27/%3E%3Cuse xlink:href=%27%23b%27/%3E%3C/g%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_20___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_21___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_22___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_23___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27m10.5 14 4-8 4 8h-8z%27/%3E%3Cpath d=%27m10.5 16 4 8 4-8h-8z%27 fill=%27%23ccc%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_24___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_25___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2729%27 height=%2729%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%23666%27%3E%3Cpath d=%27M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z%27/%3E%3Ccircle cx=%2710%27 cy=%2710%27 r=%272%27/%3E%3Cpath d=%27m14 5 1 1-9 9-1-1 9-9z%27 fill=%27red%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_26___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2788%27 height=%2723%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:xlink=%27http://www.w3.org/1999/xlink%27 fill-rule=%27evenodd%27%3E%3Cdefs%3E%3Cpath id=%27a%27 d=%27M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 0 1 3.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z%27/%3E%3Cpath id=%27b%27 d=%27M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 0 0-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 0 0 4.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 0 1-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 0 1 .3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 0 1-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z%27/%3E%3C/defs%3E%3Cmask id=%27c%27%3E%3Crect width=%27100%25%27 height=%27100%25%27 fill=%27%23fff%27/%3E%3Cuse xlink:href=%27%23a%27/%3E%3Cuse xlink:href=%27%23b%27/%3E%3C/mask%3E%3Cg stroke=%27%23fff%27 stroke-width=%273%27 fill=%27%23fff%27%3E%3Ccircle mask=%27url%28%23c%29%27 cx=%2711.5%27 cy=%2711.5%27 r=%279.25%27/%3E%3Cuse xlink:href=%27%23b%27 mask=%27url%28%23c%29%27/%3E%3C/g%3E%3Cuse xlink:href=%27%23a%27/%3E%3Cuse xlink:href=%27%23b%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_27___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2724%27 height=%2724%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill-rule=%27evenodd%27%3E%3Cpath d=%27M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_28___ = new URL(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2724%27 height=%2724%27 viewBox=%270 0 20 20%27 xmlns=%27http://www.w3.org/2000/svg%27 fill-rule=%27evenodd%27 fill=%27%23fff%27%3E%3Cpath d=%27M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___);\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);\nvar ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___);\nvar ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);\nvar ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___);\nvar ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_27___);\nvar ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_28___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".mapboxgl-map{-webkit-tap-highlight-color:transparent;font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative}.mapboxgl-canvas{left:0;position:absolute;top:0}.mapboxgl-map:-webkit-full-screen{height:100%;width:100%}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass{cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active{cursor:-webkit-grabbing;cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas{-ms-touch-action:pinch-zoom;touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{-ms-touch-action:none;touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.mapboxgl-ctrl-top-left{left:0;top:0}.mapboxgl-ctrl-top-right{right:0;top:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{bottom:0;right:0}.mapboxgl-ctrl{clear:both;pointer-events:auto;-webkit-transform:translate(0);transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{float:left;margin:10px 0 0 10px}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{float:right;margin:10px 10px 0 0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{float:left;margin:0 0 10px 10px}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{float:right;margin:0 10px 10px 0}.mapboxgl-ctrl-group{background:#fff;border-radius:4px}.mapboxgl-ctrl-group:not(:empty){-webkit-box-shadow:0 0 0 2px rgba(0,0,0,.1);box-shadow:0 0 0 2px rgba(0,0,0,.1)}.mapboxgl-ctrl-group button{background-color:transparent;border:0;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:0;padding:0;width:29px}.mapboxgl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus{-webkit-box-shadow:0 0 2px 2px #0096ff;box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-group button:focus:focus-visible{-webkit-box-shadow:0 0 2px 2px #0096ff;box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible){-webkit-box-shadow:none;box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child{border-radius:inherit}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon{-webkit-animation:mapboxgl-spin 2s linear infinite;animation:mapboxgl-spin 2s linear infinite}@-webkit-keyframes mapboxgl-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes mapboxgl-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}a.mapboxgl-ctrl-logo{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.mapboxgl-ctrl-logo.mapboxgl-compact{width:23px}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty{display:none}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;-webkit-box-sizing:border-box;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}.mapboxgl-popup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mapboxgl-popup-anchor-left{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.mapboxgl-popup-anchor-right{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.mapboxgl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{-ms-flex-item-align:center;-webkit-align-self:center;align-self:center;border-bottom-color:#fff;border-top:none}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{-ms-flex-item-align:start;-webkit-align-self:flex-start;align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{-ms-flex-item-align:end;-webkit-align-self:flex-end;align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{-ms-flex-item-align:center;-webkit-align-self:center;align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{-ms-flex-item-align:start;-webkit-align-self:flex-start;align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{-ms-flex-item-align:end;-webkit-align-self:flex-end;align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{-ms-flex-item-align:center;-webkit-align-self:center;align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{-ms-flex-item-align:center;-webkit-align-self:center;align-self:center;border-left-color:#fff;border-right:none}.mapboxgl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.mapboxgl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content{background:#fff;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto;position:relative}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer{display:none}.mapboxgl-marker{left:0;opacity:1;position:absolute;top:0;-webkit-transition:opacity .2s;transition:opacity .2s;will-change:transform}.mapboxgl-user-location-dot,.mapboxgl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.mapboxgl-user-location-dot:before{-webkit-animation:mapboxgl-user-location-dot-pulse 2s infinite;animation:mapboxgl-user-location-dot-pulse 2s infinite;content:\\\"\\\";position:absolute}.mapboxgl-user-location-dot:after{border:2px solid #fff;border-radius:50%;-webkit-box-shadow:0 0 3px rgba(0,0,0,.35);box-shadow:0 0 3px rgba(0,0,0,.35);-webkit-box-sizing:border-box;box-sizing:border-box;content:\\\"\\\";height:19px;left:-2px;position:absolute;top:-2px;width:19px}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading{height:0;width:0}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after,.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before{border-bottom:7.5px solid #4aa1eb;content:\\\"\\\";position:absolute}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before{border-left:7.5px solid transparent;-webkit-transform:translateY(-28px) skewY(-20deg);transform:translateY(-28px) skewY(-20deg)}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after{border-right:7.5px solid transparent;-webkit-transform:translate(7.5px,-28px) skewY(20deg);transform:translate(7.5px,-28px) skewY(20deg)}@-webkit-keyframes mapboxgl-user-location-dot-pulse{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}70%{opacity:0;-webkit-transform:scale(3);transform:scale(3)}to{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes mapboxgl-user-location-dot-pulse{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}70%{opacity:0;-webkit-transform:scale(3);transform:scale(3)}to{opacity:0;-webkit-transform:scale(1);transform:scale(1)}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle{background-color:rgba(29,161,242,.2);border-radius:100%;height:1px;width:1px}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}bpd-map{display:block;position:relative}.c-map,bpd-map{height:100%;width:100%}.c-map .mapboxgl-canvas,.c-map .mapboxgl-canvas-container{height:100%!important;width:100%!important}.c-map .mapboxgl-ctrl-bottom-left{display:none}.c-map .mapboxgl-popup{pointer-events:all}.c-map .mapboxgl-popup .mapboxgl-popup-content{border-radius:0;-webkit-box-shadow:0 1rem 2rem rgba(0,0,0,.09);box-shadow:0 1rem 2rem rgba(0,0,0,.09);padding:0}.c-map .mapboxgl-ctrl-geocoder,.c-map .mapboxgl-popup .mapboxgl-popup-tip{display:none}.map--hovering .map__cluster:not(:hover),.map--hovering .map__pointer:not(:hover):not(.map__pointer--focus){opacity:.3}.map__container{height:100%;width:100%}.map__cluster,.map__pointer{-webkit-transition:opacity .3s cubic-bezier(.215,.61,.355,1);transition:opacity .3s cubic-bezier(.215,.61,.355,1)}.map__pointer{-webkit-animation:fadein .3s cubic-bezier(.215,.61,.355,1);animation:fadein .3s cubic-bezier(.215,.61,.355,1)}.map__pointer--disabled{pointer-events:none}.map__pointer--fadeout{-webkit-animation:fadeout .3s cubic-bezier(.215,.61,.355,1);animation:fadeout .3s cubic-bezier(.215,.61,.355,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{0%{opacity:1}to{opacity:0}}@keyframes fadeout{0%{opacity:1}to{opacity:0}}.mapboxgl-map{font-family:Avenir Next W02,sans-serif}.map__navigation{-webkit-box-orient:vertical;-webkit-box-direction:normal;background-color:var(--color-white);-webkit-box-shadow:0 0 2rem 0 rgba(0,0,0,.17);box-shadow:0 0 2rem 0 rgba(0,0,0,.17);-webkit-flex-flow:column wrap;-ms-flex-flow:column wrap;flex-flow:column wrap;position:absolute;right:2.2rem;top:1.8rem;z-index:9}.map__button,.map__navigation{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.map__button{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;color:var(--color-black);height:3.3rem;-webkit-justify-content:center;justify-content:center;width:3.3rem}.map__button+.map__button{border-top:1px solid rgba(0,0,0,.09)}.map__button .svg-icons-plus{height:1.5rem;width:1.5rem}html.is-touch--with-mouse .map__button:hover,html:not(.is-touch) .map__button:hover{background-color:var(--color-bg)}.map__minus{background-color:currentColor;display:block;height:.1rem;width:1.5rem}.map__close,.map__open{display:none}area-map-card{background-color:var(--color-white);display:block;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}area-map-poi{display:block}.area-map-poi__form{display:grid;grid-template-columns:33.3% 33.3% 33.3%}.area-map-poi__form bpd-input{display:inline-block}.area-map-poi__form .form__item{margin-bottom:0}.area-map-poi__chip-wrapper:nth-child(3n+1){-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.area-map-poi__chip-wrapper:nth-child(3n+2){-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.area-map-poi__chip-wrapper:nth-child(3n+3){-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}area-map-filter{background-color:var(--color-white);display:block;opacity:0;pointer-events:none;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.area-map-filter--visible{opacity:1;pointer-events:all}.area-map-filter__checkbox-list{padding-bottom:1.6rem}.area-map-filter__checkbox{display:block;position:relative}.area-map-filter__checkbox .form__item{margin-bottom:0}.area-map-filter__checkbox+.area-map-filter__checkbox{margin-top:1.6rem}.area-map-filter__checkbox:after{border-radius:50%;content:\\\"\\\";display:none;height:.9rem;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:.9rem}.area-map-filter__checkbox--green:after,.area-map-filter__checkbox--grey:after,.area-map-filter__checkbox--orange:after,.area-map-filter__checkbox--purple:after,.area-map-filter__checkbox--red:after{display:block}.area-map-filter__checkbox--grey:after{background-color:var(--color-grey-20)}.area-map-filter__checkbox--green:after{background-color:var(--color-positive)}.area-map-filter__checkbox--orange:after{background-color:var(--color-attention)}.area-map-filter__checkbox--red:after{background-color:var(--color-alert)}.area-map-filter__checkbox--purple:after{background-color:var(--color-progression)}area-map-info{background-color:var(--color-white);display:block;-webkit-transition:opacity .3s cubic-bezier(.215,.61,.355,1);transition:opacity .3s cubic-bezier(.215,.61,.355,1)}area-map-info.area-map-info--collapsed{overflow:hidden}.area-map-info__panel{padding:2.4rem 3.2rem;width:31rem}area-map-isochrone{display:block}.c-area-map{height:150vw;position:relative;width:100%}.area-map__inner{height:100%;left:0;position:absolute;top:0;width:100%}area-map{display:block;height:100%;width:100%}.area-map__filter,.area-map__info{max-height:calc(150vw - 5.6rem);overflow:auto}.area-map__map{display:block;height:100%;width:100%}.area-map__area-project-label{-webkit-transition:opacity .3s cubic-bezier(.645,.045,.355,1);transition:opacity .3s cubic-bezier(.645,.045,.355,1)}.area-map--has-active-directions .area-map__area-project-label{opacity:0;pointer-events:none}.area-map__area-project-pointer{color:var(--color-attention)}.area-map__info-container{bottom:1.6rem;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.15);box-shadow:0 4px 4px rgba(0,0,0,.15);left:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:1}.area-map-info__content{width:31rem}.area-map__filter{-webkit-box-shadow:0 4px 4px rgba(0,0,0,.15);box-shadow:0 4px 4px rgba(0,0,0,.15);position:absolute;right:1.6rem;top:1.6rem;-webkit-transition:opacity .25s cubic-bezier(.215,.61,.355,1);transition:opacity .25s cubic-bezier(.215,.61,.355,1)}.area-map__controls{display:block;left:1.6rem;position:absolute;top:1.6rem}.area-map__controls-compass{margin-bottom:1.8rem;text-align:center}.area-map__controls-compass .svg-icons-compass{height:3.2rem;width:3.2rem}.area-map__controls-zoom{display:none}.area-map__zoom-in{border-bottom:1px solid var(--color-grey-10)}.area-map__toggle{background-color:var(--color-white);border:1px solid var(--color-grey-5);border-radius:17.7rem;display:none;height:4rem;left:50%;padding:1.2rem 3.2rem;position:absolute;top:0;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);white-space:nowrap;z-index:1}.area-map__toggle:focus,.area-map__toggle:hover{background-color:var(--color-grey-5)}.area-map--map-card-collapsed .area-map__toggle-label-expanded,area-map:not(.area-map--map-card-collapsed) .area-map__toggle-label-collapsed{display:none}@media only screen and (min-width:48em){.map__navigation{right:1.5rem;top:3rem}.area-map-info__view-map{display:none}.c-area-map{height:50vw}.area-map__filter,.area-map__info{max-height:calc(50vw - 5.6rem)}.area-map__info-container{bottom:auto;left:8rem;top:3.2rem;-webkit-transform:none;transform:none}.area-map__filter{right:6.4rem;top:3.2rem}.area-map__controls{bottom:4rem;left:unset;right:4rem;top:unset}.area-map__controls-compass .svg-icons-compass{height:4.8rem;width:4.8rem}.area-map__controls-zoom{border-radius:2rem;-webkit-box-shadow:0 4px 4px rgba(0,0,0,.15);box-shadow:0 4px 4px rgba(0,0,0,.15);display:block;overflow:hidden}}@media(-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty){-webkit-box-shadow:0 0 0 2px ButtonText;box-shadow:0 0 0 2px ButtonText}.mapboxgl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button{border-top:1px solid ButtonText}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \")}a.mapboxgl-ctrl-logo{background-color:transparent;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \")}}@media(-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \")}a.mapboxgl-ctrl-logo{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \")}}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact{background-color:#fff;border-radius:12px;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.mapboxgl-ctrl-attrib.mapboxgl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \");border:0;border-radius:12px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:0;position:absolute;right:0;top:0;width:24px}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{right:0;top:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{left:0;top:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \")}}@media print{.mapbox-improve-map{display:none}}@media only screen and (max-width:47.96875em){.map__open{bottom:0;display:block;left:0;position:fixed;z-index:9}.map--is-visible .map__close{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;background-color:var(--color-white);-webkit-box-shadow:0 0 2rem 0 rgba(0,0,0,.17);box-shadow:0 0 2rem 0 rgba(0,0,0,.17);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:3.3rem;-webkit-justify-content:center;justify-content:center;left:2.2rem;position:fixed;top:1.8rem;width:3.3rem;z-index:11}.map--is-visible .map__close .svg-icons-close{height:1.3rem;width:1.3rem}html.is-touch--with-mouse .map--is-visible .map__close:hover,html:not(.is-touch) .map--is-visible .map__close:hover{background-color:var(--color-bg)}.area-map-info--hidden{opacity:0;pointer-events:none}.area-map--has-selected-card:not(.area-map--map-card-collapsed):after{background-color:var(--color-black);content:\\\"\\\";height:100%;left:0;opacity:.2;position:absolute;top:0;width:100%}.area-map--has-selected-card:not(.area-map--map-card-collapsed) .area-map__filter{opacity:0;pointer-events:none}.area-map--has-selected-card .area-map__toggle{display:block}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"area-map-directions .c-map-search{margin:0 1.6rem;padding-bottom:2.4rem}area-map-directions .map-search__input-container,area-map-directions .map-search__suggestions-container{position:relative}area-map-directions .input__input{padding:2.2rem 4rem .9rem 2rem}area-map-directions .form__item{margin-bottom:0}area-map-directions bpd-form{display:grid;grid-template-columns:1fr;padding:1.6rem 1.6rem 0}area-map-directions bpd-form bpd-radio{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.map-directions__popup{background-color:var(--color-white);-webkit-box-shadow:2px 2px 6px rgba(30,30,30,.15);box-shadow:2px 2px 6px rgba(30,30,30,.15);color:var(--color-black);padding:.4rem 1.8rem}.map-directions__popup--duration{-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;background-color:var(--color-secondary);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;justify-content:space-between;padding:.4rem 1rem}.t-theme-classic .map-directions__popup--duration,.t-theme-modern .map-directions__popup--duration,.t-theme-raw .map-directions__popup--duration,.t-theme-urban .map-directions__popup--duration{color:var(--color-white)}.map-directions__popup--duration svg{height:1.2rem;width:1.2rem}.map-directions__popup-label{font-size:1.4rem;font-weight:600;letter-spacing:.25px;line-height:1.71}.map-directions__popup--duration .map-directions__popup-label{margin-left:1.1rem;margin-right:1.6rem}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"area-map-filter{background-color:var(--color-white);display:block;opacity:0;pointer-events:none;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.area-map-filter--visible{opacity:1;pointer-events:all}.area-map-filter__checkbox-list{padding-bottom:1.6rem}.area-map-filter__checkbox{display:block;position:relative}.area-map-filter__checkbox .form__item{margin-bottom:0}.area-map-filter__checkbox+.area-map-filter__checkbox{margin-top:1.6rem}.area-map-filter__checkbox:after{border-radius:50%;content:\\\"\\\";display:none;height:.9rem;position:absolute;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:.9rem}.area-map-filter__checkbox--green:after,.area-map-filter__checkbox--grey:after,.area-map-filter__checkbox--orange:after,.area-map-filter__checkbox--purple:after,.area-map-filter__checkbox--red:after{display:block}.area-map-filter__checkbox--grey:after{background-color:var(--color-grey-20)}.area-map-filter__checkbox--green:after{background-color:var(--color-positive)}.area-map-filter__checkbox--orange:after{background-color:var(--color-attention)}.area-map-filter__checkbox--red:after{background-color:var(--color-alert)}.area-map-filter__checkbox--purple:after{background-color:var(--color-progression)}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"area-map-info{background-color:var(--color-white);display:block;-webkit-transition:opacity .3s cubic-bezier(.215,.61,.355,1);transition:opacity .3s cubic-bezier(.215,.61,.355,1)}area-map-info.area-map-info--collapsed{overflow:hidden}.area-map-info__panel{padding:2.4rem 3.2rem;width:31rem}@media only screen and (min-width:48em){.area-map-info__view-map{display:none}}@media only screen and (max-width:47.96875em){.area-map-info--hidden{opacity:0;pointer-events:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"area-map-isochrone{display:block}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"area-map-poi{display:block}.area-map-poi__form{display:grid;grid-template-columns:33.3% 33.3% 33.3%}.area-map-poi__form bpd-input{display:inline-block}.area-map-poi__form .form__item{margin-bottom:0}.area-map-poi__chip-wrapper:nth-child(3n+1){-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.area-map-poi__chip-wrapper:nth-child(3n+2){-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.area-map-poi__chip-wrapper:nth-child(3n+3){-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["formattedStatusColorClass","green","orange","grey","purple","red","Label","data","color","formattedStatusColor","className","classes","highlighted","class","text","MarkerBase","attributes","variant","size","url","href","pin","eyeDirection","toLowerCase","onClick","style","Tag","element","name","children","icon","tooltip","Marker","number","ZOOM_STEPS","type","zoom","ZOOM_RANGES","min","max","AreaMapZoomStep","constructor","mapInstance","currentZoomStep","animationSettings","duration","this","bindEvents","updateCurrentZoomStep","setZoom","direction","centerCoordinates","nextZoom","flyTo","center","zoomTo","zoomOut","on","currentZoom","getZoom","closestStep","forEach","step","index","distance","Math","abs","currentZoomStepType","EXPANDED_CLASS","COLLAPSED_CLASS","MapPanel","collapseWidth","labelDictionaryKey","setExpanded","contentCollapseElement","button","buttonInner","labelContainer","totalContainer","setCollapsedWidth","buttonWidth","current","clientWidth","width","close","expanded","open","clearTotal","innerHTML","setTotal","total","toggle","document","classList","add","remove","capture","append","onUpdate","props","label","String","required","reflectToAttr","Boolean","noPadding","largeFont","SET_SELECTED_POLYGON","CLEAR_SELECTED_POLYGON","SET_AREA_DATA","SET_AREA_PROJECTS_DATA","SET_AREA_MAP_FILTERS","SET_POI_CATEGORIES","UPDATE_AREA_MAP_FILTER","SET_CUSTOM_ISOCHRONE_CENTER","SET_INITIAL_CENTER","SET_HAS_ACTIVE_DIRECTIONS","actions","state","selected","selectedCard","undefined","area","areaProjects","filters","filterItem","filterItemId","checked","items","find","id","poiCategories","customIsochroneCenter","initialCenter","hasActiveDirections","areaMapStore","initialState","setAreaMapPoiCategories","dispatch","setHasActiveDirections","AREA_MAP_FILTER_NAMES","propertyTypes","status","getPropertyTypeFilterSetting","async","houseTypes","translatedHouseTypes","addPropertyTypeHouseType","propertyType","houseType","includes","push","constructionNumbers","apartmentBuildings","Promise","all","map","getHouseTypes","filterName","title","filterFunctions","constructionNumber","filterValue","apartmentBuilding","propertyTypesHasMatch","constructionNumbersHasMatch","i","value","getFilterStatus","apiObject","objectType","STATUSES_ORDER","STATUS_COLOR","InPreparation","Available","InOption","Sold","UnderConstruction","getStatusFilterSetting","uniqueStatuses","sort","a","b","indexOf","getUniqueStatuses","MAP_FILTER_PANEL_NAME","VISIBLE_CLASS","subscribe","useStore","mapPanel","container","handleExpandCollapse","hasExpandedPanels","Array","from","querySelectorAll","handleZoom","Object","values","addEventListener","renderFilters","constructFilters","setAreaMapFilters","filter","item","bindFormEvents","inputElement","event","eventCategory","eventAction","eventLabel","filterCategory","MapCard","image","description","price","specs","isNhg","buttonLabel","buttonUrl","onButtonClick","onClose","preload","height","alt","ariaLabel","svg","prefix","amount","suffix","spec","subtitle","AreaMapCard","onRender","renderConstructionNumber","formattedStatus","livingArea","plotArea","rooms","projectPhaseName","formattedPrice","showPriceAndButton","mainImage","propertyTypeName","renderPropertyType","renderApartmentBuilding","window","__ENVIRONMENT_DETAILS__","areaHouseOverviewUrl","displayName","renderProjectPhase","projectPhase","shortDescription","renderDistrict","district","districts","getState","hasMultipleDistricts","length","descriptionTitle","removeCard","Function","POI_ELEMENTS","category","key","AreaMapPoi","poiCategory","poiForm","poiInputs","resetFilter","input","additions","deletions","categoryRemoved","categoryClicked","categories","hook","poiElement","collapsedLabel","ISOCHRONE_PROFILES","profile","uniqueName","storedProfile","options","ISOCHRONE_MINUTES","DEFAULT_PROFILE","form","profileRadio","minutesRadio","preIsochroneBounds","selectedProfile","getSelectedInput","selectedMinutes","fitBounds","animate","minutes","setCheckedByValue","parseInt","createIsochrone","coordinate","getIsochroneCenter","customCenter","areaProject","areaProjectCenter","getApiObjectCenter","as","getBounds","minute","areaMapIsMobile","attr","autocomplete","COOKIE_DIRECTION_NAME","mapSearchInput","preDirectionsBounds","start","end","addDirections","location","startLabel","DirectionsPopup","endLabel","durationLabel","hours","isDuration","boundsPadding","getDirectionBoundsPadding","removeDirections","rebindValue","directionsRect","getBoundingClientRect","paddingLeft","x","top","bottom","left","right","searchResult","result","MAP_DIRECTIONS_PANEL","HIDDEN_CLASS","AreaMapInfo","subscribeAreaMap","isochroneElement","mapCardIsCollapsed","mapCardExpandEvent","eventName","mapCardCollapseEvent","expandMapCard","mapCardImage","querySelector","marginTop","emit","collapseMapCard","childHeight","mapCardMainContent","imageHeight","mainContentHeight","clientHeight","scrollTo","getMapPanelByName","mapPanelInfo","totalSelectedCategories","viewMap","mapPanelDirections","filterArea","filteredArea","checkedFilters","filterItemIsChecked","getCheckedFilters","isCheckedPerFilter","isChecked","ENDPOINT","transformData","transformedData","features","feature","geometry","coordinates","properties","poiMapDataItems","getPoiMapData","mapDataItems","markers","nodeId","latitude","longitude","environment","URL","baseApi","searchParams","origin","response","fetch","toString","method","json","e","console","log","fetchPoiMarkers","composeMapDataItems","extendDistrict","getApiObjectCoordinates","extendProjectPhase","extendApartmentBuilding","extendPropertyType","extendConstructionNumber","extendAreaProjectPointer","extendDataWithMap","extendAreaProject","projectPhases","HOVER","fill","stroke","RED","WHITE","BLACK","GREEN","PURPLE","ORANGE","POI_ICONS","care","drinking","education","playing","shopping","transport","THEME","polygon","settings","normal","hover","minzoom","maxzoom","pointer","disablePointerEvents","createElement","cluster","HAS_SELECTED_CARD","MAP_CARD_COLLAPSED_CLASS","MAP_HAS_ACTIVE_DIRECTIONS","AREA_MAP_INFO_SELECTOR","AREA_MAP_CONTROL_COMPASS_SELECTOR","AreaMap","subscribeMap","subscribeConsentStore","isochroneLongitude","isochroneLatitude","areaMapInfo","areaMapControlsCompass","ZoomStep","currentPopup","handleConsent","consent","renderAreaMap","theme","searchCountryIsoCodes","language","languageIsoCode","search","kmPadding","noZoomAfterSearch","types","toggleMapCard","initAreaMap","extendedArea","areaId","getExtendedAreaProjects","setAreaData","setAreaProjectsData","updateMap","setInitialZoomAndCenter","districtId","initialZoomLevel","currDistrict","areaMapData","calculateMapDataCenter","setCenter","customInitialCenter","layerRaster","getApiObjectLayerRaster","renderNoConsent","addPopup","closeButton","offset","setLngLat","setDOMContent","addTo","removePopup","mapData","mapbox","click","isCurrentArea","calculateCenter","polygonCategory","findExtendedObjectById","isDistrict","isProjectPhase","previous","addAreaProjectPopup","mapDataItem","addPoiPopup","setupMapBehaviour","touchPitch","disable","getContainer","touches","dragPan","enable","setDragPan","mapRotateDegrees","getBearing","transform","Number","getMapCardTitle","houseTypeTranslationKey","identifier","isConstructionNumberNhg","nhgLimit","nhgEcoLimit","translateNhgLimit","translateNhgEcoLimit","init","showPrice","salesPrice","ecoLimit","isEnergyNeutral","nhgChecker","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","___CSS_LOADER_URL_IMPORT_15___","___CSS_LOADER_URL_IMPORT_16___","___CSS_LOADER_URL_IMPORT_17___","___CSS_LOADER_URL_IMPORT_18___","___CSS_LOADER_URL_IMPORT_19___","___CSS_LOADER_URL_IMPORT_20___","___CSS_LOADER_URL_IMPORT_21___","___CSS_LOADER_URL_IMPORT_22___","___CSS_LOADER_URL_IMPORT_23___","___CSS_LOADER_URL_IMPORT_24___","___CSS_LOADER_URL_IMPORT_25___","___CSS_LOADER_URL_IMPORT_26___","___CSS_LOADER_URL_IMPORT_27___","___CSS_LOADER_URL_IMPORT_28___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","___CSS_LOADER_URL_REPLACEMENT_18___","___CSS_LOADER_URL_REPLACEMENT_19___","___CSS_LOADER_URL_REPLACEMENT_20___","___CSS_LOADER_URL_REPLACEMENT_21___","___CSS_LOADER_URL_REPLACEMENT_22___","___CSS_LOADER_URL_REPLACEMENT_23___","___CSS_LOADER_URL_REPLACEMENT_24___","___CSS_LOADER_URL_REPLACEMENT_25___","___CSS_LOADER_URL_REPLACEMENT_26___","___CSS_LOADER_URL_REPLACEMENT_27___","___CSS_LOADER_URL_REPLACEMENT_28___"],"sourceRoot":""}