class SimplyComplete{constructor(n){this.settings=Object.assign({baseUrl:"https://api.simplylookupadmin.co.uk/",ak:"",options:"",hl:"",userid:"",maxlistsize:20,pht:"",iis:"",is:[],loadingSpinnerId:[]},n);this.selectedIndex=-1;this.currentSuggestions=[];this.typingTimeout=null;this.finishWord="";this.queryID=0;this.init()}init(){this.settings.options.includes("Z")&&(this.settings.baseUrl="https://localhost:7269/");this.injectButton();this.setupInputs();this.injectSuggestionBox()}setupInputs(){let n=[];if(this.settings.is.forEach((t,i)=>{const u=t.replace("^",""),r=document.getElementById(u);if(!r){n.push(u);return}if(r.dataset.inputid=i+1,r.dataset.overwrite=!t.endsWith("^"),r.dataset.spinnerId=this.settings.loadingSpinnerId[i],this.settings.pht!=""&&(r.placeholder=this.settings.pht),r.addEventListener("focus",n=>this.onFocus(n)),r.addEventListener("blur",()=>this.onBlur()),r.addEventListener("input",n=>this.onInputChange(n)),r.addEventListener("keydown",n=>this.onKeyDown(n)),r.addEventListener("touchstart",n=>this.onFocus(n)),r.addEventListener("touchend",()=>this.onBlur()),r.classList.add("simplycomplete"),this.settings.sbe==1){var f=document.createElement("style");f.innerHTML=this.simpStyle;document.head.appendChild(f)}}),n.length>0){let t="Invalid field names: "+n.join(", ");this.ShowErrorMessage(t)}}ShowErrorMessage(n){let t=document.createElement("div");t.id="simplyassistcontainer";t.style.position="fixed";t.style.bottom="10px";t.style.right="10px";t.style.width="240px";t.style.padding="20px";t.style.backgroundColor="#FFFFFF";t.style.borderRadius="10px";t.style.border="2px solid #007BFF";t.style.boxShadow="0 8px 16px rgba(0, 0, 0, 0.2)";t.style.zIndex="900";let i=document.createElement("h3");i.innerHTML="SimplyCompleteAI - Error";i.style.margin="0 0 15px 0";i.style.fontSize="13px";i.style.color="#333";t.appendChild(i);let r=document.createElement("h3");r.innerHTML=n;r.style.margin="0 0 15px 0";r.style.fontSize="11px";r.style.color="red";t.appendChild(r);document.body.appendChild(t)}injectSuggestionBox(){const n=document.createElement("div");n.classList.add("simplysuggestions");n.id="simplysuggestions";document.body.appendChild(n)}async fetchWords(n,t){this.settings.userid==""&&(this.settings.userid=this.generateGuid());var r=this.settings.options;this.queryID++;const u=`${this.settings.baseUrl}v3/simplycomplete?apiKey=${this.settings.ak}&query=${n}&queryid=${this.queryID}&userid=${this.settings.userid}&options=${r}&listsize=${this.settings.maxlistsize}&inputid=${t}&custID=${""}`,i=await fetch(u);return i.ok?await i.json():(console.error("Error fetching words"),[])}generateGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){const t=Math.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)})}onFocus(n){console.log("onFocus");const i=n.target,t=document.getElementById("simplysuggestions");t.innerHTML="";const r=n.target.value;this.positionSuggestionsBox(i);r===""&&(this.addInstruction(t),t.style.display="block")}onBlur(){const n=document.getElementById("simplysuggestions");setTimeout(()=>{n.style.display="none"},300)}addInstruction(n){if(this.settings.iis!==""){const t=document.createElement("div");t.classList.add("simplysuggestion-item","simplyinstructions","bg-light","p-2");t.innerHTML=this.settings.iis;t.style.cursor="default";n.appendChild(t)}}positionSuggestionsBox(n){const t=document.getElementById("simplysuggestions"),i=n.getBoundingClientRect();t.style.top=`${i.bottom+window.scrollY}px`;t.style.left=`${i.left+window.scrollX}px`;t.style.width=`${i.width}px`}async onInputChange(n){const t=n.target.dataset.inputid;clearTimeout(this.typingTimeout);const i=n.target.value,r=document.getElementById("simplysuggestions");this.typingTimeout=setTimeout(async()=>{if(i.length===0){this.clearSuggestions();this.addInstruction(r);r.style.display="block";return}this.selectedIndex=-1;const n=await this.fetchWords(i,t);this.queryID==n.queryid&&(this.currentSuggestions=n.results,n.instructions!==undefined&&n.instructions!==""&&(this.settings.iis=n.instructions),this.finishWord=n.finishword||"",this.showSuggestions(n,t))},300);this.positionSuggestionsBox(n.target)}showSuggestions(n,t){const i=document.getElementById("simplysuggestions");i.innerHTML="";n.results.length>0||this.finishWord?(i.style.display="block",this.addInstruction(i),n.results.forEach((n,r)=>{const u=document.createElement("div");u.classList.add("simplysuggestion-item","p-2","border-bottom");u.innerHTML=n.Line;u.dataset.addressId=n.ID;u.dataset.index=r;u.addEventListener("click",async()=>{this.selectSuggestion(n,t)});u.addEventListener("touchstart",async()=>{this.selectSuggestion(n,t)});i.appendChild(u)})):i.style.display="none"}appendFinishWord(n){const t=document.querySelector(`[data-inputid="${n}"]`);if(this.finishWord==="_FIRST"&&this.currentSuggestions.length>0)this.selectSuggestion(this.currentSuggestions[0],n);else{t.value+=this.finishWord+" ";this.clearSuggestions();this.onInputChange({target:t})}}async fetchAddressDetails(n){var i=this.settings.hl;const r=`${this.settings.baseUrl}v3/getselection?apiKey=${this.settings.ak}&addressid=${n}&userid=${this.settings.userid}&homelocation=${i}&custID=${""}`,t=await fetch(r);return t.ok?await t.json():(console.error("Error fetching address details"),{})}clearSuggestions(){const n=document.getElementById("simplysuggestions");n&&(n.innerHTML="",n.style.display="none")}async selectSuggestion(n,t){const i=document.querySelector(`[data-inputid="${t}"]`),u=i.dataset.spinnerId;i.dataset.overwrite==="true"&&(i.value=n.Line.replace(//g,"").replace(/<\/b>/g,""));this.clearSuggestions();const r=await this.fetchAddressDetails(n.ID);this.PAD(r,t);i.dataset.selected=!0}showLoadingSpinner(n,t){const i=document.getElementById(t);i.style.display=n?"inline-block":"none"}onKeyDown(n){const i=n.target.dataset.inputid,r=document.getElementById("simplysuggestions"),t=r.getElementsByClassName("simplysuggestion-item");if(n.key==="ArrowDown")this.selectedIndex=(this.selectedIndex+1)%t.length,this.selectedIndex===0&&(this.selectedIndex=1),this.highlightSuggestion(t,this.selectedIndex);else if(n.key==="ArrowUp")this.selectedIndex=(this.selectedIndex-1+t.length)%t.length,this.selectedIndex===0&&(this.selectedIndex=t.length-1),this.highlightSuggestion(t,this.selectedIndex);else if(n.key==="Enter"){if(this.selectedIndex>0&&this.selectedIndex0&&t