1const prefixData=window.relewiseAPI.relewise_prefix_data,relewiseCountry=window.relewiseAPI.relewise_country,PRODUCT_DATA_KEYS=["IsAvailable","Tags",`${prefixData}_ShopifyHandle`,`${prefixData}_ImageUrls`,`${prefixData}_pim.author`,`${prefixData}_pim.global_binding`,`${prefixData}_pim.language`,`${prefixData}_pim.badges`,`${prefixData}_pim.book`,`${prefixData}_custom.kobslogik`,`${prefixData}_judgeme.review_widget_data`],RECENT_SEARCHES_KEY="relewise_recent_searches",RECENT_SEARCHES_MAX=3;window.relewiseContentSearchCache=window.relewiseContentSearchCache||{};function saveSearchTerm(term){if(!term||!term.trim())return;term=term.trim();let searches=getRecentSearches();searches=searches.filter(s=>s.toLowerCase()!==term.toLowerCase()),searches.unshift(term),searches=searches.slice(0,RECENT_SEARCHES_MAX);try{localStorage.setItem(RECENT_SEARCHES_KEY,JSON.stringify(searches))}catch{}}function getRecentSearches(){try{const stored=localStorage.getItem(RECENT_SEARCHES_KEY);if(stored)return JSON.parse(stored)}catch{}return[]}function clearSearchHistory(){try{localStorage.removeItem(RECENT_SEARCHES_KEY)}catch{}}function buildAuthenticatedUser(){const user={Classifications:{Country:`${relewiseCountry}`},Identifiers:{},AuthenticatedId:window.relewiseAPI.customer_id,Data:{}};return window.relewiseAPI.customer_accepts_marketing&&(user.Identifiers.KundeklubMedlemskabsId=window.relewiseAPI.customer_club_trigger_id),user}function buildTemporaryUser(){return{Classifications:{Country:`${relewiseCountry}`},Identifiers:{},TemporaryId:getVisitorId(),Data:{}}}function getUserData(){if(Shopify&&Shopify.customerPrivacy){let currentConsent=Shopify.customerPrivacy.currentVisitorConsent();if(currentConsent&¤tConsent.marketing=="yes"&¤tConsent.analytics=="yes")return window.relewiseAPI.customer_id?buildAuthenticatedUser():buildTemporaryUser()}else if(sessionStorage.getItem("consent_accepted")=="true")return window.relewiseAPI.customer_id?buildAuthenticatedUser():buildTemporaryUser();return{Classifications:{Country:`${relewiseCountry}`},Identifiers:{},Data:{}}}let _popularProductsCache=null,_popularProductsCacheCount=null;function getPopularProductsForSearch(count=8){if(_popularProductsCache&&_popularProductsCacheCount===count)return _popularProductsCache;const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:"Search overlay",user:getUserData()},builder=new Relewise.PopularProductsBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setNumberOfRecommendations(count).build();return _popularProductsCache=new Relewise.Recommender(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).recommendPopularProducts(builder),_popularProductsCacheCount=count,_popularProductsCache}function getProductLayerSearchDropDown(queryKey){let productNumber=8,categoryNumber=8;const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:"Search overlay",user:getUserData()},builder=new Relewise.SearchCollectionBuilder(settings).addRequest(new Relewise.ProductSearchBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setExplodedVariants(1).setTerm(queryKey).pagination(p=>p.setPageSize(productNumber).setPage(1)).build()).addRequest(new Relewise.ProductCategorySearchBuilder(settings).setSelectedCategoryProperties({displayName:!0,dataKeys:["Handle"]}).setTerm(queryKey).pagination(p=>p.setPageSize(categoryNumber).setPage(1)).build()).addRequest(new Relewise.SearchTermPredictionBuilder(settings).setTerm(queryKey).take(3).build());return new Relewise.Searcher(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).batch(builder.build())}
1function getContentSearch(queryKey,contentNumber,displayedAtLocation){const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation,user:getUserData()},builder=new Relewise.SearchCollectionBuilder(settings).addRequest(new Relewise.ContentSearchBuilder(settings).setContentProperties({displayName:!0,dataKeys:["Handle","BlogHandle","Type","TemplateSuffix"]}).setTerm(queryKey).pagination(p=>p.setPageSize(contentNumber).setPage(1)).build());return new Relewise.Searcher(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).batch(builder.build())}function getContentSearchDropDown(queryKey){return getContentSearch(queryKey,8,"Search overlay")}document.addEventListener("click",function(event){if(event.target.closest(".rl-search-term")){event.preventDefault();let term=event.target.closest(".rl-search-term").dataset.term;if(document.querySelector('search-drawer input[name="q"]').value==term)return;document.querySelector('search-drawer input[name="q"]').value=term,document.querySelector('search-drawer input[name="q"]').dispatchEvent(new Event("input"))}});function getProductLayerSearchPage(queryKey,productPerPage,page,sorting="",facets={}){window.currentSearchPage=page;let categoryNumber=200;const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:"Search page",user:getUserData()},builder=new Relewise.SearchCollectionBuilder(settings).addRequest(new Relewise.ProductSearchBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setExplodedVariants(1).setTerm(queryKey).facets(f=>{facets.hasOwnProperty(`${prefixData}_pim.number_of_participants`)?f.addProductDataStringValueFacet(`${prefixData}_pim.number_of_participants`,"Product",facets[`${prefixData}_pim.number_of_participants`]):f.addProductDataStringValueFacet(`${prefixData}_pim.number_of_participants`),facets.hasOwnProperty(`${prefixData}_pim.age`)?f.addProductDataStringValueFacet(`${prefixData}_pim.age`,"Product",facets[`${prefixData}_pim.age`]):f.addProductDataStringValueFacet(`${prefixData}_pim.age`),facets.hasOwnProperty(`${prefixData}_pim.publisher`)?f.addProductDataStringValueFacet(`${prefixData}_pim.publisher`,"Product",facets[`${prefixData}_pim.publisher`]):f.addProductDataStringValueFacet(`${prefixData}_pim.publisher`),facets.hasOwnProperty(`${prefixData}_pim.series_name_reference`)?f.addProductDataStringValueFacet(`${prefixData}_pim.series_name_reference`,"Product",facets[`${prefixData}_pim.series_name_reference`]):f.addProductDataStringValueFacet(`${prefixData}_pim.series_name_reference`),facets.hasOwnProperty(`${prefixData}_pim.author`)?f.addProductDataStringValueFacet(`${prefixData}_pim.author`,"Product",facets[`${prefixData}_pim.author`]):f.addProductDataStringValueFacet(`${prefixData}_pim.author`),facets.hasOwnProperty(`${prefixData}_pim.brand`)?f.addProductDataStringValueFacet(`${prefixData}_pim.brand`,"Product",facets[`${prefixData}_pim.brand`]):f.addProductDataStringValueFacet(`${prefixData}_pim.brand`),facets.hasOwnProperty("filter.v.price.gte")||facets.hasOwnProperty("filter.v.price.lte")?f.addSalesPriceRangeFacet("Product",facets["filter.v.price.gte"]||null,facets["filter.v.price.lte"]||null):f.addSalesPriceRangeFacet(),facets.hasOwnProperty(`${prefixData}_pim.global_binding`)?f.addProductDataStringValueFacet(`${prefixData}_pim.global_binding`,"Product",facets[`${prefixData}_pim.global_binding`]):f.addProductDataStringValueFacet(`${prefixData}_pim.global_binding`),facets.hasOwnProperty(`${prefixData}_pim.language`)?f.addProductDataStringValueFacet(`${prefixData}_pim.language`,"Product",facets[`${prefixData}_pim.language`]):f.addProductDataStringValueFacet(`${prefixData}_pim.language`),facets.hasOwnProperty(`${prefixData}_pim.purchasing_group`)?f.addProductDataStringValueFacet(`${prefixData}_pim.purchasing_group`,"Product",facets[`${prefixData}_pim.purchasing_group`]):f.addProductDataStringValueFacet(`${prefixData}_pim.purchasing_group`)}).pagination(p=>p.setPageSize(productPerPage).setPage(page)).sorting(s=>{switch(sorting){case"title-ascending":s.sortByProductAttribute("DisplayName","Ascending",n=>n.sortByProductRelevance());break;case"title-descending":s.sortByProductAttribute("DisplayName","Descending",n=>n.sortByProductRelevance());break;case"price-ascending":s.sortByProductAttribute("SalesPrice","Ascending",n=>n.sortByProductRelevance());break;case"price-descending":s.sortByProductAttribute("SalesPrice","Descending",n=>n.sortByProductRelevance());break;case"created-descending":s.sortByProductData(`${prefixData}_pim.publication_date_timestamp`,"Product","Descending",n=>n.sortByProductRelevance());break;case"best-selling":s.sortByProductPopularity("Descending",n=>n.sortByProductRelevance());break;default:break}}).build()).addRequest(new Relewise.ProductCategorySearchBuilder(settings).setSelectedCategoryProperties({displayName:!0,dataKeys:["Handle"]}).setTerm(queryKey).pagination(p=>p.setPageSize(categoryNumber).setPage(1)).build());return new Relewise.Searcher(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).batch(builder.build())}function getContentSearchPage(queryKey){return getContentSearch(queryKey,200,"Search page")}function getRelewiseContentSearchCacheKey(queryKey,context){return`${window.themeVariables.settings.languages}:${context}:${queryKey.trim().toLowerCase()}`}function getCachedRelewiseContentSearch(queryKey,context){let cacheKey=getRelewiseContentSearchCacheKey(queryKey,context),cachedSearch=window.relewiseContentSearchCache[cacheKey];if(cachedSearch?.data)return Promise.resolve(cachedSearch.data);if(cachedSearch?.promise)return cachedSearch.promise;let searchFunction=context=="drawer"?getContentSearchDropDown:getContentSearchPage,cacheEntry={};return cacheEntry.promise=searchFunction(queryKey).then(data=>(cacheEntry.data=data,data)).catch(error=>{throw delete window.relewiseContentSearchCache[cacheKey],error}),window.relewiseContentSearchCache[cacheKey]=cacheEntry,cacheEntry.promise}function buildSearchFacetsToolbarHtml(){let tpl=document.getElementById("relewise-search-facets-toolbar-template");return tpl?tpl.innerHTML:""}function renderRelewiseSearchPage(productTerms,page,productPerPage,sorting="",facets={}){return window.currentSorting=sorting,getProductLayerSearchPage(productTerms,productPerPage,page,sorting,facets).then(data=>{let tabs=document.querySelector(".relewise-skeleton").querySelector(".predictive-search__tabs"),searchWra
1pper=document.querySelector(".relewise-search-page-wrapper"),showFilters=searchWrapper.dataset.showFilters==="true",showSortBy=searchWrapper.dataset.showSortBy==="true",hasFacetsUi=document.querySelector("#facets-drawer.facets-drawer-relewise")!==null;searchWrapper.innerHTML=`<div class="relewise-skeleton-wrapper relewise-search-wrapper h-stack gap-6 sm:gap-10 align-start"> 2 <div class="predictive-search__tabs-wrapper relative"> 3 <x-tabs class="predictive-search__tabs">${tabs.innerHTML}</x-tabs> 4 </div> 5 </div>`,initializeLazyRelewiseContent(searchWrapper,productTerms);let productsResponse=getResultsFromResponse(data,"product"),products=productsResponse.results,productHits=productsResponse.hits,categories=getResultsFromResponse(data,"category").results,productsTabContent=document.querySelector('.relewise-search-page-wrapper .predictive-search__tab-content[data-type="products"]');productsTabContent.classList.remove("h-stack","gap-5","wrap","align-start");let productsWrapper;if(hasFacetsUi?(productsTabContent.classList.add("has-relewise-filter-ui"),productsTabContent.innerHTML=buildSearchFacetsToolbarHtml()+`<div class="v-stack gap-6"> 6 <div class="v-stack gap-4 md:hidden"> 7 <p class="text-center rlw-product-count"></p> 8 ${showFilters?'<div class="active-facets-wrapper"></div>':""} 9 </div> 10 <product-list class="product-list" role="region" aria-live="polite"></product-list> 11 </div>`,productsWrapper=productsTabContent.querySelector(".product-list")):(productsTabContent.classList.remove("has-relewise-filter-ui"),productsTabContent.classList.add("product-list"),productsWrapper=productsTabContent),products.length?(products.forEach(product=>{let productSkeleton=buildProductCardHtml(product);productsWrapper.appendChild(productSkeleton)}),window.alignHeight(".relewise-product-card .rpc-author",productsWrapper)):productsWrapper.innerHTML=`<div class="text-sm text-subdued">${window.themeVariables.ir.search.noProductsFound}</div>`,hasFacetsUi){let productCountElement=document.querySelector(".relewise-search-page-wrapper .rlw-product-count");productCountElement&&(productCountElement.textContent=window.themeVariables.ir.collection.product_count.replace("[count]",productHits)),renderCollectionFacets(data,".relewise-search-page-wrapper")}let paginationElement=document.querySelector(".search__pagination-relewise");if(paginationElement){let numberOfPages=Math.ceil(productHits/productPerPage);window.searchPageTotalPages=numberOfPages,numberOfPages>1?(paginationElement.classList.remove("hidden"),paginationElement.querySelector(".pagination__current").textContent=`${window.currentSearchPage} / ${numberOfPages}`,window.currentSearchPage<=1?paginationElement.querySelector('.pagination__item[rel="prev"]').classList.add("pagination__item--disabled"):paginationElement.querySelector('.pagination__item[rel="prev"]').classList.remove("pagination__item--disabled"),window.currentSearchPage>=numberOfPages?paginationElement.querySelector('.pagination__item[rel="next"]').classList.add("pagination__item--disabled"):paginationElement.querySelector('.pagination__item[rel="next"]').classList.remove("pagination__item--disabled")):paginationElement.classList.add("hidden")}let param=new URL(window.location.href);param.searchParams.set("q",productTerms),window.currentSearchPage>1?param.searchParams.set("page",window.currentSearchPage):param.searchParams.delete("page"),sorting&&sorting!=="manual"?param.searchParams.set("sort_by",sorting):param.searchParams.delete("sort_by");let staleKeys=[];param.searchParams.forEach((_value,key)=>{(key.startsWith("rlw_")||key==="filter.v.price.gte"||key==="filter.v.price.lte")&&staleKeys.push(key)}),staleKeys.forEach(key=>param.searchParams.delete(key)),Object.keys(facets).forEach(key=>{if(key==="sort_by")return;let paramKey=key.replace(`${prefixData}_`,"rlw_");Array.isArray(facets[key])?facets[key].length&¶m.searchParams.set(paramKey,facets[key].join(",")):facets[key]&¶m.searchParams.set(paramKey,facets[key])}),window.history.replaceState(null,"",param.href);let categoriesWrapper=document.querySelector('.relewise-search-page-wrapper .predictive-search__tab-content[data-type="collections"]');
11categories.length?categories.forEach(category=>{let categoryHtml=`<a href="/collections/${category.data?.Handle?.value}" title="${category.displayName}" class=" bold block">${category.displayName}</a>`;categoriesWrapper.innerHTML+=categoryHtml}):categoriesWrapper.innerHTML=`<div class="text-sm text-subdued">${window.themeVariables.ir.search.noCategoriesFound}</div>`})}function renderPopularProductsOnSearchPage(productPerPage){let wrapper=document.querySelector(".relewise-search-page-wrapper");wrapper.innerHTML="";let paginationElement=document.querySelector(".search__pagination-relewise");paginationElement&&paginationElement.classList.add("hidden");let heading=document.createElement("p");heading.className="bold text-subdued",heading.textContent=window.themeVariables.ir.search.popularProducts,wrapper.appendChild(heading);let grid=document.createElement("div");grid.className="search-popular-products-grid",wrapper.appendChild(grid);let param=new URL(window.location.href);param.searchParams.delete("q"),param.searchParams.delete("page"),window.history.replaceState(null,"",param.href),getPopularProductsForSearch(productPerPage).then(data=>{if(data?.recommendations?.length){for(const product of data.recommendations){let card=buildProductCardHtml(product);grid.appendChild(card)}window.alignHeight(".relewise-product-card .rpc-author",grid)}}).catch(error=>{console.log(error)})}function getResultsFromResponse(data,type){let results=[],hits=0,response=null;return type=="product"?(response=data.responses.find(item=>item.$type.indexOf("ProductSearchResponse")!==-1),hits=response?response.hits:0,results=response?response.results:[]):type=="category"?(response=data.responses.find(item=>item.$type.indexOf("ProductCategorySearchResponse")!==-1),hits=response?response.hits:0,results=response?response.results:[]):type=="content"?(response=data.responses.find(item=>item.$type.indexOf("ContentSearchResponse")!==-1),hits=response?response.hits:0,results=response?response.results:[]):type=="prediction"&&(response=data.responses.find(item=>item.$type.indexOf("SearchTermPredictionResponse")!==-1),results=response?response.predictions:[]),{results,hits}}function initializeLazyRelewiseContent(container,queryKey){let tabs=container.matches?.("x-tabs.predictive-search__tabs")?container:container.querySelector(".relewise-search-wrapper x-tabs.predictive-search__tabs");if(!tabs)return;tabs.dataset.relewiseQuery=queryKey.trim(),tabs.dataset.relewiseContentState="idle";let contentWrappers=tabs.querySelectorAll('.predictive-search__tab-content[data-type="posts"], .predictive-search__tab-content[data-type="pages"]');for(const contentWrapper of contentWrappers)contentWrapper.innerHTML="",contentWrapper.removeAttribute("aria-busy");let contentTabButtons=tabs.querySelectorAll('.predictive-search__tab-item[data-type="posts"] button, .predictive-search__tab-item[data-type="pages"] button');for(const contentTabButton of contentTabButtons)contentTabButton.addEventListener("click",()=>loadLazyRelewiseContent(contentTabButton))}function setRelewiseContentLoading(container){let contentWrappers=container.querySelectorAll('.predictive-search__tab-content[data-type="posts"], .predictive-search__tab-content[data-type="pages"]');for(const contentWrapper of contentWrappers)contentWrapper.setAttribute("aria-busy","true"),contentWrapper.innerHTML='<span class="skeleton skeleton--text" style="--skeleton-text-width: 40%"></span>'}function renderRelewiseContentResults(container,data,excludeCampaignForm){let contents=getResultsFromResponse(data,"content").results,postsWrapper=container.querySelector('.predictive-search__tab-content[data-type="posts"]'),pagesWrapper=container.querySelector('.predictive-search__tab-content[data-type="pages"]'),postsExisted=!1,pagesExisted=!1;postsWrapper.innerHTML="",pagesWrapper.innerHTML="",postsWrapper.removeAttribute("aria-busy"),pagesWrapper.removeAttribute("aria-busy");for(const content of contents){let type=content.data?.Type?.value,handle=content.data?.Handle?.value,templateSuffix=content.data?.TemplateSuffix?.value;if(type=="Article"){postsExisted=!0;let blogHandle=content.data?.BlogHandle?.value;postsWrapper.innerHTML+=`<a href="/blogs/${blogHandle}/${handle}" title="" class=" bold block">${content.displayName}</a>`}
11else type=="Page"&&(!excludeCampaignForm||templateSuffix!="campaign-form")?(pagesExisted=!0,pagesWrapper.innerHTML+=`<a href="/pages/${handle}" title="" class=" bold block">${content.displayName}</a>`):type=="Metaobject"&&(pagesExisted=!0,pagesWrapper.innerHTML+=`<a href="/pages/${handle}" title="" class=" bold block">${content.displayName}</a>`)}postsExisted||(postsWrapper.innerHTML=`<div class="text-sm text-subdued">${window.themeVariables.ir.search.noPostsFound}</div>`),pagesExisted||(pagesWrapper.innerHTML=`<div class="text-sm text-subdued">${window.themeVariables.ir.search.noPagesFound}</div>`),container.dataset.relewiseContentState="loaded"}function loadLazyRelewiseContent(tabButton){let container=tabButton.closest("x-tabs.predictive-search__tabs"),searchPageWrapper=container?.closest(".relewise-search-page-wrapper");if(!container||container.dataset.relewiseContentState=="loading"||container.dataset.relewiseContentState=="loaded")return;let queryKey=container.dataset.relewiseQuery;if(!queryKey)return;let context=searchPageWrapper?"page":"drawer";container.dataset.relewiseContentState="loading",setRelewiseContentLoading(container),getCachedRelewiseContentSearch(queryKey,context).then(data=>{container.dataset.relewiseQuery==queryKey&&renderRelewiseContentResults(container,data,context=="drawer")}).catch(error=>{throw container.dataset.relewiseQuery==queryKey&&initializeLazyRelewiseContent(container,queryKey),error})}function buildProductCardHtml(product){let productSkeleton=document.querySelector(".relewise-product-card-skeleton").cloneNode(!0);productSkeleton.classList.remove("relewise-product-card-skeleton");let pHandleData=product.data&&product.data[`${window.relewiseAPI.relewise_prefix_data}_ShopifyHandle`],pHandle="",pUrl="";pHandleData&&pHandleData.value&&(pHandle=pHandleData.value,pUrl=`/products/${pHandle}`);let imgHtml="";const imageUrlsData=product.data&&product.data[`${window.relewiseAPI.relewise_prefix_data}_ImageUrls`];imageUrlsData&&imageUrlsData.value&&imageUrlsData.value.$values&&Array.isArray(imageUrlsData.value.$values)&&imageUrlsData.value.$values.length>0?imgHtml=`<a href="${pUrl}" title="" class="block"><img class="product-card__image product-card__image--primary aspect-custom" src="${imageUrlsData.value.$values[0]}" loading="lazy" alt="${product.displayName}" width="204"></a>`:imgHtml=`<a href="${pUrl}" title="" class="block"><img class="product-card__image product-card__image--primary aspect-custom" src="${window.themeVariables.ir.product.fallbackImage}" loading="lazy" alt="${product.displayName}" width="204"></a>`;let isPriceZero=window.themeVariables?.settings?.hideZeroPrice&&product.salesPrice===0,variantId=product.variant&&product.variant.data&&product.variant.data[`${window.relewiseAPI.relewise_prefix_data}_ShopifyVariantId`]?product.variant.data[`${window.relewiseAPI.relewise_prefix_data}_ShopifyVariantId`].value:void 0;variantId&&product.data?.IsAvailable?.value==!0&&(imgHtml+=`<div class="product-card__quick-buy"${isPriceZero?' style="display:none"':""}> 12 <form method="post" action="/cart/add" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" is="product-form"> 13 <input type="hidden" name="form_type" value="product"> 14 <input type="hidden" name="utf8" value="\u2713"> 15 <input type="hidden" name="id" value="${variantId}"> 16 <button type="submit" is="custom-button" class="product-card__mobile-quick-buy-button" aria-label="+ Hurtig tilf\xF8jelse"> 17 <div> 18 <svg role="presentation" focusable="false" width="50" height="50" class="icon icon-quick-buy-cart" viewBox="0 0 100 100"> 19 <circle cx="50" cy="50" r="45" fill="#e52424"></circle><path stroke="#fff" stroke-linecap="round" stroke-width="4" d="M68 18v16M60 26h16"></path><path fill="none" stroke="#fff" stroke-linecap="round" stroke-width="4" d="M38 46a12 12 0 0 1 24 0"></path><path fill="none" stroke="#fff" stroke-linejoin="round" stroke-width="4" d="M30 46h40l-6 26H36Z"></path> 20 </svg> 21 </div> 22 <span class="button__loader">
23 <span></span> 24 <span></span> 25 <span></span> 26 </span> 27 </button> 28 <input type="hidden" name="product-id" value="${product.productId}"> 29 </form></div>`);let pTitleHtml="";product.displayName&&(pTitleHtml=`<a href="${pUrl}" title="${product.displayName}" class="text-sm bold block">${product.displayName}</a>`);let authorHtml="";const authorsData=product.data&&product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.author`];authorsData&&authorsData.value&&authorsData.value.$values&&Array.isArray(authorsData.value.$values)&&authorsData.value.$values.length>0&&(authorHtml=`<div class="author-list">${authorsData.value.$values.join(", ")}</div>`);let tags=product?.data?.Tags?.value?.$values,hasCampaignTag=Array.isArray(tags)&&tags.some(t=>typeof t=="string"&&t.toLowerCase().startsWith("campaign")),isOnSale=product.listPrice&&product.listPrice>product.salesPrice||hasCampaignTag,priceHtml=`<div class="rl-product-prices h-stack gap-2"${isPriceZero?' style="display:none"':""}>`;if((product.salesPrice||product.salesPrice===0)&&(priceHtml+=`<span class="rl-product-price ${isOnSale?"text-on-sale":""}">${Shopify.formatMoney(product.salesPrice*100)}</span>`),product.listPrice&&product.listPrice>product.salesPrice&&(priceHtml+=`<span class="rl-product-price-old line-through">${Shopify.formatMoney(product.listPrice*100)}</span>`),priceHtml+="</div>",productSkeleton.querySelector(".rpc-image").innerHTML=imgHtml||"",productSkeleton.querySelector(".rpc-title").innerHTML=pTitleHtml||"",productSkeleton.querySelector(".rpc-author").innerHTML=authorHtml||"",productSkeleton.querySelector(".rpc-price").innerHTML=priceHtml,product.data){let bottomBadgesHtml="";if(product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.global_binding`]){let bindingType=product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.global_binding`].value;if(bindingType){let flagImgSrc="";if(product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.language`]){let language=product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.language`].value;if(language){language=language.toLowerCase().trim();let isDanish=!1;(["dk","da","dan","da-dk","da_dk","und","mul","kal","enu","sproget kan ikke bestemmes","mis","latin","nno","nob","aram\xE6isk","enm","koreansk","mar","srp","sme","prs"].includes(language)||language.includes("dansk")||language.includes("danish")||language.includes("bokm\xE5l")||language.includes("flere"))&&(isDanish=!0),isDanish||(language=="catalansk"?flagImgSrc=`/cdn/shop/files/${language.replace(/[^a-z0-9\-]/g,"")}.png`:language.includes("norsk")?flagImgSrc="/cdn/shop/files/norsk.png":language=="kinesisk"?flagImgSrc="/cdn/shop/files/china.svg":flagImgSrc=`/cdn/shop/files/${language.replace(/[^a-z0-9\-]/g,"")}.svg`)}}let bindingTypeLabel=bindingType;if(window.relewiseAPI.pim_binding_type_mapping&&window.relewiseAPI.pim_binding_type_mapping.length>0){let bindingTypeItem=window.relewiseAPI.pim_binding_type_mapping.find(item=>item.split(":")[0].toLowerCase().trim()==bindingType.toLowerCase().trim());bindingTypeItem&&(bindingTypeLabel=bindingTypeItem.split(":")[1].trim())}bottomBadgesHtml+=`<div class="product-card__binding-type-badge"> 30 <span class="badge badge--binding-type ${flagImgSrc?"badge--has-flag":""}" ${flagImgSrc?`style="background-image: url(${flagImgSrc})"`:""}>${bindingTypeLabel}</span></div>`}}if(productSkeleton.querySelector(".rpc-badges").innerHTML=bottomBadgesHtml,window.themeVariables.ir.product.showSoldOutBadge&&product.data.IsAvailable&&product.data.IsAvailable.value==!1?productSkeleton.querySelector(".product-card__badge-list").innerHTML=`<sold-out-badge class="badge badge--sold-out"> 31 ${window.themeVariables.ir.product.soldOutBadgeText} 32 </sold-out-badge>`:product.salesPrice&&product.listPrice&&product.listPrice>product.salesPrice&&(productSkeleton.querySelector(".product-card__badge-list").innerHTML=`<on-sale-badge class="badge badge--on-sale"> 33 ${window.themeVariables.ir.product.discountBadgeText} 34 </on-sale-badge>`),product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.badges`]&&product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.badges`].value){let badges=product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.badges`].value.$values;if(window.badgeSettings&&window.badgeSettings.pricetag_badges_enabled&&Array.isArray(badges)&&badges.length>0){const ptKeyLines=window.badgeSettings.pt_key_lines||[],ptSep="|||";let allLabels=[],allLabelsLower=[];
34if(badges.forEach(badgeKey=>{const ptKeyUpper=typeof badgeKey=="string"?badgeKey.toUpperCase().trim():"";ptKeyLines.forEach(line=>{const ptLine=(line||"").trim();if(!ptLine)return;const ptKV=ptLine.split(":"),ptMapKey=ptKV[0]?ptKV[0].toUpperCase().trim():"";ptKeyUpper===ptMapKey&&ptLine.substring(ptKV[0].length+1).trim().split("|").forEach(ptLabel=>{if(ptLabel=ptLabel.trim(),!ptLabel)return;const ptLabelLower=ptLabel.toLowerCase();allLabelsLower.indexOf(ptSep+ptLabelLower+ptSep)===-1&&!allLabelsLower.includes(ptLabelLower)&&(allLabels.push(ptLabel),allLabelsLower.push(ptLabelLower))})})}),allLabels.length>0){let getBadgeStyle2=function(label,ptStyleLines2){let style="header";const bl=label.toLowerCase().trim();for(const sl of ptStyleLines2){const ptSl=(sl||"").trim();if(!ptSl)continue;const ptSv=ptSl.split(":"),ptSlLabel=ptSv[0]?ptSv[0].toLowerCase().trim():"";if(bl===ptSlLabel){style=ptSv.length>1?ptSv[ptSv.length-1].trim().toLowerCase():"header";break}}return style};var getBadgeStyle=getBadgeStyle2;const ptStyleLines=window.badgeSettings.pricetag_badge_styles||[];let badgeTruncate=window.badgeSettings.pricetag_badge_truncate,darkOutput="",pinkOutput="";
34allLabels.forEach(label=>{let style=getBadgeStyle2(label,ptStyleLines),truncateLimit=badgeTruncate,labelContent=label,needsTruncate=!1;window.badgeSettings&&window.badgeSettings.pricetag_badges_enabled&&typeof truncateLimit=="number"&&truncateLimit>0&&label.length>truncateLimit&&(labelContent=label.substring(0,truncateLimit)+"...",needsTruncate=!0);let spanAttrs=`class="badge badge--pricetag badge--pricetag-${style}"`,spanTitle=needsTruncate?` title="${label.replace(/"/g,""")}"`:"",badgeHtml=`<span ${spanAttrs}${spanTitle}>${labelContent}</span>`;const lowerLabel=label.toLowerCase().trim(),badgeExistsInOutput=output=>output.replace(/<[^>]+>/g," ").toLowerCase().includes(lowerLabel);style==="price"||style==="header-dark"?badgeExistsInOutput(darkOutput)||(darkOutput+=badgeHtml):badgeExistsInOutput(pinkOutput)||(pinkOutput+=badgeHtml)}),productSkeleton.querySelector(".product-card__badge-list").innerHTML+=darkOutput+pinkOutput}}}if(window.relewiseAPI.location_badge_enabled&&window.kobslogikMetaobjects){const kobslogikData=product.data[`${window.relewiseAPI.relewise_prefix_data}_custom.kobslogik`],kobslogikGid=kobslogikData&&kobslogikData.value;if(typeof kobslogikGid=="string"&&kobslogikGid){const kobslogikEntry=window.kobslogikMetaobjects[kobslogikGid],locationBadgeText=kobslogikEntry&&kobslogikEntry.klik_og_hent_badge;if(locationBadgeText&&locationBadgeText.trim().toLowerCase()!=="ingen badge"){const formattedBadgeText=locationBadgeText.charAt(0).toUpperCase()+locationBadgeText.slice(1).toLowerCase();productSkeleton.querySelector(".product-card__badge-list").innerHTML+=`<span class="product-card__badge-break"></span><span class="badge badge--kun-online">${escapeHtml(formattedBadgeText)}</span>`}}}const reviewDataKey=`${window.relewiseAPI.relewise_prefix_data}_judgeme.review_widget_data`;product.data[reviewDataKey]&&product.data[reviewDataKey].value&&(productSkeleton.querySelector(".rpc-reviews").innerHTML=buildJudgeMeBadgeHtml(product.data[reviewDataKey].value))}if(window.relewiseAPI.remove_product_white_background){let removeBgClass="remove-background",tags2=product?.data?.Tags?.value?.$values;Array.isArray(tags2)&&tags2.length>0&&tags2.some(t=>typeof t=="string"&&t.toLowerCase().includes("#background"))&&(removeBgClass=""),product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.book`]&&product.data[`${window.relewiseAPI.relewise_prefix_data}_pim.book`].value&&(removeBgClass=""),removeBgClass&&productSkeleton.classList.add(removeBgClass)}return productSkeleton}function buildJudgeMeBadgeHtml(jsonString){try{const data=JSON.parse(jsonString),avgRating=parseFloat(data.average_rating)||0;if(avgRating<=0)return"";const numReviews=parseInt(data.number_of_reviews)||0,numQuestions=parseInt(data.number_of_questions)||0,stars=[];for(let i=1;i<=5;i++)avgRating>=i?stars.push("<span class='jdgm-star jdgm--on'></span>"):avgRating>=i-.5?stars.push("<span class='jdgm-star jdgm--half'></span>"):stars.push("<span class='jdgm-star jdgm--off'></span>");return`<div class='jdgm-prev-badge' data-average-rating='${avgRating.toFixed(2)}' data-number-of-reviews='${numReviews}' data-number-of-questions='${numQuestions}'><span class='jdgm-prev-badge__stars' data-score='${avgRating.toFixed(2)}' tabindex='0' aria-label='${avgRating.toFixed(2)} stars' role='button'>`+stars.join("")+"</span></div>"}catch{return""}}function getProductHandle(product){const pHandleData=product.data&&product.data[`${window.relewiseAPI.relewise_prefix_data}_ShopifyHandle`];return pHandleData&&pHandleData.value?pHandleData.value:""}function getProductUrl(product){const productHandle=getProductHandle(product);return productHandle?`/products/${productHandle}`:"#"}function getProductVariantId(product){return product.variant&&product.variant.data&&product.variant.data[`${window.relewiseAPI.relewise_prefix_data}_ShopifyVariantId`]?product.variant.data[`${window.relewiseAPI.relewise_prefix_data}_ShopifyVariantId`].value:void 0}function getProductImageHtml(product,imageClass,width){const imageUrlsData=product.data&&product.data[`${window.relewiseAPI.relewise_prefix_data}_ImageUrls`],fallbackImage=window.themeVariables.ir.product.fallbackImage,imageUrl=imageUrlsData?.value?.$values?.[0]||fallbackImage,productUrl=getProductUrl(product),productTitle=escapeHtml(product.displayName||"");return`<a href="${escapeHtml(productUrl)}" title="${productTitle}" class="block"> 35 <img class="${imageClass}" src="${escapeHtml(imageUrl)}" loading="lazy" alt="${productTitle}" width="${width}"> 36 </a>`}function getProductPriceHtml(product){const isPriceZero=window.themeVariables?.settings?.hideZeroPrice&&product.salesPrice===0,tags=product?.data?.Tags?.value?.$values,hasCampaignTag=Array.isArray(tags)&&tags.some(t=>typeof t=="string"&&t.toLowerCase().startsWith("campaign")),isOnSale=product.listPrice&&product.listPrice>
36product.salesPrice||hasCampaignTag;let priceHtml=`<div class="rl-product-prices h-stack gap-2"${isPriceZero?' style="display:none"':""}>`;return(product.salesPrice||product.salesPrice===0)&&(priceHtml+=`<span class="rl-product-price ${isOnSale?"text-on-sale":""}">${Shopify.formatMoney(product.salesPrice*100)}</span>`),product.listPrice&&product.listPrice>product.salesPrice&&(priceHtml+=`<span class="rl-product-price-old line-through">${Shopify.formatMoney(product.listPrice*100)}</span>`),priceHtml+="</div>",priceHtml}function buildHorizontalProductHtml(product){const productHandle=getProductHandle(product),productUrl=getProductUrl(product),productTitle=escapeHtml(product.displayName||""),variantId=getProductVariantId(product),isPriceZero=window.themeVariables?.settings?.hideZeroPrice&&product.salesPrice===0,isAvailable=product.data?.IsAvailable?.value===!0,card=document.createElement("div");if(card.className="horizontal-product snap-start rounded-xs bg-custom",card.setAttribute("style","--background: 242 242 242;"),productHandle&&(card.dataset.productHandle=productHandle),window.relewiseAPI.remove_product_white_background){const tags=product?.data?.Tags?.value?.$values,hasForcedBackground=Array.isArray(tags)&&tags.some(t=>typeof t=="string"&&t.toLowerCase().includes("#background")),hasBookData=!!product.data?.[`${window.relewiseAPI.relewise_prefix_data}_pim.book`]?.value;!hasForcedBackground&&!hasBookData&&card.classList.add("remove-background","bg-custom")}let quickBuyHtml="";return variantId&&isAvailable&&(quickBuyHtml=`<div class="horizontal-product__cta"${isPriceZero?' style="display:none"':""}> 37 <form method="post" action="/cart/add" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" is="product-form"> 38 <input type="hidden" name="form_type" value="product"> 39 <input type="hidden" name="utf8" value="\u2713"> 40 <input type="hidden" name="quantity" value="1"> 41 <input type="hidden" name="id" value="${escapeHtml(String(variantId))}"> 42 <button type="submit" is="custom-button" class="horizontal-product__quick-buy-button" aria-label="+ Hurtig tilf\xF8jelse"> 43 <div> 44 <svg role="presentation" focusable="false" width="50" height="50" class="icon icon-quick-buy-cart" viewBox="0 0 100 100"> 45 <circle cx="50" cy="50" r="45" fill="#e52424"></circle><path stroke="#fff" stroke-linecap="round" stroke-width="4" d="M68 18v16M60 26h16"></path><path fill="none" stroke="#fff" stroke-linecap="round" stroke-width="4" d="M38 46a12 12 0 0 1 24 0"></path><path fill="none" stroke="#fff" stroke-linejoin="round" stroke-width="4" d="M30 46h40l-6 26H36Z"></path> 46 </svg> 47 </div> 48 <span class="button__loader"> 49 <span></span> 50 <span></span> 51 <span></span> 52 </span> 53 </button> 54 <input type="hidden" name="product-id" value="${escapeHtml(String(product.productId||""))}"> 55 </form> 56 </div>`),card.innerHTML=` 57 ${getProductImageHtml(product,"horizontal-product__image rounded-xs",160)} 58 <div class="horizontal-product__info"> 59 <div class="v-stack gap-0.5"> 60 <a href="${escapeHtml(productUrl)}" data-instant class="text-sm bold"> 61 <span class="reversed-link hover:show">${productTitle}</span> 62 </a> 63 ${getProductPriceHtml(product)} 64 </div> 65 ${quickBuyHtml} 66 </div>`,card}function getCartDrawerRecommendationProducts(wrapper){const productsJson=wrapper.closest(".cart-drawer__recommendations")?.querySelector(".relewise-cart-drawer-products")?.textContent;if(!productsJson)return[];try{const products=JSON.parse(productsJson);return Array.isArray(products)?products.filter(product=>product?.productId).map(product=>({productId:String(product.productId),variantId:product.variantId?String(product.variantId):void 0})):[]}catch(error){return console.error("Failed to parse cart drawer Relewise products:",error),[]}}async function fetchCartDrawerRecommendationProducts(wrapper){const cartProducts=getCartDrawerRecommendationProducts(wrapper);if(!cartProducts.length)return;const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:"Cart drawer",user:getUserData()},builder=new Relewise.PurchasedWithMultipleProductsBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).addProducts(cartProducts).setNumberOfRecommendations(Number(wrapper.dataset.productsCount)||10);return new Relewise.Recommender(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).recommendPurchasedWithMultipleProducts(builder.build())}function reinitCartDrawerCarousel(wrapper){const scrollCarousel=wrapper.closest("scroll-carou
66sel");if(!scrollCarousel)return;const parent=scrollCarousel.parentNode,nextSibling=scrollCarousel.nextSibling;parent.removeChild(scrollCarousel),scrollCarousel._items=void 0,scrollCarousel._selectedIndex=void 0,parent.insertBefore(scrollCarousel,nextSibling),scrollCarousel.closest(".cart-drawer__recommendations")?.querySelector("[data-relewise-cart-drawer-controls]")?.querySelectorAll('button[is="prev-button"], button[is="next-button"]').forEach(button=>{const placeholder=document.createComment("relewise-cart-drawer-button-anchor");button.replaceWith(placeholder),placeholder.replaceWith(button)})}function fetchAndRenderCartDrawerRecommendations(){window.Relewise&&document.querySelectorAll(".relewise-cart-drawer-recommendation-wrapper").forEach(wrapper=>{const container=wrapper.closest(".cart-drawer__recommendations"),header=container?.querySelector("[data-relewise-cart-drawer-header]"),controls=container?.querySelector("[data-relewise-cart-drawer-controls]"),cartProducts=getCartDrawerRecommendationProducts(wrapper),cartProductIds=new Set(cartProducts.map(product=>product.productId));!container||!cartProducts.length||(wrapper.classList.add("is-loading"),fetchCartDrawerRecommendationProducts(wrapper).then(data=>{const products=(data?.recommendations||[]).filter(product=>!cartProductIds.has(String(product.productId)));if(!products.length){container.hidden=!0;return}wrapper.innerHTML="",products.forEach(product=>{wrapper.appendChild(buildHorizontalProductHtml(product))}),wrapper.classList.remove("is-loading"),container.hidden=!1,header&&(header.hidden=!1),controls&&(controls.hidden=products.length<=1),reinitCartDrawerCarousel(wrapper)}).catch(error=>{console.error("Cart drawer Relewise recommendations error:",error),container.hidden=!0}).finally(()=>{wrapper.classList.remove("is-loading")}))})}function getItemCollectionPage(collectionId,productPerPage,page,sorting="",facets={}){window.currentPage=parseInt(page);const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:"Category page",user:getUserData()},builder=new Relewise.SearchCollectionBuilder(settings).addRequest(new Relewise.ProductSearchBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setExplodedVariants(1).setRetailMedia(new Relewise.RetailMediaQueryBuilder(settings).setLocation({key:"PRODUCT_LISTING_PAGE",variation:{key:"DESKTOP"},placements:[{key:"FIRST_SPOT"},{key:"SECOND_SPOT"},{key:"THIRD_SPOT"},{key:"FOURTH_SPOT"},{key:"FIFTH_SPOT"},{key:"SIXTH_SPOT"},{key:"SEVENTH_SPOT"},{key:"EIGHTH_SPOT"},{key:"NINTH_SPOT"},{key:"TENTH_SPOT"}]}).setSelectedDisplayAdProperties({allData:!0}).build()).filters(f=>f.addProductCategoryIdFilter("ImmediateParent",[collectionId])).facets(f=>{facets.hasOwnProperty(`${prefixData}_pim.number_of_participants`)?f.addProductDataStringValueFacet(`${prefixData}_pim.number_of_participants`,"Product",facets[`${prefixData}_pim.number_of_participants`]):f.addProductDataStringValueFacet(`${prefixData}_pim.number_of_participants`),facets.hasOwnProperty(`${prefixData}_pim.age`)?f.addProductDataStringValueFacet(`${prefixData}_pim.age`,"Product",facets[`${prefixData}_pim.age`]):f.addProductDataStringValueFacet(`${prefixData}_pim.age`),facets.hasOwnProperty(`${prefixData}_pim.publisher`)?f.addProductDataStringValueFacet(`${prefixData}_pim.publisher`,"Product",facets[`${prefixData}_pim.publisher`]):f.addProductDataStringValueFacet(`${prefixData}_pim.publisher`),facets.hasOwnProperty(`${prefixData}_pim.series_name_reference`)?f.addProductDataStringValueFacet(`${prefixData}_pim.series_name_reference`,"Product",facets[`${prefixData}_pim.series_name_reference`]):f.addProductDataStringValueFacet(`${prefixData}_pim.series_name_reference`),facets.hasOwnProperty(`${prefixData}_pim.author`)?f.addProductDataStringValueFacet(`${prefixData}_pim.author`,"Product",facets[`${prefixData}_pim.author`]):f.addProductDataStringValueFacet(`${prefixData}_pim.author`),facets.hasOwnProperty(`${prefixData}_pim.brand`)?f.addProductDataStringValueFacet(`${prefixData}_pim.brand`,"Product",facets[`${prefixData}_pim.brand`]):f.addProductDataStringValueFacet(`${prefixData}_pim.brand`),facets.hasOwnProperty("filter.v.price.gte")||facets.hasOwnProperty("filter.v.price.lte")?f.addSalesPr
66iceRangeFacet("Product",facets["filter.v.price.gte"]||null,facets["filter.v.price.lte"]||null):f.addSalesPriceRangeFacet(),facets.hasOwnProperty(`${prefixData}_pim.global_binding`)?f.addProductDataStringValueFacet(`${prefixData}_pim.global_binding`,"Product",facets[`${prefixData}_pim.global_binding`]):f.addProductDataStringValueFacet(`${prefixData}_pim.global_binding`),facets.hasOwnProperty(`${prefixData}_pim.language`)?f.addProductDataStringValueFacet(`${prefixData}_pim.language`,"Product",facets[`${prefixData}_pim.language`]):f.addProductDataStringValueFacet(`${prefixData}_pim.language`),facets.hasOwnProperty(`${prefixData}_pim.purchasing_group`)?f.addProductDataStringValueFacet(`${prefixData}_pim.purchasing_group`,"Product",facets[`${prefixData}_pim.purchasing_group`]):f.addProductDataStringValueFacet(`${prefixData}_pim.purchasing_group`)}).pagination(p=>p.setPageSize(productPerPage).setPage(page)).sorting(s=>{switch(sorting){case"title-ascending":s.sortByProductAttribute("DisplayName","Ascending",n=>n.sortByProductRelevance());break;case"title-descending":s.sortByProductAttribute("DisplayName","Descending",n=>n.sortByProductRelevance());break;case"price-ascending":s.sortByProductAttribute("SalesPrice","Ascending",n=>n.sortByProductRelevance());break;case"price-descending":s.sortByProductAttribute("SalesPrice","Descending",n=>n.sortByProductRelevance());break;case"created-descending":s.sortByProductData(`${prefixData}_pim.publication_date_timestamp`,"Product","Descending",n=>n.sortByProductRelevance());break;case"best-selling":s.sortByProductPopularity("Descending",n=>n.sortByProductRelevance());break;default:s.sortByProductData("InStock","Product","Descending",n=>n.sortByProductRelevance());break}}).build());return new Relewise.Searcher(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).batch(builder.build())}function renderCollectionFromRelewise(data){let products=[],paginationElement=document.querySelector(".collection__pagination-relewise"),hits=0;if(data&&data.responses&&data.responses.length>0){products=data.responses[0].results,hits=data.responses[0].hits,document.querySelector(".rlw-product-count").textContent=window.themeVariables.ir.collection.product_count.replace("[count]",hits);let productsWrapper=document.querySelector(".relewise-collection-page-wrapper .product-list");if(products.length){productsWrapper.innerHTML="",products.forEach(product=>{let productSkeleton=buildProductCardHtml(product);productsWrapper.appendChild(productSkeleton)});let productPerPage=document.querySelector('input[name="collection_id"]').dataset.productperpage,numberOfPages=Math.ceil(hits/productPerPage);numberOfPages>1?(paginationElement.classList.remove("hidden"),paginationElement.querySelector(".pagination__current").textContent=`${window.currentPage} / ${numberOfPages}`,window.currentPage<=1?paginationElement.querySelector('.pagination__item[rel="prev"]').classList.add("pagination__item--disabled"):paginationElement.querySelector('.pagination__item[rel="prev"]').classList.remove("pagination__item--disabled"),window.currentPage>=numberOfPages?paginationElement.querySelector('.pagination__item[rel="next"]').classList.add("pagination__item--disabled"):paginationElement.querySelector('.pagination__item[rel="next"]').classList.remove("pagination__item--disabled")):paginationElement.classList.add("hidden")}else productsWrapper.innerHTML=`<div class="text-sm text-subdued">${window.themeVariables.ir.search.noProductsFound}</div>`,paginationElement.classList.add("hidden");renderRetailMedia(data),renderCollectionPromotions(),renderCollectionFacets(data),window.alignHeight(".product-card .rpc-author",productsWrapper),productsWrapper.classList.remove("is-loading")}}function renderCollectionFacets(data,wrapperSelector=".relewise-collection-page-wrapper"){let facetsWrapper=document.querySelector("#facet-form");if(document.querySelectorAll("#facet-form > .accordion:not(#accordion-sort-by)").forEach(item=>{item.remove()}),document.querySelectorAll(`${wrapperSelector} .active-facets`)?.forEach(item=>{item.remove()}),data&&data.responses&&data.responses.length){let facets=data.responses[0].facets;if(facets&&facets.items&&facets.items.length){let activeFacetsHtml="";window.activeFacets=window.activeFacets||{}
66,facets.items.forEach(facet=>{if(Array.isArray(facet.available)&&facet.available.length==0&&(!facet.selected||facet.selected.length==0))return;let facetHtml=`<details class=" accordion group" aria-expanded="false" is="accordion-disclosure" data-key="${facet.key?facet.key:"rlw-facet-"+facet.field}"> 67 <summary> 68 <div class="accordion__toggle bold"> 69 <span class="facet-name">[facet_name_placeholder]</span> 70 <span class="facet-active-count [count_class_placeholder]">[facet_active_count_placeholder]</span> 71 <span class="circle-chevron group-hover:colors group-expanded:colors group-expanded:rotate"> 72 <svg role="presentation" focusable="false" width="8" height="6" class="icon icon-chevron-bottom-small" viewBox="0 0 8 6"> 73 <path d="m1 1.5 3 3 3-3" fill="none" stroke="currentColor" stroke-width="1.5"></path> 74 </svg></span> 75 </div> 76 </summary> 77 78 <div class="accordion__content">[facet_content_placeholder]</div> 79 </details>`;if(facet.$type.indexOf("PriceRangeFacetResult")!==-1){let upperBound=Math.ceil(facet.available.value.upperBoundInclusive),currentLowerBound=facet.selected?.lowerBoundInclusive||0,currentUpperBound=facet.selected?.upperBoundInclusive||upperBound;facet.selected&&(facet.selected?.lowerBoundInclusive||facet.selected?.upperBoundInclusive)?(activeFacetsHtml+=`<div class="removable-facet"> 80 <span class="facet-name">${Shopify.formatMoney(currentLowerBound*100)} - ${Shopify.formatMoney(currentUpperBound*100)}</span> 81 <a href="#" class="tap-area" data-facet-key="price"><svg role="presentation" stroke-width="2" focusable="false" width="10" height="10" class="icon icon-delete" viewBox="0 0 10 10"> 82 <path d="m.757.757 8.486 8.486m-8.486 0L9.243.757" stroke="currentColor"></path> 83 </svg></a> 84 </div>`,window.activeFacets["filter.v.price.lte"]=currentUpperBound,window.activeFacets["filter.v.price.gte"]=currentLowerBound,facetHtml=facetHtml.replace("[facet_active_count_placeholder]","1"),facetHtml=facetHtml.replace("[count_class_placeholder]","")):facetHtml=facetHtml.replace("[count_class_placeholder]","hidden");let priceRangeHtml=`<price-range class="price-range "> 85 <div class="range-group" style="--range-min: 0.0%; --range-max: 99.98333333333333%"> 86 <input type="range" aria-label="" class="range" min="0" max="${upperBound}" value="${currentLowerBound}"> 87 <input type="range" aria-label="" class="range" min="0" max="${upperBound}" value="${currentUpperBound}"> 88 </div> 89 <div class="input-group"> 90 <label class="input-prefix text-sm"> 91 <span class="prefix text-subdued">${Shopify.money_format_relewise}</span> 92 <input aria-label="" class="field" type="number" inputmode="numeric" name="filter.v.price.gte" id="filter.v.price.gte" min="0" max="${upperBound}" placeholder="0" autocomplete="off" ${currentLowerBound>0?'value="'+currentLowerBound+'"':""}> 93 </label> 94 <span class="text-subdued text-sm">til</span> 95 <label class="input-prefix text-sm"> 96 <span class="prefix text-subdued">${Shopify.money_format_relewise}</span> 97 <input aria-label="" class="field" type="number" inputmode="numeric" name="filter.v.price.lte" id="filter.v.price.lte" min="0" max="${upperBound}" placeholder="${upperBound}" autocomplete="off" ${currentUpperBound<upperBound?'value="'+currentUpperBound+'"':""}> 98 </label> 99 </div></price-range>`;facetHtml=facetHtml.replace("[facet_content_placeholder]",priceRangeHtml),facetHtml=facetHtml.replace("[facet_name_placeholder]",window.themeVariables.ir.collection.price)}else if(facet.$type.indexOf("ProductDataStringValueFacetResult")!==-1){sortFacetOptions(facet);let facetName=facet.key;facet.key==`${prefixData}_pim.author`?facetName=window.themeVariables.ir.collection.author:facet.key==`${prefixData}_pim.global_binding`?facetName=window.themeVariables.ir.collection.binding_type:facet.key==`${prefixData}_pim.purchasing_group`?facetName=window.themeVariables.ir.collection.purchasing_group:facet.key==`${prefixData}_pim.language`?facetName=window.themeVariables.ir.collection.language:facet.key==`${prefixData}_pim.series_name_reference`?facetName=window.themeVariables.ir.collection.series_name_reference:facet.key==`${prefixData}_pim.publisher`?facetName=window.themeVariables.ir.collection.publisher:facet.key==`${prefixData}_pim.brand`?facetName=window.themeVariables.ir.collection.brand:facet.key==`${prefixData}_pim.age`?facetName=window.themeVariables.ir.collection.age:facet.key==`${prefixData}_pim.number_of_participants`&&(facetName=window.themeVariables.ir.collection.number_of_participants),facetHtml=facetHtml.replace("[facet_name_placeholder]",facetName);let maxiMumLength=10,checkboxListHtml="";facet.selected?.forEach(selected=>{let option=facet.available.find(option2=>option2.value==selected),hits=option?option.hits:0,label=renderLabel(selected,facet.key);checkboxListHtml+=`<div class="checkbox-container"> 100 <input type="checkbox" class="checkbox" name="rlw-${facet.key}" value="${selected}" id="${facet.key}-${selected}" checked> 101 <label for="${facet.key}-${selected}">${label} (${hits})</label> 102 </div>`}
102),facet.available.slice(0,maxiMumLength).forEach(option=>{if(facet.selected&&facet.selected.includes(option.value))return;let label=renderLabel(option.value,facet.key);checkboxListHtml+=`<div class="checkbox-container"> 103 <input type="checkbox" class="checkbox" name="rlw-${facet.key}" value="${option.value}" id="${facet.key}-${option.value}" ${option.selected?"checked":""}> 104 <label for="${facet.key}-${option.value}">${label} (${option.hits})</label> 105 </div>`}),facet.available.length>maxiMumLength?(window.relewiseFacets=window.relewiseFacets||{},window.relewiseFacets[facet.key]=facet.available,checkboxListHtml=`<div class="checkbox-container rlw-facet-search-container"> 106 <input type="text" class="input rlw-facet-search" name="search-${facet.key}" data-key="${facet.key}" value="" placeholder="Search..."> 107 </div><div class="checkbox-list">${checkboxListHtml}</div>`):checkboxListHtml=`<div class="checkbox-list">${checkboxListHtml}</div>`,facetHtml=facetHtml.replace("[facet_content_placeholder]",checkboxListHtml),facet.selected&&facet.selected.length?(facet.selected.forEach(selected=>{let label=renderLabel(selected,facet.key);activeFacetsHtml+=`<div class="removable-facet"> 108 <span class="facet-name">${label}</span> 109 <a href="#" class="tap-area" data-facet-key="${facet.key}" data-facet-value="${selected}"><svg role="presentation" stroke-width="2" focusable="false" width="10" height="10" class="icon icon-delete" viewBox="0 0 10 10"> 110 <path d="m.757.757 8.486 8.486m-8.486 0L9.243.757" stroke="currentColor"></path> 111 </svg></a> 112 </div>`,window.activeFacets[facet.key]||(window.activeFacets[facet.key]=[]),window.activeFacets[facet.key].includes(selected)||window.activeFacets[facet.key].push(selected)}),facetHtml=facetHtml.replace("[facet_active_count_placeholder]",facet.selected.length),facetHtml=facetHtml.replace("[count_class_placeholder]","")):facetHtml=facetHtml.replace("[count_class_placeholder]","hidden")}facetsWrapper.innerHTML=facetHtml+facetsWrapper.innerHTML}),activeFacetsHtml&&(Object.values(window.activeFacets).reduce((count,arr)=>count+arr.length,0)>1&&(activeFacetsHtml+=`<a href="#" class="rlw-facet-clear-all facet-clear-all text-subdued"> 113 <span class="link">${window.themeVariables.ir.collection.clear_all_filters}</span> 114 </a>`),document.querySelectorAll(`${wrapperSelector} .active-facets-wrapper`).forEach(item=>{item.innerHTML=`<div class="active-facets">${activeFacetsHtml}</div>`}))}}if(document.querySelector(".relewise-sort")){let currentSortingText=document.querySelector(".relewise-sort #relewise-collection-sort .popover-listbox__option:first-child .reversed-link").textContent,currentSortingElement=document.querySelector(`.relewise-sort #relewise-collection-sort .popover-listbox__option[value="${window.currentSorting}"] .reversed-link`);currentSortingElement&&(currentSortingText=currentSortingElement.textContent),document.querySelector(".relewise-sort #relewise-collection-sort-value").textContent=currentSortingText}document.querySelector(".rlw-drawer-sort-by")&&(window.currentSorting?document.querySelector(`.rlw-drawer-sort-by .checkbox-list input[name="sort_by"][value="${window.currentSorting}"]`).checked=!0:document.querySelector('.rlw-drawer-sort-by .checkbox-list input[name="sort_by"][value="manual"]')&&(document.querySelector('.rlw-drawer-sort-by .checkbox-list input[name="sort_by"][value="manual"]').checked=!0))}window.alignHeight=function(selector,container){const elements=Array.from(container.querySelectorAll(selector));if(!elements.length)return;elements.forEach(element=>{element.style.height="auto"});const positioned=elements.map(element=>{const card=element.closest(".product-card"),{top}=(card||element).getBoundingClientRect();return{element,top:Math.round(top)}}).sort((a,b)=>a.top-b.top);let currentRowTop=null,currentRow=[];const rows=[];for(const item of positioned)currentRowTop===null||Math.abs(item.top-currentRowTop)<=1?(currentRowTop=currentRowTop===null?item.top:currentRowTop,currentRow.push(item.element)):(rows.push(currentRow),currentRow=[item.element],currentRowTop=item.top);currentRow.length&&rows.push(currentRow),rows.forEach(row=>{const maxHeight=Math.max(...row.map(el=>el.offsetHeight));row.forEach(el=>{el.style.height=`${maxHeight}px`})})};function sortFacetOptions(facet){if(facet.key==`${prefixData}_pim.author`)facet.available.sort((a,b)=>a.value.localeCompare(b.value));else if(facet.key==`${prefixData}_pim.global_binding`)facet.available.sort((a,b)=>a.value.localeCompare(b.value));else if(facet.key==`${prefixData}_pim.purchasing_group`)facet.available.sort((a,b)=>{let valueA=a.value;valueA.includes("-")&&(valueA=valueA.substring(valueA.indexOf("-")+1).trim());let valueB=b.value;return valueB.includes("-")&&(valueB=valueB.substring(valueB.indexOf("-")+1).trim()),valueA.localeCompare(valueB)});else if(facet.key==`${prefixData}_pim.language`)facet.available.sort((a,b)=>a.value.localeCompare(b.value));else if(facet.key==`${prefixData}_pim.series_name_reference`)facet.available.sort((a,b)=>a.value.localeCompare(b.value));else if(facet.key==`${prefixData}_pim.publisher`)facet.available.sort((a,b)=>a.value.trim().localeCompare(b.value.trim()));else if(facet.key==`${prefixData}_pim.brand`)facet.available.sort((a,b)=>a.value.localeCompare(b.value));else if(facet.key==`${prefixData}_pim.age`){let getAgeSortKey2=function(v){const tilMndRegex=/^0\s*til\s*(\d{1,3})\s*måneder$/i;let m=v.match(tilMndRegex);if(m)return{group:0,n:parseInt(m[1]),raw:v};let range=v.match(/^(\d+)\s*-\s*(\d+)$/);if(range)return{group:2,n:parseInt(range[1]),n2:parseInt(range[2]),raw:v};let plus=v.match(/^(\d+)\+$/);if(plus)return{group:3,n:parseInt(plus[1]),raw:v};let plus2=v.match(/^(\d{1,3})\+$/);if(plus2)return{group:3,n:parseInt(plus2[1]),raw:v};let num=v.match(/^(\d{1,3})$/);return num?{group:1,n:parseInt(num[1]),raw:v}:{group:100,n:9999,raw:v}};var getAgeSortKey=getAgeSortKey2;facet.available.sort((a,b)=>{const ka=getAgeSortKey2(a.value),kb=getAgeSortKey2(b.value);return ka.group!==kb.group?ka.group-kb.group:ka.n!==kb.n?ka.n-kb.n:ka.group===2&&kb.group===2&&ka.n2
114!==kb.n2?ka.n2-kb.n2:ka.raw.localeCompare(kb.raw)})}else facet.key==`${prefixData}_pim.number_of_participants`&&facet.available.sort((a,b)=>{function parseValue(val){val=val.trim();let rangeMatch=val.match(/^(\d+)\s*-\s*(\d+)$/);if(rangeMatch)return{type:"range",from:parseInt(rangeMatch[1]),to:parseInt(rangeMatch[2]),raw:val};let plusMatch=val.match(/^(\d+)\+$/);if(plusMatch)return{type:"plus",from:parseInt(plusMatch[1]),to:1/0,raw:val};let singleMatch=val.match(/^(\d+)$/);return singleMatch?{type:"single",from:parseInt(singleMatch[1]),to:parseInt(singleMatch[1]),raw:val}:{type:"other",from:99999,to:99999,raw:val}}let aParsed=parseValue(a.value),bParsed=parseValue(b.value);if(aParsed.from!==bParsed.from)return aParsed.from-bParsed.from;const typeOrder={single:0,plus:1,range:2,other:3};return typeOrder[aParsed.type]!==typeOrder[bParsed.type]?typeOrder[aParsed.type]-typeOrder[bParsed.type]:aParsed.type==="range"&&bParsed.type==="range"&&aParsed.to!==bParsed.to?aParsed.to-bParsed.to:aParsed.raw.localeCompare(bParsed.raw)});return facet}function renderLabel(label,facetKey){let shouldMapName=!1,shouldMapLanguage=!1;if(facetKey==`${prefixData}_pim.global_binding`&&window.relewiseAPI.pim_binding_type_mapping&&window.relewiseAPI.pim_binding_type_mapping.length&&(shouldMapName=!0),facetKey==`${prefixData}_pim.language`&&window.themeVariables.settings.languageMapping&&window.themeVariables.settings.languageMapping.length&&(shouldMapLanguage=!0),shouldMapName){let bindingTypeItem=window.relewiseAPI.pim_binding_type_mapping.find(item=>item.split(":")[0].toLowerCase().trim()==label.toLowerCase().trim());bindingTypeItem&&(label=bindingTypeItem.split(":")[1].trim())}if(shouldMapLanguage){let languageItem=window.themeVariables.settings.languageMapping.find(item=>item.split(":")[0].toLowerCase().trim()==label.toLowerCase().trim());languageItem&&(label=languageItem.split(":")[1].trim())}if(facetKey==`${prefixData}_pim.purchasing_group`&&(label.includes("-")&&(label=label.substring(label.indexOf("-")+1).trim()),label=label.charAt(0).toUpperCase()+label.slice(1).toLowerCase()),facetKey==`${prefixData}_pim.global_binding`){const acronyms=["cd","dvd","cd-r","cd-rom","ebog","pdf","mp3","mp3-cd","dvd-rom","ean"];label=label.split(/\s+/).map((word,i)=>{if(word==="&"||word.length===0)return word;const wordLower=word.toLowerCase();return acronyms.includes(wordLower)?wordLower.toUpperCase():i===0?word.charAt(0).toUpperCase()+word.slice(1).toLowerCase():word.toLowerCase()}).join(" "),label=="Ean-vare"&&(label="EAN-vare")}return label}function renderRetailMedia(data){if(!data.responses?.length||!data.responses[0].retailMedia?.placements||window.currentPage!=1||document.querySelector(".relewise-collection-page-wrapper .removable-facet"))return;const placements=data.responses[0].retailMedia.placements,productsWrapper=document.querySelector(".relewise-collection-page-wrapper .product-list");productsWrapper&&Object.entries(placements).forEach(([placementKey,placement])=>{const results=placement?.results;Array.isArray(results)&&results.forEach(item=>{const ad=item?.promotedDisplayAd?.result;if(!ad?.data)return;const data2=ad.data,imageUrl=data2.Image?.value||"",title=data2.Title?.value||"",subtitle=data2.Subtitle?.value||"",linkUrl=data2.Link?.value||"#";if(!imageUrl)return;const bannerHtml=` 115 <div class="relewise-retail-media-banner product-list__promo group text-custom" data-placement="${escapeHtml(placementKey)}"> 116 <a href="${escapeHtml(linkUrl)}" class="content-over-media h-full rounded-sm"> 117 <img class="product-card__image product-card__image--primary aspect-custom" src="${escapeHtml(imageUrl)}" loading="lazy" alt="${escapeHtml(title)}" width="204"> 118 ${title||subtitle?`<div class="place-self-end-start text-start"> 119 <div class="v-stack gap-4 sm:gap-6 "><div class="prose"> 120 ${title?`<p class="relewise-retail-media-heading h4">${escapeHtml(title)}</p>`:""} 121 ${subtitle?`<p class="relewise-retail-media-subtitle">${escapeHtml(subtitle)}</p>`:""} 122 </div></div></div>`:""} 123 </a> 124 </div>`,bannerEl=document.createElement("div");bannerEl.innerHTML=bannerHtml.trim();const banner=bannerEl.firstChild,position={FIRST_SPOT:1,SECOND_SPOT:2,THIRD_SPOT:3,FOURTH_SPOT:4,FIFTH_SPOT:5,SIXTH_SPOT:6,SEVENTH_SPOT:7,EIGHTH_SPOT:8,NINTH_SPOT:9,TENTH_SPOT:10}[placementKey];position!=null&&(position>
124productsWrapper.children.length?productsWrapper.appendChild(banner):productsWrapper.insertBefore(banner,productsWrapper.children[position-1]))})})}function renderCollectionPromotions(){if(window.collectionPromotionImages&&window.collectionPromotionImages.length&&window.currentPage==1&&!document.querySelector(".relewise-collection-page-wrapper .removable-facet")){const productsWrapper=document.querySelector(".relewise-collection-page-wrapper .product-list");if(!productsWrapper)return;window.collectionPromotionImages.forEach(item=>{let position=item.position;const div=document.createElement("div");div.innerHTML=item.html;const node=div.firstChild;position>productsWrapper.children.length?productsWrapper.appendChild(node):productsWrapper.insertBefore(node,productsWrapper.children[position-1])})}}function escapeHtml(unsafe){if(unsafe==null||typeof unsafe!="string")return"";const div=document.createElement("div");return div.textContent=unsafe,div.innerHTML}document.addEventListener("relewise:facets:update",function(event){let facets={},form=event.detail.form,activeFacets=event.detail.activeFacets,page=1;if(event.detail.page&&(page=event.detail.page),activeFacets?facets=activeFacets:new FormData(form).forEach((value,key)=>{if(!key.startsWith("search-")){if(key=="sort_by"){if(value=="manual"){window.currentSorting="";return}facets[key]=value;return}if(key=="filter.v.price.gte"){let min=parseFloat(form.querySelector('input[name="filter.v.price.gte"]').getAttribute("min"));value>min&&(facets[key]=value);return}if(key=="filter.v.price.lte"){let max=parseFloat(form.querySelector('input[name="filter.v.price.lte"]').getAttribute("max"));value<max&&(facets[key]=value);return}key=key.replace("rlw-",""),facets.hasOwnProperty(key)?Array.isArray(facets[key])?facets[key].push(value):facets[key]=[facets[key],value]:facets[key]=[value]}}),window.currentSorting=window.currentSorting||"",facets.hasOwnProperty("sort_by")&&(window.currentSorting=facets.sort_by),document.body.classList.contains("template-search")){let searchWrapper=document.querySelector(".relewise-search-page-wrapper");
124if(!searchWrapper)return;let productTerms=document.querySelector('.main-search-form input[name="q"]').value,productPerPage2=parseInt(document.querySelector('input[name="search_page_config"]').dataset.productperpage);searchWrapper.classList.add("is-loading"),window.currentSearchPage=page,renderRelewiseSearchPage(productTerms,page,productPerPage2,window.currentSorting,facets).catch(error=>{console.log(error)}).finally(()=>{searchWrapper.scrollIntoView({behavior:"smooth"}),searchWrapper.classList.remove("is-loading")});return}let collectionInput=document.querySelector('input[name="collection_id"]');if(!collectionInput)return;let collectionId=collectionInput.value,productPerPage=collectionInput.dataset.productperpage;document.querySelector(".relewise-collection-page-wrapper").classList.add("is-loading"),getItemCollectionPage(collectionId,productPerPage,page,window.currentSorting,facets).then(data=>{renderCollectionFromRelewise(data)}).catch(error=>{console.log(error)}).finally(()=>{document.querySelector(".relewise-collection-page-wrapper").scrollIntoView({behavior:"smooth"}),document.querySelector(".relewise-collection-page-wrapper").classList.remove("is-loading"),updateRelewiseUrlParams(facets,window.currentPage,"collection")})});function updateRelewiseUrlParams(facets,currentPage,context,productTerms){let urlParams=new URLSearchParams;context==="search"&&productTerms&&urlParams.set("q",productTerms),currentPage>1&&urlParams.set("page",currentPage),window.currentSorting&&window.currentSorting!="manual"&&urlParams.set("sort_by",window.currentSorting),Object.keys(facets).forEach(key=>{key!=="sort_by"&&(Array.isArray(facets[key])?facets[key].length&&urlParams.set(key.replace(`${prefixData}_`,"rlw_"),facets[key]):facets[key]&&urlParams.set(key.replace(`${prefixData}_`,"rlw_"),facets[key]))});let url=window.location.href.split("?")[0];urlParams.toString()!==""&&(url=url+"?"+urlParams.toString()),window.history.replaceState(null,"",url)}document.addEventListener("click",function(event){if(event.target.closest("#relewise-collection-sort .popover-listbox__option")){event.preventDefault();let sortValue=event.target.closest("#relewise-collection-sort .popover-listbox__option").getAttribute("value");if(document.querySelector(".rlw-drawer-sort-by")&&sortValue!=window.currentSorting){document.querySelector(`.rlw-drawer-sort-by .checkbox-list input[name="sort_by"][value="${sortValue}"]`).checked=!0;let form=document.querySelector(".facets-drawer-relewise #facet-form");document.dispatchEvent(new CustomEvent("relewise:facets:update",{bubbles:!0,detail:{form}}))}}if(event.target.closest(".relewise-collection-page-wrapper .facet-toggle-btn, .relewise-search-page-wrapper .facet-toggle-btn")){event.preventDefault();let facetKey=event.target.closest(".facet-toggle-btn").dataset.key;if(facetKey){let facetElement=document.querySelector(`.facets-drawer #facet-form details[data-key="${facetKey}"]`);facetElement&&(document.querySelectorAll(".facets-drawer #facet-form details").forEach(item=>{item.getAttribute("data-key")!=facetKey&&item.removeAttribute("open")}),facetElement.querySelector(".accordion__toggle").click())}}if(event.target.closest(".relewise-collection-page-wrapper .removable-facet a, .relewise-search-page-wrapper .removable-facet a")){event.preventDefault();let removeFacetElement=event.target.closest(".removable-facet a"),facetKey=removeFacetElement.dataset.facetKey;if(facetKey=="price")window.activeFacets["filter.v.price.gte"]="",window.activeFacets["filter.v.price.lte"]="";else{let facetValue=removeFacetElement.dataset.facetValue;window.activeFacets[facetKey]=window.activeFacets[facetKey].filter(value=>value!=facetValue)}let form=document.querySelector(".facets-drawer-relewise #facet-form");document.dispatchEvent(new CustomEvent("relewise:facets:update",{bubbles:!0,detail:{form,activeFacets:window.activeFacets}}))}if(event.target.closest(".relewise-collection-page-wrapper .rlw-facet-clear-all, .relewise-search-page-wrapper .rlw-facet-clear-all")){event.preventDefault();let form=document.querySelector(".facets-drawer-relewise #facet-form");window.activeFacets={},document.dispatchEvent(new CustomEvent("relewise:facets:update",{bubbles:!0,detail:{form,activeFacets:window.activeFacets}}))}
124if(event.target.closest(".relewise-collection-page-wrapper .pagination__item")){event.preventDefault();let rel=event.target.closest(".relewise-collection-page-wrapper .pagination__item").getAttribute("rel");rel=="prev"?window.currentPage=window.currentPage-1:rel=="next"&&(window.currentPage=window.currentPage+1);let form=document.querySelector(".facets-drawer-relewise #facet-form");document.dispatchEvent(new CustomEvent("relewise:facets:update",{bubbles:!0,detail:{form,page:window.currentPage}}))}if(event.target.closest(".search__pagination-relewise .pagination__item")){event.preventDefault();let paginationElement=event.target.closest(".search__pagination-relewise .pagination__item");if(paginationElement.classList.contains("pagination__item--disabled"))return;let rel=paginationElement.getAttribute("rel");rel=="prev"?window.currentSearchPage=window.currentSearchPage-1:rel=="next"&&(window.currentSearchPage=window.currentSearchPage+1);let form=document.querySelector(".facets-drawer-relewise #facet-form");if(form)document.dispatchEvent(new CustomEvent("relewise:facets:update",{bubbles:!0,detail:{form,page:window.currentSearchPage,activeFacets:window.activeFacets}}));else{let productTerms=document.querySelector('.main-search-form input[name="q"]').value,productPerPage=parseInt(document.querySelector('input[name="search_page_config"]').dataset.productperpage);renderRelewiseSearchPage(productTerms,window.currentSearchPage,productPerPage),document.querySelector(".relewise-search-page-wrapper").scrollIntoView({behavior:"smooth"})}}let searchTabButton=event.target.closest(".relewise-search-page-wrapper .predictive-search__tab-item button");if(searchTabButton){let tabItem=searchTabButton.closest(".predictive-search__tab-item"),paginationNav=document.querySelector(".search__pagination-relewise");paginationNav&&(tabItem&&tabItem.dataset.type==="products"&&window.searchPageTotalPages>1?paginationNav.classList.remove("hidden"):paginationNav.classList.add("hidden"))}}),document.addEventListener("input",function(event){if(event.target.closest("input.rlw-facet-search")){event.preventDefault();let inputElement=event.target.closest("input.rlw-facet-search"),parentCheckboxListElement=inputElement.closest(".accordion__content")?.querySelector(".checkbox-list");if(!parentCheckboxListElement)return;let key=inputElement.dataset.key,inputValue=inputElement.value;if(key&&window.relewiseFacets&&window.relewiseFacets[key]&&window.relewiseFacets[key].length){let values=window.relewiseFacets[key].slice(0,10);inputValue&&(values=window.relewiseFacets[key].filter(option=>option.value.toLowerCase().includes(inputValue.toLowerCase())||renderLabel(option.value,key).toLowerCase().includes(inputValue.toLowerCase())));let currentCheckedValues=[];parentCheckboxListElement.querySelectorAll('input[type="checkbox"]:checked').forEach(input=>{currentCheckedValues.push(input.value)});let checkboxListHtml="";if(values=values.slice(0,10),values.forEach(option=>{if(currentCheckedValues.includes(option.value))return;let label=renderLabel(option.value,key);checkboxListHtml+=`<div class="checkbox-container"> 125 <input type="checkbox" class="checkbox" name="rlw-${key}" value="${option.value}" id="${key}-${option.value}" ${option.selected?"checked":""}> 126 <label for="${key}-${option.value}">${label} (${option.hits})</label> 127 </div>`}),parentCheckboxListElement.querySelectorAll(".checkbox-container").forEach(container=>{currentCheckedValues.includes(container.querySelector('input[type="checkbox"]').value)||container.remove()}),checkboxListHtml){const temp=document.createElement("div");temp.innerHTML=checkboxListHtml,Array.from(temp.childNodes).forEach(node=>{parentCheckboxListElement.appendChild(node)})}}}});function getVisitorId(){if(Shopify&&Shopify.customerPrivacy){let currentConsent=Shopify.customerPrivacy.currentVisitorConsent();if(currentConsent&¤tConsent.marketing=="yes"&¤tConsent.analytics=="yes"){if(window.relewiseAPI.customer_id)return window.relewiseAPI.customer_id;{let visitorId=localStorage.getItem("relewise_visitor_id");return visitorId||(Shopify.customerPrivacy.consentId()?visitorId=Shopify.customerPrivacy.consentId():visitorId="",localStorage.setItem("relewise_visitor_id",visitorId)),visitorId}}}else return sessionStorage.getItem("consent_accepted")=="true"?window.relewiseAPI.customer_id?window.relewiseAPI.customer_id:localStorage.getItem("relewise_visitor_id")?localStorage.getItem("relewise_visitor_id"):"":""}async function updateRelewiseUserId(){if(Shopify&&Shopify.customerPrivacy){if(sessionStorage.getItem("relewise_user_updated")=="true")return;let currentConsent=Shopify.customerPrivacy.currentVisitorConsent();if(currentConsent&¤tConsent.marketing=="yes"&¤tConsent.analytics=="yes"){sessionStorage.setItem("consent_accepted","true");let visitorId=localStorage.getItem("relewise_visitor_id");if(visitorId&&window.relewiseAPI.customer_id&&visitorId!=window.relewiseAPI.customer_id){const tracker=new Relewise.Tracker(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url});let user=Relewise.UserFactory.byAuthenticatedId(window.relewiseAPI.customer_id,visitorId,{});await tracker.trackUserUpdate({user}),sessionStorage.setItem("relewise_user_updated","true")}}else sessionStorage.getItem("consent_accepted")=="true"&&sessionStorage.removeItem("consent_accepted"),sessionStorage.getItem("relewise_user_updated")&&sessionStorage.removeItem("relewise_user_updated")}}function afterConsentLibraryLoaded(){window.temporaryId=getVisitorId(),updateRelewiseUserId()}document.addEventListener("DOMContentLoaded",function(){window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1",onLoad:afterConsentLibraryLoaded.bind(this)}]),window.temporaryId=getVisitorId();const isProductPage=document.body.classList.contains("template-product"),isSeachPage=document.body.classList.contains("template-search"),isCartPage=document.body.classList.contains("template-cart"),isCollectionPage=document.body.classList.contains("template-collection");if(isSeachPage){let productPerPage=parseInt(document.querySelector('input[name="search_page_config"]').dataset.productperpage);window.currentSearchPage=1;
127let urlParams=new URLSearchParams(window.location.search);urlParams.has("page")&&(window.currentSearchPage=parseInt(urlParams.get("page"))),window.currentSorting="",urlParams.has("sort_by")&&(window.currentSorting=urlParams.get("sort_by"));let initialFacets={};urlParams.forEach((value,key)=>{key==="page"||key==="sort_by"||key==="q"||key==="type"||(key.startsWith("rlw_")?value.indexOf(",")!==-1?initialFacets[key.replace("rlw_",`${prefixData}_`)]=value.split(","):initialFacets[key.replace("rlw_",`${prefixData}_`)]=[value]:(key==="filter.v.price.gte"||key==="filter.v.price.lte")&&(initialFacets[key]=value))});let productTerms=document.querySelector('.main-search-form input[name="q"]').value.trim();productTerms.length>=2?(saveSearchTerm(productTerms),document.querySelector(".shopify-section--main-search h1").textContent=window.themeVariables.ir.search.mainSearchPlaceholder+' "'+productTerms+'"',renderRelewiseSearchPage(productTerms,window.currentSearchPage,productPerPage,window.currentSorting,initialFacets)):(document.querySelector(".shopify-section--main-search h1").textContent=window.themeVariables.ir.search.mainSearchPlaceholder+' ""',renderPopularProductsOnSearchPage(productPerPage));let searchDebounceTimer;document.querySelector('.main-search-form input[name="q"]').addEventListener("input",function(event){clearTimeout(searchDebounceTimer),searchDebounceTimer=setTimeout(function(){let productTerms2=event.target.value.trim();productTerms2.length>=2?(saveSearchTerm(productTerms2),document.querySelector(".shopify-section--main-search h1").textContent=window.themeVariables.ir.search.mainSearchPlaceholder+' "'+productTerms2+'"',window.currentSearchPage=1,window.currentSorting="",window.activeFacets={},renderRelewiseSearchPage(productTerms2,window.currentSearchPage,productPerPage)):(document.querySelector(".shopify-section--main-search h1").textContent=window.themeVariables.ir.search.mainSearchPlaceholder+' ""',renderPopularProductsOnSearchPage(productPerPage))},500)})}if(isCollectionPage){let collectionInput=document.querySelector('input[name="collection_id"]'),collectionId=collectionInput.value,productPerPage=collectionInput.dataset.productperpage,page=1,urlParam
127s=new URLSearchParams(window.location.search);urlParams.has("page")&&(page=urlParams.get("page")),window.currentSorting="",urlParams.has("sort_by")&&(window.currentSorting=urlParams.get("sort_by"));let facets={};urlParams.forEach((value,key)=>{key!="page"&&key!="sort_by"&&(key.startsWith("rlw_")?value.indexOf(",")!==-1?facets[key.replace("rlw_",`${prefixData}_`)]=value.split(","):facets[key.replace("rlw_",`${prefixData}_`)]=[value]:facets[key]=value)}),getItemCollectionPage(collectionId,productPerPage,page,window.currentSorting,facets).then(data=>{renderCollectionFromRelewise(data)}).catch(error=>{console.log(error)}).finally(()=>{document.querySelector(".relewise-collection-page-wrapper").classList.remove("is-loading")})}fetchAndRenderRecommendations(),window.featuredCollectionJsonProducts&&Object.keys(window.featuredCollectionJsonProducts).length>0&&(document.querySelectorAll(".featured-collection-json-wrapper").forEach(wrapper=>{wrapper.classList.add("is-loading")}),fetchFeaturedCollectionJsonProducts().then(responses=>{Object.entries(responses).forEach(([sectionId,products])=>{const wrapper=document.querySelector(`.featured-collection-json-wrapper[data-section-id="${sectionId}"]`);if(!wrapper||!products.length)return;wrapper.innerHTML="",products.forEach((product,index)=>{let productCard=buildProductCardHtml(product);index===0&&productCard.classList.add("is-selected"),wrapper.appendChild(productCard)});const scrollAreaId=wrapper.closest("scroll-carousel").id,controlsContainer=wrapper.closest(".floating-controls-container");
127controlsContainer&&!controlsContainer.querySelector('[is="prev-button"]')&&(controlsContainer.innerHTML+=`<button is="prev-button" class="circle-button circle-button--lg circle-button--fill border group" aria-controls="${scrollAreaId}" disabled> 128 <span class="sr-only">{{ 'general.accessibility.previous' | t }}</span> 129 <span class="animated-arrow animated-arrow--reverse"></span> 130 </button> 131 <button is="next-button" class="circle-button circle-button--lg circle-button--fill border group" aria-controls="${scrollAreaId}"> 132 <span class="sr-only">{{ 'general.accessibility.next' | t }}</span> 133 <span class="animated-arrow"></span> 134 </button>`)})}).catch(error=>{console.error("Featured collection JSON products error:",error)}).finally(()=>{document.querySelectorAll(".featured-collection-json-wrapper").forEach(wrapper=>{wrapper.classList.remove("is-loading")})}));async function fetchFeaturedCollectionJsonProducts(){const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:"Featured Collection",user:getUserData()},searcher=new Relewise.Searcher(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}),responses={};for(const[sectionId,config]of Object.entries(window.featuredCollectionJsonProducts)){const productIds=(typeof config.productIds=="string"?JSON.parse(config.productIds):config.productIds).map(id=>String(id)),maxProducts=config.productsCount||productIds.length,builder=new Relewise.ProductSearchBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).filters(f=>f.addProductIdFilter(productIds)).pagination(p=>p.setPageSize(maxProducts));try{const response=await searcher.searchProducts(builder.build());responses[sectionId]=response.results||[]}catch(error){console.error(`Failed to fetch products for section ${sectionId}:`,error),responses[sectionId]=[]}}return responses}});async function getRecommendationProducts(){const productRecommendationsBuilder=new Relewise.ProductsRecommendationCollectionBuilder;return Object.values(window.relewiseRecommendations).forEach(recommendation=>{let type=recommendation.recommendationType,productId=recommendation.productId,count=recommendation.productsCount,collectionId=recommendation.collectionId;const settings={language:`${window.themeVariables.settings.languages}`,currency:`${window.themeVariables.settings.shopCurrency}`,displayedAtLocation:recommendation.displayedAtLocation||"Recommendations",user:getUserData()};let builder;type=="PopularProducts"?builder=new Relewise.PopularProductsBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setNumberOfRecommendations(count):type=="PersonalProduct"?builder=new Relewise.PersonalProductRecommendationBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setNumberOfRecommendations(count):type=="MostViewed"?builder=new Relewise.PopularProductsBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).basedOn("MostViewed").setNumberOfRecommendations(count):type=="ProductsViewedAfterViewingProduct"?builder=new Relewise.ProductsViewedAfterViewingProductBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).product({productId}).setNumberOfRecommendations(count):type=="PurchasedWithProduct"?builder=new Relewise.PurchasedWithProductBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).product({productId}).setNumberOfRecommendations(count):type=="PurchasedWithCurrentCart"&&(builder=new Relewise.PurchasedWithCurrentCartBuilder(settings).setSelectedProductProperties({displayName:!0,dataKeys:PRODUCT_DATA_KEYS,pricing:!0}).setSelectedVariantProperties({dataKeys:[`${prefixData}_ShopifyVariantId`]}).setNumberOfRecommendations(count)),builder&&collectionId&&builder.filters(f=>f.addProductCategoryIdFilter("ImmediateParent",[collectionId])),builder&&productRecommendationsBuilder.addRequest(builder.build())}),await new Relewise.Recommender(window.relewiseAPI.relewise_dataid,window.relewiseAPI.relewise_api,{serverUrl:window.relewiseAPI.relewise_server_url}).batchProductRecommendations(productRecommendationsBuilder.build())}function fetchAndRenderRecommendations(){!window.relewiseRecommendations||Object.keys(window.relewiseRecommendations).length===0||(document.querySelectorAll(".relewise-recommendation-wrapper").forEach(wrapper=>{wrapper.classList.add("is-loading")}),getRecommendationProducts().then(data=>{data.responses&&data.responses.length&&Object.keys(window.relewiseRecommendations).forEac
134h((sectionId,index)=>{data.responses.forEach((response,index2)=>{if(index==index2&&response.recommendations&&response.recommendations.length){let products=response.recommendations,wrapper=document.querySelector(`.relewise-recommendation-wrapper[data-section-id="${sectionId}"]`);if(!wrapper)return;wrapper.innerHTML="",products.forEach((product,index3)=>{let productCard=buildProductCardHtml(product);index3==0&&productCard.classList.add("is-selected"),wrapper.appendChild(productCard)});let scrollAreaId=wrapper.closest("scroll-carousel").id,controlsContainer=wrapper.closest(".floating-controls-container"),existingPrev=controlsContainer.querySelector('[is="prev-button"]'),existingNext=controlsContainer.querySelector('[is="next-button"]');existingPrev&&existingPrev.remove(),existingNext&&existingNext.remove(),controlsContainer.innerHTML+=`<button is="prev-button" class="circle-button circle-button--lg circle-button--fill border group" aria-controls="${scrollAreaId}" disabled> 135 <span class="sr-only">{{ 'general.accessibility.previous' | t }}</span> 136 <span class="animated-arrow animated-arrow--reverse"></span> 137 </button> 138 139 <button is="next-button" class="circle-button circle-button--lg circle-button--fill border group" aria-controls="${scrollAreaId}"> 140 <span class="sr-only">{{ 'general.accessibility.next' | t }}</span> 141 <span class="animated-arrow"></span> 142 </button>`}})})}).catch(error=>{console.log(error)}).finally(()=>{document.querySelectorAll(".relewise-recommendation-wrapper").forEach(wrapper=>{wrapper.classList.remove("is-loading")})}))}let cartDrawerRecommendationsFingerprint=null;function getCartDrawerFingerprint(){const wrapper=document.querySelector(".relewise-cart-drawer-recommendation-wrapper");if(!wrapper)return null;const productsJson=wrapper.closest(".cart-drawer__recommendations")?.querySelector(".relewise-cart-drawer-products")?.textContent;return productsJson?productsJson.trim():null}function isCartDrawerOpen(){return!!document.querySelector("cart-drawer[open]")}function refreshCartDrawerRecommendationsIfNeeded(){const fingerprint=getCartDrawerFingerprint();!fingerprint||fingerprint===cartDrawerRecommendationsFingerprint||(cartDrawerRecommendationsFingerprint=fingerprint,fetchAndRenderCartDrawerRecommendations())}document.addEventListener("dialog:after-show",function(event){event.target?.id==="cart-drawer"&&refreshCartDrawerRecommendationsIfNeeded()}),document.addEventListener("shopify:section:load",function(event){event.target.classList.contains("shopify-section--relewise-recommendations")&&fetchAndRenderRecommendations(),event.target.querySelector(".relewise-cart-drawer-recommendation-wrapper")&&(cartDrawerRecommendationsFingerprint=null,isCartDrawerOpen()&&refreshCartDrawerRecommendationsIfNeeded())}),document.addEventListener("cart:change",function(event){cartDrawerRecommendationsFingerprint=null,isCartDrawerOpen()&&setTimeout(()=>{refreshCartDrawerRecommendationsIfNeeded()},event.detail?.baseEvent==="variant:add"?50:1300)}),document.addEventListener("cart:refresh",function(){cartDrawerRecommendationsFingerprint=null,isCartDrawerOpen()&&setTimeout(()=>{refreshCartDrawerRecommendationsIfNeeded()},500)}),window.addEventListener("resize",()=>{setTimeout(()=>{window.alignHeight(".product-card .rpc-author",document.body)},300)}); 143//# sourceMappingURL=/cdn/shop/t/5/assets/relewise.js.map?v=44826242845797686191787655866
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.