PageSourceSearch

https://www.propertyloop.co.uk/hubfs/hub_generated/template_assets…/template_pc-autocomplete.min.js

js propertyloop.co.uk collected 2026-10-02 18:42:40 UTC 8,787 bytes, 2 lines download raw bytes

1class PostcoderAutocomplete{constructor(config){this.config=config,this.init()}init=()=>{this.suggestionendpoint="https://ws.postcoder.com/pcw/autocomplete/find?apikey=PCWP5-H7MH8-Q9GS4-JLQZN&addtags=latitude,longitude,udprn,localauthorityname,country",this.retrieveendpoint="https://ws.postcoder.com/pcw/autocomplete/retrieve?apikey=PCWP5-H7MH8-Q9GS4-JLQZN&addtags=latitude,longitude,udprn,localauthorityname,country",this.cache=[],this.suggestionhierarchy=[],this.suggestions=[],this.searchterm="",this.selectedoptiontext="",this.pathfilter="",this.selectedIndex=-1,this.no_results_message="No addresses found",this.inputdelay=300,this.suggestionlist=document.querySelector(this.config.suggestions),this.input=document.querySelector(this.config.searchterm),this.input.setAttribute("type","search"),this.input.setAttribute("autocomplete","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("spellcheck","false"),this.input.addEventListener("input",this.handleInput),this.input.addEventListener("focus",this.handleFocus),this.input.addEventListener("keydown",this.handleKeyDown),this.suggestionlist.addEventListener("click",this.handleSuggestionClick),document.body.addEventListener("click",this.handleDocumentClick),this.addresslines=0;for(let i=1;i<=4;i++)""!==this.config["addressline"+i]&&this.addresslines++};getSuggestions=event=>{if(this.searchterm=encodeURIComponent(this.input.value.trim()),this.searchterm.length<3)return void this.hideSuggestions();let url=this.suggestionendpoint+"&country=uk&query="+this.searchterm;this.pathfilter?url+="&pathfilter="+this.pathfilter:this.selectedoptiontext=this.searchterm;let index=this.cache.findIndex(c=>c.url===url);index>=0?(this.suggestions=this.cache[index].suggestions,this.addSuggestionHierarchy(index),this.showSuggestions()):fetch(url).then(response=>{if(!response.ok)throw response;return response.json()}).then(json=>{this.suggestions=json,this.addCache(url),this.addSuggestionHierarchy(this.cache.length-1),this.showSuggestions()}).catch(err=>{})};addCache=url=>{let obj={};obj.url=url,obj.suggestions=this.suggestions,obj.label=this.selectedoptiontext,this.cache.push(obj)};newSuggestionsReset=()=>{this.hideSuggestions(),this.pathfilter="",this.suggestionlist.scrollTop=0,this.selectedIndex=-1};suggestionsHierarchyReset=()=>{this.suggestionhierarchy=[]};addSuggestionHierarchy=index=>{this.suggestionhierarchy.push(index)};handleSuggestionClick=event=>{event.stopPropagation();let target=event.target;for(;"li"!==target.tagName.toLowerCase();)target=target.parentNode;this.selectSuggestion(target)};selectSuggestion=target=>{this.selectedoptiontext=target.innerHTML,"CACHE"==target.getAttribute("data-type")?(this.suggestions=this.cache[target.getAttribute("data-id")].suggestions,this.suggestionhierarchy.pop(),this.showSuggestions()):"ADD"==target.getAttribute("data-type")?this.retrieve(target.getAttribute("data-id")):(this.pathfilter=target.getAttribute("data-id"),this.getSuggestions())};retrieve=id=>{var url=this.retrieveendpoint+"&country=uk&query="+this.searchterm+"&id="+id+"&lines="+this.addresslines+"&exclude=organisation,country";fetch(url).then(response=>{if(!response.ok)throw response;return response.json()}).then(addresses=>{this.cache[url]=addresses[0],this.processResult(addresses[0])}).catch(err=>{"function"==typeof err.text?err.text().then(errorMessage=>{}):console.log(err)})};showSuggestions=()=>{if(this.newSuggestionsReset(),0===this.suggestions.length){let option=document.createElement("li");option.innerHTML=this.no_results_message,this.suggestionlist.appendChild(option)}else{if(this.suggestionhierarchy.length>1){let cacheid=this.suggestionhierarchy[this.suggestionhierarchy.length-2],option=document.createElement("li");option.classList.add("header"),option.innerHTML='<i class="arrow left"></i> '+unescape(this.cache[cacheid].label),option.setAttribute("data-id",cacheid),option.setAttribute("data-type","CACHE"),this.suggestionlist.appendChild(option)}for(let i=0;i<this.suggestions.length;i++){let option=document.createElement("li"),suggestiontext=this.suggestions[i].summaryline+' <span class="location">'+this.suggestions[i].locationsummary+"</span>";if(this.suggestions[i].count>
11){suggestiontext+=' <span class="count">('+(this.suggestions[i].count>100?"100+":this.suggestions[i].count)+" addresses)</span>"}option.innerHTML=suggestiontext,option.setAttribute("data-id",this.suggestions[i].id),option.setAttribute("data-type",this.suggestions[i].type),this.suggestionlist.appendChild(option)}}};getCountry=()=>void 0!==this.config.countrycode&&""!==this.config.countrycode?this.config.countrycode:document.querySelector(this.config.country).value;processResult=address=>{address.organisation&&address.organisation;let formattedAddress=address.summaryline?address.summaryline:"",addressline1="",addressline2="",addressline3="",addressline4="",lat=address.latitude?address.latitude:"",longitude=address.longitude?address.longitude:"",deliverypoint=address.uniquedeliverypointreferencenumber?address.uniquedeliverypointreferencenumber:"",streets=address.street?address.street:"",posttown=address.posttown?address.posttown:"",postcode=address.postcode?address.postcode:"",county=address.county?address.county:"",country=address.country?address.country:"UK",authorityname=address.localauthorityname?address.localauthorityname:"";address.addressline4?(addressline1=address.addressline1,addressline2=address.addressline2||"",addressline3=address.addressline3||"",addressline4=address.addressline4):address.addressline3?(addressline1=address.addressline1,addressline2=address.addressline2||"",addressline3=address.addressline3):address.addressline2?(addressline1=address.addressline1,addressline3=address.addressline2):addressline3=address.addressline1;let encodedtxt=window.btoa('["Address"]');this.hideSuggestions(),$(this.config.searchterm).val(address.summaryline);let fields=["posttown","postcode"];var addressss="";for(let i=0;i<fields.length;i++){let field_selector=this.config[fields[i]];addressss=addressss+","+(void 0!==address[fields[i]])?address[fields[i]]:"",void 0!==field_selector&&""!==field_selector&&(document.querySelector(field_selector).value=void 0!==address[fields[i]]?address[fields[i]]:"")}var redirectToURL=this.config.redirectToURL,redirectURLPath=this.config.redirectURLPath;if("undefined"!==redirectToURL&&0!==redirectToURL&&""!=redirectURLPath&&null!=redirectURLPath){var encodedata=btoa(JSON.stringify({address_1:addressline1,address_2:addressline2,address_3:addressline3,address_4:addressline4,formatted_address:formattedAddress,longitude:longitude,latitude:lat,udprn:deliverypoint,town_city:posttown,postcode:postcode,county:county,street:streets,country:country,locality:authorityname}));const decodedData=atob(encodedata);console.log(decodedData),window.location.href="https://valuation.propertyloop.co.uk/home?previousSteps="+encodedtxt+"&step=PropertyType&Address="+encodedata}};handleDocumentClick=event=>{this.suggestionlist.contains(event.target)||this.input.contains(event.target)||this.hideSuggestions()};hideSuggestions=()=>{this.suggestionlist.innerHTML=""};handleKeyDown=event=>{const{key:key}=event;switch(key){case"Up":case"Down":case"ArrowUp":case"ArrowDown":{const selectedIndex="ArrowUp"===key||"Up"===key?this.selectedIndex-1:this.selectedIndex+1;event.preventDefault(),this.handleArrows(selectedIndex);break}case"Tab":this.handleTab(event);break;case"Enter":this.selectSuggestion(this.suggestionlist.querySelectorAll("li")[this.selectedIndex]);break;case"Esc":case"Escape":this.hideSuggestions(),this.setValue();break;default:return}};handleArrows=selectedIndex=>{let suggestionsCount=this.suggestions.length;this.suggestionhierarchy.length>1&&suggestionsCount++,this.suggestionlist.querySelectorAll("li").length>0&&(this.selectedIndex>=0&&this.suggestionlist.querySelectorAll("li")[this.selectedIndex].classList.remove("selected"),this.selectedIndex=(selectedIndex%suggestionsCount+suggestionsCount)%suggestionsCount,this.suggestionlist.querySelectorAll("li")[this.selectedIndex].classList.add("selected"),this.suggestionlist.querySelectorAll("li")[this.selectedIndex].scrollIntoView(!1))};handleTab=event=>{this.selectedIndex>=0?(event.preventDefault(),this.selectSuggestion(this.suggestionlist.querySelectorAll("li")[this.selectedIndex])):this.hideSuggestions()};handleInput=()=>{this.suggestionsHierarchyReset(),clearTimeout(this.debounce),this.debounce=setTimeout(()=>this.getSuggestions(),this.inputdelay)};handleFocus=()=>{this.suggestions.length>0?this.showSuggestions():this.getSuggestions()}}
2//# sourceURL=https://7623753.fs1.hubspotusercontent-na1.net/hubfs/7623753/hub_generated/template_assets/1/93626500946/1763045579246/template_pc-autocomplete.js

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.