{"version":3,"file":"js/2974-030c22492a057002cca3.js","mappings":"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","sources":["webpack:///./app/javascript/api/httpService.js","webpack:///./app/javascript/components/Breadcrumb/index.jsx","webpack:///./app/javascript/components/ListView/AreaFilter/index.jsx","webpack:///./app/javascript/components/ListView/BottomSeo/index.jsx","webpack:///./app/javascript/components/ListView/HeaderSection/index.jsx","webpack:///./app/javascript/components/ListView/LocationsContent/index.jsx","webpack:///./app/javascript/components/ListView/MainFilter/StickyFilterBar.jsx","webpack:///./app/javascript/components/ListView/MainFilter/index.jsx","webpack:///./app/javascript/components/ListView/SortBar/index.jsx","webpack:///./app/javascript/components/ListView/data.js","webpack:///./app/javascript/components/ListView/index.jsx","webpack:///./app/javascript/components/LocationSearch/ResultsContainer.jsx","webpack:///./app/javascript/components/LocationSearch/index.jsx","webpack:///./app/javascript/components/SharedComponents/FAQSection/index.jsx","webpack:///./app/javascript/components/helpers/checkOrderedLocation.js","webpack:///./app/javascript/components/helpers/coundByKindLocation.js","webpack:///./app/javascript/utils/queryParseHelper.js"],"sourcesContent":["// import ES6Promise from 'es6-promise';\nimport { apiProvider } from './core';\nimport { camelizeName } from '../utils/helpers';\n// ES6Promise.polyfill();\n\n\nexport const requestBuilder = (requestParams) => {\n const bodyFormData = new FormData();\n\n Object.keys(requestParams).map(elem => {\n if (Array.isArray(requestParams[elem])) {\n requestParams[elem].map(section => bodyFormData.append(`${elem}[]`, section));\n } else {\n if (requestParams[elem] != null) {\n bodyFormData.append(elem, requestParams[elem]);\n }\n }\n });\n\n return bodyFormData;\n};\n\n\nclass httpService {\n\n static getLocationsByIds(locationsIds) {\n const locale = localStorage.getItem('locale');\n const url = '/api/locations/get_by_ids?locale=' + locale + '&';\n const params = locationsIds.reduce((sum, item) => sum + 'ids[]=' + item + '&', '');\n const queryString = url + params.slice(0, -1);\n\n return apiProvider.getAll(queryString);\n }\n\n\n static orderInfoListViewForm(url, data, uuid) {\n\n const {\n name,\n email,\n company: company_name,\n option_parking_lots,\n phone: phone_number,\n // jeudan_policy,\n comment,\n ab_code\n } = data;\n\n const order = {\n order: {\n location_uuid: uuid,\n person_name: camelizeName(name),\n company_name,\n phone_number,\n email,\n option_parking_lots,\n // jeudan_policy,\n comment,\n ab_code,\n },\n api_version: 2\n };\n\n return apiProvider.post(url, order);\n }\n}\n\nexport default httpService;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SvgIco } from \"../SharedComponents/Icons\";\n\nimport './index.sass';\n\n\nconst Breadcrumb = ({ breadcrumbs, root, detailsPage }) => {\n\n const linksList = breadcrumbs.map( (breadcrumb, index) => (\n <div className=\"breadcrumbs__link-wrapper\" key={ breadcrumb.label }>\n { index === breadcrumbs.length - 1\n ? <div className=\"breadcrumbs__link breadcrumbs__last-one-link breadcrumbs__link--disabled\">{ breadcrumb.label }</div>\n : <div className=\"breadcrumbs__link-wrapper\">\n <a className=\"breadcrumbs__link\" href={ breadcrumb.path }>\n { breadcrumb.label }\n </a>\n <SvgIco name=\"keyboard-arrow-right-rounded\" size={15}/>\n </div>\n }\n </div>\n ));\n\n return (\n <div className={ `breadcrumbs ${ root ? root : '' } ${detailsPage ? 'details-page' : ''}`}>\n <div className=\"container\">\n <div className=\"breadcrumbs__wrapper\">{ linksList }</div>\n </div>\n </div>\n );\n};\n\nBreadcrumb.defaultProps = {\n breadcrumbs: [],\n};\n\nBreadcrumb.propTypes = {\n breadcrumbs: PropTypes.array,\n};\n\n\nexport default Breadcrumb;\n","import React, { Component, Fragment } from 'react';\nimport update from 'immutability-helper';\nimport classNames from 'classnames';\n\nimport { SvgIco } from '../../SharedComponents/Icons';\n\nimport './index.sass';\n\n\nclass AreaFilter extends Component {\n\n state = {\n isOpened: this.props.isOpened || false,\n selectedSectionIds: [],\n searchQuery: '',\n toggleIsSticky: false,\n queryData: [],\n };\n\n componentDidMount() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { scrollToggle } = this.props;\n\n scrollToggle && prevProps.scrollToggle !== scrollToggle && this.handleBodyScroll();\n }\n\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n handleClickOutside = (event) => {\n const isOutsideClick = event.target.tagName !== 'svg' && this.wrapperRef && !this.wrapperRef.contains(event.target);\n const isTrigger = event.target === this.trigger || this.trigger.contains(event.target);\n\n isOutsideClick && !isTrigger && this.setState({ isOpened: false, selectedSectionIds: [] });\n };\n\n selectAll = (province) => {\n // this.state.selectedSectionIds.indexOf(province.id) < 0 && this.setState({ selectedSectionIds: update(this.state.selectedSectionIds, {$push: [province.id]})});\n this.props.selectAll(province, this.props.dynamicData);\n };\n\n selectAction = (itemId, areaId) =>\n this.props.selectAction(itemId, areaId);\n\n setWrapperRef = (node) =>\n this.wrapperRef = node;\n\n handleOpening = () =>\n this.setState({ isOpened: !this.state.isOpened, selectedSectionIds: [] });\n\n toggleSelectSection = (id) => {\n const { searchQuery, selectedSectionIds } = this.state;\n const index = selectedSectionIds.indexOf(id);\n const sectionIsSelected = index >= 0;\n const newSelectedSections =\n searchQuery\n ? (sectionIsSelected ? update(selectedSectionIds, {$splice: [[index, 1]] }) : update(selectedSectionIds, {$push: [id]}))\n : sectionIsSelected ? [] : [id];\n\n this.setState({ selectedSectionIds: newSelectedSections }, () => !searchQuery && !sectionIsSelected && setTimeout(() => this.scrollToTarget(id), 300));\n };\n\n scrollToTarget = (id) => {\n const { isMobileMenu } = this.props;\n const scrollBody = document.getElementById(isMobileMenu ? 'filtersWrapper' : 'dropdown-body');\n const scrollTarget = document.getElementById(`trigger-${id}`);\n const dropdownBody = document.getElementById('dropdown-body');\n const scrollTargetTop = scrollTarget.offsetTop + (isMobileMenu ? dropdownBody.offsetTop : 0);\n\n scrollBody.scrollTop = scrollTargetTop;\n };\n\n handleSearch = (query) => {\n this.setState({ searchQuery: query.toLowerCase(), selectedSectionIds: [] }, () => {\n query\n ? this.handleQueryData()\n : this.setState({ queryData: [] });\n });\n };\n\n handleQueryData = () => {\n const { searchQuery } = this.state;\n const { dynamicData } = this.props;\n const openedSections = [];\n\n const queryData = searchQuery && dynamicData.filter(data => {\n const areasHasQuery = data.areas.some(area => area.name.toLowerCase().includes(searchQuery) && area.total_sum > 0);\n\n return !!(data.name.toLowerCase().includes(searchQuery) || areasHasQuery) && data.count > 0;\n }).map(filteredData => {\n const district = { ...filteredData };\n\n district.areas = filteredData.areas.filter(area => area.name.toLowerCase().includes(searchQuery) && area.total_sum > 0);\n district.areas.length && openedSections.push(district.id);\n\n return district;\n });\n\n this.setState({ queryData, selectedSectionIds: openedSections });\n };\n\n handleBodyScroll = () => {\n const { searchQuery, selectedSectionIds, toggleIsSticky } = this.state;\n\n if (!searchQuery && selectedSectionIds.length) {\n const { isMobileMenu } = this.props;\n const scrollTarget = document.getElementById(`body-scroll-target-${selectedSectionIds[0]}`);\n const dropdownBody = document.getElementById(isMobileMenu ? 'filtersWrapper' : 'dropdown-body');\n\n if (scrollTarget && dropdownBody) {\n const targetRect = scrollTarget && scrollTarget.getBoundingClientRect();\n const bodyRect = dropdownBody && dropdownBody.getBoundingClientRect();\n const targetTop = targetRect.top;\n const bodyTop = isMobileMenu ? bodyRect.top + 55 : bodyRect.top;\n const targetBottom = targetRect.bottom;\n const bodyBottom = bodyRect.bottom;\n const viewportBottom = window.innerHeight;\n const isSticky = targetTop <= bodyTop && (targetBottom > bodyBottom || targetBottom > viewportBottom);\n\n !isSticky && toggleIsSticky && this.setState({ toggleIsSticky: false });\n isSticky && !toggleIsSticky && this.setState({ toggleIsSticky: true });\n }\n }\n };\n\n\n render() {\n const { isOpened, searchQuery, selectedSectionIds, toggleIsSticky, queryData } = this.state;\n const { deselectAll, dynamicData, placeholder, selectedData, isMobileMenu } = this.props;\n const actionIconClasses = classNames('dropdown-selector__action-icon', { 'open': isOpened });\n const bodyClasses = classNames('dropdown-selector__body', { 'dropdown-selector__body--open': isOpened });\n const placeholderClasses = classNames('dropdown-selector__placeholder', { 'active': isOpened });\n const triggerClasses = classNames('dropdown-selector__trigger', { 'dropdown-selector__trigger--active': isOpened });\n\n let names = [];\n let selectedIds = [];\n Object.keys(selectedData).map(data => selectedIds = [...selectedIds, ...selectedData[data]]);\n selectedIds.forEach(selectedDistrictId => dynamicData.forEach(area => area.areas.forEach(district => district.id === selectedDistrictId && names.push(district.name))));\n\n const data = searchQuery ? queryData : dynamicData;\n\n const highlightSearchOutput = (name) => {\n if (name.toLowerCase().includes(searchQuery)) {\n const originName = name.toLowerCase();\n const startIndex = originName.indexOf(searchQuery);\n const endIndex = originName.indexOf(searchQuery) + searchQuery.length;\n const originSubstring = `<strong>${ name.substring(startIndex, endIndex) }</strong>`;\n const highlightedOutput = name.replace(name.substring(startIndex, endIndex), originSubstring).replaceAll(' ', ' ');\n\n return highlightedOutput;\n } else {\n return name;\n }\n };\n\n\n\n return (\n <div className='dropdown-selector'>\n <div className={triggerClasses} onClick={this.handleOpening} ref={el => this.trigger = el}>\n <div className={placeholderClasses}>\n { placeholder }\n <span className=\"filter-toggle__select-indicator\">\n { names.length > 0 && ` (${names.length})` }\n </span>\n </div>\n <div className=\"dropdown-selector__trigger-right\">\n { names.length > 0 &&\n <div className=\"dropdown-selector__selected-tooltip\">\n { names.join(', ') }\n </div>\n }\n <div className={actionIconClasses}>\n { !isOpened ? <SvgIco name=\"expand-more\" size={20} /> : <SvgIco name=\"expand-less\" size={20} /> }\n </div>\n </div>\n </div>\n\n { (isOpened || isMobileMenu) &&\n <div className={bodyClasses} ref={this.setWrapperRef} onScroll={this.handleBodyScroll} id=\"dropdown-body\">\n\n <div className=\"dropdown__search-wrapper\">\n <SvgIco name=\"search\" size={20} />\n <input\n className=\"dropdown__search-input\"\n onChange={(e) => this.handleSearch(e.target.value)}\n placeholder={`${I18n.t('apps.lb_showroom.showroom.area_filter.search_label')}...`}\n type=\"text\"\n value={searchQuery}\n />\n </div>\n\n <div className='dropdown-selector__column'>\n { data.map((item) => {\n const sectionIsSelected = selectedSectionIds.indexOf(item.id) >= 0;\n const sortedAreasArray = item.areas.sort((a,b) => a.name.localeCompare(b.name));\n const areaIsSelected = selectedData[item.id] && selectedData[item.id].length > 0;\n const checkboxClasses = areaIsSelected ? 'dropdown-selector__item-icon-checked' : 'dropdown-selector__item-checkbox';\n const submenuClasses = classNames('dropdown-selector__item-submenu', {'opened': sectionIsSelected});\n const submenuStyles = sectionIsSelected ? {maxHeight: `${(item.areas.length + 1) * 60}px`} : {};\n const itemClasses = classNames('dropdown-selector__item main',\n { 'dropdown-selector__item--selected': sectionIsSelected },\n { 'sticky': toggleIsSticky && sectionIsSelected },\n { 'dropdown-selector__item--active': selectedData[item.id] });\n\n return (\n <div key={item.id} id={`body-scroll-target-${item.id}`}>\n { item.count > 0 && (\n <div className={itemClasses} id={`trigger-${item.id}`}>\n <div className='dropdown-selector__item-name'>\n <div onClick={ areaIsSelected ? () => deselectAll(item.id) : () => this.selectAll(item)} className={checkboxClasses}>\n <SvgIco name=\"check\" size={18} />\n </div>\n <div className=\"dropdown-selector__item-label\" onClick={() => sortedAreasArray.length ? this.toggleSelectSection(item.id) : null}>\n <span className={`${searchQuery ? 'with-query' : ''}`} dangerouslySetInnerHTML={{ __html: `${ searchQuery ? highlightSearchOutput(item.name) : item.name } (${item.count})` }} />\n { areaIsSelected &&\n <span className=\"dropdown-selector__chosen-tooltip\"> { selectedData[item.id].length } {I18n.t('lb_showroom.showroom.list.chosen')}</span>\n }\n </div>\n </div>\n <span className={`arrow-down ${!sortedAreasArray.length ? 'disabled' : ''}`} onClick={() => this.toggleSelectSection(item.id)}>\n { sectionIsSelected ? <SvgIco name=\"expand-less\" size={20} /> : <SvgIco name=\"expand-more\" size={20} /> }\n </span>\n </div>\n )}\n\n <div className={submenuClasses} style={submenuStyles}>\n <div className=\"dropdown-selector__select-buttons\">\n <p onClick={() => this.selectAll(item)}>{ I18n.t('search_agent.select_all') }</p>\n <p onClick={() => deselectAll(item.id)}>{ I18n.t('search_agent.deselect_all') }</p>\n </div>\n\n { sortedAreasArray.map(area => {\n const areaIsSelected = selectedData[item.id] && selectedData[item.id].indexOf(area.id) >= 0;\n const submenuItemClasses = classNames('dropdown-selector__item', {'dropdown-selector__item--checked': areaIsSelected});\n const submenuCheckboxClasses = areaIsSelected ? 'dropdown-selector__item-icon-checked' : 'dropdown-selector__item-checkbox';\n\n\n return (\n <Fragment key={area.id}>\n { area.total_sum > 0 && (\n <div className={submenuItemClasses} onClick={() => this.selectAction(item.id, area.id)}>\n <div className='dropdown-selector__item-icon'>\n <div className={submenuCheckboxClasses}>\n <SvgIco name=\"check\" size={18} />\n </div>\n </div>\n <div className='dropdown-selector__item-name'\n dangerouslySetInnerHTML={{ __html: `${searchQuery ? highlightSearchOutput(area.name) : area.name} (${area.total_sum})` }}>\n </div>\n </div>)\n }\n </Fragment>\n )\n })}\n <div className=\"dropdown-selector__separator\"/>\n </div>\n </div>\n )\n })}\n { searchQuery && !data.length &&\n <div className=\"no-search-results\">\n <div className=\"no-search-results__header\">\n <SvgIco name=\"search_off\" size={20} />\n <p>{ I18n.t('apps.lb_showroom.showroom.area_filter.no_results.first') }</p>\n </div>\n <div className=\"no-search-results__subheader\">\n { I18n.t('apps.lb_showroom.showroom.area_filter.no_results.second') }\n </div>\n </div>\n }\n </div>\n <div className=\"dropdown-selector__separator\"/>\n </div>\n }\n\n </div>\n );\n }\n}\n\nexport default AreaFilter;\n","import React, { Fragment, useContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { apiProvider } from \"../../../api/core\";\nimport { requestBuilder } from \"../../../api/httpService\";\nimport { SvgIco } from '../../SharedComponents/Icons';\nimport { Context } from \"../index\";\n\nimport './index.sass';\n\n\nconst BottomSeo = () => {\n\n const {\n headerData,\n initialKinds,\n keywords,\n requestParams,\n setHeaderData,\n showSeo,\n siteKey,\n } = useContext(Context);\n\n const { descriptionWithAssets, extendedDescription, rating, streetName, seoStatistics } = headerData;\n const { avgScore, rateableId, ratingCreatePath, showRating, votesCount } = rating;\n const { geoName } = keywords;\n\n const [hoveredRatingStar, setHoveredRatingStar] = useState(null);\n\n const currentScore = +avgScore;\n const locationsKind = initialKinds && initialKinds.length === 1 ? '.' + initialKinds[0] : '';\n const count = requestParams.locationsCount === 1 ? 'one' : 'other';\n\n // {locationsKind === '.parking'} Related to Danish translation aspects\n const kind = I18n.t(`global.models.location.kinds${locationsKind}${locationsKind === '.parking' ? '.seo_statistics' : '.normal'}`);\n const translatedKinds = kind[count] ? kind[count] : kind;\n const ratingHeadline = I18n.t('generic.rating_text', {\n selected_kinds: translatedKinds,\n selected_area: geoName,\n });\n\n // isCoworkingDk - related to Danish translation aspects\n const isCoworkingDk = siteKey === 'dk' && locationsKind === '.coworking' && true;\n const declinedLocationKinds =\n isCoworkingDk\n ? I18n.t(`global.models.location.kinds${locationsKind}.seo_statistics`)\n : translatedKinds;\n\n const availableLocationsLinkI18n = I18n.t(\n 'apps.lb_showroom.bottom_seo.overview_link',\n {\n pdf_link: seoStatistics && seoStatistics.fullOverviewLink,\n location_kinds: declinedLocationKinds,\n location: geoName,\n },\n );\n\n const topVievedLocationsHeadline = I18n.t(\n 'apps.lb_showroom.bottom_seo.table_top_locations_headline',\n {\n locations_count: seoStatistics && seoStatistics.topViewed.length,\n location_kinds: declinedLocationKinds,\n location: geoName,\n },\n ).replace(/\\u00A0/g, ' ');\n\n\n useEffect(() => {\n initYouTubeVideos();\n }, []);\n\n\n const updateAreaRating = (score) => {\n const requestParams = {\n kind: 'list_view',\n load_stars_widget: 'false',\n id: rateableId,\n score,\n };\n\n apiProvider\n .post(ratingCreatePath, requestBuilder(requestParams))\n .then(response => response &&\n setHeaderData(prevData => ({\n ...prevData,\n rating: {\n ...prevData.rating,\n avgScore: response.rating_data.avg_score,\n votesCount: response.rating_data.votes_count,\n }\n }))\n );\n };\n\n\n const handleRatingHover = (e) =>\n setHoveredRatingStar(e.target.id);\n\n\n const handleRatingOut = () =>\n setHoveredRatingStar(null);\n\n\n const initYouTubeVideos = () => {\n const labnolIframe = (div) => {\n const iframe = document.createElement('iframe');\n iframe.setAttribute('src', 'https://www.youtube.com/embed/' + div.dataset.id + '?autoplay=1&rel=0');\n iframe.setAttribute('frameborder', '0');\n iframe.setAttribute('allowfullscreen', '1');\n iframe.setAttribute('autoplay', '1');\n iframe.setAttribute('allow', 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture');\n div.parentNode.replaceChild(iframe, div);\n };\n\n const playerElements = document.getElementsByClassName('youtube-player');\n\n if (playerElements && playerElements.length) {\n for (let n = 0; n < playerElements.length; n++) {\n const videoId = playerElements[n].dataset.id;\n const div = document.createElement('div');\n\n div.setAttribute('data-id', videoId);\n\n const thumbNode = document.createElement('img');\n\n thumbNode.src = 'https://i.ytimg.com/vi/ID/hqdefault.jpg'.replace('ID', videoId);\n div.appendChild(thumbNode);\n\n const playButton = document.createElement('div');\n\n playButton.setAttribute('class', 'play');\n div.appendChild(playButton);\n div.onclick = function () {\n labnolIframe(this);\n };\n\n playerElements[n].appendChild(div);\n }\n }\n };\n\n\n const capitalize = (text) =>\n text.charAt(0).toUpperCase() + text.substring(1);\n\n\n const diffIcon = (diff) =>\n diff > 0\n ? <span className=\"increase\">↑</span>\n : (diff < 0 ? <span className=\"decrease\">↓</span> : <span className=\"indentation\" />);\n\n\n const videoFrame = (url) => {\n const videoId = url.split('/').pop();\n\n return <div className=\"youtube-player\" data-id={videoId} />;\n };\n\n\n if (showSeo && !streetName) {\n return (\n <div className=\"bottom-seo container\">\n { showRating ? (\n <div className=\"lv-header__rating-wrapper\">\n <div className=\"container\">\n <div className=\"lv-header__rating-container\">\n\n <span className=\"lv-header__rating-headline\">\n {ratingHeadline}\n </span>\n\n <div className=\"lv-header__rating-stars\">\n <span\n className=\"lv-header__rating-star\"\n id=\"1\"\n onClick={(e) => updateAreaRating(e.target.id)}\n onMouseOver={handleRatingHover}\n onMouseOut={handleRatingOut}>\n <SvgIco name=\"star\" size={20} />\n </span>\n\n <span\n className=\"lv-header__rating-star\"\n id=\"2\"\n onClick={(e) => updateAreaRating(e.target.id)}\n onMouseOver={handleRatingHover}\n onMouseOut={handleRatingOut}>\n { !hoveredRatingStar\n ? <SvgIco name={ currentScore >= 2 ? 'star' : currentScore > 1 ? 'star-half' : 'star-outlined' } size={20} />\n : <SvgIco name={ hoveredRatingStar >= 2 ? 'star' : 'star-outlined' } size={20} />\n }\n </span>\n <span\n className=\"lv-header__rating-star\"\n id=\"3\"\n onClick={(e) => updateAreaRating(e.target.id)}\n onMouseOver={handleRatingHover}\n onMouseOut={handleRatingOut}>\n { !hoveredRatingStar\n ? <SvgIco name={ currentScore >= 3 ? 'star' : currentScore > 2 ? 'star-half' : 'star-outlined' } size={20} />\n : <SvgIco name={ hoveredRatingStar >= 3 ? 'star' : 'star-outlined' } size={20} />\n }\n </span>\n <span\n className=\"lv-header__rating-star\"\n id=\"4\"\n onClick={(e) => updateAreaRating(e.target.id)}\n onMouseOver={handleRatingHover}\n onMouseOut={handleRatingOut}\n >\n { !hoveredRatingStar\n ? <SvgIco name={ currentScore >= 4 ? 'star' : currentScore > 3 ? 'star-half' : 'star-outlined' } size={20} />\n : <SvgIco name={ hoveredRatingStar >= 4 ? 'star' : 'star-outlined' } size={20} />\n }\n </span>\n <span\n className=\"lv-header__rating-star\"\n id=\"5\"\n onClick={(e) => updateAreaRating(e.target.id)}\n onMouseOver={handleRatingHover}\n onMouseOut={handleRatingOut}\n >\n { !hoveredRatingStar\n ? <SvgIco name={ currentScore === 5 ? 'star' : currentScore > 4 ? 'star-half' : 'star-outlined' } size={20} />\n : <SvgIco name={ hoveredRatingStar >= 5 ? 'star' : 'star-outlined' } size={20} />\n }\n </span>\n <span className=\"lv-header__rating-text\">\n { currentScore + ` (${votesCount} ${I18n.t('generic.star_rating_votes')})`}\n </span>\n </div>\n </div>\n </div>\n </div>\n ) : null }\n\n { descriptionWithAssets && descriptionWithAssets.length > 0\n ?\n <div id=\"seo-text-description\">\n { descriptionWithAssets.map((section, index) => (\n <div className=\"bottom-seo__section row\" key={index}>\n <h2 className=\"bottom-seo__headline col-12 col-md-12 col-lg-8 col-xl-8\">\n { section.headline }\n </h2>\n <div className=\"bottom-seo__section-content col-xl-12\">\n { section.asset &&\n section.asset.url &&\n (section.asset.type === 'img' ||\n section.asset.type === 'map') && (\n <img\n className=\"bottom-seo__img lazyload\"\n data-src={section.asset.url}\n alt={section.asset.alt}\n data-sizes=\"auto\"\n data-expand=\"100\"\n />\n )}\n <div className=\"bottom-seo__text-content\" dangerouslySetInnerHTML={{ __html: section.text }} />\n { section.asset &&\n section.asset.url &&\n section.asset.type === 'video' && (\n <div className=\"bottom-seo__video-wrapper\">\n { videoFrame(section.asset.url) }\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n : extendedDescription &&\n <div id=\"seo-text-description\" className=\"description-padding\">\n <div dangerouslySetInnerHTML={{ __html: extendedDescription }} />\n </div>\n }\n\n { seoStatistics && (\n <div className=\"bottom-seo__price section row\">\n <h2 className=\"bottom-seo__headline col-12 col-md-12 col-lg-8 col-xl-8\">\n { isCoworkingDk\n ? I18n.t(\n 'apps.lb_showroom.bottom_seo.headline_coworking_dk',\n { location_kinds: translatedKinds, location: geoName },\n )\n : I18n.t('apps.lb_showroom.bottom_seo.table_headline', {\n location_kinds: translatedKinds,\n location: geoName,\n })\n }\n </h2>\n\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-md-12 col-lg-12 col-xl-8\">\n <p className=\"bottom-seo__price-table-description\">\n { isCoworkingDk\n ? I18n.t(\n 'apps.lb_showroom.bottom_seo.headline_paragraph_coworking_dk',\n {\n location_kinds: translatedKinds,\n location: geoName,\n },\n )\n : I18n.t(\n 'apps.lb_showroom.bottom_seo.table_headline_paragraph',\n {\n location_kinds: translatedKinds,\n location: geoName,\n },\n )}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"bottom-seo__price-left-part col-12 col-md-12 col-lg-12 col-xl-8\">\n <div className=\"bottom-seo__table-wrapper\">\n <table className=\"bottom-seo__table\">\n <tbody>\n <tr>\n <th scope=\"col\" className=\"main-header\">\n { capitalize(translatedKinds) }: {geoName}\n </th>\n <th scope=\"col\" className=\"headers text-right\">\n { seoStatistics.headline[0] }\n </th>\n </tr>\n { seoStatistics.rowsContent.map((content, indexRows) => (\n <tr key={indexRows}>\n <th scope=\"row\">{content.description}</th>\n { content.cells.map(\n (cell, index) =>\n index === 0 && <td key={index}>{cell}</td>,\n )}\n </tr>\n ))}\n </tbody>\n </table>\n\n <table className=\"bottom-seo__table bottom-seo__table--desktop\">\n <tbody>\n\n <tr>\n <th scope=\"col\" className=\"main-header\">\n { capitalize(translatedKinds) }: { geoName }\n </th>\n\n { seoStatistics.headline.map((headline, index) => (\n <th scope=\"col\" key={index}>\n { index === seoStatistics.headline.length - 1\n ?\n <Fragment>\n <span>\n { I18n.t('apps.lb_showroom.bottom_seo.table_change') }\n </span>\n <span className=\"bottom-seo__change-headline\">\n ({ headline })\n </span>\n </Fragment>\n :\n headline\n }\n </th>\n ))}\n </tr>\n\n { seoStatistics.rowsContent.map((content, indexRows) => (\n <tr key={indexRows}>\n <th scope=\"row\">{content.description}</th>\n { content.cells.map((cell, index) =>\n index === content.cells.length - 1\n ?\n <td key={index}>\n { cell } { diffIcon(content.percentageChange) }\n </td>\n :\n <td key={index}>{cell}</td>\n ,\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <p\n className=\"bottom-seo__price-full-overview\"\n dangerouslySetInnerHTML={{\n __html: availableLocationsLinkI18n,\n }}\n ></p>\n </div>\n\n <div className=\"bottom-seo__table bottom-seo__table--links col-12 col-md-12 col-lg-12 col-xl-4\">\n <h3 className=\"bottom-seo__links-headline\">\n { topVievedLocationsHeadline }\n </h3>\n <ol className=\"bottom-seo__links\">\n { seoStatistics.topViewed.map((link, index) => (\n <li key={index}>\n <a href={link[1]} target=\"_blank\">\n { link[0] }\n </a>\n </li>\n ))}\n </ol>\n <p className=\"bottom-seo__most-viewed-overview-link\">\n <a href={seoStatistics.mostViewedOverviewLink} target=\"_blank\">\n { I18n.t('apps.lb_showroom.bottom_seo.viewed_locations_link', { location_kinds: declinedLocationKinds }) }\n </a>\n { I18n.t('apps.lb_showroom.bottom_seo.viewed_locations_p', { location: geoName }) }\n </p>\n </div>\n </div>\n )}\n </div>\n );\n } else {\n return null;\n }\n}\n\nexport default BottomSeo;\n\nBottomSeo.propTypes = {\n showSeo: PropTypes.bool,\n};\n\nBottomSeo.defaultProps = {\n showSeo: true,\n};\n","import React, { useContext, Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SvgIco } from '../../SharedComponents/Icons';\nimport { Context } from \"../index\";\n\nimport './index.sass';\n\n\nconst HeaderSection = () => {\n\n const {\n contactInfoPhone,\n contactInfoPhoneWithoutCode,\n country,\n headerData,\n keywords,\n requestParams,\n showSeo,\n siteKey,\n subSite,\n totalLocationsCount,\n } = useContext(Context);\n\n const { locationsCount, sections } = keywords;\n\n const {\n description,\n descriptionWithAssets,\n extendedDescription,\n headline,\n streetName,\n cityName\n } = headerData;\n\n\n const findPos = (obj) => {\n let curtop = 0;\n if (obj.offsetParent) {\n do {\n curtop += obj.offsetTop;\n } while (obj = obj.offsetParent);\n return curtop\n }\n return undefined;\n };\n\n\n const scrollToSeoText = () => {\n const seoTextElement = document.getElementById('seo-text-description');\n const topMenuHeight = document.getElementById('top-menu').offsetHeight;\n const targetTop = findPos(seoTextElement) - topMenuHeight - 100;\n scrollTo({ top: targetTop, left: document.body, behavior: \"smooth\" });\n };\n\n\n const additionalTextSalesSection = () => {\n if (subSite === 'sales') {\n switch (true) {\n case (sections[0] === 'foreclosure' && sections.length < 2):\n return 'til salg pÃ¥ tvangsauktion';\n break;\n case (sections[0] === 'own_use' && sections.length < 2):\n return '- brugerejendomme til salg';\n break;\n case (sections[0] === 'investment' && sections.length < 2):\n return 'til investering';\n break;\n default:\n return 'til salg'\n }\n } else {\n return null\n }\n };\n\n\n const count = (locationsCount) => {\n switch (true) {\n case locationsCount === 1:\n return \"one\";\n case locationsCount > 1 && locationsCount < 5:\n return \"few\";\n case locationsCount >= 5:\n return \"many\";\n default:\n return \"other\";\n }\n };\n\n\n const locationsKind = requestParams.kinds && requestParams.kinds.length === 1 ? '.' + requestParams.kinds[0] : '';\n const kind = I18n.t(`global.models.location.kinds${locationsKind}.normal`);\n // const currentTotalLocationsCount = totalLocationsCount || locationsCount;\n const currentTotalLocationsCount = totalLocationsCount || totalLocationsCount === 0 ? totalLocationsCount : locationsCount;\n const translatedKinds = kind[count(currentTotalLocationsCount)] ? kind[count(currentTotalLocationsCount)] : kind['other'];\n const phoneNumber = siteKey === 'global' ? contactInfoPhone : contactInfoPhoneWithoutCode;\n\n\n return (\n <div className=\"lv-header__wrapper\">\n <div className=\"container max-width\">\n <div className=\"lv-header__container\">\n <div className=\"row\">\n { headline ?\n <Fragment>\n <div className=\"col-xl-8 col-lg-8 col-md-8\">\n <h1 className={`lv-header__headline ${siteKey !== 'dk' ? 'lv-header__capitalize-title' : ''}`}>\n {/*{ !(totalLocationsCount === 0) ? totalLocationsCount : locationsCount } */}\n <span className=\"notranslate\">{ currentTotalLocationsCount } </span><span>{ showSeo }</span><span> { translatedKinds }</span>\n { additionalTextSalesSection() }\n { showSeo ? ': ' : ' ' }\n {((streetName && requestParams.street_id) ? streetName : (cityName ? cityName : (showSeo ? headline : I18n.t(`apps.lb_showroom.header.results`))))}\n </h1>\n { !streetName && !cityName &&\n <div className=\"lv-header__description\">\n { showSeo ? description : I18n.t('apps.lb_showroom.header.subheader') }\n { showSeo && (extendedDescription || (descriptionWithAssets && descriptionWithAssets.length > 0)) && (\n <div className=\"lv-header__read-more\" onClick={scrollToSeoText}>\n { I18n.t('generic.read_more') }\n </div>\n )}\n </div>\n }\n </div>\n\n <div className=\"lv-header__banner offset-xl-1 col-xl-3 col-lg-4 col-md-4\">\n <div className=\"lv-header__banner-wrapper\">\n <div className=\"lv-header__banner-item\">\n <SvgIco name=\"check\" size={16} />\n <span className=\"lv-header__banner-advantage\">\n { I18n.t(`apps.entry_page.search_area.value_points.lease.first`) }\n </span>\n </div>\n\n { !contactInfoPhone &&\n <div className=\"lv-header__banner-item\">\n <SvgIco name=\"check\" size={16} />\n <span className=\"lv-header__banner-advantage\">\n { I18n.t(`apps.entry_page.search_area.value_points.lease.third`) }\n </span>\n </div>\n }\n\n <div className=\"lv-header__banner-item\">\n <SvgIco name=\"check\" size={16} />\n <span className=\"lv-header__banner-advantage\">\n { siteKey === 'dk'\n ? <div dangerouslySetInnerHTML={{__html: I18n.t('apps.entry_page.search_area.value_points.lease.two_dk')}} />\n : I18n.t(`apps.entry_page.search_area.value_points.lease.second`, {'country_name': country})\n }\n </span>\n </div>\n\n { contactInfoPhone &&\n <div className=\"lv-header__banner-item lv-header__banner-item--phone\">\n <SvgIco name=\"phone-green\" size={16} />\n <span className=\"lv-header__banner-advantage\">\n { I18n.t(`generic.call_us`) }: <a href={`tel://${contactInfoPhone}`}>{ phoneNumber }</a>\n </span>\n </div>\n }\n\n </div>\n </div>\n </Fragment>\n : <p className=\"lv-header__empty-search\">{ I18n.t('apps.lb_showroom.showroom.list.empty_search_result') }</p>\n }\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default HeaderSection;\n\nHeaderSection.propTypes = {\n showSeo: PropTypes.bool,\n};\n\nHeaderSection.defaultProps = {\n showSeo: true,\n}\n","import React, { Fragment, Suspense, useContext, useEffect, useState } from 'react';\nimport ReactPaginate from 'react-paginate';\nimport { debounce } from 'throttle-debounce';\nimport { isMobileOnly } from 'react-device-detect';\n\nimport { SvgIco } from '../../SharedComponents/Icons';\nimport { Context } from \"../index\";\n\nimport './index.sass';\n\nconst MapSection = React.lazy(() => import('../MapSection'));\nconst GridViewItemList = React.lazy(() => import('../GridViewItem/GridViewItemList'));\nconst ListViewItemsList = React.lazy(() => import('../ListViewItems/ListViewItemsList'));\n\n\nconst LocationsContent = () => {\n\n const {\n changePage,\n hoveredLocationId,\n isLoaded,\n keywords,\n listViewAsList,\n locationsByPostalDistricts,\n mapOptions,\n nearbyLocationsLimit,\n requestParams,\n serverErrorListView,\n setHoveredLocationId,\n totalLocationsCount,\n windowWidth,\n } = useContext(Context);\n\n const [showBottomPagination, setShowBottomPagination] = useState(false);\n\n const { newSearchAgentPath } = keywords;\n\n\n useEffect(() => {\n window.addEventListener('scroll', debounce(15, () => handleBottomPagination()));\n }, []);\n\n\n const handleBottomPagination = () => {\n const paginationElem = document.getElementById('main-pagination');\n const paginationBottom = paginationElem && paginationElem.getBoundingClientRect().bottom;\n const currentScreenTop = window.screenTop;\n\n currentScreenTop > paginationBottom\n ? setShowBottomPagination(true)\n : setShowBottomPagination(false);\n };\n\n\n const handlePageClick = (data) => {\n changePage(data.selected + 1);\n setTimeout(() => window.scrollTo(0, 0), 10);\n };\n\n\n const generatePaginationLink = (page) => {\n const { origin, pathname } = window.location;\n\n return `${origin}${pathname}${page > 1 ? `?page=${page}` : ''}`;\n };\n\n\n const defaultItemsPerPage = 12;\n const mapIsOpen = mapOptions.open;\n const mapLoaded = mapOptions.loaded;\n const perPage = requestParams.per_page ? requestParams.per_page : defaultItemsPerPage;\n const initialPage = requestParams.page ? (Number(requestParams.page) - 1) : 1;\n const showPagination = locationsByPostalDistricts && locationsByPostalDistricts.length > 0 && totalLocationsCount + nearbyLocationsLimit > perPage;\n const mapClass = `list-view-map ${ mapOptions.root } ${mapIsOpen ? 'col-12 col-lg-4' : 'hidden'}`;\n const styles = {\n spinnerMargin: !listViewAsList ? { paddingBottom: '30px' } : null,\n containerMargin: (listViewAsList && showPagination) ? { marginTop: '32px' } : {marginTop: '64px'}\n };\n\n const SkeletonLoader = ({ className, count }) =>\n <div className={`skeleton-box-wrapper ${className}`}>\n { Array.apply('test', Array(count)).map((elem, index) =>\n <div className={`skeleton-box skeleton-box--${index + 1}`} key={className + index} />\n )}\n </div>;\n\n\n const skeletonGridViewLoader =\n <div className=\"grid-list container max-width\">\n <div className=\"row\">\n { Array.apply('test', Array(perPage)).map((key, index) =>\n <div className={`grid-view-item-loader-wrapper col-md-6 col-lg-${mapIsOpen ? 6 : 4} col-xl-${mapIsOpen ? 4 : 3}`} key={index + 'skeleton-grid'}>\n <SkeletonLoader className={`grid-view-item-loader`} count={12} key={index}/>\n </div>\n )}\n </div>\n </div>;\n\n\n const skeletonListViewLoader =\n <div className=\"list-view__list-as-list\">\n { Array.apply('test', Array(perPage)).map((key, index) =>\n <div className=\"container list-item max-width\" key={index + 'skeleton-list'}>\n <div className=\"list-item__wrapper row skeleton\">\n <div className=\"list-item__image-slider skeleton col-xl-3 col-lg-3 col-md-4 col-3\">\n <SkeletonLoader className={`list-view-skeleton-loader`} count={1} key={index}/>\n </div>\n <div className=\"list-item__description-wrapper col-xl-6 col-lg-6 col-md-4 col-sm-9 col-9\">\n <SkeletonLoader className={`list-view-skeleton-loader`} count={6} key={index + 1000}/>\n </div>\n <div className=\"list-item__metrics-wrapper skeleton mobile-hidden col-lg-3 col-md-4\">\n <SkeletonLoader className={`list-view-skeleton-loader`} count={7} key={index +2000}/>\n </div>\n </div>\n </div>\n )}\n </div>;\n\n\n const locationsAsGrid =\n <Suspense fallback={skeletonGridViewLoader}>\n <GridViewItemList\n hoveredLocationId={hoveredLocationId}\n setHoveredLocationId={setHoveredLocationId}\n />\n </Suspense>;\n\n\n const locationsAsList =\n <Fragment>\n { windowWidth >= 768\n ? <Suspense fallback={skeletonListViewLoader}>\n <ListViewItemsList />\n </Suspense>\n : locationsAsGrid\n }\n </Fragment>;\n\n\n const pagination = showPagination &&\n <div className=\"pagination-wrapper\">\n <ReactPaginate\n activeClassName={'active'}\n breakLabel={'...'}\n containerClassName={'pagination'}\n marginPagesDisplayed={1}\n forcePage={initialPage}\n nextLabel={<SvgIco name=\"keyboard-arrow-right-rounded-ios\" size={16} />}\n previousLabel={<SvgIco name=\"keyboard-arrow-left-rounded-ios\" size={16} />}\n onPageChange={handlePageClick}\n pageCount={Math.ceil((totalLocationsCount + nearbyLocationsLimit) / perPage)}\n pageRangeDisplayed={isMobileOnly ? 1 : 2}\n hrefBuilder={(page) => generatePaginationLink(page)}\n />\n </div>;\n\n\n return (\n <div className={`list-view-container ${mapIsOpen ? 'row' : ''}`}>\n\n <div className={`list-view-main-content ${mapIsOpen ? 'with-map col-12 col-lg-8' : ''}`}>\n\n { isLoaded\n ? ( locationsByPostalDistricts.length\n ?\n ( listViewAsList && !mapIsOpen ? locationsAsList : locationsAsGrid )\n :\n <div className={`no-locations-found no-found-text container ${mapIsOpen ? 'map-open' : ''}`}>\n <div className=\"col-md-10 col-lg-8 offset-md-1 offset-lg-2 \">\n <p className=\"title\">{ I18n.t('apps.lb_showroom.seach_area.no_results_title') }</p>\n <p className=\"description\" dangerouslySetInnerHTML={{__html: I18n.t('apps.lb_showroom.seach_area.no_results_description', {\"search_agent_link\": newSearchAgentPath}) }} />\n </div>\n </div>\n )\n : ( serverErrorListView\n ?\n <p className={`no-locations-found ${mapIsOpen ? 'map-open' : ''}`}>\n { serverErrorListView === 'server'\n ? I18n.t('generic.network-error')\n : I18n.t('generic.internet-issue-error')\n }\n <a href={window.location.href}>\n { I18n.t('general.refresh-page') }\n </a>\n </p>\n : !listViewAsList && !mapIsOpen\n ? skeletonGridViewLoader\n : skeletonListViewLoader\n )\n }\n\n <div className=\"container\" style={styles.containerMargin} id=\"main-pagination\">\n { pagination }\n </div>\n\n { showBottomPagination && !mapIsOpen && showPagination &&\n <div className=\"container bottom-pagination\">\n { pagination }\n </div>\n }\n </div>\n\n { (mapIsOpen || mapLoaded) &&\n <div className={mapClass}>\n <Suspense fallback={\n <div className={`skeleton-box-wrapper`}>\n <div className={`skeleton-box`} />\n </div>\n }>\n <MapSection />\n </Suspense>\n </div>\n }\n\n </div>\n )\n};\n\n\nexport default LocationsContent;\n","import React, { Component } from 'react';\nimport Sticky from 'react-stickynode';\n\nclass StickyFilterBar extends Component {\n\n state ={\n previousScrollY: null,\n showStickyBar: false,\n };\n\n componentDidMount() {\n this.setState({previousScrollY: window.pageYOffset})\n window.addEventListener('scroll', this.handleStickyBarRender);\n };\n\n componentDidUpdate(prevProps, prevState) {\n const { open: mapIsOpen } = this.props.mapOptions;\n\n mapIsOpen !== prevProps.mapOptions.open && !mapIsOpen && this.setState({ showStickyBar: false });\n };\n\n handleStickyBarRender = () => {\n if (!this.state.mobileFiltersOn) {\n const { previousScrollY } = this.state;\n const currentScrollY = window.pageYOffset;\n\n\n // We need this additional check for Safari and Firefox\n // to prevent appearance of Sticky-bar at the end of the page caused by overscroll\n window.pageYOffset + window.innerHeight < document.body.clientHeight &&\n this.setState({\n showStickyBar: previousScrollY > currentScrollY,\n previousScrollY: currentScrollY,\n });\n }\n };\n\n\n render() {\n return (\n <Sticky\n top=\"#top-menu\"\n bottomBoundary=\".nothing\"\n innerZ={998}\n enabled={ !this.props.mapOptions.open && this.state.showStickyBar && !this.props.mobileFiltersOn }\n >\n {this.props.children}\n </Sticky>\n );\n }\n}\n\nexport default StickyFilterBar;\n","import React, { useContext, useEffect, useRef, useState, Fragment, Suspense } from 'react';\nimport \"scroll-behavior-polyfill\";\nimport PropTypes from 'prop-types';\nimport queryString from 'query-string';\nimport update from 'immutability-helper';\nimport classNames from 'classnames';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\nimport { debounce } from \"throttle-debounce\";\n\nimport { queryParseHelper } from '../../../utils/queryParseHelper';\nimport { SvgIco } from '../../SharedComponents/Icons';\nimport { getObjectIndexInArray } from '../../helpers/array';\nimport { locationsCountByKinds } from '../../helpers/coundByKindLocation';\nimport LocationSearch from '../../LocationSearch/index';\nimport AreaFilter from '../AreaFilter';\nimport StickyFilterBar from './StickyFilterBar';\nimport { Context } from \"../index\";\n\nconst DropDownContainer = React.lazy(() => import('../../SharedComponents/DropDownContainer'));\nconst DropdownSelector = React.lazy(() => import('../DropdownSelector'));\nconst EnergyRatingFilter = React.lazy(() => import('../EnergyRatingFilter'));\nconst FacilitiesFilter = React.lazy(() => import('../FacilitiesFilter'));\nconst NoLinearRangeSlider = React.lazy(() => import('../../SharedComponents/NonLinearRangeSelector'));\nconst RangeSelector = React.lazy(() => import('../../SharedComponents/RangeSelector'));\nconst SpaceCalculator = React.lazy(() => import('../../SharedComponents/SpaceCalculator'));\nconst SuitableForFilter = React.lazy(() => import('../SuitableForFilter'));\n\nimport './index.sass';\n\n\nfunction yieldToMain () {\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n}\n\n\nconst MainFilter = () => {\n\n const debounceKinds = debounce(600, (func) => {\n func();\n });\n\n const {\n areaId,\n areaType,\n filterAreas,\n filterAreaList,\n filterLocationsByPrice,\n filterLocationsBySquare,\n getInitialListLocationByDistricts,\n getEnergyRatings,\n getKinds,\n getFacilitiesList,\n getListLocationByDistrictsArea,\n getListLocationMobileFilters,\n getSuitableForKinds,\n groupedPostalDistrictsIds,\n initialPostalDistrictsIds,\n keywords,\n kindFilterToggle,\n locationKinds,\n mapOptions,\n onlyInternalLocations,\n requestParams,\n selectedEnergyRatings,\n selectedFacilities,\n selectedSuitableFor,\n setRequestParams,\n setSelectedEnergyRatings,\n setSelectedFacilities,\n setSelectedSuitableFor,\n siteKey,\n subSite,\n suitableForStructuredTypes,\n toggleMap,\n windowWidth,\n } = useContext(Context);\n\n const {\n area_max,\n area_min,\n energy_rating,\n facilities,\n kinds,\n rent_max,\n rent_min,\n suitable_for,\n } = requestParams;\n\n const {\n apiAutocompletePath,\n countryAlpha2,\n defaultKinds,\n frontendLeasePrices,\n initialPostalDistrictIds,\n maxArea,\n newSearchAgentPath,\n provinceId,\n saleMaxPrice,\n sections,\n slidersDefaultCurrencyFormatted,\n yearlyPerM2MaxPrice,\n } = keywords;\n\n const [clearFacilities, setClearFacilities] = useState(false);\n const [clearSuitableFor, setClearSuitableFor] = useState(false);\n const [filtersMobileScroll, setFiltersMobileScroll] = useState(0);\n const [filtersModalIsOpen, setFiltersModalIsOpen] = useState(false);\n const [mobileFiltersOn, setMobileFiltersOn] = useState(false);\n const [parsedData, setParsedData] = useState([]);\n const [prevSelectedFacilities, setPrevSelectedFacilities] = useState(null);\n const [prevSelectedFilters, setPrevSelectedFilters] = useState({});\n const [selectedAreaIds, setSelectedAreaIds] = useState({});\n const [selectedMeters, setSelectedMeters] = useState({ max: Number(area_max) || 999999, min: Number(area_min) || 0 });\n const [selectedPrice, setSelectedPrice] = useState({ max: Number(rent_max) || 1000, min: Number(rent_min) || 0 });\n const [selectedTypes, setSelectedTypes] = useState([]);\n const [showApplyFiltersButton, setShowApplyFiltersButton] = useState(false);\n const [showClearFiltersButton, setShowClearFiltersButton] = useState(false);\n\n const filterWrapper = useRef();\n\n\n useEffect(() => {\n // An approach to avoid long tasks\n const tasks = [\n () => getKinds(requestParams),\n () => getEnergyRatings(requestParams),\n () => filterAreas(),\n () => getSuitableForKinds(requestParams),\n () => getFacilitiesList(requestParams),\n ];\n\n (async function saveSettings () {\n while (tasks.length > 0) {\n // Shift the first task off the tasks array:\n const task = tasks.shift();\n\n // Run the task:\n task();\n\n // Yield to the main thread:\n await yieldToMain();\n }\n })();\n }, []);\n\n\n useEffect(() => {\n window.onpopstate = () => onPopStateEvent();\n window.addEventListener(\"orientationchange\", handleMobilesFiltersOn);\n\n return () => {\n window.removeEventListener(\"orientationchange\", handleMobilesFiltersOn);\n };\n }, []);\n\n\n useEffect(() => {\n (Number(rent_max) !== Number(selectedPrice.max) || Number(rent_min) !== Number(selectedPrice.min))\n && setSelectedPrice({ max: Number(rent_max), min: Number(rent_min) });\n }, [rent_max, rent_min]);\n\n\n useEffect(() => {\n (Number(area_max) !== Number(selectedMeters.max) || Number(area_min) !== Number(selectedMeters.min))\n && setSelectedMeters({ max: Number(area_max), min: Number(area_min) });\n }, [area_max, area_min]);\n\n\n useEffect(() => {\n setSelectedTypes(kinds\n ? kinds.map(elem => {\n const translatedKind = I18n.t(`global.models.location.kinds.${elem}.normal`);\n const name = translatedKind['one'] ? translatedKind['one'] : translatedKind;\n return { id: elem, name };\n })\n : []);\n }, [kinds]);\n\n\n useEffect(() => {\n // We need to save default data for mobile menu in case we shut down the menu without applying filters,\n // and to have an ability to compare states in order to show/not show Apply Filters Button\n if (mobileFiltersOn) {\n setPrevSelectedFilters({\n selectedTypes: JSON.parse(JSON.stringify(selectedTypes)),\n selectedAreaIds: JSON.parse(JSON.stringify(selectedAreaIds)),\n selectedPrice: JSON.parse(JSON.stringify(selectedPrice)),\n selectedMeters: JSON.parse(JSON.stringify(selectedMeters)),\n selectedEnergyRatings,\n });\n setPrevSelectedFacilities({ selectedSuitableFor, selectedFacilities });\n handleClearFiltersButton();\n }\n }, [mobileFiltersOn]);\n\n\n useEffect(() => {\n if (mobileFiltersOn) {\n handleClearFiltersButton();\n handleApplyFiltersButton();\n }\n }, [requestParams]);\n\n\n useEffect(() => {\n const newData = Object.values(filterAreaList);\n\n const filterEmptyPostalDistrict = newData.reduce((elem, currentValue) => {\n const filterByTotalSum = currentValue.postal_districts.filter(area => (area.total_sum > 0));\n const updated = {...currentValue, postal_districts: filterByTotalSum};\n elem.push(updated);\n return elem;\n }, []);\n\n const parsedData = filterEmptyPostalDistrict.map(elem => {\n const getTotalSum = elem.postal_districts.reduce((accum, currentValue) => {\n return accum + currentValue.total_sum\n }, 0);\n let added = { ...elem, count: getTotalSum };\n const { postal_districts: areas, ...rest } = added;\n return { areas, ...rest }\n });\n\n setParsedData(parsedData);\n\n if (!provinceId) {\n const selectedAllIds = parsedData.reduce((accum, currentValue) => {\n accum[currentValue.id] = currentValue.areas.map(elem => elem.id)\n return accum\n }, {});\n\n setSelectedAreaIds(selectedAllIds);\n } else {\n\n let newSelectedIds = {};\n\n parsedData.map(item => {\n const selectedIds = [];\n\n item.areas.map(area => initialPostalDistrictsIds.indexOf(area.id) >= 0 && selectedIds.push(area.id));\n\n if (selectedIds.length) newSelectedIds[item.id] = selectedIds;\n });\n\n setSelectedAreaIds(newSelectedIds);\n }\n }, [filterAreaList, initialPostalDistrictsIds]);\n\n\n const onPopStateEvent = () => {\n const getPath = queryString.parse(window.location.search);\n const getPathBack = history.state ? queryString.parse(history.state.query) : {};\n let newRequestParams = { ...requestParams };\n\n\n let defaultParams = {\n area_max: maxArea,\n area_min: 0,\n energy_rating: [],\n kinds: defaultKinds,\n page: 1,\n postal_districts: initialPostalDistrictIds,\n rent_max: sections.includes('lease') ? yearlyPerM2MaxPrice : saleMaxPrice,\n rent_min: 0,\n sections: sections,\n };\n\n newRequestParams.postal_districts = Object.keys(initialPostalDistrictIds).reduce((acc, province) => acc.concat(initialPostalDistrictIds[province]), []);\n delete newRequestParams.suitable_for;\n delete newRequestParams.facilities;\n defaultParams = queryParseHelper(defaultParams, getPath)\n\n if (!Object.keys(getPath).length > 0) {\n newRequestParams.postal_districts = areaType === 'Province'\n ? groupedPostalDistrictsIds[areaId]\n : areaType === \"PostalDistrict\"\n ? [areaId]\n : parsedData.reduce((acc, province) => acc.concat(province.areas.map(district => district.id)), []);\n\n delete newRequestParams.suitable_for;\n delete newRequestParams.facilities;\n }\n\n newRequestParams = queryParseHelper(newRequestParams, getPathBack, true, defaultParams);\n getInitialListLocationByDistricts(newRequestParams, getPathBack.search_id, true);\n setRequestParams({ ...newRequestParams });\n\n const selectedTypes = newRequestParams.kinds\n ? mapSelectedKinds(newRequestParams.kinds.includes('cafe') ? ['store']: newRequestParams.kinds)\n : [];\n\n setSelectedTypes(selectedTypes);\n setSelectedPrice(prevData =>({ ...prevData, max: Number(newRequestParams.rent_max), min: Number(newRequestParams.rent_min) }));\n setSelectedMeters(prevData =>({ ...prevData, max: Number(newRequestParams.area_max), min: Number(newRequestParams.area_min) }));\n setSelectedEnergyRatings([ ...newRequestParams.energy_rating ]);\n };\n\n\n const mapSelectedKinds = (selectedKinds) => {\n return selectedKinds.map(elem => {\n const translatedKind = I18n.t(`global.models.location.kinds.${elem}.normal`);\n const name = translatedKind['one'] ? translatedKind['one'] : translatedKind;\n\n return { id: elem, name };\n });\n };\n\n\n const filterLocationByPrice = (price, shouldSubmit) => {\n const currentPrice = price || selectedPrice;\n\n price && setSelectedPrice(price);\n\n if (shouldSubmit) {\n // Google Analytics\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'ga4-price-filter-change',\n eventCategory: 'price-filter-change-list-view',\n eventAction: 'price-filter-change-list-view',\n });\n\n mobileFiltersOn\n ? setRequestParams(prevParams => ({ ...prevParams, rent_min: currentPrice.min, rent_max: currentPrice.max }))\n : filterLocationsByPrice(currentPrice);\n };\n };\n\n\n const filterLocationBySquare = (square, shouldSubmit) => {\n const currentSquare = square || selectedMeters;\n\n square && setSelectedMeters(square);\n\n if (shouldSubmit) {\n mobileFiltersOn\n ? setRequestParams(prevParams => ({ ...prevParams, area_min: currentSquare.min, area_max: currentSquare.max, }))\n : filterLocationsBySquare(currentSquare);\n }\n };\n\n\n const filterLocationByArea = (updatedAreas) => {\n const newSelectedAreasIds = [];\n\n setSelectedAreaIds(updatedAreas);\n Object.keys(updatedAreas).map(elem => updatedAreas[elem].map(item => newSelectedAreasIds.push(item)));\n mobileFiltersOn\n ? setRequestParams(prevParams => ({ ...prevParams, postal_districts: newSelectedAreasIds }))\n : getListLocationByDistrictsArea(newSelectedAreasIds);\n };\n\n\n const selectType = (e, item) => {\n const index = getObjectIndexInArray(selectedTypes, 'id', item.id);\n const typeIsSelected = (index >= 0);\n const newRequestParams = { ...requestParams };\n const newSelectedTypes = typeIsSelected ? update(selectedTypes, {$splice: [[index, 1]] }) : update(selectedTypes, {$push: [item]});\n\n setSelectedTypes(newSelectedTypes);\n\n const filterKinds = () => {\n const suitableForTypesAreSelected = newSelectedTypes.some(type =>\n type.id === 'office' || type.id === 'warehouse' || type.id === 'coworking' || type.id === 'store' || type.id === 'business_center'\n );\n\n if (newSelectedTypes && newSelectedTypes.length && requestParams.suitable_for && suitableForTypesAreSelected) {\n let newSuitableForList = [];\n let sortedSuitableForByKinds = [];\n\n newSelectedTypes\n .map(type =>\n suitableForStructuredTypes[type.id] && suitableForStructuredTypes[type.id].map(suitableForKind =>\n !sortedSuitableForByKinds.includes(suitableForKind) && sortedSuitableForByKinds.push(suitableForKind))\n );\n\n newSuitableForList = requestParams.suitable_for.filter(elem => sortedSuitableForByKinds.includes(elem));\n setRequestParams(prevParams => ({ ...prevParams, suitable_for: newSuitableForList }));\n newRequestParams.suitable_for = newSuitableForList;\n setSelectedSuitableFor(newSuitableForList);\n };\n\n\n // In case last of the suitable_for type is deleted while there are others selected\n if (!suitableForTypesAreSelected && requestParams.suitable_for && requestParams.suitable_for.length && newSelectedTypes.length > 0) {\n setRequestParams(prevParams => ({ ...prevParams, suitable_for: [] }));\n delete newRequestParams.suitable_for;\n setSelectedSuitableFor([]);\n }\n\n !mobileFiltersOn && kindFilterToggle(newSelectedTypes, newRequestParams);\n setRequestParams(prevParams => ({ ...prevParams, kinds: newSelectedTypes.map(elem => elem.id) }));\n newRequestParams.kinds = newSelectedTypes.map(elem => elem.id);\n };\n\n // Debounce kinds filtering on desktop to prevent unnecessary requests and rendering in case of multiple kinds selection\n mobileFiltersOn ? filterKinds() : debounceKinds(() => filterKinds());\n };\n\n\n const toggleAreaSelect = (parentID, areaID) => {\n let selectedAreas = { ...selectedAreaIds };\n let selectedProvince = selectedAreas[parentID];\n\n selectedProvince\n ? (selectedProvince.indexOf(areaID) >= 0 ? selectedProvince.splice(selectedProvince.indexOf(areaID), 1) : selectedProvince.push(areaID))\n : selectedAreas[parentID] = [areaID];\n\n selectedAreas[parentID].length === 0 && delete selectedAreas[parentID];\n filterLocationByArea(selectedAreas);\n };\n\n\n const selectAll = (province, parsedData) => {\n let selectedAreas = { ...selectedAreaIds };\n\n parsedData.forEach(section => {\n if(section.id === province.id) {\n selectedAreas[province.id] = section.areas.map(area => area.id);\n }\n });\n\n filterLocationByArea(selectedAreas);\n };\n\n\n const deselectAll = (parentID) => {\n let selectedAreas = { ...selectedAreaIds };\n\n delete selectedAreas[parentID];\n filterLocationByArea(selectedAreas);\n };\n\n\n const handleMobilesFiltersOn = () => {\n setTimeout(() => {\n if (window.innerWidth > 992 && mobileFiltersOn) {\n toggleMobileFilters(false);\n }\n }, 1);\n };\n\n\n const handleMobilesFiltersSubmit = () => {\n setMobileFiltersOn(false);\n setShowApplyFiltersButton(false);\n document.getElementById('top-menu').classList.remove('hidden');\n enableBodyScroll(document.getElementById('filtersWrapper'));\n getListLocationMobileFilters();\n setSelectedFacilities(facilities || []);\n setSelectedSuitableFor(suitable_for || [])\n window.scroll({ top: 0, behavior: 'smooth' });\n };\n\n\n const toggleMobileFilters = (open) => {\n // we take this element before user close mobile filter because after react don't render it and it will be null\n const removeScrollListenerElement = document.getElementById('filtersWrapper');\n const filtersWrapper = document.getElementById('filtersWrapper');\n const mobileFiltersOnState = open;\n\n setMobileFiltersOn(mobileFiltersOnState);\n\n if (mobileFiltersOnState) {\n document.getElementById('top-menu').classList.add('hidden');\n disableBodyScroll(filtersWrapper);\n\n // Google Analytics\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'ga4-filters-toggle',\n eventCategory: 'filters-toggle-list-view',\n eventAction: 'filters-toggle-list-view',\n });\n } else {\n setShowApplyFiltersButton(false);\n\n const selectedAreasIds = [];\n\n prevSelectedFilters.selectedAreaIds && Object.keys(prevSelectedFilters.selectedAreaIds)\n .map(elem => prevSelectedFilters.selectedAreaIds[elem].map(item => selectedAreasIds.push(item)));\n\n const prevParams = {\n ...requestParams,\n sections: keywords.sections,\n rent_min: prevSelectedFilters.selectedPrice.min,\n rent_max: prevSelectedFilters.selectedPrice.max,\n area_min: prevSelectedFilters.selectedMeters.min,\n area_max: prevSelectedFilters.selectedMeters.max,\n postal_districts: selectedAreasIds,\n kinds: prevSelectedFilters.selectedTypes.map(type => type.id),\n suitable_for: prevSelectedFacilities.selectedSuitableFor,\n facilities: prevSelectedFacilities.selectedFacilities,\n energy_rating: prevSelectedFilters.selectedEnergyRatings,\n };\n\n setRequestParams(prevState => ({ ...prevState, ...prevParams }));\n setSelectedFacilities(facilities || []);\n setSelectedSuitableFor(suitable_for || []);\n document.getElementById('top-menu').classList.remove('hidden');\n enableBodyScroll(removeScrollListenerElement);\n }\n };\n\n\n const handleClearFilters = () => {\n const defaultParams = {\n ...requestParams,\n sections: sections,\n rent_min: 0,\n rent_max: sections.includes('lease') ? yearlyPerM2MaxPrice : saleMaxPrice,\n area_min: 0,\n area_max: maxArea,\n postal_districts: [],\n kinds: [],\n suitable_for: [],\n facilities: [],\n energy_rating: [],\n };\n\n setSelectedMeters({ min: 0, max: maxArea });\n setSelectedPrice({ min: 0, max: sections.includes('lease') ? yearlyPerM2MaxPrice : saleMaxPrice });\n setSelectedTypes([]);\n setSelectedAreaIds({});\n setRequestParams(prevParams => ({ ...prevParams, ...defaultParams }));\n setClearFacilities(prevState => !prevState);\n setClearSuitableFor(prevState => !prevState);\n };\n\n\n // For Clear Filters button, show if any filter is selected\n const handleClearFiltersButton = () => {\n const showClearFiltersButton = !!(\n selectedTypes.length\n || energy_rating.length\n || Object.keys(selectedAreaIds).length\n || selectedPrice.min > 0\n || selectedPrice.max !== (sections.includes('lease') ? yearlyPerM2MaxPrice : saleMaxPrice)\n || selectedMeters.min > 0\n || selectedMeters.max !== maxArea\n || (suitable_for && suitable_for.length)\n || (facilities && facilities.length));\n\n setShowClearFiltersButton(showClearFiltersButton);\n };\n\n\n // For apply filters button, show if there is any difference between before-opening chosen filters and current\n const handleApplyFiltersButton = () => {\n const selectedAreas = [];\n const prevSelectedAreas = [];\n const suitableFor = suitable_for || [];\n const currentFacilities = facilities || [];\n const selectedEnergyRatings = energy_rating;\n\n Object.keys(selectedAreaIds).map(elem => selectedAreaIds[elem].map(item => selectedAreas.push(item)));\n prevSelectedFilters.selectedAreaIds && Object.keys(prevSelectedFilters.selectedAreaIds).map(elem => prevSelectedFilters.selectedAreaIds[elem].map(item => prevSelectedAreas.push(item)));\n\n const showApplyFiltersButton = !(\n selectedTypes.length === prevSelectedFilters.selectedTypes.length\n && selectedTypes.every(type => prevSelectedFilters.selectedTypes.find(prevType => prevType.id === type.id))\n && selectedAreas.length === prevSelectedAreas.length\n && selectedAreas.every(area => prevSelectedAreas.indexOf(area) >= 0)\n && selectedPrice.min === prevSelectedFilters.selectedPrice.min\n && selectedPrice.max === prevSelectedFilters.selectedPrice.max\n && selectedMeters.min === prevSelectedFilters.selectedMeters.min\n && selectedMeters.max === prevSelectedFilters.selectedMeters.max\n && suitableFor.length === prevSelectedFacilities.selectedSuitableFor.length\n && suitableFor.every(suitableFor => prevSelectedFacilities.selectedSuitableFor.indexOf(suitableFor) >= 0)\n && currentFacilities.length === prevSelectedFacilities.selectedFacilities.length\n && currentFacilities.every(facility => prevSelectedFacilities.selectedFacilities.indexOf(facility) >= 0)\n && selectedEnergyRatings.length === prevSelectedFilters.selectedEnergyRatings.length\n && selectedEnergyRatings.every(rating => prevSelectedFilters.selectedEnergyRatings.indexOf(rating) >= 0)\n );\n\n setShowApplyFiltersButton(showApplyFiltersButton);\n };\n\n\n const openFiltersModal = () => {\n setFiltersModalIsOpen(true);\n window.addEventListener('click', handleClickOutside);\n document.body.classList.toggle('modal-open');\n\n // Google Analytics\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: 'ga4-filters-toggle',\n eventCategory: 'filters-toggle-list-view',\n eventAction: 'filters-toggle-list-view',\n });\n };\n\n\n const closeFiltersModal = () => {\n setFiltersModalIsOpen(false);\n window.removeEventListener('click', handleClickOutside);\n document.body.classList.toggle('modal-open');\n };\n\n\n const handleClickOutside = (e) => {\n if (filterWrapper && filterWrapper.current) {\n const target = e.target;\n const isModal = filterWrapper.current.contains(target);\n const filterToggle = document.getElementById('filterToggle');\n const isFilterButton = filterToggle === target || filterToggle.contains(target);\n\n !isModal && !isFilterButton && closeFiltersModal();\n }\n };\n\n\n const setSearchAgentUrl = () => {\n const getPath = queryString.parse(window.location.search);\n const { area_max, area_min, rent_max, rent_min, search_id } = getPath;\n const currentKinds = mobileFiltersOn ? (prevSelectedFilters && prevSelectedFilters.selectedTypes && prevSelectedFilters.selectedTypes) || null : selectedTypes;\n\n const searchAgentDefaultParams = {\n area_max,\n area_min,\n rent_max,\n rent_min,\n ['kinds[]']: (currentKinds && Object.keys(currentKinds).length && currentKinds.map(type => type.id)) || null ,\n };\n\n search_id && (searchAgentDefaultParams.search_id = search_id);\n subSite === 'sales' && sections.length < 3 && (searchAgentDefaultParams['sections[]'] = sections);\n\n const searchAgentParams = Object.fromEntries(Object.entries(searchAgentDefaultParams).filter(([key, value]) => !!value));\n const searchAgentQueryString = new URLSearchParams(searchAgentParams).toString();\n\n return searchAgentQueryString ? `${subSite === 'sales' ? '&' : '?'}${searchAgentQueryString}` : '';\n };\n\n\n const handleMobileScroll = () => {\n const modalFiltersWrapper = document.getElementById('mobile-filters-scroll-target');\n const rect = modalFiltersWrapper && modalFiltersWrapper.getBoundingClientRect();\n const wrapperTop = rect && rect.top;\n\n rect && setFiltersMobileScroll(wrapperTop);\n };\n\n\n // const disableMap = onlyInternalLocations && (siteKey === 'dk' || countryAlpha2 === 'dk');\n const mapIsOpen = mapOptions.open;\n const maxPrice = sections[0] === 'lease' ? yearlyPerM2MaxPrice : saleMaxPrice;\n const mainFilterClasses = classNames('main-filter', { 'main-filter--top': mapIsOpen });\n const filtersWrapperClasses = classNames('lv-filter__filters-wrapper', { 'mobile-active': mobileFiltersOn }, { 'with-button': showApplyFiltersButton });\n const isUsa = countryAlpha2 === 'us';\n const areaFilterIcon = isUsa ? 'area_ft2' : 'area_m2';\n const areaUnit = isUsa ? 'ft²' : 'm²';\n const areaFilterTitle = isUsa ? I18n.t('apps.list_view.filter.area.title.ft2') : I18n.t('apps.list_view.filter.area.title.m2');\n const areaFilterText = isUsa ? I18n.t('apps.list_view.filter.area.text.ft2') : I18n.t('apps.list_view.filter.area.text.m2');\n const isMobileMenu = windowWidth < 992;\n const selectedPriceTooltip = frontendLeasePrices && (selectedPrice.min > 0 || selectedPrice.max !== maxPrice) && `${selectedPrice.min} - ${selectedPrice.max} ${slidersDefaultCurrencyFormatted}`;\n const selectedSizeTooltip = (selectedMeters.min > 0 || selectedMeters.max !== maxArea)\n && `${selectedMeters.min} - ${selectedMeters.max} m², ${Math.round(selectedMeters.min / 15)} - ${Math.round(selectedMeters.max / 15)} ${I18n.t('search_agent.configuration.employees.selector_currency')}`;\n\n let duplicateParsedData = JSON.parse(JSON.stringify(parsedData));\n let selectedKinds = requestParams.kinds;\n const hideSquareFilter = selectedKinds && selectedKinds.length === 1 && selectedKinds[0] === 'parking';\n const showOfficeSpaceCalculator = siteKey === 'dk' && (selectedKinds.length === 0 || selectedKinds.includes('office'));\n\n selectedKinds === undefined || selectedKinds.length === 0\n ? parsedData.map(elem => elem.count = elem.areas.reduce((accum, currentValue) => accum+currentValue.total_sum, 0))\n : duplicateParsedData.map(elem => {\n elem.areas.map(elem => elem.total_sum = locationsCountByKinds(selectedKinds, elem.sums));\n elem.count = elem.areas.reduce((accum, currentValue) => accum + currentValue.total_sum, 0);\n return elem;\n });\n\n\n return (\n <div className={mainFilterClasses} id=\"main-filter\">\n <StickyFilterBar mapOptions={mapOptions} mobileFiltersOn={mobileFiltersOn}>\n <div className={`lv-filter__container ${mapIsOpen ? 'map' : ''}`}>\n <div className=\"container max-width\">\n <div className=\"row lv-filter__row\">\n <div className=\"col-sm-12\">\n <div className=\"lv-filter-wrapper\">\n\n <div className=\"lv-filter lv-filter__location-search\">\n <LocationSearch\n apiAutocompletePath={apiAutocompletePath}\n placeholder={I18n.t('entry_pages.main_search.input_placeholder')}\n selectedTypes={selectedTypes}\n showFixedSearchIcon={true}\n siteKey={siteKey}\n />\n </div>\n\n <div className=\"lv-filter__right-part\">\n <div className=\"lv-filter lv-filter__area desktop\">\n <AreaFilter\n deselectAll={deselectAll}\n dynamicData={duplicateParsedData}\n isMobileMenu={false}\n placeholder={I18n.t('apps.lb_showroom.filters.choose_areas')}\n selectedData={selectedAreaIds}\n selectAction={toggleAreaSelect}\n selectAll={(e) => selectAll(e, duplicateParsedData)}\n />\n </div>\n\n <div className=\"lv-filter__filters-toggle-wrapper\">\n <div className={`lv-filter__filters-toggle`} id=\"filterToggle\" onClick={isMobileMenu ? () => toggleMobileFilters(true) : openFiltersModal}>\n <div className=\"lv-filter__mobile-toggle-left\">\n <SvgIco name=\"tune\" size={20} />\n <p>{ I18n.t('properties.filter.tab_toggle_button') }</p>\n </div>\n </div>\n\n { showOfficeSpaceCalculator &&\n <Suspense fallback={''}>\n <SpaceCalculator />\n </Suspense>\n }\n </div>\n\n { ((onlyInternalLocations && mapIsOpen) || !onlyInternalLocations) &&\n <div className=\"sort-bar__mobile-map-button\" onClick={toggleMap}>\n { mapIsOpen\n ? <SvgIco name=\"format-list-bulleted\" size={24} />\n : <SvgIco name=\"map_detail\" size={24} />\n }\n <p className=\"map-text\">{ mapIsOpen ? 'List' : I18n.t(\"lb_showroom.showroom.list.map\") }</p>\n </div>\n }\n\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </StickyFilterBar>\n\n { (filtersModalIsOpen || mobileFiltersOn) &&\n\n <div className=\"lv-filter__modal\" onScroll={handleMobileScroll} id=\"mobile-filters-body\">\n <div className=\"lv-filter__modal-container\">\n <div className=\"lv-filter__modal-header\">\n <SvgIco\n name={isMobileMenu ? 'arrow-back' : 'close'}\n onClick={isMobileMenu ? () => toggleMobileFilters(false) : () => closeFiltersModal}\n size={isMobileMenu ? 24 : 32}\n />\n <div className=\"lv-filter__modal-headline\">{ I18n.t('properties.filter.tab_toggle_button') }</div>\n { showClearFiltersButton &&\n <div className=\"lv-filter__clear-filters-link\" onClick={handleClearFilters}>\n { I18n.t('apps.lb_showroom.filters.clear_filters') }\n </div>\n }\n </div>\n\n <div className={filtersWrapperClasses} id=\"filtersWrapper\" ref={filterWrapper}>\n\n <Suspense fallback={\n <div className=\"spinner-wrapper\">\n <div className=\"smoothie-spinner\" />\n </div>\n }>\n\n <div className=\"lv-filter lv-filter__type\">\n <DropdownSelector\n dynamicData={locationKinds}\n isMobileMenu={isMobileMenu}\n placeholder={I18n.t('apps.lb_showroom.showroom.list.property_kind')}\n selectedCounterPhrase={I18n.t('apps.lb_showroom.showroom.list.property_kind')}\n selectedData={selectedTypes}\n selectAction={selectType}\n />\n </div>\n\n <SuitableForFilter\n clearSuitableFor={clearSuitableFor}\n isMobileMenu={isMobileMenu}\n toggleClearSuitableForFilter={() => setClearSuitableFor(prevState => !prevState)}\n />\n\n <div className=\"lv-filter lv-filter__area mobile\">\n <AreaFilter\n deselectAll={deselectAll}\n dynamicData={duplicateParsedData}\n isMobileMenu={isMobileMenu}\n placeholder={I18n.t('apps.lb_showroom.filters.choose_areas')}\n scrollToggle={filtersMobileScroll}\n selectedData={selectedAreaIds}\n selectAction={toggleAreaSelect}\n selectAll={(e) => selectAll(e, duplicateParsedData)}\n />\n </div>\n\n { frontendLeasePrices\n ? <div className=\"lv-filter lv-filter__price\">\n <DropDownContainer\n isMobileMenu={isMobileMenu}\n name=\"price\"\n selectedTooltip={selectedPriceTooltip}\n text={I18n.t('lb_showroom.showroom.list.price')}>\n <RangeSelector\n dimension={slidersDefaultCurrencyFormatted}\n filterType='PRICE'\n handleSelectorChange={filterLocationByPrice}\n maxValue={maxPrice}\n minValue={0}\n showInputLabels={!isMobileMenu}\n showMaxMoreIcon={true}\n submitOnChangeComplete={true}\n value={selectedPrice}\n />\n </DropDownContainer>\n </div>\n : null\n }\n\n { !hideSquareFilter &&\n <div className=\"lv-filter lv-filter__meters\">\n\n <DropDownContainer\n isMobileMenu={isMobileMenu}\n name={areaFilterIcon}\n selectedTooltip={selectedSizeTooltip}\n text={I18n.t('lb_showroom.showroom.list.size')}>\n <div className=\"lv-filter__meters-section lv-filter__meters-section--meters\">\n <p>{areaFilterTitle}</p>\n <NoLinearRangeSlider\n dimension={areaUnit}\n filterType='SQUARE'\n handleSelectorChange={filterLocationBySquare}\n maxValue={maxArea}\n minValue={0}\n showMaxMoreIcon={true}\n submitOnChangeComplete={true}\n value={selectedMeters}\n />\n </div>\n\n <div className=\"lv-filter__meters-section\">\n <p>{ I18n.t('activemodel.attributes.service_request.employee_count') }</p>\n <div className=\"input-range__hint\">{areaFilterText}</div>\n\n <NoLinearRangeSlider\n dimension={I18n.t('search_agent.configuration.employees.selector_currency')}\n employeeCalculation={true}\n filterType='SQUARE'\n handleSelectorChange={filterLocationBySquare}\n maxValue={maxArea}\n minValue={0}\n showMaxMoreIcon={true}\n submitOnChangeComplete={true}\n value={selectedMeters}\n />\n </div>\n </DropDownContainer>\n </div>\n }\n\n <div className=\"lv-filter__mobile-filters-bottom\">\n\n <EnergyRatingFilter isMobileMenu={isMobileMenu} />\n\n <FacilitiesFilter\n clearFacilities={clearFacilities}\n isMobileMenu={isMobileMenu}\n toggleClearFacilitiesFilter={() => setClearFacilities(prevState => !prevState)}\n />\n\n\n { mobileFiltersOn &&\n <Fragment>\n <div className=\"lv-filter__search-agent-link-wrapper\" id=\"mobile-filters-scroll-target\">\n <a href={ newSearchAgentPath + setSearchAgentUrl() } className=\"lv-filter__search-agent-link\">\n <span>{ I18n.t('lb_showroom.showroom.list.search_agent_menu_link') }</span>\n <SvgIco name=\"keyboard-arrow-right-rounded-ios\" size={16} />\n </a>\n </div>\n\n { showApplyFiltersButton &&\n <div className=\"lv-filter__button-wrapper\">\n <div className=\"lv-filter__search-button\" id=\"applyFiltersButtonMobile\" onClick={handleMobilesFiltersSubmit}>\n <SvgIco name=\"sync\" size={20} />\n <span>{ I18n.t('lb_showroom.showroom.list.apply_filters') }</span>\n </div>\n </div>\n }\n </Fragment>\n }\n </div>\n\n </Suspense>\n </div>\n </div>\n </div>\n }\n </div>\n );\n};\n\nMainFilter.propTypes = {\n requestedParams: PropTypes.oneOfType([PropTypes.object]),\n};\n\nMainFilter.defaultProps = {\n requestParams: {}\n};\n\nexport default React.memo(MainFilter);\n","import React, { Suspense, useContext, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport Select from \"react-select\";\nimport Switch from \"react-switch\";\nimport { isMobileOnly } from 'react-device-detect';\nimport 'react-dropdown/style.css';\n\nimport { SvgIco } from '../../SharedComponents/Icons';\nimport { Context } from \"../index\";\n\nimport './index.sass';\n\n\nconst SortBar = () => {\n\n const {\n changePerPage,\n keywords,\n listViewAsList,\n mapOptions,\n onlyInternalLocations,\n requestParams,\n section,\n setListViewAsList,\n // siteKey,\n sortLocationsBy,\n tawkIsLoaded,\n toggleMap,\n } = useContext(Context);\n\n const { kinds: selectedKinds, per_page: perPage, sort_by: sortBy } = requestParams;\n const { countryAlpha2, frontendLeasePrices, } = keywords;\n\n // const disableMap = onlyInternalLocations && (siteKey === 'dk' || countryAlpha2 === 'dk');\n const listViewSwitcherClasses = classNames(\"sort-bar__layout-switcher-pill\", { \"active\": listViewAsList });\n const gridViewSwitcherClasses = classNames(\"sort-bar__layout-switcher-pill\", { \"active\": !listViewAsList });\n const mapIsOpen = mapOptions.open;\n\n const quantityOptions = [\n {value: \"12\", label:`12 ${ I18n.t('lb_showroom.showroom.list.per_page') }`},\n {value: \"30\", label:`30 ${ I18n.t('lb_showroom.showroom.list.per_page') }`},\n {value: \"60\", label:`60 ${ I18n.t('lb_showroom.showroom.list.per_page') }`},\n {value: \"90\", label:`90 ${ I18n.t('lb_showroom.showroom.list.per_page') }`},\n ];\n\n const sortTypeOptions = [\n {value: 'created_at|desc', label: I18n.t('generic.date')},\n {value: 'area_from|asc', label: `${I18n.t('generic.area')}, ${I18n.t('generic.low_to_high')}`},\n {value: 'area_from|desc', label: `${I18n.t('generic.area')}, ${I18n.t('generic.high_to_low')}`},\n {value: 'address_line_1|asc', label: `${I18n.t('generic.address')} ${I18n.t('generic.alphabet_order')}`},\n {value: 'address_line_1|desc', label: `${I18n.t('generic.address')} ${I18n.t('generic.alphabet_order_reverse')}`},\n {value: 'virtual_tour|desc', label:I18n.t('locations.scores.virtual_tour')},\n {value: 'energy_rating|asc', label: `${I18n.t('activerecord.attributes.property.energy_rating')}, A -> G`},\n {value: 'energy_rating|desc', label: `${I18n.t('activerecord.attributes.property.energy_rating')}, G -> A`},\n {value: 'score|desc', label:I18n.t('locations.sort_by.score'), className: !selectedSortType ? ' is-selected' : '' },\n ];\n\n const sortingPriceFieldName = section === 'lease' ? 'yearly_rent_per_m2_amount_from' : 'sale_price';\n\n frontendLeasePrices && sortTypeOptions.splice(3, 0,\n {value: sortingPriceFieldName + '|asc', label: `${I18n.t('generic.price')}, ${I18n.t('generic.low_to_high')}`},\n {value: sortingPriceFieldName + '|desc', label: `${I18n.t('generic.price')}, ${I18n.t('generic.high_to_low')}`},\n );\n\n const [selectedSortType, setSelectedSortType] = useState(sortBy ? sortTypeOptions.filter(option => sortBy === option.value)[0] : sortTypeOptions[0]);\n const [selectedPerPage, setSelectedPerPage] = useState(perPage ? quantityOptions.filter(option => option.value === perPage)[0] : quantityOptions[0]);\n\n\n useEffect(() => {\n // need to rewrite and remove react-select\n const perPageLabel = document.createElement(\"P\");\n const perPageLabelContent = document.createTextNode(`${I18n.t('views.locations.show.per_page_label')}:`);\n const sortByLabel = document.createElement(\"P\");\n const sortByLabelContent = document.createTextNode(`${I18n.t('lb_showroom.showroom.list.sort_by')}:`);\n\n perPageLabel.appendChild(perPageLabelContent);\n document.querySelector('.per-page__control').insertBefore(perPageLabel, document.querySelector('.per-page__control').childNodes[0]);\n\n sortByLabel.appendChild(sortByLabelContent);\n document.querySelector('.sort-by__control').insertBefore(sortByLabel, document.querySelector('.sort-by__control').childNodes[0]);\n }, []);\n\n\n useEffect(() => {\n sortBy !== selectedSortType.value && setSelectedSortType(sortBy ? sortTypeOptions.filter(option => sortBy === option.value)[0] : sortTypeOptions[0]);\n }, [sortBy]);\n\n useEffect(() => {\n perPage !== selectedSortType.value && setSelectedPerPage(perPage ? quantityOptions.filter(option => option.value === perPage)[0] : quantityOptions[0]);\n }, [perPage]);\n\n\n useEffect(() => {\n // remove-tawk-chat-when-open-map\n if (tawkIsLoaded) {\n // In case there's going to be a problem with API or internet\n // to avoid main thread overwork\n let counter = 200;\n\n (function toggleTawk() {\n try {\n if (Tawk_API.onLoaded) {\n mapIsOpen ? Tawk_API.hideWidget() : Tawk_API.showWidget();\n } else {\n if (counter !== 0) {\n counter = --counter;\n setTimeout(toggleTawk, 100);\n }\n }\n } catch (error) {\n if (counter !== 0) {\n counter = --counter;\n setTimeout(toggleTawk, 100);\n }\n }\n })();\n }\n }, [tawkIsLoaded]);\n\n\n const handleListView = () => {\n setListViewAsList(true);\n localStorage && localStorage.setItem('viewedAsList', 'true');\n };\n\n\n const handleGridView = () => {\n setListViewAsList(false);\n localStorage && localStorage.setItem('viewedAsList', 'false');\n };\n\n\n const changeSortType = (e) => {\n setSelectedSortType(sortTypeOptions.filter(option => e.value === option.value)[0]);\n sortLocationsBy(e.value);\n };\n\n\n const handleChangePerPage = (e) => {\n setSelectedPerPage(quantityOptions.filter(option => option.value === e.value)[0]);\n changePerPage(e.value);\n };\n\n\n const selectedSortTypeOption = () => {\n // To prevent page fall in case sort decrease change in url string\n const strictSelectedOption = sortTypeOptions.filter(option => selectedSortType === option.value);\n const selectedSortTypeValue = selectedSortType && selectedSortType.value;\n\n if (strictSelectedOption.length) {\n return strictSelectedOption[0];\n } else {\n const optionalSelect = sortTypeOptions.filter(option => option.value.includes(selectedSortTypeValue.slice(0, selectedSortTypeValue.indexOf('|'))));\n return optionalSelect.length ? optionalSelect[0] : null;\n }\n };\n\n\n const defaultSortType = (selectedSortType && selectedSortTypeOption()) || sortTypeOptions[sortTypeOptions.length - 1];\n const defaultQuantity = perPage ? quantityOptions.filter(option => option.value === perPage)[0] : quantityOptions[0];\n\n\n return (\n <div className=\"sort-bar sort-bar-container\">\n <div className=\"container max-width\">\n <div className=\"sort-bar__main-wrapper\">\n { !isMobileOnly && !mapIsOpen &&\n <div className=\"sort-bar__left-part\">\n <div className=\"sort-bar__layout-switcher\">\n <div className={gridViewSwitcherClasses} onClick={handleGridView}>\n <SvgIco name=\"window\" size={20} />\n </div>\n <div className={listViewSwitcherClasses} onClick={handleListView}>\n <SvgIco name=\"format-list-bulleted\" size={20} />\n </div>\n </div>\n </div>\n }\n\n <div className=\"sort-bar__right-part\">\n\n <div className=\"sort-bar__dropdown-wrapper\">\n <div className=\"sort-bar__sorting-wrapper\">\n <div className=\"sort-bar__sort-type-wrapper\">\n <SvgIco name=\"swap\" size={24} className=\"sort-bar__sort-type-icon\" />\n <Select\n className=\"sort-by\"\n classNamePrefix=\"sort-by\"\n defaultValue={defaultSortType}\n isSearchable={false}\n onChange={changeSortType}\n options={sortTypeOptions}\n value={selectedSortType}\n />\n </div>\n\n <div className=\"sort-bar__sorting-wrapper-divider\" />\n\n <div className=\"sort-bar__per-page-wrapper sorted-quantity\">\n <Select\n className=\"per-page\"\n classNamePrefix=\"per-page\"\n defaultValue={defaultQuantity}\n isSearchable={false}\n onChange={handleChangePerPage}\n options={quantityOptions}\n value={selectedPerPage}\n />\n </div>\n </div>\n </div>\n\n { ((onlyInternalLocations && mapIsOpen) || !onlyInternalLocations) &&\n <div className={`sort-bar__map-toggle ${mapIsOpen ? 'on' : ''}`}>\n <label>\n <Switch\n checked={mapIsOpen}\n checkedIcon={false}\n className=\"sort-bar__map-toggle-switch\"\n handleDiameter={6}\n height={12}\n offHandleColor=\"#FFFFFF\"\n onChange={() => toggleMap(false)}\n onColor=\"#FFFFFF\"\n offColor=\"#626262\"\n onHandleColor=\"#8ACB36\"\n width={22}\n uncheckedIcon={false}\n />\n\n <div className=\"sort-bar__map-toggle-label\">\n { I18n.t('tooltips.showroom.view_on_map') }\n </div>\n </label>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n );\n};\n\n\nexport default SortBar;\n","export const advertBannersData = {\n searchAgent: {\n advertisement: true,\n search_agent: true,\n image_text: I18n.t('list-view.advertisement.create-text'),\n image_text_bottom: I18n.t('list-view.advertisement.search_agent'),\n title: I18n.t('list-view.advertisement.search_agent-main-title'),\n description: I18n.t('list-view.advertisement.search_agent-description'),\n text_above_button: I18n.t('list-view.advertisement.search_agent_above_button'),\n text_on_button: I18n.t('search_agents.edit.create_search_agent'),\n id: 2147483646,\n },\n signUp: {\n advertisement: true,\n search_agent: false,\n image_text: I18n.t('list-view.advertisement.list_your_office'),\n image_text_bottom: I18n.t('list-view.advertisement.match_office'),\n title: I18n.t('list-view.advertisement.provider-main-title'),\n description: I18n.t('list-view.advertisement.provider-description'),\n text_above_button: I18n.t('list-view.advertisement.provider_above_button'),\n text_on_button: I18n.t('apps.entry_page.entry_pages.become_provider_text.become_provider_now'),\n id: 2147483647,\n },\n}\n","import React, { createContext, useEffect, useState, Suspense } from 'react';\nimport queryString from 'query-string';\nimport smoothscroll from 'smoothscroll-polyfill';\nimport PropTypes from \"prop-types\";\n\nimport { queryParseHelper } from '../../utils/queryParseHelper';\nimport httpService, { requestBuilder } from \"../../api/httpService\";\nimport { apiProvider } from \"../../api/core\";\nimport { queryBuilder } from \"../../utils/urlQueryBuilder\";\nimport { checkOrderedLocation } from \"../helpers/checkOrderedLocation\";\nimport { loadTawkTo } from \"../TawkTo/TawkTo\";\nimport SearchAgentBanner from \"../SharedComponents/SearchAgentBanner\";\nimport { ToTheTopBtn } from \"../SharedComponents/Buttons\";\nimport FAQSection from \"../SharedComponents/FAQSection\";\nimport Breadcrumb from \"../Breadcrumb\";\nimport BottomSeo from \"./BottomSeo\";\nimport HeaderSection from \"./HeaderSection\";\nimport MainFilter from \"./MainFilter\";\nimport SortBar from \"./SortBar\";\nimport LocationsContent from \"./LocationsContent\";\nimport { advertBannersData } from './data';\n\nimport '../SharedComponents/TrustLogos.sass';\nimport './index.sass';\n\n\nconst PopularAreas = React.lazy(() => import('../SharedComponents/PopularAreas'));\nconst ViewedLocations = React.lazy(() => import('./ViewedLocations'));\n\n\nexport const Context = createContext({});\n\n\n/* <----------------------- WHY-DID-YOU-RENDER - REACT DEBUGGER\n(uncomment & copy => \"static whyDidYouRender = true;\" to the child component after state to see logs in console) */\n\n/* if (process.env.NODE_ENV !== 'production') {\n const whyDidYouRender = require('@welldone-software/why-did-you-render');\n whyDidYouRender(React, {\n // include: [/^pure/, /^Connect/, /^ConnectFunction/],\n // onlyLogs: true,\n titleColor: \"green\",\n diffNameColor: \"aqua\",\n logOnDifferentValues: true\n });\n} */\n\n// ------------------------------------------------>\n\nlet controller = null;\nlet signal = null;\n\n\nconst ListView = (props) => {\n\n const {\n breadcrumbs,\n headerContent,\n isRequestFromPrerender,\n keywords,\n popularDistricts,\n providersPage,\n richSnippetQuestions,\n siteKey,\n streetId\n } = props;\n\n const {\n countryAlpha2,\n defaultKinds,\n geoName,\n initialFacilities,\n initialPostalDistrictIds,\n initialSuitableForKinds,\n locationsFacilitiesPath,\n locationServiceUrl,\n locationsSuitableForKindsPath,\n locationsKindsUrl,\n locationsMapMarkersUrl,\n maxArea,\n newSearchAgentPath,\n postalDistrictServiceUrl,\n providerInfo,\n locationInfo,\n saleMaxPrice,\n sections,\n yearlyPerM2MaxPrice,\n } = keywords;\n\n const [comparableLocations, setComparableLocations] = useState({});\n const [headerData, setHeaderData] = useState({ ...headerContent, headline: geoName });\n const [energyRatings, setEnergyRatings] = useState([]);\n const [facilitiesList, setFacilitiesList] = useState([]);\n const [favouriteLocationsIds, setFavouriteLocationsIds] = useState([]);\n const [filterAreaList, setFilterAreaList] = useState([]);\n const [hoveredLocationId, setHoveredLocationId] = useState(null);\n const [initialKinds, setInitialKinds] = useState([]);\n const [initialPostalDistrictsIds, setInitialPostalDistrictsIds] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [listViewAsList, setListViewAsList] = useState(window.innerWidth >= 768);\n const [locationKinds, setLocationKinds] = useState([]);\n const [locationsByPostalDistricts, setLocationsByPostalDistricts] = useState([]);\n const [mapOptions, setMapOptions] = useState({ open: false, root: '', loaded: false });\n const [markersArray, setMarkersArray] = useState([]);\n const [nearbyLocationsLimit, setNearbyLocationsLimit] = useState(0);\n const [nearestSearchId, setNearestSearchId] = useState(null);\n const [onlyInternalLocations, setOnlyInternalLocations] = useState(true);\n const [orderedLocations, setOrderedLocations] = useState([]);\n const [preventRequestOnDragEnd, setPreventRequestOnDragEnd] = useState(true);\n const [selectedEnergyRatings, setSelectedEnergyRatings] = useState([]);\n const [selectedFacilities, setSelectedFacilities] = useState([]);\n const [selectedSuitableFor, setSelectedSuitableFor] = useState([]);\n const [serverErrorListView, setServerErrorListView] = useState('');\n const [showSeo, setShowSeo] = useState(true);\n // const [showSearchButton, setShowSearchButton] = useState(true);\n const [suitableForList, setSuitableForList] = useState([]);\n const [tawkIsLoaded, setTawkIsLoaded] = useState(false);\n const [totalLocationsCount, setTotalLocationsCount] = useState('');\n const [viewedLocations, setViewedLocations] = useState([]);\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n const [requestParams, setRequestParams] = useState({\n initial_postal_district_id: headerContent.initialPostalDistrictId,\n initial_province_id: headerContent.initialProvinceId,\n sections,\n rent_min: 0,\n rent_max: sections.includes('lease') ? yearlyPerM2MaxPrice : saleMaxPrice,\n area_min: 0,\n area_max: maxArea,\n postal_districts: Object.keys(initialPostalDistrictIds).reduce((acc, province) => acc.concat(initialPostalDistrictIds[province]), []),\n page: 1,\n area_max_default: maxArea,\n rent_max_default: sections.includes('lease') ? yearlyPerM2MaxPrice : saleMaxPrice,\n kinds: defaultKinds || [],\n country_alpha2: countryAlpha2,\n uri_kind: defaultKinds[0] || '',\n energy_rating: [],\n });\n\n const suitableForStructuredTypes = {\n office: [ 'cafe', 'clinic', 'education', 'high_ceiling_storage', 'popup_store', 'production', 'showroom', 'storage_hotel', 'workshop' ],\n warehouse: [ 'clinic', 'education', 'high_ceiling_storage', 'popup_store', 'production', 'showroom', 'storage_hotel', 'workshop' ],\n coworking: [ 'clinic', 'education', 'production', 'showroom', 'storage_hotel', 'workshop' ],\n store: [ 'cafe', 'clinic', 'education', 'hair_salon', 'popup_store', 'showroom' ],\n business_center: [ 'clinic', 'education', 'popup_store', 'showroom' ],\n };\n\n const section = sections.includes('lease') ? 'lease' : 'sale';\n const mapIsOpen = mapOptions.open;\n\n\n useEffect(() => {\n const getPath = queryString.parse(window.location.search);\n const searchId = queryString.parse(window.location.search).search_id;\n let newRequestParams = { ...requestParams };\n\n streetId && (newRequestParams.street_id = streetId);\n providerInfo && (newRequestParams.provider_id = providerInfo.providerId);\n locationInfo && (newRequestParams.location_id = locationInfo.locationId);\n initialFacilities && initialFacilities.length && (newRequestParams.facilities = initialFacilities);\n initialSuitableForKinds && initialSuitableForKinds.length && (newRequestParams.suitable_for = initialSuitableForKinds);\n Object.keys(getPath).length > 0 && (newRequestParams = queryParseHelper(newRequestParams, getPath));\n\n setRequestParams(newRequestParams);\n setInitialKinds(requestParams.kinds);\n getInitialListLocationByDistricts(newRequestParams, searchId);\n }, []);\n\n\n useEffect(() => {\n smoothscroll.polyfill();\n window.innerWidth >= 992 && getViewedLocations();\n loadTawkTo(siteKey, setTawkIsLoaded(true));\n }, []);\n\n\n useEffect(() => {\n window.addEventListener('resize', calculateWindowWidth);\n }, []);\n\n\n useEffect(() => {\n if (localStorage) {\n const retrievedFavouriteLocations = localStorage.getItem(`my.favourite_${section}_${siteKey}`);\n const retrievedComparableLocations = localStorage.getItem(`my.comparable_${section}_${siteKey}`);\n const favouriteLocationsIds = JSON.parse(retrievedFavouriteLocations) || [];\n const comparableLocations = JSON.parse(retrievedComparableLocations) || {};\n\n localStorage.setItem('locale', props.locale);\n localStorage.getItem('viewedAsList') && localStorage.getItem('viewedAsList') === 'false' && setListViewAsList(false);\n localStorage.getItem('my.ordered_locations') ? setOrderedLocations(checkOrderedLocation) : localStorage.setItem('my.ordered_locations', JSON.stringify({}));\n setFavouriteLocationsIds(favouriteLocationsIds);\n setComparableLocations(comparableLocations);\n\n if (window.innerWidth <= 767) {\n setListViewAsList(false);\n localStorage.setItem('viewedAsList', 'false')\n }\n }\n\n if (sessionStorage.getItem('location_items.scroll_value')) {\n scrollTo({ top: sessionStorage.getItem('location_items.scroll_value'), left: document.body, behavior: \"smooth\" });\n sessionStorage.removeItem('location_items.scroll_value');\n }\n }, []);\n\n\n const calculateWindowWidth = () => setWindowWidth(window.innerWidth);\n\n\n const getViewedLocations = () => {\n const retrievedViewed = localStorage && localStorage.getItem(`my.viewed_${section}_${siteKey}`);\n const viewedLocationsIds = JSON.parse(retrievedViewed) || [];\n\n viewedLocationsIds.length && httpService\n .getLocationsByIds(viewedLocationsIds, viewedLocationsIds)\n .then((response) => {\n if (response) {\n response.length !== viewedLocationsIds.length\n && localStorage\n && localStorage.setItem(`my.viewed_${section}_${siteKey}`, JSON.stringify(response.map(location => `${location.id}`)));\n\n setViewedLocations(response);\n }\n }).catch(error => console.log('Error: ', error));\n };\n\n\n const getInitialListLocationByDistricts = (requestParams, searchId, onPopState) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n searchId && (newRequestParams.search_id = searchId);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams), true)\n .then(response => {\n if (response.error) {\n setServerErrorListView(response.status >= 500 ? 'server' : 'network');\n } else {\n\n const newPostalDistricts = response.postal_district_ids || requestParams.postal_districts;\n\n const callbackFunction = (response) => {\n response && response.locations && setLocationsByPostalDistricts(response.locations);\n setTotalLocationsCount(response.total);\n setIsLoaded(true);\n setShowSeo(response.show_seo);\n setSelectedSuitableFor(response.suitable_for_kinds || suitableForList);\n setSelectedFacilities(response.facilities || facilitiesList);\n setInitialPostalDistrictsIds(newPostalDistricts);\n setOnlyInternalLocations(response.only_internal_locations);\n };\n\n mapMarkers({ ...newRequestParams, postal_districts: newPostalDistricts });\n handleResponse(response, newRequestParams, callbackFunction, true);\n\n if (onPopState) {\n const dispatchList = [getKinds, getEnergyRatings, getFacilitiesList, getSuitableForKinds];\n\n updateFiltersOptions(dispatchList, newRequestParams, response.postal_district_ids);\n }\n }\n });\n };\n\n\n const getKinds = (requestParams) => {\n const { sections, postal_districts } = requestParams;\n\n apiProvider\n .post(locationsKindsUrl, requestBuilder({sections, postal_districts}))\n .then(response => response && setLocationKinds(response));\n };\n\n\n const getEnergyRatings = (requestParams) => {\n const { sections, postal_districts, kinds } = requestParams;\n\n apiProvider\n .post('/lease/api/frontend/locations/energy_ratings', requestBuilder({sections, postal_districts, kinds}))\n .then(response => response && setEnergyRatings(response));\n };\n\n\n const getFacilitiesList = (requestParams) => {\n const { sections, postal_districts, kinds } = requestParams;\n const newRequestParams = { sections, postal_districts, kinds };\n\n apiProvider\n .post(locationsFacilitiesPath, requestBuilder(newRequestParams))\n .then(response => response && setFacilitiesList(response));\n };\n\n\n const getSuitableForKinds = (requestParams) => {\n const { sections, postal_districts, kinds } = requestParams;\n const newRequestParams = { sections, postal_districts, kinds };\n\n apiProvider\n .post(locationsSuitableForKindsPath, requestBuilder(newRequestParams))\n .then(response => response && setSuitableForList(response));\n };\n\n\n const updateFiltersOptions = (updateFunctions, requestParams, postalDistrictIds) => {\n postalDistrictIds && (requestParams.postal_districts = postalDistrictIds);\n updateFunctions.map(func => func(requestParams));\n };\n\n\n const handleResponse = (response, requestParams, callbackFunction, isInitialRequest) => {\n const currentPage = requestParams.page;\n\n // Request nearby locations if total locations count < 24\n // We need to check current page in case user will manually input page # in url\n // to handle error in this case\n response.total < 24 && !requestParams.viewport_string\n ? currentPage <= 2 && getNearbyLocations(requestParams, response, () => callbackFunction(response))\n : callbackFunction(response);\n\n !isInitialRequest && setRequestParams(requestParams);\n };\n\n\n // Nearby locations should be requested in case no filters are selected and response.locations.length < 24\n // In this case we will join response.locations with nearby locations (and nearby locations banner)\n // in quantity we need for each page depends on the quantity of response.locations.\n // The total quantity of locations (response.locations + nearby locations) should be <= 24 (two standard pages 12 per page).\n // There might be cases when there's no nearby locations at all.\n const getNearbyLocations = (requestParams, response, callbackFunction) => {\n\n const { nearbyLocations: nearbyLocationsUrl } = keywords;\n const { locations, total: byPostalDistrictsLocationsTotalCount, postal_district_ids, loc_id_for_nearby_locations } = response;\n const initialLocationsPresent = !!locations.length;\n\n const {\n suitable_for,\n facilities,\n area_min,\n area_max,\n area_max_default,\n rent_min,\n rent_max,\n rent_max_default,\n kinds,\n page,\n per_page,\n uri_kind,\n } = requestParams;\n\n (page === 1 || initialLocationsPresent) && callbackFunction();\n\n const noFiltersSelected =\n (!facilities || !facilities.length)\n && (!suitable_for || !suitable_for.length)\n && area_min === 0\n && area_max === area_max_default\n && rent_min === 0\n && rent_max === rent_max_default\n && kinds.length === 0 || kinds.length === 1 && kinds[0] === uri_kind;\n\n // Show nearby locations only in case no filters are selected & it's not a provider list view page\n // Else clear nearby locations if present, dispatch response\n if (noFiltersSelected && !providersPage) {\n\n const totalLocationsLimit = 24;\n const location_id = loc_id_for_nearby_locations || (initialLocationsPresent ? locations[0].id : null);\n const perPage = per_page ? Number(per_page) : 12;\n const isSecondPage = perPage === 12 && Number(page) === 2;\n const firstPageNearbyLocationsLimit = byPostalDistrictsLocationsTotalCount < 12 ? 12 - byPostalDistrictsLocationsTotalCount : 0;\n let limit = totalLocationsLimit - byPostalDistrictsLocationsTotalCount;\n let offset = 0;\n\n if (isSecondPage) {\n limit = totalLocationsLimit - byPostalDistrictsLocationsTotalCount - firstPageNearbyLocationsLimit;\n offset = firstPageNearbyLocationsLimit;\n }\n\n const limitMathSign = Math.sign(limit);\n\n const params = {\n location_id,\n kinds: requestParams.kinds,\n limit: limitMathSign >= 0 ? limit : 0,\n section: requestParams.sections[0],\n country_alpha2: requestParams.country_alpha2,\n offset,\n postal_district_ids,\n facilities: [],\n suitable_for: [],\n };\n\n location_id\n ? apiProvider.withOptions({ url: nearbyLocationsUrl, method: 'get', withCredentials: true, params }, true)\n .then(data => {\n if (data.error) {\n (data.status >= 500) && console.log('error', data.error);\n } else {\n\n // In case of the first page we need to request nearby locations\n // with max limit, to receive the possible \"total\" count that can be found,\n // as we need to pass this number to pagination component and\n // understand if we need to show pagination(there are cases where there's no nearby locations at all).\n // In case of the second page we can limit location to required number.\n\n const { search_id, nearest_locations } = data;\n const locationsCount = nearest_locations.length;\n const nearbyLocationsLimit = isSecondPage ? locationsCount + offset : locationsCount;\n\n if (nearbyLocationsLimit) {\n const filteredLocations = locations.length ? locations.filter(location => !location.advertisement) : [];\n const nearestLocationsWithAdvert = [ ...nearest_locations ];\n\n nearestLocationsWithAdvert.push(advertBannersData.signUp);\n nearestLocationsWithAdvert.length > 2\n ? nearestLocationsWithAdvert.splice(nearestLocationsWithAdvert.length - 2, 0, advertBannersData.searchAgent)\n : nearestLocationsWithAdvert.unshift(advertBannersData.searchAgent);\n\n // Read the comment above\n const nearbyLocations =\n isSecondPage || perPage !== 12\n ? [ ...nearestLocationsWithAdvert ]\n : nearestLocationsWithAdvert.splice(0, firstPageNearbyLocationsLimit);\n\n // If these are the first nearby locations - insert banner object\n offset === 0 && nearbyLocations.length && nearbyLocations.unshift({ id: 'nearByBanner' });\n setLocationsByPostalDistricts([ ...filteredLocations, ...nearbyLocations ]);\n setNearbyLocationsLimit(isSecondPage ? locationsCount + offset : locationsCount);\n setNearestSearchId(search_id);\n setTotalLocationsCount(byPostalDistrictsLocationsTotalCount);\n setIsLoaded(true);\n } else {\n clearNearbyLocations();\n callbackFunction();\n }\n }\n })\n : callbackFunction();\n } else {\n (nearbyLocationsLimit || nearestSearchId) && clearNearbyLocations();\n callbackFunction();\n }\n };\n\n\n const changePage = (page) => {\n\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.page = page;\n\n apiProvider\n .post(locationServiceUrl, requestBuilder({ ...newRequestParams, search_id: nearestSearchId || newRequestParams.search_id }), true)\n .then(response => {\n if (response.error) {\n setServerErrorListView(response.status >= 500 ? 'server' : 'network');\n } else {\n const formattedQueryString = () => {\n if (nearestSearchId) {\n const parsedQuery = queryString.parse(response.query_string);\n\n parsedQuery.search_id = nearestSearchId;\n return queryString.stringify(parsedQuery);\n } else {\n return response.query_string;\n }\n };\n\n queryBuilder(formattedQueryString());\n setTimeout(() => window.scroll(1, 0), 10);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n }\n });\n };\n\n\n const changePerPage = (perPage) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.per_page = perPage;\n newRequestParams.page = 1;\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, receivedSortedLocations);\n } else {\n setServerErrorListView('network');\n }\n });\n };\n\n\n const sortLocationsBy = (sortBy) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.sort_by = sortBy;\n newRequestParams.page = 1;\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, receivedSortedLocations);\n }\n });\n };\n\n\n const filterLocationsByPrice = (priceRange) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.rent_min = priceRange.min;\n newRequestParams.rent_max = priceRange.max;\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n } else {\n setServerErrorListView('network');\n }\n });\n };\n\n\n const filterLocationsBySquare = (squareRange) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.area_min = squareRange.min;\n newRequestParams.area_max = squareRange.max;\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n } else {\n setServerErrorListView('network');\n }\n });\n };\n\n\n const kindFilterToggle = (selectedKinds, requestParams) => {\n signal && controller.abort();\n\n const newRequestParams = { ...requestParams };\n\n controller = new AbortController();\n signal = controller.signal;\n\n isLoaded && setIsLoaded(false);\n newRequestParams.kinds = selectedKinds.map(elem => elem.id);\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams), true, signal)\n .then(response => {\n\n controller = null;\n signal = null;\n\n if (response.error) {\n setServerErrorListView(response.status >= 500 ? 'server' : 'network');\n } else {\n const dispatchList = [getEnergyRatings, getFacilitiesList, getSuitableForKinds];\n\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n updateFiltersOptions(dispatchList, newRequestParams, response.postal_district_ids);\n }\n })\n };\n\n\n const getListLocationByDistrictsArea = (selectedAreasIds) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n\n // remove street_ when applied area filter\n delete newRequestParams.street_id\n newRequestParams.postal_districts = selectedAreasIds;\n newRequestParams.page = 1;\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams), true)\n .then(response => {\n if (response.error) {\n setServerErrorListView(response.status >= 500 ? 'server' : 'network');\n } else {\n const dispatchList = [getKinds, getEnergyRatings, getFacilitiesList, getSuitableForKinds, (newParams) => setRequestParams(prevParams => ({ ...prevParams, ...newParams }))];\n\n queryBuilder(response.query_string);\n\n if (response.total < 24) {\n getNearbyLocations(newRequestParams, response, () => handleReceivedLocationState(response));\n } else {\n (nearbyLocationsLimit || nearestSearchId) && clearNearbyLocations();\n handleReceivedLocationState(response);\n }\n\n mapIsOpen && mapMarkers({ ...newRequestParams, postal_districts: response.postal_district_ids});\n updateFiltersOptions(dispatchList, newRequestParams, response.postal_district_ids);\n }\n });\n };\n\n\n const getListLocationMobileFilters = () => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleReceivedLocationState(response);\n setRequestParams(prevParams => ({ ...prevParams, ...newRequestParams }))\n } else {\n setServerErrorListView('network');\n }\n });\n };\n\n\n const mapMarkers = (requestParams) => {\n setPreventRequestOnDragEnd(true);\n\n apiProvider\n .post(locationsMapMarkersUrl, requestBuilder(requestParams))\n .then(response => response && setMarkersArray(response.locations));\n };\n\n\n const applySuitableForFilters = (selectedSuitableFor) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.suitable_for = selectedSuitableFor;\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n }\n });\n };\n\n\n const handleEnergyRatingSelect = (selectedEnergyRatings) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.energy_rating = selectedEnergyRatings;\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams), true)\n .then(response => {\n if (response.error) {\n setServerErrorListView(response.status >= 500 ? 'server' : 'network');\n } else {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n }\n });\n };\n\n\n const getLocationsByCoords = (viewport_string) => {\n const newRequestParams = { ...requestParams, postal_districts: [], viewport_string };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.page = 1;\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams), true)\n .then(response => {\n if (response.error) {\n setServerErrorListView(response.status >= 500 ? 'server' : 'network');\n } else {\n const dispatchList = [getKinds, getEnergyRatings, getFacilitiesList, getSuitableForKinds];\n\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n updateFiltersOptions(dispatchList, newRequestParams, response.postal_district_ids);\n }\n });\n };\n\n\n const applyFacilitiesFilters = (selectedFacilities) => {\n const newRequestParams = { ...requestParams };\n\n isLoaded && setIsLoaded(false);\n newRequestParams.facilities = selectedFacilities;\n newRequestParams.page = 1;\n mapIsOpen && mapMarkers(newRequestParams);\n\n apiProvider\n .post(locationServiceUrl, requestBuilder(newRequestParams))\n .then(response => {\n if (response) {\n queryBuilder(response.query_string);\n handleResponse(response, newRequestParams, handleReceivedLocationState);\n }\n });\n };\n\n\n const filterAreas = () => {\n const searchData = queryString.stringify({\n \"country_alpha2\": countryAlpha2,\n \"sections[]\": sections,\n });\n\n apiProvider\n .getAll(`${postalDistrictServiceUrl}?${searchData}`)\n .then(response => response && setFilterAreaList(response || filterAreaList));\n };\n\n\n const toggleMap = (root) => {\n if (mapIsOpen) {\n // setMarkersArray([]);\n setMapOptions((prevOptions) => ({ ...prevOptions, open: false, root: '', }));\n } else {\n setMapOptions({ open: true, root, loaded: true });\n }\n };\n\n\n const receivedSortedLocations = (data) => {\n setLocationsByPostalDistricts(data.locations);\n setIsLoaded(true);\n };\n\n\n const handleReceivedLocationState = (data) => {\n setLocationsByPostalDistricts(data.locations);\n setTotalLocationsCount(data.total);\n setShowSeo(data.showSeo);\n setIsLoaded(true);\n setOnlyInternalLocations(data.only_internal_locations);\n };\n\n\n const clearNearbyLocations = () => {\n setNearbyLocationsLimit(null);\n setNearestSearchId('');\n };\n\n\n const state = {\n ...props,\n comparableLocations,\n energyRatings,\n facilitiesList,\n favouriteLocationsIds,\n filterAreaList,\n headerData,\n hoveredLocationId,\n initialKinds,\n initialPostalDistrictsIds,\n isLoaded,\n listViewAsList,\n locationKinds,\n locationsByPostalDistricts,\n mapMarkers,\n mapOptions,\n markersArray,\n nearbyLocationsLimit,\n onlyInternalLocations,\n orderedLocations,\n preventRequestOnDragEnd,\n requestParams,\n section,\n selectedEnergyRatings,\n selectedFacilities,\n selectedSuitableFor,\n serverErrorListView,\n setComparableLocations,\n setEnergyRatings,\n setFacilitiesList,\n setFavouriteLocationsIds,\n setFilterAreaList,\n setHeaderData,\n setHoveredLocationId,\n setInitialPostalDistrictsIds,\n setIsLoaded,\n setListViewAsList,\n setLocationKinds,\n setLocationsByPostalDistricts,\n setMarkersArray,\n setNearbyLocationsLimit,\n setOnlyInternalLocations,\n setOrderedLocations,\n setPreventRequestOnDragEnd,\n setRequestParams,\n setSelectedEnergyRatings,\n setSelectedFacilities,\n setSelectedSuitableFor,\n setServerErrorListView,\n setShowSeo,\n setSuitableForList,\n setTotalLocationsCount,\n showSeo,\n suitableForList,\n suitableForStructuredTypes,\n viewedLocations,\n tawkIsLoaded,\n totalLocationsCount,\n windowWidth,\n applyFacilitiesFilters,\n applySuitableForFilters,\n changePage,\n changePerPage,\n filterAreas,\n filterLocationsByPrice,\n filterLocationsBySquare,\n getInitialListLocationByDistricts,\n getEnergyRatings,\n getKinds,\n getFacilitiesList,\n getListLocationByDistrictsArea,\n getListLocationMobileFilters,\n getLocationsByCoords,\n getSuitableForKinds,\n getViewedLocations,\n handleEnergyRatingSelect,\n kindFilterToggle,\n sortLocationsBy,\n toggleMap,\n };\n\n\n return (\n <Context.Provider value={state}>\n <div className=\"list-view\">\n\n <Breadcrumb breadcrumbs={breadcrumbs} root={'breadcrumbs-list-view'}/>\n\n <HeaderSection />\n\n <MainFilter />\n\n <SortBar />\n\n <LocationsContent />\n\n { viewedLocations && viewedLocations.length > 0 &&\n <Suspense fallback={''}>\n <ViewedLocations />\n </Suspense>\n }\n\n <SearchAgentBanner\n newSearchAgentPath={newSearchAgentPath}\n searchAgentText={I18n.t('lb_showroom.detailed.search_agent.description')}\n searchAgentHeadline={I18n.t('lb_showroom.detailed.search_agent.headline')}\n siteKey={siteKey}\n />\n\n { !!(popularDistricts && popularDistricts.length) &&\n <Suspense fallback={''}>\n <PopularAreas\n isRequestFromPrerender={isRequestFromPrerender}\n popularDistricts={popularDistricts}\n />\n </Suspense>\n }\n\n <BottomSeo />\n\n <ToTheTopBtn />\n\n { richSnippetQuestions && richSnippetQuestions.length > 0 &&\n <FAQSection\n hidden={!showSeo}\n indentation={0}\n isRequestFromPrerender={isRequestFromPrerender}\n richSnippetQuestions={richSnippetQuestions}\n title={I18n.t('apps.lb_showroom.detailed.tabs.faq_title')}\n />\n }\n\n </div>\n </Context.Provider>\n );\n};\n\n\nexport default ListView;\n\n\nListView.propTypes = {\n richSnippetQuestions: PropTypes.array,\n};\n\nListView.defaultProps = {\n richSnippetQuestions: [],\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n\nclass ResultsContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selectedIndex: 0,\n maxIndex: 0,\n emptyResults: false,\n };\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n\n if (this.props !== prevProps) {\n this.setState({ selectedIndex: 0 });\n this.getMaxItems(this.props);\n\n if (this.props.moveDirection === 'down') {\n this.setState({\n selectedIndex: this.state.selectedIndex > this.state.maxIndex\n ? (this.state.selectedIndex = 0)\n : this.state.selectedIndex + 1,\n });\n } else if (this.props.moveDirection === 'up') {\n this.setState({\n selectedIndex: this.state.selectedIndex < 0\n ? this.state.maxIndex\n : this.state.selectedIndex - 1,\n });\n }\n }\n }\n\n getMaxItems = data => {\n const maxIndex = data.results.length\n ? data.results.map(el => el.entries.length).reduce((e, n) => e + n) - 1\n : 0;\n this.setState({ maxIndex });\n };\n\n buildLabel = (title) => <div className='location-search-label'>{ title }</div>;\n\n buildItem = (itemObj, index) => {\n const isSelected = this.state.selectedIndex === index ? 'selected' : '';\n if (isSelected) {\n this.props.refElem(itemObj.path)\n }\n\n\n return (\n <a\n key={itemObj.path+index}\n href={itemObj.path}\n className={`location-search-item ${isSelected} `}\n >\n <span>{itemObj.line}</span>\n <span>{itemObj.type === 'location' ? itemObj.teaser : `(${itemObj.teaser})`}</span>\n </a>\n );\n };\n\n buildLocationBlock = (locationObj) => {\n return(\n <div key={locationObj.label}>\n {this.buildLabel(locationObj.label)}\n {locationObj.entries.map(item => this.buildItem(item, this.index++))}\n </div>\n )\n };\n\n renderResults = () => {\n this.index = 0;\n return this.props.results.map(item => this.buildLocationBlock(item));\n };\n\n anyResults = () => !!this.props.results.length;\n\n render() {\n return (\n <div className=\"search-result-container\">\n { this.anyResults() ? this.renderResults() : null }\n </div>\n );\n }\n}\n\nResultsContainer.propTypes = {\n results: PropTypes.array.isRequired,\n};\n\nexport default React.memo(ResultsContainer);\n","import React, { Component, Fragment } from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { fetchLocations } from '../../utils/api';\nimport { SvgIco } from '../SharedComponents/Icons';\nimport ResultsContainer from './ResultsContainer';\n\nimport './index.sass';\n\n\nclass LocationSearch extends Component {\n constructor(props) {\n super(props);\n this.state = {\n direction: null,\n showResults: true,\n results: [],\n showNoResultsError: false,\n query: '',\n };\n this.linkElement = null;\n\n this.onChangeDebounced = debounce(this.onChangeDebounced, 300)\n }\n\n componentDidMount() {\n window.addEventListener('click', this.handleClickOutside);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { query } = this.state;\n\n this.props.selectedTypes !== prevProps.selectedTypes && query && this.fetchItems(query);\n }\n\n\n componentWillUnmount() {\n window.removeEventListener('click', this.handleClickOutside);\n }\n\n handleClickOutside = (e) => {\n this.setState({ showResults: e.target === this.searchWrapper || this.searchWrapper.contains(e.target) });\n };\n\n handleEnter = () => {\n if (this.linkElement && this.props.results && this.props.results.length !== 0) {\n this.clearInput();\n window.open(this.linkElement, \"_self\")\n }\n };\n\n selectedLink = el => this.selectedElem = el;\n\n setRef = ref => {\n this.linkElement = ref;\n this.selectedLink(this.linkElement);\n };\n\n handleKeyDown = e => {\n switch (e.which) {\n case 38:\n this.setState({ direction: 'up' });\n break;\n case 40:\n this.setState({ direction: 'down' });\n break;\n case 27:\n this.setState({ direction: 0 });\n this.clearInput();\n break;\n case 13:\n this.handleEnter();\n break;\n default:\n this.setState({ direction: null });\n break;\n }\n };\n\n handleInputChange = event => {\n const query = event.target.value;\n this.setState({ query });\n\n if (/\\S/.test(event.target.value)) {\n this.onChangeDebounced();\n } else {\n this.setState({results: [], showNoResultsError: false})\n }\n };\n\n clearInput = () => this.setState({ query: '', results: [] });\n\n search_id = new Date().getTime() % 2147483647;\n\n mapTypes = typesObj => typesObj.map(typeChk => typeChk.id);\n\n onChangeDebounced = () => {\n if (/\\S/.test(this.state.query)) {\n this.fetchItems(this.state.query);\n } else {\n this.setState({results: []})\n }\n };\n\n fetchItems = query => {\n const { apiAutocompletePath } = this.props;\n const kinds = this.mapTypes(this.props.selectedTypes);\n const tabletOrMobile = window.innerWidth <= 960;\n const params = {\n query,\n kinds,\n search_id: this.search_id,\n sections: [window.env.section],\n max_entries: tabletOrMobile ? 8 : 12\n };\n\n fetchLocations(apiAutocompletePath, params).then(data => {\n const results = data.data;\n if (/\\S/.test(this.state.query)) {\n this.setState({ results, showNoResultsError: !results.length });\n }\n });\n };\n\n render() {\n const { placeholder, showFixedSearchIcon, siteKey } = this.props;\n const { query, results, showNoResultsError } = this.state;\n const isInputFilled = !!query.length || this.state.translations;\n const showResultsContainer = this.state.showResults;\n\n return (\n <Fragment>\n <div className=\"search-wrapper main-search-wrapper\" ref={el => this.searchWrapper = el}>\n\n <input\n className={`location-search-input on-list-view ${isInputFilled ? ' filled' : ''}`}\n id=\"transcript\"\n type=\"text\"\n value={query}\n onChange={this.handleInputChange}\n placeholder={placeholder || I18n.t('apps.lb_showroom.goto.search_placeholder')}\n onKeyDown={this.handleKeyDown}\n maxLength=\"256\"\n />\n\n { (showFixedSearchIcon || !isInputFilled) &&\n <div className=\"search-btn\">\n <SvgIco name=\"search\" size={16} />\n </div>\n }\n\n { isInputFilled && (\n <div className=\"location-search-clear-btn\" onClick={this.clearInput}>\n <SvgIco name=\"close\" size={16} />\n </div>\n )}\n\n { isInputFilled && results.length && showResultsContainer ? (\n <ResultsContainer\n results={results}\n moveDirection={this.state.direction}\n refElem={this.setRef}\n />\n ) : null}\n </div>\n\n { isInputFilled && showNoResultsError && results ? (\n <div className=\"error-wrapper\">\n <div className=\"error-text\">\n { I18n.t('apps.lb_showroom.goto.no_results') } \n { siteKey !== 'global' && (\n <a href=\"https://www.matchoffice.com\">\n { I18n.t('apps.lb_showroom.goto.link_to_global_site') }\n </a>\n )}\n </div>\n </div>\n ) : null }\n </Fragment>\n );\n }\n}\n\n\nexport default React.memo(LocationSearch);\n","import React from 'react';\n\nimport './index.sass';\n\n\nclass FAQSection extends React.PureComponent {\n\n state = {\n activeTab: null,\n };\n\n toggleFAQWrapper = (wrapperName) => {\n const { activeTab } = this.state;\n\n this.setState({ activeTab: wrapperName }, () => {\n\n !activeTab && this[wrapperName].classList.add('FAQSection__question-wrapper--open');\n\n if (activeTab) {\n\n if (activeTab === wrapperName) {\n this[activeTab].classList.toggle('FAQSection__question-wrapper--open');\n this[activeTab].classList.toggle('FAQSection__question-wrapper--close');\n } else {\n this[activeTab].classList.remove('FAQSection__question-wrapper--open');\n this[activeTab].classList.add('FAQSection__question-wrapper--close');\n this[wrapperName].classList.remove('FAQSection__question-wrapper--close');\n this[wrapperName].classList.add('FAQSection__question-wrapper--open');\n }\n }\n });\n };\n\n render() {\n const { indentation, isRequestFromPrerender, richSnippetQuestions, title, hidden } = this.props;\n\n if (!hidden) {\n return (\n <div className={`FAQSection container${ indentation === 0 ? ' no-padding' : '' }`} id=\"faq\">\n <h2 className=\"FAQSection__title\">\n { title }\n </h2>\n { richSnippetQuestions.map((questionBlock, index) => {\n return (\n <div key={index}\n className={`FAQSection__question-wrapper${ isRequestFromPrerender ? ' FAQSection__question-wrapper--open' : '' }`}\n ref={el => this[`faqAnswer${index}`] = el}>\n <div className=\"FAQSection__question\" onClick={() => this.toggleFAQWrapper(`faqAnswer${index}`)}>\n { questionBlock.question }\n </div>\n <div className=\"FAQSection__answer\">\n <div dangerouslySetInnerHTML={{ __html: questionBlock.answer }} />\n </div>\n </div>\n )})\n }\n </div>\n )\n } else {\n return null;\n }\n }\n}\n\nexport default FAQSection;\n","export const checkOrderedLocation = () => {\n let todayDate = new Date();\n let oneWeekAgo = new Date(todayDate.setDate(todayDate.getDate() -7));\n\n let allOrderedObjects = JSON.parse(localStorage.getItem('my.ordered_locations'));\n const orderedKeys = Object.keys(allOrderedObjects);\n\n const orderedLocationsAll = orderedKeys.map(elem => {\n let orderedDate = new Date(allOrderedObjects[`${elem}`][0].timestamp);\n if (oneWeekAgo < orderedDate) {\n return elem\n }\n });\n const orderedLocations = orderedLocationsAll.filter(elem => elem !== undefined);\n\n return orderedLocations;\n};","export const locationsCountByKinds =(kinds, sums) => {\n let count = 0;\n const filtered = {};\n\n for (let kind of Array.from(kinds)) {\n if (sums[kind]) {\n count += sums[kind]['direct'] || 0;\n }\n\n for (let direct_kind in sums) {\n const sums_obj = sums[direct_kind];\n filtered[direct_kind] = filtered[direct_kind] || [];\n\n for (let idx in sums_obj['secondary']) {\n const location_secondary_kinds = sums_obj['secondary'][idx];\n if (!kinds.includes(direct_kind) && (filtered[direct_kind].indexOf(idx) === -1) && (location_secondary_kinds.constructor === Array) && location_secondary_kinds.includes(kind)) {\n filtered[direct_kind].push(idx);\n count += 1;\n }\n }\n }\n }\n\n return count;\n};","export const queryParseHelper = (requestParams, path, backButton, defaultParams) => {\n Object.keys(path).map(elem => {\n switch(elem) {\n case 'kinds[]':\n requestParams.kinds = [].concat(path[elem]);\n break;\n case 'energy_rating[]':\n requestParams.energy_rating = [].concat(path[elem]);\n break;\n case 'page':\n requestParams.page = path[elem];\n break;\n case 'rent_min':\n requestParams.rent_min = path[elem];\n break;\n case 'rent_max':\n requestParams.rent_max = path[elem];\n break;\n case 'area_min':\n requestParams.area_min = path[elem];\n break;\n case 'area_max':\n requestParams.area_max = path[elem];\n break;\n case 'per_page':\n requestParams.per_page = path[elem];\n break;\n case 'sort_by':\n requestParams.sort_by = path[elem];\n break;\n case 'street_id':\n requestParams.street_id = path[elem];\n break;\n }\n });\n\n if (backButton) {\n if (!path['kinds[]']) {\n requestParams.kinds = defaultParams.kinds ? defaultParams.kinds : [];\n }\n\n if (!path['energy_rating[]']) {\n requestParams.energy_rating = defaultParams.energy_rating ? defaultParams.energy_rating : [];\n }\n\n if (!path.page) {\n requestParams.page = defaultParams.page\n }\n\n if (!path.rent_min) {\n requestParams.rent_min = defaultParams.rent_min\n }\n\n if (!path.rent_max) {\n requestParams.rent_max = defaultParams.rent_max\n }\n\n if (!path.area_min) {\n requestParams.area_min = defaultParams.area_min\n }\n\n if (!path.area_max) {\n requestParams.area_max = defaultParams.area_max\n }\n\n if (!path.per_page) {\n requestParams.per_page = '12'\n }\n\n if (!path.sort_by) {\n requestParams.sort_by = '';\n }\n if (!path.street_id) {\n if (defaultParams.street_id) {\n requestParams.street_id = defaultParams.street_id\n } else {\n delete requestParams.street_id\n }\n }\n }\n\n return requestParams;\n};\n"],"names":["requestBuilder","requestParams","bodyFormData","FormData","Object","keys","map","elem","Array","isArray","section","append","concat","httpService","_classCallCheck","_createClass","key","value","locationsIds","queryString","localStorage","getItem","reduce","sum","item","slice","apiProvider","getAll","url","data","uuid","name","email","company_name","company","option_parking_lots","phone_number","phone","comment","ab_code","order","location_uuid","person_name","camelizeName","api_version","post","Breadcrumb","_ref","breadcrumbs","root","detailsPage","linksList","breadcrumb","index","React","className","label","length","href","path","SvgIco","size","defaultProps","AreaFilter","_Component","_inherits","_super","_createSuper","_this","_len","arguments","args","_key","call","apply","_defineProperty","_assertThisInitialized","isOpened","props","selectedSectionIds","searchQuery","toggleIsSticky","queryData","event","isOutsideClick","target","tagName","wrapperRef","contains","isTrigger","trigger","setState","province","selectAll","dynamicData","itemId","areaId","selectAction","node","state","id","_this$state","indexOf","sectionIsSelected","newSelectedSections","update","$splice","$push","setTimeout","scrollToTarget","isMobileMenu","scrollBody","document","getElementById","scrollTarget","dropdownBody","scrollTargetTop","offsetTop","scrollTop","query","toLowerCase","handleQueryData","openedSections","filter","areasHasQuery","areas","some","area","includes","total_sum","count","filteredData","district","_objectSpread","push","_this$state2","targetRect","getBoundingClientRect","bodyRect","targetTop","top","bodyTop","targetBottom","bottom","bodyBottom","viewportBottom","window","innerHeight","isSticky","addEventListener","this","handleClickOutside","prevProps","prevState","scrollToggle","handleBodyScroll","removeEventListener","_this2","_this$state3","_this$props","deselectAll","placeholder","selectedData","actionIconClasses","classNames","bodyClasses","placeholderClasses","triggerClasses","names","selectedIds","_toConsumableArray","forEach","selectedDistrictId","highlightSearchOutput","originName","startIndex","endIndex","originSubstring","substring","replace","replaceAll","onClick","handleOpening","ref","el","join","setWrapperRef","onScroll","onChange","e","handleSearch","I18n","t","type","sortedAreasArray","sort","a","b","localeCompare","areaIsSelected","checkboxClasses","submenuClasses","submenuStyles","maxHeight","itemClasses","toggleSelectSection","dangerouslySetInnerHTML","__html","style","submenuItemClasses","submenuCheckboxClasses","Fragment","Component","BottomSeo","_useContext","useContext","Context","headerData","initialKinds","keywords","setHeaderData","showSeo","siteKey","descriptionWithAssets","extendedDescription","rating","streetName","seoStatistics","avgScore","rateableId","ratingCreatePath","showRating","votesCount","geoName","_useState","useState","_useState2","_slicedToArray","hoveredRatingStar","setHoveredRatingStar","currentScore","locationsKind","locationsCount","kind","translatedKinds","ratingHeadline","selected_kinds","selected_area","isCoworkingDk","declinedLocationKinds","availableLocationsLinkI18n","pdf_link","fullOverviewLink","location_kinds","location","topVievedLocationsHeadline","locations_count","topViewed","useEffect","initYouTubeVideos","updateAreaRating","score","load_stars_widget","then","response","prevData","rating_data","avg_score","votes_count","handleRatingHover","handleRatingOut","labnolIframe","div","iframe","createElement","setAttribute","dataset","parentNode","replaceChild","playerElements","getElementsByClassName","n","videoId","thumbNode","src","appendChild","playButton","onclick","capitalize","text","charAt","toUpperCase","onMouseOver","onMouseOut","headline","asset","alt","split","pop","scope","rowsContent","content","indexRows","description","cells","cell","diff","percentageChange","link","mostViewedOverviewLink","HeaderSection","contactInfoPhone","contactInfoPhoneWithoutCode","country","subSite","totalLocationsCount","sections","cityName","kinds","currentTotalLocationsCount","phoneNumber","additionalTextSalesSection","street_id","seoTextElement","topMenuHeight","offsetHeight","obj","curtop","offsetParent","findPos","scrollTo","left","body","behavior","MapSection","GridViewItemList","ListViewItemsList","changePage","hoveredLocationId","isLoaded","listViewAsList","locationsByPostalDistricts","mapOptions","nearbyLocationsLimit","serverErrorListView","setHoveredLocationId","windowWidth","showBottomPagination","setShowBottomPagination","newSearchAgentPath","debounce","handleBottomPagination","paginationElem","paginationBottom","currentScreenTop","screenTop","mapIsOpen","open","mapLoaded","loaded","perPage","per_page","initialPage","page","Number","showPagination","mapClass","styles","spinnerMargin","paddingBottom","containerMargin","marginTop","SkeletonLoader","skeletonGridViewLoader","skeletonListViewLoader","locationsAsGrid","Suspense","fallback","locationsAsList","pagination","ReactPaginate","activeClassName","breakLabel","containerClassName","marginPagesDisplayed","forcePage","nextLabel","previousLabel","onPageChange","selected","pageCount","Math","ceil","pageRangeDisplayed","isMobileOnly","hrefBuilder","_window$location","origin","pathname","generatePaginationLink","StickyFilterBar","previousScrollY","showStickyBar","mobileFiltersOn","currentScrollY","pageYOffset","clientHeight","handleStickyBarRender","Sticky","bottomBoundary","innerZ","enabled","children","DropDownContainer","DropdownSelector","EnergyRatingFilter","FacilitiesFilter","NoLinearRangeSlider","RangeSelector","SpaceCalculator","SuitableForFilter","MainFilter","debounceKinds","func","areaType","filterAreas","filterAreaList","filterLocationsByPrice","filterLocationsBySquare","getInitialListLocationByDistricts","getEnergyRatings","getKinds","getFacilitiesList","getListLocationByDistrictsArea","getListLocationMobileFilters","getSuitableForKinds","groupedPostalDistrictsIds","initialPostalDistrictsIds","kindFilterToggle","locationKinds","onlyInternalLocations","selectedEnergyRatings","selectedFacilities","selectedSuitableFor","setRequestParams","setSelectedEnergyRatings","setSelectedFacilities","setSelectedSuitableFor","suitableForStructuredTypes","toggleMap","area_max","area_min","energy_rating","facilities","rent_max","rent_min","suitable_for","apiAutocompletePath","countryAlpha2","defaultKinds","frontendLeasePrices","initialPostalDistrictIds","maxArea","provinceId","saleMaxPrice","slidersDefaultCurrencyFormatted","yearlyPerM2MaxPrice","clearFacilities","setClearFacilities","_useState3","_useState4","clearSuitableFor","setClearSuitableFor","_useState5","_useState6","filtersMobileScroll","setFiltersMobileScroll","_useState7","_useState8","filtersModalIsOpen","setFiltersModalIsOpen","_useState9","_useState10","setMobileFiltersOn","_useState11","_useState12","parsedData","setParsedData","_useState13","_useState14","prevSelectedFacilities","setPrevSelectedFacilities","_useState15","_useState16","prevSelectedFilters","setPrevSelectedFilters","_useState17","_useState18","selectedAreaIds","setSelectedAreaIds","_useState19","max","min","_useState20","selectedMeters","setSelectedMeters","_useState21","_useState22","selectedPrice","setSelectedPrice","_useState23","_useState24","selectedTypes","setSelectedTypes","_useState25","_useState26","showApplyFiltersButton","setShowApplyFiltersButton","_useState27","_useState28","showClearFiltersButton","setShowClearFiltersButton","filterWrapper","useRef","_saveSettings","tasks","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","shift","task","Promise","resolve","stop","onpopstate","onPopStateEvent","handleMobilesFiltersOn","translatedKind","JSON","parse","stringify","handleClearFiltersButton","handleApplyFiltersButton","values","currentValue","filterByTotalSum","postal_districts","updated","getTotalSum","accum","added","_objectWithoutProperties","_excluded","newSelectedIds","selectedAllIds","getPath","search","getPathBack","history","newRequestParams","defaultParams","acc","queryParseHelper","search_id","mapSelectedKinds","selectedKinds","filterLocationBySquare","square","shouldSubmit","currentSquare","prevParams","filterLocationByArea","updatedAreas","newSelectedAreasIds","toggleAreaSelect","parentID","areaID","selectedAreas","selectedProvince","splice","innerWidth","toggleMobileFilters","removeScrollListenerElement","filtersWrapper","mobileFiltersOnState","classList","add","disableBodyScroll","dataLayer","eventCategory","eventAction","selectedAreasIds","remove","enableBodyScroll","prevSelectedAreas","suitableFor","currentFacilities","every","find","prevType","facility","closeFiltersModal","toggle","current","isModal","filterToggle","isFilterButton","maxPrice","mainFilterClasses","filtersWrapperClasses","isUsa","areaFilterIcon","areaUnit","areaFilterTitle","areaFilterText","selectedPriceTooltip","selectedSizeTooltip","round","duplicateParsedData","hideSquareFilter","showOfficeSpaceCalculator","undefined","locationsCountByKinds","sums","LocationSearch","showFixedSearchIcon","modalFiltersWrapper","rect","wrapperTop","selectedCounterPhrase","getObjectIndexInArray","typeIsSelected","newSelectedTypes","filterKinds","suitableForTypesAreSelected","newSuitableForList","sortedSuitableForByKinds","suitableForKind","toggleClearSuitableForFilter","selectedTooltip","dimension","filterType","handleSelectorChange","price","currentPrice","maxValue","minValue","showInputLabels","showMaxMoreIcon","submitOnChangeComplete","employeeCalculation","toggleClearFacilitiesFilter","currentKinds","searchAgentDefaultParams","searchAgentParams","fromEntries","entries","_ref2","searchAgentQueryString","URLSearchParams","toString","setSearchAgentUrl","scroll","changePerPage","setListViewAsList","sortLocationsBy","tawkIsLoaded","sortBy","sort_by","listViewSwitcherClasses","gridViewSwitcherClasses","quantityOptions","sortTypeOptions","selectedSortType","sortingPriceFieldName","option","setSelectedSortType","selectedPerPage","setSelectedPerPage","perPageLabel","perPageLabelContent","createTextNode","sortByLabel","sortByLabelContent","querySelector","insertBefore","childNodes","counter","toggleTawk","Tawk_API","onLoaded","hideWidget","showWidget","error","defaultSortType","strictSelectedOption","selectedSortTypeValue","optionalSelect","selectedSortTypeOption","defaultQuantity","setItem","Select","classNamePrefix","defaultValue","isSearchable","options","Switch","checked","checkedIcon","handleDiameter","height","offHandleColor","onColor","offColor","onHandleColor","width","uncheckedIcon","advertBannersData","searchAgent","advertisement","search_agent","image_text","image_text_bottom","title","text_above_button","text_on_button","signUp","PopularAreas","ViewedLocations","createContext","controller","signal","ListView","headerContent","isRequestFromPrerender","popularDistricts","providersPage","richSnippetQuestions","streetId","initialFacilities","initialSuitableForKinds","locationsFacilitiesPath","locationServiceUrl","locationsSuitableForKindsPath","locationsKindsUrl","locationsMapMarkersUrl","postalDistrictServiceUrl","providerInfo","locationInfo","comparableLocations","setComparableLocations","energyRatings","setEnergyRatings","facilitiesList","setFacilitiesList","favouriteLocationsIds","setFavouriteLocationsIds","setFilterAreaList","setInitialKinds","setInitialPostalDistrictsIds","setIsLoaded","setLocationKinds","setLocationsByPostalDistricts","setMapOptions","_useState29","_useState30","markersArray","setMarkersArray","_useState31","_useState32","setNearbyLocationsLimit","_useState33","_useState34","nearestSearchId","setNearestSearchId","_useState35","_useState36","setOnlyInternalLocations","_useState37","_useState38","orderedLocations","setOrderedLocations","_useState39","_useState40","preventRequestOnDragEnd","setPreventRequestOnDragEnd","_useState41","_useState42","_useState43","_useState44","_useState45","_useState46","_useState47","_useState48","setServerErrorListView","_useState49","_useState50","setShowSeo","_useState51","_useState52","suitableForList","setSuitableForList","_useState53","_useState54","setTawkIsLoaded","_useState55","_useState56","setTotalLocationsCount","_useState57","_useState58","viewedLocations","setViewedLocations","_useState59","_useState60","setWindowWidth","_useState61","initial_postal_district_id","initialPostalDistrictId","initial_province_id","initialProvinceId","area_max_default","rent_max_default","country_alpha2","uri_kind","_useState62","searchId","provider_id","providerId","location_id","locationId","smoothscroll","getViewedLocations","loadTawkTo","calculateWindowWidth","retrievedFavouriteLocations","retrievedComparableLocations","locale","checkOrderedLocation","sessionStorage","removeItem","retrievedViewed","viewedLocationsIds","getLocationsByIds","catch","console","log","onPopState","status","newPostalDistricts","postal_district_ids","mapMarkers","handleResponse","locations","total","show_seo","suitable_for_kinds","only_internal_locations","updateFiltersOptions","updateFunctions","postalDistrictIds","callbackFunction","isInitialRequest","currentPage","viewport_string","getNearbyLocations","nearbyLocationsUrl","nearbyLocations","byPostalDistrictsLocationsTotalCount","loc_id_for_nearby_locations","initialLocationsPresent","isSecondPage","firstPageNearbyLocationsLimit","limit","offset","limitMathSign","sign","params","withOptions","method","withCredentials","nearest_locations","filteredLocations","nearestLocationsWithAdvert","unshift","clearNearbyLocations","receivedSortedLocations","handleReceivedLocationState","office","warehouse","coworking","store","business_center","applyFacilitiesFilters","queryBuilder","query_string","applySuitableForFilters","parsedQuery","formattedQueryString","searchData","priceRange","squareRange","dispatchList","newParams","getLocationsByCoords","handleEnergyRatingSelect","abort","AbortController","prevOptions","Provider","SortBar","LocationsContent","SearchAgentBanner","searchAgentText","searchAgentHeadline","ToTheTopBtn","FAQSection","hidden","indentation","ResultsContainer","maxIndex","results","itemObj","isSelected","selectedIndex","refElem","line","teaser","locationObj","buildLabel","buildItem","buildLocationBlock","emptyResults","snapshot","getMaxItems","moveDirection","anyResults","renderResults","showResults","searchWrapper","linkElement","clearInput","selectedElem","selectedLink","which","direction","handleEnter","test","onChangeDebounced","showNoResultsError","Date","getTime","typesObj","typeChk","fetchItems","mapTypes","tabletOrMobile","env","max_entries","fetchLocations","isInputFilled","translations","showResultsContainer","handleInputChange","onKeyDown","handleKeyDown","maxLength","setRef","_React$PureComponent","activeTab","wrapperName","questionBlock","toggleFAQWrapper","question","answer","todayDate","oneWeekAgo","setDate","getDate","allOrderedObjects","orderedDate","timestamp","filtered","_i","_Array$from","from","direct_kind","sums_obj","idx","location_secondary_kinds","constructor","backButton"],"sourceRoot":""}