PageSourceSearch

https://www.med24.dk/resources/compiled/js/1790858116/med24/modules/search-suggestions.js?c=1EJ-e4

js med24.dk collected 2026-10-02 12:09:44 UTC 5,822 bytes, 2 lines download raw bytes

1import Template from"template";import getTailwindDevice from"get-tailwind-device";import trackSiteSearch from"search-tracking";const searchSuggestions=()=>{var lastMillis=null;const getRelativeMillis=()=>{var currentMillis=(new Date).getTime(),offset="+"+(currentMillis-(lastMillis=null===lastMillis?currentMillis:lastMillis));return lastMillis=currentMillis,offset};var debug=!1;window.enableSuggestionDebugging=enable=>{debug=enable||!0};var queryElements=document.querySelectorAll('form.mainSearch input[name="query"]'),suggestionTexts=[],suggestionTextIndex=0,lastPerformedSuggestionQuery="";var disableEventHandlerOnce=!1;queryElements.forEach((queryElement,index)=>{["keyup","change","focus"].forEach(eventName=>{queryElement.addEventListener(eventName,event=>{var input=event.target,form=input.parentNode.closest("form.mainSearch"),suggestionShown=form.parentNode.querySelector("div.searchSuggestions");disableEventHandlerOnce?disableEventHandlerOnce=!1:("focus"===event.type&&(lastPerformedSuggestionQuery=""),2<=(event=input.value).trim().length?(async(form,suggestionShown,query)=>{if(lastPerformedSuggestionQuery!==query){lastPerformedSuggestionQuery=query;debug&&console.log("Load suggestions for: "+query+" ("+getRelativeMillis()+")");var response=await fetch("/searchSuggestions",{method:"POST",credentials:"same-origin",headers:{Accept:"application/json"},body:new URLSearchParams({term:query})}),engineUsed=response.headers.get("X-Search-Engine")||"unknown",response=await response.json();if(!("number"==typeof response.status&&response.status<0)){(suggestionTexts=[]).push(query),suggestionTextIndex=0;const suggestionContainer=new Template("suggestionContainer").compile();response.forEach((suggestion,index)=>{suggestion.index=index;var suggestionRow=new Template("suggestionRow").compile(suggestion);suggestionRow.addEventListener("click",event=>{suggestionTextIndex=index+1;var submitEvent=new Event("submit",{cancelable:!0});form.dispatchEvent(submitEvent)}),suggestionContainer.appendChild(suggestionRow),""===suggestion.value&&(suggestion.value=query),suggestionTexts.push(suggestion.value)});null!==(suggestionShown=form.parentNode.querySelector("div.searchSuggestions"))&&(debug&&console.log("Remove old overlay to add new"),suggestionShown.remove()),0<response.length?(form.parentNode.insertBefore(suggestionContainer,form.nextSibling),debug&&console.log("Suggestions loaded for "+query+" ("+getRelativeMillis()+")")):debug&&console.log("Suggestion load skipped; no suggestions");suggestionShown=response.filter(suggestion=>"string"==typeof suggestion.classes&&-1!==suggestion.classes.indexOf("product")).length;trackSiteSearch(query,engineUsed,suggestionShown)}}})(form,suggestionShown,event):null!==suggestionShown&&(debug&&console.log("Query too short: Remove overlay"),suggestionShown.remove()))})}),queryElement.addEventListener("blur",event=>{const suggestionShown=event.target.parentNode.closest("form.mainSearch").parentNode.querySelector("div.searchSuggestions");debug&&console.log("Event: blur ("+getRelativeMillis()+")"),null!==suggestionShown&&setTimeout(()=>{debug&&console.log("Delayed blur: Remove overlay ("+getRelativeMillis()+")"),suggestionShown.remove()},800)}),queryElement.addEventListener("keydown",event=>{var input=event.target,suggestionShown=input.parentNode.closest("form.mainSearch").parentNode.querySelector("div.searchSuggestions"),pressed=event.keyCode;const keyCodes_escape=27,keyCodes_up=38,keyCodes_down=40;if(pressed===keyCodes_down){debug&&console.log("Arrow Down"),event.preventDefault(),++suggestionTextIndex>suggestionTexts.length-1&&(suggestionTextIndex=0),disableEventHandlerOnce=!0;for(const suggestion of suggestionShown.querySelectorAll(".highlighted"))suggestion.classList.remove("highlighted");0<suggestionTextIndex&&suggestionShown.children[suggestionTextIndex-1].classList.add("highlighted"),input.value=suggestionTexts[suggestionTextIndex]}else if(pressed===keyCodes_up){debug&&console.log("Arrow Up"),event.preventDefault(),--suggestionTextIndex<0&&(suggestionTextIndex=suggestionTexts.length-1),disableEventHandlerOnce
1=!0;for(const suggestion of suggestionShown.querySelectorAll(".highlighted"))suggestion.classList.remove("highlighted");0<suggestionTextIndex&&suggestionShown.children[suggestionTextIndex-1].classList.add("highlighted"),input.value=suggestionTexts[suggestionTextIndex]}else pressed===keyCodes_escape&&0<suggestionShown.length&&(debug&&console.log("Escape: Remove overlay"),suggestionShown.remove())}),queryElement.parentNode.closest("form.mainSearch").addEventListener("submit",event=>{var form=event.target,focusedSuggestion=form.parentNode.querySelector("div.searchSuggestions")?.children[suggestionTextIndex-1];if(null===focusedSuggestion||focusedSuggestion?.classList.contains("showAllResults"))return debug?void console.log('"ShowAll" clicked ('+getRelativeMillis()+")"):(form.submit(),!0);if(focusedSuggestion?.classList.contains("product")||focusedSuggestion?.classList.contains("product-v2")){event.preventDefault();form=focusedSuggestion.querySelector("[data-url]").getAttribute("data-url");if(debug)return void console.log("Product clicked ("+getRelativeMillis()+") ("+form+")");window.location=form}else if(focusedSuggestion?.classList.contains("page")){event.preventDefault();const url=focusedSuggestion.querySelector("[data-url]").getAttribute("data-url");if(debug)return void console.log("Page clicked ("+getRelativeMillis()+") ("+url+")");window.location=url}return!1},!0),queryElement.setAttribute("autocomplete","off");const observer=new window.IntersectionObserver(([entry])=>{observer.unobserve(entry.target)},{root:null,threshold:.1});setTimeout(()=>observer.observe(queryElement),25)})};export default searchSuggestions;
2//# sourceMappingURL=/resources/compiled/js/med24/modules/search-suggestions.js.map

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.