{"version":3,"file":"index-CCFHrb1M.js","sources":["../../../app/assets/javascripts/concepts/shared/copyable_url_box/index.ts","../../../app/assets/javascripts/apps/spacious_website/pages/listings/single_listing_details_page/desktop_ver/components/section_navbar/index.ts","../../../app/assets/javascripts/apps/spacious_website/pages/listings/single_listing_details_page/desktop_ver/below_the_fold_section/index.ts","../../../app/assets/javascripts/apps/spacious_website/pages/listings/single_listing_details_page/desktop_ver/index.ts"],"sourcesContent":["\n\nimport {\n CopyBtn,\n} from \"components/buttons/copy_btn\"\nimport $ from \"jquery\"\nimport Notifier from \"app/notifier\"\n\n\nimport I18n from \"plugins/i18n-js\"\n\n\ninterface InputSelector {\n scope?: string\n button?: string\n}\nconst default_selector = {\n scope: \"body\",\n button: \".cell--shared--copyable-url-box .cell--shared--copyable-url-box__zeroclipboard-button\",\n}\n\n\nclass CopyUrlButtonBluePrint extends CopyBtn {\n constructor(selector?: InputSelector){\n const merged_selector = Object.assign({}, default_selector, selector)\n super(merged_selector)\n }\n\n protected onSuccess(e: ClipboardJS.Event){\n Notifier.showSuccess(I18n.t(\"js.app.notifier.listings.url_copied\"), 3000)\n super.onSuccess(e)\n }\n}\n\nconst Factory = {\n create(selector?: InputSelector){\n const tmp = Object.assign({}, default_selector, selector)\n const btns = $(tmp.scope).find(tmp.button)\n return btns.map((idx, el) => {\n return new CopyUrlButtonBluePrint(Object.assign(tmp, {button: el}))\n })\n },\n}\n\nexport {\n Factory as default,\n Factory,\n}\n","\nimport $ from \"jquery\"\nimport Waypoint from \"plugins/waypoint\"\n\n\nconst $navbar = $(\".page--single-listings-detail-page--main-section__main__section--navbar\")\nconst $list_items = $navbar.find(\".navbar-item-list li\")\nconst $side_menu = $(\".page--single-listings-detail-page--main-section__side--main\")\nconst $navbar_box = $(\".page--single-listings-detail-page--main-section__main__section--navbar--background\")\n\n// check whether this listing is commercial or not\nconst is_commercial = $(\"body\").hasClass(\"page-property-type-is-commercial\")\n\nlet click_flag = false\n\nconst init = (): void => {\n initializeStickyNavbar()\n initializeScrollspyNavbar()\n}\n\n// Maybe this can be extracted later,\n// or remain as page specific code\n//\n// Not sure `js-fixed` can be renamed\nfunction initializeStickyNavbar() {\n\n const $window = $(window)\n\n const target_offset = $(\".page--single-listings-detail-page--main-section__main__section-address-heading\").offset()?.top || 0\n\n $(window).scroll(() => {\n\n if ( ($window.scrollTop() || 0) > target_offset && ($window.scrollTop() || 0) < parseFloat($(\".main-container\").css(\"height\"))) {\n if (!is_commercial) {\n $side_menu.addClass(\"show-navbar\")\n }\n\n if (!$navbar.hasClass(\"js-fixed\")) {\n $navbar.addClass(\"js-fixed\")\n\n $navbar.css(\"position\", \"fixed\")\n $navbar.css(\"top\", 0)\n\n $navbar_box.css(\"position\", \"fixed\")\n $navbar_box.css(\"top\", 0)\n\n // Extra Animation\n $navbar.hide()\n $navbar.slideDown()\n\n $navbar_box.hide()\n $navbar_box.slideDown()\n }\n }\n else {\n if (!is_commercial) {\n $side_menu.removeClass(\"show-navbar\")\n }\n\n if (click_flag) {\n const carousel_offset = $(\".page--single-listings-detail-page--main-section__main__carousel\").offset()?.top || 0\n\n if ($navbar.hasClass(\"js-fixed\") && ($window.scrollTop() || 0) < carousel_offset) {\n $navbar.removeClass(\"js-fixed\")\n\n $navbar_box.slideUp({easing: \"linear\"})\n $navbar.slideUp({easing: \"linear\"})\n }\n }\n else {\n if ($navbar.hasClass(\"js-fixed\")) {\n $navbar.removeClass(\"js-fixed\")\n\n $navbar_box.slideUp({easing: \"linear\"})\n $navbar.slideUp({easing: \"linear\"})\n }\n }\n\n click_flag = false\n }\n })\n}\n\nfunction initializeScrollspyNavbar() {\n let previous = \"\"\n\n $list_items.find(\"> a\").each((_idx, el) => {\n const $this = $(el)\n\n const $target = $($this.attr(\"href\") as string)\n\n if ($target.offset() != null) {\n $(el).parent(\"li\").css(\"display\",\"block\")\n\n const current = (el.attributes.getNamedItem(\"href\")?.textContent) as string\n if (previous !== \"\") {\n create_waypoint_object(current, previous, 25)\n }\n\n previous = current\n\n $(el).on(\"click\", () => {\n $(\"html, body\").animate({\n scrollTop: Math.floor($target.offset()?.top || 0) - 64,\n }, 500);\n\n // special case handling for clicking navbar item to visit corresponding section within same page\n click_flag = true\n })\n }\n })\n}\n\nfunction create_waypoint_object(current_element: string, previous_element: string, offset_precentage_number: number){\n new Waypoint({\n element: document.querySelector(current_element) as HTMLElement,\n handler: (direction: string) => {\n $list_items.removeClass(\"active\")\n if (direction === \"down\") {\n // enter current section\n $list_items.find(\"> a\").each((_idx, el) => {\n if (el.attributes.getNamedItem(\"href\")?.textContent === current_element) {\n $(el).parent(\"li\").addClass(\"active\")\n }\n })\n }\n else {\n // leave current section\n $list_items.find(\"> a\").each((_idx, el) => {\n if (el.attributes.getNamedItem(\"href\")?.textContent === previous_element) {\n $(el).parent(\"li\").addClass(\"active\")\n }\n })\n }\n },\n offset: offset_precentage_number.toString() + \"%\",\n });\n}\n\n\nexport default {\n init: init,\n}\n","\nimport u from \"umbrellajs\"\n\nimport q_ajax_3 from \"app/utils/q_ajax/q_ajax_3\"\n\n\nimport I18n from \"plugins/i18n-js\"\nimport * as Routes from \"plugins/js-routes\"\n\n\nconst load_content = (listing_id: string) => {\n return q_ajax_3({\n url: Routes.single_listing_details_page__below_the_fold_page_content_path({\n locale: I18n.locale,\n listing_id: listing_id,\n }),\n type: \"GET\",\n dataType: \"html\",\n })\n}\n\nconst load_and_inject_content = (listing_id: string) => {\n return load_content(listing_id)\n .then(({data}) => {\n u(\"#page-section--below-the-fold\").html(data)\n })\n}\n\nexport {\n load_and_inject_content,\n}\n","\n// region JS Imports\n\n// region External Modules\nimport $ from \"jquery\"\nimport on_domready from \"domready\"\nimport I18n from \"plugins/i18n-js\"\n// endregion External Modules\n\n// Private Modules\nimport DataRetriever from \"app/data_retriever\"\nimport {q_ajax_3} from \"app/utils/q_ajax/q_ajax_3\"\nimport WaitObjectByPathPromise from \"app/wait_object_by_path_promise\"\nimport {\n performance,\n} from \"plugins/user-timing-polyfill\"\nimport ImageLazyLoading from \"widgets/image_lazyloading\"\n// Private Modules\n\n// region Public Components\nimport {\n init as listing_shortlist_button_init,\n} from \"concepts/listings/listing_shortlist_button/index\"\nimport Contact_Modal from \"concepts/listings/contact/request/modal\"\nimport FloorPlanImagesCarousel from \"concepts/floor_plan/images/carousel/index\"\nimport CitiesPublicTransportInfoTable from \"concepts/cities/public_transport/info/index\"\nimport Listings_Carousel from \"concepts/listings/carousel\"\nimport Listings_PropertySummary_Box_SometimesCollapsedStyle from \"concepts/listings/property_summary/box/sometimes_collapsed_style/index\"\nimport * as RealEstate_Mortgages_Calculator from \"concepts/real_estate/mortgages/calculator/calculator\"\nimport BannerAdvertisements from \"concepts/listings/banner/advertisements/index\"\nimport CopyableURLBoxFactory from \"concepts/shared/copyable_url_box/index\"\nimport {\n default as Buildings_Following_Modal,\n FollowTypes as BuildingFollowTypes,\n} from \"concepts/buildings/following/modal/index\"\n\nimport TransactionAnalytics from \"concepts/neighbourhoods/market_data_overview/index\"\n// endregion Public Components\n\n// region Private Components\nimport Listings_MainSection from \"apps/spacious_website/pages/listings/single_listing_details_page/components/main_section/index\"\n\nimport section_navbar from \"./components/section_navbar/index\"\n\nimport {\n load_and_inject_content as load_and_inject_below_the_fold_section,\n} from \"./below_the_fold_section\"\n// endregion Private Components\n\n// endregion JS Imports\n\n\nconst init = () => {\n Listings_Carousel.init()\n Listings_MainSection.init()\n\n listing_shortlist_button_init().done()\n\n CopyableURLBoxFactory.create()\n\n if (DataRetriever.get(\"should-show-follow-prompt\")) {\n Buildings_Following_Modal.show(\n DataRetriever.get(\"is-commercial\") === true ?\n BuildingFollowTypes.COMMERCIAL :\n BuildingFollowTypes.RESIDENTIAL,\n )\n }\n\n const queryString = window.location.search\n const urlParams = new URLSearchParams(queryString)\n\n if (urlParams.get(\"show_contact_modal\")) {\n showContactModal()\n }\n\n on_domready(() => {\n const listing_id = DataRetriever.get(\"listing-id\")\n\n performance.mark(\"spacious_mark__load_and_inject_below_the_fold_section__start\")\n load_and_inject_below_the_fold_section(listing_id)\n .then(() => {\n performance.mark(\"spacious_mark__load_and_inject_below_the_fold_section__end\")\n performance.measure(\n \"spacious_measure__load_and_inject_below_the_fold_section\",\n \"spacious_mark__load_and_inject_below_the_fold_section__start\",\n \"spacious_mark__load_and_inject_below_the_fold_section__end\",\n )\n\n performance.mark(\"spacious_mark__below_the_fold_section_init__start\")\n\n ImageLazyLoading.default_lazyload_instance().update()\n BannerAdvertisements.init()\n\n WaitObjectByPathPromise(\"window._spacious_main_css_loaded\")\n .then(() => {\n $(\".page-section-title-bar__arrow\").on(\"click\", (e) => {\n const $this = $(e.currentTarget)\n $this.parents(\".page-section\").toggleClass(\"hide-content\")\n })\n\n section_navbar.init()\n\n FloorPlanImagesCarousel.init()\n TransactionAnalytics.init().done()\n RealEstate_Mortgages_Calculator.init_async().done()\n CitiesPublicTransportInfoTable.init()\n Listings_PropertySummary_Box_SometimesCollapsedStyle\n .init_with_promise().done()\n })\n .done()\n })\n })\n}\n\nfunction showContactModal() {\n const listing_id = DataRetriever.get(\"listing-id\")\n\n q_ajax_3({\n url: `/${I18n.locale}/listings/${listing_id}/contact_request`,\n method: \"GET\",\n dataType: \"html\",\n })\n .then(({data}) => {\n return Contact_Modal.loadAndShowModal(data)\n })\n .done()\n}\n\n\nexport default {\n init,\n}\n"],"names":["default_selector","CopyUrlButtonBluePrint","CopyBtn","selector","merged_selector","e","Notifier","I18n","Factory","tmp","$","idx","el","$navbar","$list_items","$side_menu","$navbar_box","is_commercial","click_flag","init","initializeStickyNavbar","initializeScrollspyNavbar","$window","target_offset","_a","carousel_offset","previous","_idx","$this","$target","current","create_waypoint_object","current_element","previous_element","offset_precentage_number","Waypoint","direction","section_navbar","load_content","listing_id","q_ajax_3","Routes.single_listing_details_page__below_the_fold_page_content_path","load_and_inject_content","data","u","Listings_Carousel","Listings_MainSection","listing_shortlist_button_init","CopyableURLBoxFactory","DataRetriever","Buildings_Following_Modal","BuildingFollowTypes","queryString","showContactModal","on_domready","performance","load_and_inject_below_the_fold_section","ImageLazyLoading","BannerAdvertisements","WaitObjectByPathPromise","FloorPlanImagesCarousel","TransactionAnalytics","RealEstate_Mortgages_Calculator.init_async","CitiesPublicTransportInfoTable","Listings_PropertySummary_Box_SometimesCollapsedStyle","Contact_Modal","index"],"mappings":"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"}