{"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(' ', '&nbsp');\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\">&uarr;</span>\n      : (diff < 0 ? <span className=\"decrease\">&darr;</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`) }:&nbsp;<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') }&nbsp;\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":""}