{"version":3,"file":"js/legacy_desktop-b968a07e32006e44e000-v10.js","mappings":"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","sources":["webpack:///./app/javascript/legacy/lib/ComponentLoader.js","webpack:///./app/javascript/legacy/lib/Cookies.js","webpack:///./app/javascript/legacy/lib/EstatelyEvents.js","webpack:///./app/javascript/legacy/lib/ModalFocus.js","webpack:///./app/javascript/legacy/lib/redirect-to-signup-url.js","webpack:///./app/javascript/legacy/views/listings/Accordion.js","webpack:///./app/javascript/legacy/views/global/Header.js","webpack:///./app/javascript/legacy/views/global/Notifications.js","webpack:///./app/javascript/legacy/views/global/SaveSearch.js","webpack:///./app/javascript/legacy/views/global/SaveSearchButton.js","webpack:///./app/javascript/legacy/views/global/SaveSearchForm.js","webpack:///./app/javascript/legacy/views/global/TimeSinceDate.js","webpack:///./app/javascript/lib/GoogleAnalytics/GAReporter.js","webpack:///./app/javascript/lib/polyfills/requestIdleCallback.js","webpack:///./app/javascript/legacy/pages/DesktopPage.js","webpack:///./app/javascript/packs/legacy_desktop.js","webpack:///../../shared/node_modules/js-cookie/dist/js.cookie.mjs"],"sourcesContent":["export default class ComponentLoader {\n static childComponents = []\n\n static register() {\n this.mount()\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => this.initialize())\n } else {\n this.initialize()\n }\n\n this.childComponents.forEach(component => component.register())\n }\n\n // Can be called immediately, before document is fully loaded\n static mount() {}\n\n // Called on document ready\n static initialize() {}\n}\n","import JSCookies from 'js-cookie'\n\nconst Cookies = {\n get(name) {\n const value = JSCookies.get(name)\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n },\n\n set(name, value, { maxAge, ...opts } = {}) {\n return JSCookies.set(name, JSON.stringify(value), {\n ...opts,\n 'Max-Age': maxAge?.toString(),\n })\n },\n\n remove: JSCookies.remove,\n}\n\nexport default Cookies\n","// These are used as custom jQuery events, and follow jQuery event conventions:\n// See: https://learn.jquery.com/events/introduction-to-custom-events/#naming-custom-events\n// See: https://api.jquery.com/event.namespace/\n\n// IMPORTANT: Use `:` as a prefix to avoid triggering actual DOM events\n\nconst EstatelyEvents = {\n AJAX_CONTENT: {\n LOADED: ':loaded.estately.ajax-content',\n },\n\n SAVE_SEARCH: {\n REQUEST: ':request.estately.save-search',\n SUCCESS: ':success.estately.save-search',\n ERROR: ':error.estately.save-search',\n },\n\n STATE_CHANGE: {\n SHOWING_REQUEST: ':state-change.estately.showing-requested',\n LOGIN: ':state-change.estately.logged-in',\n PROPERTY_SAVE: ':state-change.estately.property-saved',\n },\n\n USER: {\n WILL_INTERACT: ':will-interact.estately.user', // Used for lazy-loading content\n },\n}\n\nexport default EstatelyEvents\n","import $ from 'legacy/vendor/jquery.custom'\n\n// NOTE: We have to capture keyboard focus within the modal when a modal is opened for\n// accessibility reasons. Issue: 22210\nexport default class ModalFocus {\n static captureTabEvent() {\n const focusableElements = 'button, a, input, select, textarea'\n\n $('.modal').keydown((e) => {\n if (!(e.key === 'Tab')) {\n return\n }\n\n const $target = $(e.target)\n // We have to find the closest modal because there can be multiple modals on one page.\n const $closest = $target.closest('.modal')\n\n const $focusableContent = $closest.find(focusableElements).not(':hidden,[tabindex=-1]')\n const firstFocusableElement = $focusableContent[0]\n const lastFocusableElement = $focusableContent[$focusableContent.length - 1]\n\n if (e.target === firstFocusableElement) {\n // Shift + Tabbing up on first element, will move focus to last element.\n if (e.shiftKey) {\n e.preventDefault()\n $(lastFocusableElement).focus()\n } else if (firstFocusableElement === lastFocusableElement) {\n // Tabbing on first element when there is no other focusable element will\n // re-focus on the first element.\n e.preventDefault()\n $(firstFocusableElement).focus()\n }\n } else if ((e.target === lastFocusableElement) && !e.shiftKey) {\n // Tabbing on last element will move focus to the first element.\n e.preventDefault()\n $(firstFocusableElement).focus()\n }\n })\n }\n}\n","// TODO: Merge with /lib/redirect-to-signup-url.js\nexport default function redirectToSignupUrl(signupType) {\n const signupPath = document.getElementById('signup-header-link').href\n window.location.assign(`${signupPath}&signup_type=${signupType}`)\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\n\nexport default class Accordion extends ComponentLoader {\n static mount() {\n $('.js-accordion').click((event) => {\n this.onToggle(event)\n })\n }\n\n static onToggle(event) {\n if (!event.currentTarget.matches('.js-accordion')) return\n\n const accordion = event.currentTarget\n const panel = accordion.getAttribute('aria-controls')\n\n const $accordionBody = $(`#${panel}`)\n\n const isExpanded = accordion.getAttribute('aria-expanded') === 'true'\n\n if (isExpanded) {\n $accordionBody.addClass('hidden')\n accordion.setAttribute('aria-expanded', 'false')\n } else {\n $accordionBody.removeClass('hidden')\n accordion.setAttribute('aria-expanded', 'true')\n }\n }\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport EstatelyEvents from 'legacy/lib/EstatelyEvents'\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport Accordion from 'legacy/views/listings/Accordion'\nimport Cookies from 'legacy/lib/Cookies'\n\nexport default class Header extends ComponentLoader {\n static mount() {\n $(document).on(EstatelyEvents.STATE_CHANGE.LOGIN, this.onLogin)\n Accordion.mount()\n }\n\n static initialize() {\n $('.js-show-search-bar').on('click', this.onSearchBarToggleClick)\n $('.special-dropdown-links, .accordian-item').on('click', this.onSitewideHeaderNavigationClick)\n $('.modal-sidebar').on('click', '[data-toggle=\"modal\"]', this.onSidebarNestedModalClick)\n\n // The logout item in the sidebar is a form (rather than a link, like the other items). As a result,\n // only the text itself is clickable. This event handler makes the entire list item clickable.\n $('.logout-item').on('click', this.onLogoutItemClick)\n }\n\n static onLogin = () => {\n const $headerNavContent = $('#js-header-nav .modal-content')\n\n $headerNavContent.load(`/account/header_nav?return_to=${window.location.pathname}`, (newContent) => {\n $headerNavContent.trigger(EstatelyEvents.AJAX_CONTENT.LOADED, [newContent])\n })\n }\n\n static onSearchBarToggleClick = () => {\n const $headerSearch = $('.header-search')\n const toggleOpen = !$headerSearch.is(':visible')\n\n $headerSearch.toggleClass('header-search-open', toggleOpen)\n\n if (toggleOpen) {\n $headerSearch.find('#search-location').focus()\n\n // Close the search if you click anywhere else on the page\n $(window).on('click.header-search', (event) => {\n const isHeaderSearchClick = $(event.target).closest('.header-search,.js-show-search-bar,.ui-autocomplete').length\n\n if (!isHeaderSearchClick) this.onSearchBarToggleClick()\n })\n } else {\n $(window).off('click.header-search')\n }\n }\n\n static onSidebarNestedModalClick = (event) => {\n const $sidebar = $(event.delegateTarget)\n\n if (!$sidebar.hasClass('fade')) return\n\n $sidebar.removeClass('fade')\n $sidebar.modal('hide').on('hidden.bs.modal', () => $sidebar.addClass('fade'))\n }\n\n static onLogoutItemClick = (event) => {\n localStorage.removeItem('first-time-login-timestamp')\n $(event.target).submit()\n }\n\n static onSitewideHeaderNavigationClick = (event) => {\n const cityNameCookie = Cookies.get('city_name')\n const cityName = cityNameCookie.split('/')[1].replaceAll('_', ' ')\n\n $(event.currentTarget).find('.special-dropdown-menu-link, .accordion-link').each((_, link) => {\n const currentPrefix = $(link).data('linkPrefix')\n if (!currentPrefix) return\n\n $(link).text((_index, text) => text.replace(currentPrefix, cityName))\n $(link).data('linkPrefix', cityName)\n\n const currentHref = $(link).attr('href')\n const newHref = currentHref.replace(/^\\/[^/]+\\/[^/]+/, `/${cityNameCookie}`)\n\n $(link).attr('href', newHref)\n })\n }\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport EstatelyEvents from 'legacy/lib/EstatelyEvents'\n\nexport default class Notifications extends ComponentLoader {\n static initialize() {\n this.$notificationsBtn = $('[data-toggle=\"modal\"][data-target=\"#js-notifications-center\"]')\n this.$notifications = $('#js-notifications-center')\n this.$unreadCircle = this.$notificationsBtn.find('.js-notifications-circle')\n this.notificationsUrl = this.$notifications.data('url')\n\n this.lazyUpdateNotifications()\n\n $(document).on(EstatelyEvents.STATE_CHANGE.LOGIN, () => this.lazyUpdateNotifications())\n\n this.$notificationsBtn.on('mouseover click', () => {\n this.$notificationsBtn.trigger(EstatelyEvents.USER.WILL_INTERACT)\n })\n\n this.$notifications\n .on(EstatelyEvents.SAVE_SEARCH.SUCCESS, () => this.onSaveSearchFromNotifications())\n .on('show.bs.modal', () => this.onOpen())\n .on('click', '.notifications-list .notification .listing-card', (event) => {\n window.location.href = event.currentTarget.dataset.path\n })\n }\n\n static onSaveSearchFromNotifications() {\n this.$notifications.modal('hide')\n }\n\n static lazyUpdateNotifications() {\n // Delay fetching the unread count (we already render from cached sessionStorage in _header.html.haml)\n requestIdleCallback(() => this.updateUnreadCount())\n\n this.$notificationsBtn.one(EstatelyEvents.USER.WILL_INTERACT, () => this.fetchNotifications())\n }\n\n static fetchNotifications = async () => {\n const content = await $.get(this.notificationsUrl)\n requestAnimationFrame(() => {\n $('.js-notifications-content')\n .addClass('fade')\n .html(content)\n .trigger(EstatelyEvents.AJAX_CONTENT.LOADED, [content])\n .addClass('in')\n })\n }\n\n static onOpen = async () => {\n if (window.estately.data.is_user_logged_in) await $.post('/notifications/viewed')\n\n this.renderUnreadCircle(0) // clear unread\n }\n\n static async updateUnreadCount() {\n if (!window.estately.data.is_user_logged_in) return\n\n const { unread } = await $.get('/notifications/count')\n\n this.renderUnreadCircle(unread)\n }\n\n static renderUnreadCircle(count) {\n requestAnimationFrame(() => {\n sessionStorage.setItem('notifications-unread-count', count || '')\n if (count === 0) {\n this.$unreadCircle.hide()\n } else {\n this.$unreadCircle.show()\n }\n })\n }\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport EstatelyEvents from 'legacy/lib/EstatelyEvents'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport Cookies from 'legacy/lib/Cookies'\nimport redirectToSignupUrl from 'legacy/lib/redirect-to-signup-url'\n\nexport default class SaveSearch extends ComponentLoader {\n // This cookie name needs to match google tag manager variable \"save-search-cookies\"\n static COOKIE = 'save-search'\n\n static mount() {\n $(document)\n .on(EstatelyEvents.STATE_CHANGE.LOGIN, this.onLogin)\n .on(EstatelyEvents.SAVE_SEARCH.REQUEST, this.onRequest)\n .on(EstatelyEvents.SAVE_SEARCH.SUCCESS, this.onSuccess)\n\n this.restoreSaveSearchFromCookie()\n }\n\n static onLogin = () => {\n $('.save-search-from-listing-cta').remove()\n }\n\n static onRequest = (event) => {\n const requestingElement = event.target\n const formData = this.normalizeSaveSearchData(requestingElement)\n\n if (!window.estately.data.is_user_logged_in && !formData.has('email')) {\n this.authenticateFirst(formData)\n } else {\n this.save(requestingElement, formData)\n }\n }\n\n static onSuccess = async (event, modalContent, requestingElement) => {\n Cookies.remove(this.COOKIE)\n\n // Force a refresh of logged-in content (even if already logged in)\n window.estately.data.is_user_logged_in = true\n $(event.target).trigger(EstatelyEvents.STATE_CHANGE.LOGIN)\n\n const { default: SaveSearchConfirmationModal } = await this.modalImport\n SaveSearchConfirmationModal.lazyLoad(modalContent, requestingElement)\n }\n\n static async save(element, formData) {\n try {\n this.modalImport = this.modalImport || import('packs/lazy/SaveSearchConfirmationModal')\n\n const modalContent = await $.ajax({\n type: 'POST',\n url: '/saved_searches/create',\n data: formData,\n\n // These need to be disabled since we’re using a FormData() object\n processData: false,\n contentType: false,\n })\n\n $(element).trigger(EstatelyEvents.SAVE_SEARCH.SUCCESS, [modalContent, element])\n } catch (error) {\n $(element).trigger(EstatelyEvents.SAVE_SEARCH.ERROR, [error])\n }\n }\n\n static normalizeSaveSearchData(target) {\n const data = new FormData(target.tagName === 'FORM' ? target : undefined)\n\n if (!data.has('bookmark')) {\n const canonicalURL = document.querySelector('link[rel=\"canonical\"]').href\n data.append('bookmark', canonicalURL)\n }\n\n return data\n }\n\n static authenticateFirst(formData) {\n Cookies.set(this.COOKIE, Object.fromEntries(formData), { maxAge: 3600 })\n\n return redirectToSignupUrl('save_search_from_area')\n }\n\n static restoreSaveSearchFromCookie() {\n if (!window.estately.data.is_user_logged_in) return\n\n const savedSearchParams = Cookies.get(this.COOKIE)\n if (!savedSearchParams) return\n\n // Convert cookie data to a FormData object\n const formData = new FormData()\n Object.entries(savedSearchParams).forEach(([key, val]) => {\n formData.append(key, val)\n })\n\n this.save(document, formData)\n }\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport EstatelyEvents from 'legacy/lib/EstatelyEvents'\n\nexport default class SaveSearchButton extends ComponentLoader {\n static mount() {\n $(document).on('click', '.gtm-save-search-btn', (event) => {\n event.preventDefault()\n $(event.currentTarget).trigger(EstatelyEvents.SAVE_SEARCH.REQUEST)\n })\n }\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport EstatelyEvents from 'legacy/lib/EstatelyEvents'\n\nexport default class SaveSearchForm extends ComponentLoader {\n static mount() {\n $(document).on('submit', '.gtm-save-search-form', this.onSubmit)\n $(document).on(EstatelyEvents.SAVE_SEARCH.ERROR, '.gtm-save-search-form', this.onError)\n }\n\n static onSubmit(event) {\n event.preventDefault()\n const $form = $(event.currentTarget)\n\n $form.find('.show-error').text('').addClass('hide') // Clear errors\n $form.trigger(EstatelyEvents.SAVE_SEARCH.REQUEST)\n }\n\n static onError(event, error) {\n const $form = $(event.currentTarget)\n\n $form.find('.show-error')\n .append($(error.responseText).html())\n .removeClass('hide')\n }\n}\n","import $ from 'legacy/vendor/jquery.custom'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport EstatelyEvents from 'legacy/lib/EstatelyEvents'\n\n\nconst seconds = ms => Math.floor(ms / 1000)\nconst minutes = ms => Math.floor(ms / 60000)\nconst hours = ms => Math.floor(ms / 3600000)\nconst days = ms => Math.floor(ms / 86400000)\n\nconst pluralize = (count, singular) => `${count} ${singular}${count === 1 ? '' : 's'}`\n\nexport function timeSinceDate(date) {\n const ms = new Date().valueOf() - date.valueOf()\n\n switch (true) {\n case (days(ms) > 0): return pluralize(days(ms), 'day')\n case (hours(ms) > 0): return pluralize(hours(ms), 'hour')\n case (minutes(ms) > 0): return pluralize(minutes(ms), 'minute')\n default: return pluralize(seconds(ms), 'second')\n }\n}\n\nexport default class TimeSinceDate extends ComponentLoader {\n static mount() {\n $(document).on(EstatelyEvents.AJAX_CONTENT.LOADED, (event) => {\n const newContent = event.currentTarget\n this.initialize(newContent)\n })\n }\n\n static initialize(root = document) {\n root.querySelectorAll('.js-time-since-today').forEach((timestamp) => {\n const iso8601 = timestamp.dataset.listingCreatedAt.trim()\n const date = new Date(iso8601)\n\n /* eslint-disable no-param-reassign */\n timestamp.textContent = timeSinceDate(date)\n timestamp.title = date.toLocaleString()\n /* eslint-enable */\n })\n }\n}\n","import ComponentLoader from 'legacy/lib/ComponentLoader'\n\nexport default class GAReporter extends ComponentLoader {\n static initialize() {\n if (SERVER_SIDE) return\n const analytics = window.estately.analytics\n analytics.gtm_data_layer.forEach(event => this.pushEventToGTM(event))\n }\n\n // Pushes events to google tag manager\n static pushEventToGTM(dataLayer) {\n if ('event' in dataLayer) {\n window.dataLayer = window.dataLayer || []\n window.dataLayer.push(dataLayer)\n }\n }\n}\n","/*!\n * Copyright 2015 Google Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\n * or implied. See the License for the specific language governing\n * permissions and limitations under the License.\n */\n\n/*\n * @see https://developers.google.com/web/updates/2015/08/using-requestidlecallback\n */\n\n// TODO: We can delete this entire file once Safari support improves\n// See https://caniuse.com/requestidlecallback\n\n// TODO: Replace with `globalThis` when browser support improves\n// See https://caniuse.com/mdn-javascript_builtins_globalthis\nconst windowOrGlobal = global || window\n\nexport const requestIdleCallback = windowOrGlobal.requestIdleCallback || (\n callback => setTimeout(\n () => {\n const start = performance.now()\n\n callback({\n didTimeout: false,\n timeRemaining: () => Math.max(0, 50 - (performance.now() - start)),\n })\n },\n 1,\n )\n)\n\nexport const cancelIdleCallback = windowOrGlobal.requestIdleCallback || (\n id => clearTimeout(id)\n)\n\nexport default requestIdleCallback\n","import $ from 'legacy/vendor/jquery.custom'\nimport GAReporter from 'lib/GoogleAnalytics/GAReporter'\n\nimport ComponentLoader from 'legacy/lib/ComponentLoader'\nimport ModalFocus from 'legacy/lib/ModalFocus'\n\nimport Header from 'legacy/views/global/Header'\nimport Notifications from 'legacy/views/global/Notifications'\nimport SaveSearch from 'legacy/views/global/SaveSearch'\nimport SaveSearchButton from 'legacy/views/global/SaveSearchButton'\nimport SaveSearchForm from 'legacy/views/global/SaveSearchForm'\nimport TimeSinceDate from 'legacy/views/global/TimeSinceDate'\n\nexport default class DesktopPage extends ComponentLoader {\n static childComponents = [\n Header,\n Notifications,\n SaveSearch,\n SaveSearchButton,\n SaveSearchForm,\n TimeSinceDate,\n\n // Lower Priority\n GAReporter,\n ]\n\n static mount() {\n // HACK: Leak variables into global namespace\n // These are required by our legacy desktop JS found in app/assets/javascripts\n window.$ = $\n window.jQuery = $\n window.GAReporter = GAReporter\n }\n\n static initialize() {\n ModalFocus.captureTabEvent()\n }\n}\n","import DesktopPage from 'legacy/pages/DesktopPage'\n\nDesktopPage.register()\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n"],"names":["ComponentLoader","register","this","mount","document","readyState","addEventListener","initialize","childComponents","forEach","component","get","name","value","JSCookies","JSON","parse","set","maxAge","opts","arguments","length","undefined","stringify","toString","remove","AJAX_CONTENT","LOADED","SAVE_SEARCH","REQUEST","SUCCESS","ERROR","STATE_CHANGE","SHOWING_REQUEST","LOGIN","PROPERTY_SAVE","USER","WILL_INTERACT","ModalFocus","captureTabEvent","$","keydown","e","key","$focusableContent","target","closest","find","not","firstFocusableElement","lastFocusableElement","shiftKey","preventDefault","focus","redirectToSignupUrl","signupType","signupPath","getElementById","href","window","location","assign","Accordion","click","event","onToggle","currentTarget","matches","accordion","panel","getAttribute","$accordionBody","addClass","setAttribute","removeClass","Header","on","EstatelyEvents","onLogin","onSearchBarToggleClick","onSitewideHeaderNavigationClick","onSidebarNestedModalClick","onLogoutItemClick","_Header","_defineProperty","$headerNavContent","load","pathname","newContent","trigger","$headerSearch","toggleOpen","is","toggleClass","off","$sidebar","delegateTarget","hasClass","modal","localStorage","removeItem","submit","cityNameCookie","Cookies","cityName","split","replaceAll","each","_","link","currentPrefix","data","text","_index","replace","newHref","attr","Notifications","$notificationsBtn","$notifications","$unreadCircle","notificationsUrl","lazyUpdateNotifications","onSaveSearchFromNotifications","onOpen","dataset","path","requestIdleCallback","updateUnreadCount","one","fetchNotifications","estately","is_user_logged_in","unread","renderUnreadCircle","count","requestAnimationFrame","sessionStorage","setItem","hide","show","_Notifications","async","content","html","post","SaveSearch","onRequest","onSuccess","restoreSaveSearchFromCookie","save","element","formData","modalImport","modalContent","ajax","type","url","processData","contentType","error","normalizeSaveSearchData","FormData","tagName","has","canonicalURL","querySelector","append","authenticateFirst","COOKIE","Object","fromEntries","savedSearchParams","entries","_ref","val","_SaveSearch","requestingElement","default","SaveSearchConfirmationModal","lazyLoad","SaveSearchButton","SaveSearchForm","onSubmit","onError","$form","responseText","seconds","ms","Math","floor","minutes","hours","days","pluralize","singular","timeSinceDate","date","Date","valueOf","TimeSinceDate","querySelectorAll","timestamp","iso8601","listingCreatedAt","trim","textContent","title","toLocaleString","GAReporter","analytics","gtm_data_layer","pushEventToGTM","dataLayer","push","windowOrGlobal","global","callback","setTimeout","start","performance","now","didTimeout","timeRemaining","max","DesktopPage","jQuery","i","source","api","init","converter","defaultAttributes","attributes","expires","toUTCString","encodeURIComponent","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","slice","join","found","read","withAttributes","withConverter","freeze"],"sourceRoot":""}