1class ProductFinder extends HTMLElement{constructor(){super()}openStep(index){const stepCount=this.querySelectorAll("[data-step]").length,currentStep=this.steps[index-1];if(currentStep)if(index>1){const currentAnswers=currentStep.querySelectorAll(".answer-input:checked"),answersJson=Array.from(currentAnswers)?.map(answer=>({id:answer.dataset?.answerId,content:answer.dataset?.answerTitle})),answer_event=new CustomEvent("productfinder:question_answered",{detail:{question:{id:currentStep.dataset?.questionId,content:currentStep.dataset?.questionTitle},answers:answersJson}});window.dispatchEvent(answer_event)}else{const start_event=new CustomEvent("productfinder:start");window.dispatchEvent(start_event)}if(index===stepCount-1){const completed_event=new CustomEvent("productfinder:completed");window.dispatchEvent(completed_event)}this.steps.forEach(step=>{Number(step.dataset.step)<=index?step.classList.add("active"):step.classList.remove("active")})}submitProductFinder(){const form=this.querySelector("#product-finder-form"),form_data=new FormData(form),question_steps=this.querySelectorAll("[data-question-id]"),properties={Routine:form_data.get("contact[note][Routine]")??void 0,"Routinefinder Completion Date":form_data.get("contact[note][Routinefinder Completion Date]")??void 0,"Routinefinder Results Basis":form_data.get("contact[note][Routinefinder Results Basis]")?.split(",")??void 0,"Routinefinder Results Detailed":form_data.get("contact[note][Routinefinder Results Detailed]")?.split(",")??void 0,"Routinefinder Teilnahme":form_data.get("contact[note][Routinefinder Teilnahme]")==="true",results_url:form_data.get("contact[note][results_url]")??void 0};question_steps.forEach(step=>{const property_name=step.dataset.questionId,property_value=form_data.get(`contact[note][${property_name}]`);properties[property_name]=property_value.includes(",")?property_value.split(","):property_value});const attributes={first_name:form_data.get("contact[first_name]")??void 0,last_name:form_data.get("contact[last_name]")??void 0,email:form_data.get("contact[email]")??"",phone_number:form_data.get("contact[phone]")??void 0,properties},completed_event=new CustomEvent("productfinder:submit",{detail:{attributes}});window.dispatchEvent(completed_event),form.classList.add("submitted")}collectResult(){const result_buttons=this.querySelectorAll(".result-button"),result={routine:{reinigen:[],klaren:[],wirken:[],schutzen:[],pflegen:[]},crosssell:[]};this.answer_inputs.forEach(input=>{if(input.checked){const answer_value=JSON.parse(input.value);result.routine.reinigen=result.routine.reinigen.concat(answer_value.routine.reinigen),result.routine.klaren=result.routine.klaren.concat(answer_value.routine.klaren),result.routine.wirken=result.routine.wirken.concat(answer_value.routine.wirken),result.routine.schutzen=result.routine.schutzen.concat(answer_value.routine.schutzen),result.routine.pflegen=result.routine.pflegen.concat(answer_value.routine.pflegen),result.crosssell=result.crosssell.concat(answer_value.crosssell)}});const result_page_url=this.getAttribute("result-page"),result_url=new URL(result_page_url,location.origin),routine_basis=new Array,routine_advanced=new Array,first_available_reinigen=result.routine.reinigen.find(product=>product.available);first_available_reinigen&&(result_url.searchParams.set("reinigen",first_available_reinigen.handle),routine_advanced.push(first_available_reinigen.handle),routine_basis.push(first_available_reinigen.handle));const first_available_klaren=result.routine.klaren.find(product=>product.available);first_available_klaren&&(result_url.searchParams.set("klaren",first_available_klaren.handle),routine_advanced.push(first_available_klaren.handle));const available_wirken=result.routine.wirken.filter(product=>product.available);if(available_wirken.length>0){const available_wirken_handles=[...new Set(available_wirken.map(product=>product.handle))],available_wirken_string=available_wirken_handles?.join(",");result_url.searchParams.set("wirken",available_wirken_string),routine_advanced.push(available_wirken_handles),routine_basis.push(available_wirken_handles)}const first_available_schutzen=result.routine.schutzen.find(product=>product.available);first_available_schutzen&&(result_url.searchParams.set("schutzen",first_available_schutzen.handle),routine_advanced.push(first_available_schutzen.handle));const first_available_pflegen=result.routine.pflegen.find(product=>product.available);first_available_pflegen&&(result_url.searchParams.set("pflegen",first_available_pflegen.handle),routine_advanced.push(first_available_pflegen.handle),routine_basis.push(first_available_pflegen.handle));const available_crosssell=result.crosssell.filter(product=>product.available);if(available_crosssell.length>0){const available_crosssell_string=available_crosssell.map(product=>product.handle)?.join(",");result_url.searchParams.set("crosssell",available_crosssell_string)}const answerTitles=[];document.querySelectorAll("[data-question-id]").forEach((question,index)=>{let questionAnswerTitles=`${index}`;const checkedAnswers=question.querySelectorAll("[data-answer-title]:checked");
1checkedAnswers.forEach((checked_answer,index2)=>{index2===0?questionAnswerTitles+="-:-":questionAnswerTitles+="-|-",questionAnswerTitles+=checked_answer?.dataset?.answerTitle}),checkedAnswers.length>0&&(questionAnswerTitles=questionAnswerTitles.replace("&","%26"),answerTitles.push(questionAnswerTitles))}),result_url.searchParams.set("answers",answerTitles.join(",")),result_buttons.forEach(result_button=>result_button.setAttribute("href",result_url));const now=new Date,form=this.querySelector("#product-finder-form"),question_steps=this.querySelectorAll("[data-question-id]");let answered_steps=0;question_steps.forEach(step=>{const property_name=step.dataset.questionId,input=form.querySelector(`[name="contact[note][${property_name}]"]`);if(property_name&&property_name!==""&&input){const checked_answers=step.querySelectorAll(".answer-input:checked");if(checked_answers.length>0)if(checked_answers.length>1){const value=Array.from(checked_answers)?.map(answer=>answer.dataset?.answerTitle).join(",");input.value=value,answered_steps++}else{const value=checked_answers[0]?.dataset?.answerTitle;input.value=value,answered_steps++}}});const completion_date_input=form.querySelector('[name="contact[note][Routinefinder Completion Date]"]'),routine_basis_input=form.querySelector('[name="contact[note][Routinefinder Results Basis]"]'),routine_advanced_input=form.querySelector('[name="contact[note][Routinefinder Results Detailed]"]'),routine_participation_input=form.querySelector('[name="contact[note][Routinefinder Teilnahme]"]'),routine_result_url_input=form.querySelector('[name="contact[note][results_url]"]');completion_date_input?.setAttribute("value",`${now.getDate()}.${now.getMonth()+1}.${now.getFullYear()}`),routine_basis_input?.setAttribute("value",routine_basis.join(",")),routine_advanced_input?.setAttribute("value",routine_advanced.join(",")),routine_participation_input?.setAttribute("value",answered_steps===question_steps.length?"true":"false"),routine_result_url_input?.setAttribute("value",result_url),form.classList.remove("submitted")}initQuestions(){this.querySelectorAll(".quiz-question.has-answers").forEach(step=>{const nextButton=step.querySelector("[data-next-step]"),resultButton=step.querySelector(".result-button"),answerInputs=step.querySelectorAll(".answer-input"),currentCount=step.querySelector("[data-current-count]"),maxCount=step.querySelector("[data-max-count]"),maxCountNumber=Number(maxCount.dataset.maxCount);let count=0;if(answerInputs.forEach(input=>{input.checked&&count++}),count>maxCountNumber)return currentCount.dataset.currentCount=maxCountNumber,!1;count<1?(nextButton?.setAttribute("disabled",""),resultButton?.setAttribute("disabled",""),currentCount.dataset.currentCount=count):(nextButton?.removeAttribute("disabled"),resultButton?.removeAttribute("disabled"),currentCount.dataset.currentCount=count)})}checkStepState(input,step){const nextButton=step.querySelector("[data-next-step]"),resultButton=step.querySelector(".result-button"),answerInputs=step.querySelectorAll(".answer-input"),currentCount=step.querySelector("[data-current-count]"),maxCount=step.querySelector("[data-max-count]"),maxCountNumber=Number(maxCount.dataset.maxCount);let count=0;if(answerInputs.forEach(input2=>{input2.checked&&count++}),count>maxCountNumber)return input.checked=!1,currentCount.dataset.currentCount=maxCountNumber,!1;count<1?(nextButton?.setAttribute("disabled",""),resultButton?.setAttribute("disabled",""),currentCount.dataset.currentCount=count):(nextButton?.removeAttribute("disabled"),resultButton?.removeAttribute("disabled"),currentCount.dataset.currentCount=count)}init(){this.answer_inputs=this.querySelectorAll(".answer-input"),this.prev_buttons=this.querySelectorAll("[data-prev-step]"),this.next_buttons=this.querySelectorAll("[data-next-step]"),this.steps=this.querySelectorAll("[data-step]"),this.last_step=this.querySelector("[data-final-step]");const openStep=this.openStep.bind(this),checkStepState=this.checkStepState.bind(this),collectResult=this.collectResult.bind(this),initQuestions=this.initQuestions.bind(this);this.prev_buttons.forEach(prev_button=>{prev_button.addEventListener("click",event=>{const prevStep=Number(prev_button.dataset.prevStep);if(prevStep===0){const popup=this.closest("product-finder-popup, product-finder-popup-ai");if(popup&&typeof popup.close=="function"){popup.close();return}}openStep(prevStep)})}),this.next_buttons.forEach(next_button=>{next_button.addEventListener("click",event=>{openStep(Number(next_button.dataset.nextStep)),initQuestions()})}
1),this.answer_inputs.forEach(answer_input=>{const step=answer_input.closest("[data-step]");answer_input.addEventListener("input",event=>{checkStepState(answer_input,step)}),answer_input.addEventListener("input",collectResult)});const form=this.querySelector("#product-finder-form"),submitProductFinder=this.submitProductFinder.bind(this);form?.addEventListener("submit",event=>{event.preventDefault(),event.stopPropagation(),submitProductFinder()},!0);const start_event=new CustomEvent("productfinder:init");window.dispatchEvent(start_event)}connectedCallback(){this.init()}}customElements.define("product-finder",ProductFinder);class ProductFinderPopup extends HTMLElement{constructor(){super()}getFinder(url){let that=this;fetch(url,{credentials:"same-origin",headers:{"X-Requested-With":"XMLHttpRequest"},method:"GET"}).then(response=>response.text()).then(data=>{const template=document.createElement("template");template.innerHTML=data.trim();const productfinder=template.content.querySelector("product-finder");productfinder&&(that.insertAdjacentElement("afterbegin",productfinder),this.setAttribute("loaded",""))}).catch(function(err){console.error(err)})}open(){this.hasAttribute("loaded")||this.getFinder(this.fetchURL),window.theme.scroll.disable(),this.setAttribute("open",""),document.body.classList.add("product-finder-open")}close(){this.removeAttribute("open"),window.theme.scroll.enable();const close_event=new CustomEvent("productfinder:closed");window.dispatchEvent(close_event),document.body.classList.remove("product-finder-open")}connectedCallback(){const open=this.open.bind(this),close=this.close.bind(this);this.fetchURL=this.getAttribute("product-finder-url"),this.querySelector(".close-product-finder-popup").addEventListener("click",close);const productFinderPath=this.fetchURL.split("?").shift();document.addEventListener("DOMContentLoaded",event=>{document.querySelectorAll(`[href="${productFinderPath}"]`).forEach(openButton=>{openButton.addEventListener("click",event2=>{this.hasAttribute("product-finder-url-overwrite")&&(this.fetchURL=this.getAttribute("product-finder-url-overwrite")),event2.preventDefault(),open()})})})}}customElements.define("product-finder-popup",ProductFinderPopup);class ProductFinderPopupAI extends HTMLElement{constructor(){super()}open(){window.theme.scroll.disable(),this.setAttribute("open","")}close(){this.removeAttribute("open"),window.theme.scroll.enable()}connectedCallback(){const open=this.open.bind(this),close=this.close.bind(this);this.fetchURL=this.getAttribute("product-finder-url");const closeButton=this.querySelectorAll(".close-product-finder-popup").forEach(closeButton2=>closeButton2.addEventListener("click",close))}}customElements.define("product-finder-popup-ai",ProductFinderPopupAI); 2//# sourceMappingURL=/cdn/shop/t/676/assets/product-finder.js.map?v=151487867653223816111784012664
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.