{"version":3,"sources":["dbs.property.ts"],"names":["DBS","_super","mapElement","map","initialZoom","slider","targetWidth","slideMargin","MarkerWithPopup","placeMarkers","sections","sectionNavs","generateOptions","currentSlide","minSlides","maxSlides","moveSlides","slideWidth","wrap","document","getElementById","count","Math","round","clientWidth","floor","determineSlideWidth","auto","autoStart","pause","pager","startSlide","prevText","nextText","resizeSlider","getCurrentSlide","destroySlider","$","bxSlider","findMapCenterAndZoom","bounds","google","maps","LatLngBounds","forEach","value","extend","getPosition","event","addListener","zoomChangeBoundsListener","this","getZoom","setZoom","removeListener","fitBounds","toggleSection","ev","preventDefault","source","currentTarget","link","href","substring","lastIndexOf","i","length","parentElement","classList","remove","section","id","add","trigger","sv","getStreetView","position","LatLng","parseFloat","dataset","setPosition","setPov","heading","pitch","setVisible","Property","Marker","__extends","Array","Initialize","point","marker","window","addEventListener","Map","zoom","mapTypeId","MapTypeId","ROADMAP","title","titleElements","getElementsByTagName","innerText","push","toggleSections","children","child","toggleLinks","colorbox","maxWidth","maxHeight","rel","previous","next","close","data"],"mappings":"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","file":"dbs.property.js","sourcesContent":["/// \r\n/// \r\n/// \r\n/// \r\n\r\n\"use strict\";\r\n\r\nmodule DBS.Property\r\n{\r\n const targetWidth = 640;\r\n const slideMargin = 20;\r\n\r\n class MarkerWithPopup extends google.maps.Marker\r\n {\r\n html: string;\r\n }\r\n\r\n let mapElement: HTMLElement;\r\n\r\n let map: google.maps.Map;\r\n let infoWindow: google.maps.InfoWindow;\r\n let initialZoom: boolean;\r\n\r\n let slider: bxSlider;\r\n\r\n let placeMarkers = new Array();\r\n let sections = new Array();\r\n let sectionNavs = new Array();\r\n\r\n function determineSlideWidth(): number\r\n {\r\n const wrap = document.getElementById(\"property-slider\") as HTMLElement;\r\n if (wrap == null)\r\n {\r\n return 0;\r\n }\r\n\r\n const count = Math.round(wrap.clientWidth / targetWidth);\r\n const width = Math.floor((wrap.clientWidth - (slideMargin * (count - 1))) / count);\r\n return width;\r\n }\r\n\r\n function generateOptions(currentSlide: number = 0): bxSliderOptions\r\n {\r\n return {\r\n slideMargin: slideMargin,\r\n minSlides: 1,\r\n maxSlides: 4,\r\n moveSlides: 1,\r\n slideWidth: determineSlideWidth(),\r\n auto: true,\r\n autoStart: true,\r\n pause: 4000,\r\n pager: false,\r\n startSlide: currentSlide,\r\n prevText: \"\\uf100\",\r\n nextText: \"\\uf101\"\r\n };\r\n }\r\n\r\n function resizeSlider()\r\n {\r\n if (slider == null)\r\n {\r\n return;\r\n }\r\n\r\n const currentSlide = slider.getCurrentSlide();\r\n slider.destroySlider();\r\n\r\n slider = $(\"#property-slider .bxslider\").bxSlider(generateOptions(currentSlide));\r\n }\r\n\r\n function findMapCenterAndZoom(): void\r\n {\r\n if (map == null)\r\n {\r\n return;\r\n }\r\n\r\n const bounds = new google.maps.LatLngBounds();\r\n placeMarkers.forEach((value: google.maps.Marker) =>\r\n {\r\n bounds.extend(value.getPosition());\r\n });\r\n\r\n google.maps.event.addListener(map, \"zoom_changed\", () =>\r\n {\r\n const zoomChangeBoundsListener = google.maps.event.addListener(map, \"bounds_changed\", function()\r\n {\r\n if (this.getZoom() > 16 && initialZoom)\r\n {\r\n // Change max/min zoom here\r\n this.setZoom(16);\r\n initialZoom = false;\r\n }\r\n google.maps.event.removeListener(zoomChangeBoundsListener);\r\n });\r\n });\r\n\r\n initialZoom = true;\r\n map.fitBounds(bounds);\r\n }\r\n\r\n function toggleSection(ev: Event)\r\n {\r\n ev.preventDefault();\r\n\r\n const source = ev.currentTarget as HTMLAnchorElement;\r\n const link = source.href.substring(source.href.lastIndexOf(\"#\") + 1);\r\n\r\n for (let i = 0; i < sectionNavs.length; i++)\r\n {\r\n sectionNavs[i].parentElement.classList.remove(\"active\");\r\n }\r\n\r\n for (let i = 0; i < sections.length; i++)\r\n {\r\n const section = sections[i];\r\n\r\n if (section.id === link)\r\n {\r\n section.classList.add(\"in\");\r\n }\r\n else\r\n {\r\n section.classList.remove(\"in\");\r\n }\r\n }\r\n\r\n source.parentElement.classList.add(\"active\");\r\n\r\n if (link === \"property-map\")\r\n {\r\n // trigger a redraw which is necessary for a map which was loaded invisibly\r\n google.maps.event.trigger(map, \"resize\");\r\n findMapCenterAndZoom();\r\n\r\n const sv = map.getStreetView();\r\n if (source.id === \"toggle-sv\")\r\n {\r\n const position = new google.maps.LatLng(parseFloat(mapElement.dataset[\"povLat\"]), parseFloat(mapElement.dataset[\"povLng\"]));\r\n sv.setPosition(position);\r\n\r\n sv.setPov({\r\n heading: parseFloat(mapElement.dataset[\"povHdg\"]),\r\n pitch: parseFloat(mapElement.dataset[\"povPth\"])\r\n });\r\n\r\n sv.setZoom(parseFloat(mapElement.dataset[\"povZom\"]));\r\n\r\n sv.setVisible(true);\r\n }\r\n else\r\n {\r\n sv.setVisible(false);\r\n }\r\n }\r\n }\r\n\r\n export function Initialize()\r\n {\r\n slider = $(\"#property-slider .bxslider\").bxSlider(generateOptions($(\"#property-slider .slide\").length - 1));\r\n window.addEventListener(\"resize\", resizeSlider);\r\n\r\n mapElement = document.getElementById(\"property-map\");\r\n if (mapElement !== null)\r\n {\r\n map = new google.maps.Map(mapElement, {\r\n zoom: 16,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP\r\n });\r\n\r\n const titleElements = document.getElementsByTagName(\"h1\");\r\n const title = titleElements.length > 0\r\n ? (titleElements[0] as HTMLHeadingElement).innerText\r\n : \"\";\r\n const point = new google.maps.LatLng(parseFloat(mapElement.dataset[\"mapLat\"]), parseFloat(mapElement.dataset[\"mapLng\"]));\r\n\r\n const marker = new MarkerWithPopup({\r\n map: map,\r\n position: point,\r\n title: title\r\n });\r\n\r\n placeMarkers.push(marker);\r\n\r\n findMapCenterAndZoom();\r\n }\r\n\r\n const toggleSections = document.getElementById(\"toggle-sections\");\r\n for (let i = 0; i < toggleSections.children.length; i++)\r\n {\r\n const child = toggleSections.children[i] as HTMLElement;\r\n sections.push(child);\r\n }\r\n\r\n const toggleLinks = document.getElementById(\"search-navigation-options\").getElementsByTagName(\"a\");\r\n for (let i = 0; i < toggleLinks.length; i++)\r\n {\r\n const link = toggleLinks[i];\r\n link.addEventListener(\"click\", toggleSection);\r\n sectionNavs.push(link);\r\n }\r\n\r\n $(\"#property-slider .slide\").colorbox({\r\n maxWidth: \"85%\",\r\n maxHeight: \"85%\",\r\n rel: \"slide\",\r\n previous: \"\",\r\n next: \"\",\r\n close: \"\",\r\n href: function()\r\n {\r\n return $(this).data(\"url\");\r\n }\r\n });\r\n }\r\n}\r\n\r\nwindow.addEventListener(\"load\", DBS.Property.Initialize);"]}