{"version":3,"file":"chunks/97c7206171a2aa.js","mappings":"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","sources":["webpack:///./resources/js/components/specific/conditional-quiz.ts"],"sourcesContent":["import tracking from '../../utils/tracking';\n\ntype State = {\n step: number,\n score: number,\n currentTreePosition?: {\n expanded: false,\n selected: [],\n cardType?: any,\n },\n answers?: {}\n}\n\nclass ConditionalQuiz {\n domRoot: HTMLElement;\n mainRoot: any;\n scoreRoot: any;\n params: any;\n labels: any;\n firstChoice: string;\n currentState: State;\n previousState: State;\n scores: any;\n questions: any;\n cardContainer: any;\n uniqueAnswers: any[];\n stepsHistory: any[];\n\n constructor(domRoot: HTMLElement, params: any) {\n this.domRoot = domRoot;\n this.mainRoot = this.domRoot.querySelector('.parent-quiz');\n this.scoreRoot = this.domRoot.querySelector('.scores-area');\n this.params = params;\n this.labels = params.labels;\n this.firstChoice = Object.keys(params.choices)[0];\n this.currentState = {\n step: 0,\n score: 0\n };\n this.previousState = {\n step: 0,\n score: 0\n };\n this.scores = params.scores;\n this.questions = params.questions;\n this.cardContainer;\n this.uniqueAnswers = [];\n this.stepsHistory = [];\n this.init();\n }\n\n init() {\n this.scoreRoot.addEventListener('click', (e) => {\n tracking.trackLateRenderedEvent(\"clicked\", e.target);\n });\n this.checkQuizAndAdvance(true);\n }\n\n checkQuizAndAdvance(startFromZero, startOver) {\n this.previousState = JSON.parse(JSON.stringify(this.currentState));\n if (startFromZero) {\n this.currentState = {\n step: -1,\n score: 0,\n currentTreePosition: {\n expanded: false,\n selected: []\n },\n answers: {}\n };\n }\n let clicked = this.currentState.currentTreePosition?.selected;\n let cardType = this.currentState.currentTreePosition?.cardType;\n let shouldShowErrors = cardType == \"radio\" && clicked.length == 0;\n\n if (shouldShowErrors && this.currentState.step > 0) {\n this.renderQuiz(true);\n } else {\n const choiceSelected = clicked[0];\n const choiceVal = this.domRoot.querySelector('#' + choiceSelected) ? Number(this.domRoot.querySelector('#' + choiceSelected).value) : 0;\n const choiceSlug = clicked.length > 0 ? clicked : this.firstChoice;\n if (this.currentState.step > 0 && this.domRoot.querySelector('#' + choiceSelected)) {\n clicked.forEach((ans, index) => {\n this.currentState.answers[this.currentState.step + '-choice-' + index] = {\n question: document.querySelector('.card-question-title').innerText,\n answer: this.domRoot.querySelector('#' + ans).innerText,\n openEndedAnswer: this.domRoot.querySelector(\"#\" + ans + '-open') ? this.domRoot.querySelector(\"#\" + ans + '-open').value : undefined\n }\n })\n }\n\n let thisUnique = [];\n clicked.forEach(click => {\n thisUnique.push(this.currentState.currentTreePosition.choices[click].choiceSlug);\n })\n this.uniqueAnswers.push(thisUnique);\n this.currentState.step += 1;\n if (startOver) {\n this.uniqueAnswers = [];\n this.previousState.step = 1;\n }\n this.currentState.score += choiceVal;\n var newPosition;\n\n if (this.currentState.step < 2) {\n newPosition = JSON.parse(JSON.stringify(this.params.choices[this.firstChoice]));\n } else if (this.currentState.currentTreePosition.card) {\n newPosition = this.currentState.currentTreePosition.card;\n } else if (this.currentState.currentTreePosition.choices[choiceSlug[0]] && this.currentState.currentTreePosition.choices[choiceSlug[0]].card) {\n newPosition = this.currentState.currentTreePosition.choices[choiceSlug[0]].card;\n }\n if (newPosition) {\n newPosition.selected = [];\n }\n\n this.stepsHistory.push(this.previousState);\n\n this.currentState.currentTreePosition = newPosition;\n this.renderQuiz();\n\n if (!startFromZero) {\n window.scrollTo({\n left: 0,\n top: this.domRoot.offsetTop,\n behavior: 'smooth'\n });\n }\n }\n }\n\n renderQuiz(withErrors?: boolean) {\n const prevStep = this.previousState.step;\n const thisStep = this.currentState.step;\n let animateClass = thisStep < prevStep ? \" adding\" : \" subtracting\";\n let tossedCard = this.mainRoot.lastElementChild;\n\n if (thisStep < prevStep || withErrors || thisStep == 0) {\n // no need to animate if re-checking or if starting from zero\n } else {\n tossedCard.className += \" tossdown\";\n this.mainRoot.removeChild(tossedCard);\n this.domRoot.appendChild(tossedCard);\n setTimeout(() => {\n this.domRoot.removeChild(tossedCard);\n }, 500);\n }\n this.scoreRoot.innerHTML = \"\";\n this.mainRoot.className = \"parent-quiz\" + (withErrors || thisStep == prevStep ? \"\" : animateClass);\n this.mainRoot.innerHTML = this.topper();\n const cardContainer = this.el(\"div\", {\n className: \"card narrow\"\n });\n this.mainRoot.appendChild(cardContainer);\n\n if (thisStep > 1 && this.currentState.currentTreePosition == undefined) {\n this.renderLastCard();\n } else if (thisStep > 0) {\n this.renderQuestionCard(withErrors);\n } else {\n this.renderFirstCard();\n }\n }\n\n renderQuestionCard(withErrors?: boolean) {\n const cardContainer = this.mainRoot.lastElementChild;\n let totalCards = this.params.choices[this.firstChoice].totalCards;\n\n let cardPosition = this.currentState.currentTreePosition;\n let currentStep = cardPosition.customStep ? cardPosition.customStep : this.currentState.step;\n cardContainer.innerHTML += `\n <h5 class=\"eyebrows\">\n <span class=\"current-step\">${currentStep}</span>\n ${totalCards > 0 ? `<span class=\"remaining\">/ ${totalCards}</span>` : ``}\n </h5>\n <h3 class=\"card-question-title\">${cardPosition.title}</h3>`;\n\n if (cardPosition.expandCollapseLabel) {\n cardContainer.appendChild(this.el(\"button\", {\n className: `expander ${cardPosition.expanded ? 'toggled' : ''}`,\n innerHTML: cardPosition.expandCollapseLabel,\n onclick: () => {\n tracking.trackEvent(\"clicked\", {\n label: cardPosition.expandCollapseLabel,\n expanding: !cardPosition.expanded,\n event: \"clicked\",\n eventComponent: \"linkButton\"\n });\n cardPosition.expanded = !cardPosition.expanded;\n this.renderQuiz(true);\n }\n }));\n }\n cardContainer.appendChild(this.el(\"div\", {\n className: `extra-content ${cardPosition.expandCollapse ? 'expandable' : ''} ${cardPosition.expanded ? 'expanded' : ''}`,\n innerHTML: cardPosition.extraContent,\n onclick: (e) => {\n tracking.trackLateRenderedEvent(\"clicked\", e.target);\n }\n }));\n for (let option in cardPosition.choices) {\n let cardChoice = cardPosition.choices[option];\n cardContainer.appendChild(this.el(\"button\", {\n className: `card-choice wide-button ${cardPosition.cardType}` + (cardPosition.selected.includes(option) ? \" checked\" : \" unchecked\"),\n value: cardChoice.value,\n id: option,\n innerHTML: cardChoice.title,\n onclick: (e) => {\n let newArray = cardPosition.selected;\n if (e.target.classList.contains(\"radio\")) {\n newArray = [e.target.id];\n } else if (e.target.classList.contains(\"checkbox\")) {\n if (!e.target.classList.contains(\"checked\")) {\n newArray.push(e.target.id)\n } else if (e.target.classList.contains(\"checked\") && newArray.includes(e.target.id)) {\n let newIndex = newArray.indexOf(e.target.id);\n newArray.splice(newIndex, 1);\n }\n }\n tracking.trackEvent(\"clickQuizChoice\", {\n label: cardPosition.choices[option].title,\n event: \"clicked\",\n eventComponent: \"linkButton\"\n });\n cardPosition.selected = newArray;\n this.renderQuiz(true);\n }\n }));\n\n if (cardChoice.openEnded && cardPosition.selected.includes(option)) {\n let textInput = this.el(\"input\", {\n className: \"open-ended\" + (cardPosition.selected.includes(option) ? \" shown\" : \" hidden\"),\n type: \"text\",\n id: option + \"-open\",\n placeholder: cardChoice.openEndedPlaceholder ? cardChoice.openEndedPlaceholder : \"\",\n value: cardChoice.openValue ? cardChoice.openValue : \"\",\n onkeyup: (e) => {\n cardChoice.openValue = e.target.value;\n }\n });\n cardContainer.appendChild(textInput);\n }\n }\n\n var shouldShowErrors = cardPosition.cardType == \"radio\" && this.currentState.currentTreePosition.selected.length == 0;\n cardContainer.appendChild(this.el(\"div\", {\n className: \"error grow-box\",\n innerHTML: withErrors && shouldShowErrors ? this.labels.error : \"\"\n }));\n const buttonContainer = this.el(\"div\", {\n className: \"buttons\"\n });\n buttonContainer.appendChild(this.el(\"button\", {\n innerHTML: this.labels.back,\n className: \"button--secondary button--small\",\n onclick: () => {\n this.uniqueAnswers.pop();\n tracking.trackEvent('goBack', {\n label: this.labels.back,\n event: \"clicked\",\n eventComponent: \"linkButton\",\n parentLabel: cardPosition.title\n });\n this.currentState = this.stepsHistory.pop();\n this.renderQuiz();\n }\n }));\n buttonContainer.appendChild(this.el(\"button\", {\n innerHTML: this.labels.next,\n className: \"button--orange button--small right\",\n onclick: () => {\n tracking.trackEvent('clickQuizForward', {\n label: this.labels.next,\n event: \"clicked\",\n eventComponent: \"linkButton\",\n parentLabel: cardPosition.title\n });\n this.checkQuizAndAdvance();\n }\n }));\n cardContainer.appendChild(buttonContainer)\n }\n\n renderFirstCard() {\n const cardContainer = this.mainRoot.lastElementChild;\n const selectOptions = this.el(\"select\", {\n className: \"wide-button\"\n });\n selectOptions.addEventListener('change', (e) => this.firstChoice = e.target.value);\n\n for (var firstChoice in this.params.choices) {\n selectOptions.innerHTML += `<option value=\"${firstChoice}\" ${firstChoice == this.firstChoice ? \"selected\" : \"\"}>\n ${this.params.choices[firstChoice].firstChoiceTitle}\n </option>`;\n }\n\n const startButton = this.el(\"button\", {\n innerHTML: this.labels.start,\n className: \"wide-button button--orange\"\n });\n startButton.addEventListener('click', () => {\n this.checkQuizAndAdvance();\n tracking.trackEvent('startQuiz', {\n label: this.labels.start,\n event: \"clicked\",\n eventComponent: \"linkButton\",\n });\n });\n cardContainer.innerHTML = this.params.firstCard;\n\n this.questions.forEach(question => {\n cardContainer.appendChild(this.el(\"label\", {\n innerHTML: question.title\n }));\n\n if (question.questionType == \"select\") {\n let selector = this.el(\"select\", {\n value: question.answer,\n onchange: (e) => {\n question.answer = e.target.value;\n }\n });\n question.options.forEach(option => {\n selector.appendChild(this.el(\"option\", {\n value: option,\n innerText: option\n }))\n })\n cardContainer.appendChild(selector);\n } else {\n cardContainer.appendChild(this.el(\"input\", {\n type: \"text\",\n value: question.answer,\n onkeyup: (e) => {\n question.answer = e.target.value;\n }\n }));\n }\n\n });\n\n cardContainer.appendChild(this.el(\"label\", {\n innerHTML: this.labels.firstQuestion\n }));\n cardContainer.appendChild(selectOptions);\n cardContainer.appendChild(startButton);\n }\n\n renderLastCard() {\n tracking.trackEvent('Completed Quiz', {\n event: \"clicked\",\n eventComponent: \"linkButton\",\n questions: this.questions,\n score: this.currentState.score,\n productChosen: this.firstChoice,\n quizQuestionsAndAnswers: this.currentState.answers\n });\n\n const cardContainer = this.mainRoot.lastElementChild;\n cardContainer.innerHTML += this.params.lastCard;\n const lastButton = this.el(\"button\", {\n innerHTML: this.labels.startOver,\n className: \"button--small button--outline\"\n });\n lastButton.addEventListener('click', () => {\n this.checkQuizAndAdvance(true, true);\n tracking.trackEvent(\"clicked\", {\n event: \"clicked\",\n eventComponent: \"linkButton\",\n label: this.labels.startOver\n });\n });\n cardContainer.appendChild(lastButton);\n cardContainer.appendChild(this.el(\"div\", {\n className: \"grow-box\"\n }));\n const finalScore = this.currentState.score;\n const indScores = this.params.choices[this.firstChoice].scores.length ? this.params.choices[this.firstChoice].scores : this.scores;\n for (let score in indScores) {\n let indScore = indScores[score];\n let isMatchingScore = finalScore >= indScore.minVal && finalScore < indScore.maxVal;\n let scoreContainer = this.el(\"div\", {\n className: `score-container ${isMatchingScore ? \" visible-score\" : \"hidden-score\"}`\n });\n let scoreHeader = this.el(\"button\", {\n className: `${indScore.bgColor} wide-button header ${indScore.textColor}`,\n innerHTML: (isMatchingScore ? \"\" : \"<span>+</span>\") + indScore.title,\n onclick: function (e) {\n const contentNode = e.target.nextElementSibling;\n contentNode.style.display = contentNode.style.display == \"block\" && contentNode.className == \"content hidden\" ? \"none\" : \"block\";\n const plusIndicator = e.target.children[0];\n if (plusIndicator) {\n plusIndicator.innerHTML = plusIndicator.innerHTML === \"+\" ? \"-\" : \"+\";\n }\n tracking.trackEvent(\"clicked\", {\n event: \"clicked\",\n eventComponent: \"linkButton\",\n label: indScore.title,\n });\n }\n });\n scoreContainer.appendChild(scoreHeader);\n scoreContainer.appendChild(this.el(\"div\", {\n className: \"content \" + (isMatchingScore ? \"\" : \"hidden\"),\n innerHTML: indScore.content\n }));\n if (isMatchingScore) {\n this.scoreRoot.insertBefore(scoreContainer, this.scoreRoot.firstChild);\n } else {\n this.scoreRoot.appendChild(scoreContainer);\n }\n }\n this.smoothScroll(this.scoreRoot);\n\n /* show results for unique questions answered */\n this.uniqueAnswers.flat().forEach(question => {\n\n let correspondingElements = this.domRoot.querySelectorAll('.' + question);\n if (correspondingElements.length) {\n correspondingElements.forEach(elem => {\n elem.classList.remove('hide-all')\n });\n }\n });\n }\n\n el(type: string, parameters: { [name: string]: string }) {\n const newEl = document.createElement(type) as HTMLElement;\n for (let parameter in parameters) {\n // @ts-ignore\n newEl[parameter] = parameters[parameter];\n }\n return newEl;\n }\n\n topper() {\n return `<div class=\"toppers\">\n <div class=\"topper last\"></div>\n <div class=\"topper mid\"></div>\n <div class=\"topper front\"></div>\n </div>`;\n }\n\n smoothScroll(item: any) {\n let initialScroll = window.scrollY;\n let itemPosition = this.offsetTopFind(item);\n let increment = (initialScroll - itemPosition) * 0.02;\n let delay = 1000 / increment;\n let scrollInterval = setInterval(winScroll, delay);\n\n function winScroll() {\n if (Math.abs(initialScroll - itemPosition) > 100) {\n initialScroll = initialScroll - increment;\n window.scrollTo(0, initialScroll);\n } else {\n clearInterval(scrollInterval);\n window.scrollTo(0, itemPosition);\n }\n }\n }\n\n offsetTopFind(el, withHeight = 0) {\n var yPosition = withHeight;\n while (el.parentNode !== null) {\n yPosition += el.offsetTop;\n el = el.parentNode;\n }\n return yPosition;\n }\n}\n\nexport default ConditionalQuiz;"],"names":["ConditionalQuiz","domRoot","params","_classCallCheck","this","mainRoot","querySelector","scoreRoot","labels","firstChoice","Object","keys","choices","currentState","step","score","previousState","scores","questions","cardContainer","uniqueAnswers","stepsHistory","init","key","value","addEventListener","e","tracking","target","checkQuizAndAdvance","startFromZero","startOver","_this$currentState$cu","_this$currentState$cu2","_this","JSON","parse","stringify","currentTreePosition","expanded","selected","answers","clicked","cardType","length","renderQuiz","choiceSelected","choiceVal","Number","choiceSlug","forEach","ans","index","question","document","innerText","answer","openEndedAnswer","undefined","newPosition","thisUnique","click","push","card","window","scrollTo","left","top","offsetTop","behavior","withErrors","_this2","prevStep","thisStep","animateClass","tossedCard","lastElementChild","className","removeChild","appendChild","setTimeout","innerHTML","topper","el","renderLastCard","renderQuestionCard","renderFirstCard","_this3","totalCards","cardPosition","currentStep","customStep","concat","title","expandCollapseLabel","onclick","label","expanding","event","eventComponent","expandCollapse","extraContent","_loop","option","cardChoice","includes","id","newArray","classList","contains","newIndex","indexOf","splice","openEnded","textInput","type","placeholder","openEndedPlaceholder","openValue","onkeyup","shouldShowErrors","error","buttonContainer","back","pop","parentLabel","next","_this4","selectOptions","firstChoiceTitle","startButton","start","firstCard","questionType","selector","onchange","options","firstQuestion","_this5","productChosen","quizQuestionsAndAnswers","lastCard","lastButton","finalScore","indScores","_loop2","indScore","isMatchingScore","minVal","maxVal","scoreContainer","scoreHeader","bgColor","textColor","contentNode","nextElementSibling","style","display","plusIndicator","children","content","insertBefore","firstChild","smoothScroll","flat","correspondingElements","querySelectorAll","elem","remove","parameters","newEl","createElement","parameter","item","initialScroll","scrollY","itemPosition","offsetTopFind","increment","scrollInterval","setInterval","Math","abs","clearInterval","yPosition","arguments","parentNode"],"sourceRoot":""}