{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_project/cartridge/client/default/js/components/spinner.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///./cartridges/app_project_marni/cartridge/client/default/js/survey-app.js","webpack:///./cartridges/app_project_marni/cartridge/client/default/js/survey/survey-app.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","$","fn","spinner","$element","this","start","length","stop","include","keys","forEach","processInclude","document","ready","body","landingContainer","querySelector","mainHeader","questionsContainer","getElementById","surveySection","surveyHeader","startButton","finalMessage","progressBar","backButton","closeButton","DEFAULT_ANIMATION_SPEED","dataset","animationsSpeed","DEFAULT_SPLASH_SPEED","splashSpeed","GIFT_FINDER_PLP_BASE_URL","plpBaseUrl","userResponses","questions","stepOfTranslation","questionsObj","currentStep","totalQuestions","renderAllQuestions","childNodes","question","index","questionDiv","createElement","classList","add","setAttribute","bgImage","style","display","questionNumber","innerText","appendChild","questionTitle","questionContent","answers","answer","answerIndex","answerButton","trim","innerHTML","addEventListener","step","answerButtons","querySelectorAll","a","remove","disabled","String","fromCharCode","setTimeout","updateProgressBar","showQuestion","animateLetters","letters","addRedClass","resetAll","letter","responseString","resp","toLowerCase","window","location","showFinalMessage","handleAnswerClick","direction","transform","q","backgroundImage","slideInFromBottom","slideInFromTop","slideOutToTop","slideOutToBottom","element","duration","visibility","opacity","requestAnimationFrame","timestamp","progress","Math","min","max","position","progressBarFill","progressPercentage","width","e","preventDefault","JSON","parse","stepTranslation","removeAttribute","fadeIn","fadeOut","innerWidth","isMobile","imgContainer","actionContainer","headerHeight","clientHeight","innerHeight"],"mappings":"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","file":"app_project_marni/cartridge/static/default/js/survey-app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 936);\n","'use strict';\n\n/**\n * Show a spinner inside a given element\n * @param {element} $target - Element to block by the veil and spinner.\n * Pass body to block the whole page.\n */\nfunction addSpinner($target) {\n let $veil = $('
');\n $veil.append('
');\n if ($target.get(0).tagName === 'IMG') {\n $target.after($veil);\n $veil.css({ width: $target.width(), height: $target.height() });\n if ($target.parent().css('position') === 'static') {\n $target.parent().css('position', 'relative');\n }\n } else {\n $target.append($veil);\n if ($target.css('position') === 'static') {\n $target.parent().css('position', 'relative');\n $target.parent().addClass('veiled');\n }\n if ($target.get(0).tagName === 'BODY') {\n $veil.find('.spinner').css('position', 'fixed');\n }\n }\n $veil.click(function (e) {\n e.stopPropagation();\n });\n}\n\n/**\n * Remove existing spinner\n * @param {element} $veil - jQuery pointer to the veil element\n */\nfunction removeSpinner($veil) {\n if ($veil.parent().hasClass('veiled')) {\n $veil.parent().css('position', '');\n $veil.parent().removeClass('veiled');\n }\n $veil.off('click');\n $veil.remove();\n}\n\n// element level spinner:\n$.fn.spinner = function () {\n let $element = $(this);\n let Fn = function () {\n this.start = function () {\n if ($element.length) {\n // remove default spinner test IBT-1180\n // addSpinner($element);\n }\n };\n this.stop = function () {\n if ($element.length) {\n // remove default spinner test IBT-1180\n // let $veil = $('.veil');\n // removeSpinner($veil);\n }\n };\n };\n return new Fn();\n};\n\n// page-level spinner:\n$.spinner = function () {\n let Fn = function () {\n this.start = function () {\n // remove default spinner test IBT-1180\n // addSpinner($('body'));\n };\n this.stop = function () {\n // remove default spinner test IBT-1180\n // removeSpinner($('.veil'));\n };\n };\n return new Fn();\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nconst processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('./survey/survey-app'));\n});\n\nrequire('core/components/spinner');\n","'use-strict';\n\n// Answer Tick SVG\nconst tickSvg = \"\";\n\n// Selectors\nconst body = document.body;\nconst landingContainer = document.querySelector('.surveylanding-container');\nconst mainHeader = document.querySelector('header.header');\nconst questionsContainer = document.getElementById('questions-container');\nconst surveySection = document.getElementById('survey');\nconst surveyHeader = surveySection ? surveySection.querySelector('.header-bar') : null;\nconst startButton = landingContainer ? landingContainer.querySelector('.primary-button.start-button') : null;\nconst finalMessage = document.getElementById('final-message');\nconst progressBar = document.getElementById('progress-bar');\nconst backButton = document.getElementById('back-button');\nconst closeButton = document.getElementById('x-button');\n\n// Variables\nconst DEFAULT_ANIMATION_SPEED = surveySection ? surveySection.dataset.animationsSpeed : 500;\nconst DEFAULT_SPLASH_SPEED = surveySection ? surveySection.dataset.splashSpeed : 2000;\nconst GIFT_FINDER_PLP_BASE_URL = surveySection ? surveySection.dataset.plpBaseUrl : null;\nlet userResponses = [];\nlet questions = {};\nlet stepOfTranslation = '';\nlet questionsObj = null;\nlet currentStep = 0;\nlet totalQuestions = null\n\nfunction renderAllQuestions() {\n totalQuestions = questions.length;\n\n if (questionsContainer && questionsContainer.childNodes.length === 0) {\n questions.forEach((question, index) => {\n const questionDiv = document.createElement('div');\n questionDiv.classList.add('question');\n questionDiv.setAttribute('id', 'question-' + index);\n questionDiv.setAttribute('data-bg-image', question.bgImage);\n questionDiv.style.display = index === 0 ? 'block' : 'none';\n\n const questionNumber = document.createElement('div');\n questionNumber.classList.add('question-number');\n questionNumber.innerText = (index + 1) + \" \" + stepOfTranslation + \" \" + totalQuestions;\n questionDiv.appendChild(questionNumber);\n\n const questionTitle = document.createElement('div');\n questionTitle.classList.add('question-title');\n questionTitle.innerText = question.questionContent;\n questionDiv.appendChild(questionTitle);\n\n question.answers.forEach((answer, answerIndex) => {\n const answerButton = document.createElement('button');\n answerButton.innerText = answer.trim();\n answerButton.classList.add('answerButton');\n answerButton.innerHTML += tickSvg;\n\n answerButton.addEventListener('click', () => handleAnswerClick(answerButton, questionDiv, index, answerIndex));\n\n questionDiv.appendChild(answerButton);\n });\n\n questionsContainer.appendChild(questionDiv);\n });\n }\n\n showQuestion(currentStep);\n}\n\nfunction showQuestion(step, direction = 'forward') {\n surveyHeader.style.transform = 'translateY(0)';\n const questions = document.querySelectorAll('.question');\n questions.forEach((q, index) => {\n if (index === step) {\n if (q.dataset.bgImage && q.dataset.bgImage !== '') {\n questionsContainer.style.backgroundImage = 'url('+q.dataset.bgImage+')';\n }\n \n if (direction === 'forward') {\n slideInFromBottom(q);\n } else {\n slideInFromTop(q);\n }\n } else {\n if (direction === 'forward') {\n slideOutToTop(q);\n } else {\n slideOutToBottom(q);\n }\n }\n });\n\n document.getElementById('back-button').style.display = (step > 0) ? 'flex' : 'none';\n}\n\nfunction handleAnswerClick(answerButton, questionDiv, step, index) {\n const answerButtons = questionDiv.querySelectorAll('.answerButton');\n answerButtons.forEach(a => a.classList.remove('selected'));\n answerButton.classList.add('animate-border');\n answerButtons.forEach(a => a.disabled = true);\n\n userResponses[step] = { question: step + 1, answer: String.fromCharCode(65 + index) };\n \n if (step < (questions.length -1)) {\n setTimeout(() => {\n answerButton.classList.remove('animate-border');\n answerButton.classList.add('selected');\n\n updateProgressBar();\n toggleBackButton();\n \n currentStep++;\n showQuestion(currentStep);\n }, DEFAULT_ANIMATION_SPEED);\n } else {\n setTimeout(() => {\n answerButton.classList.remove('animate-border');\n answerButton.classList.add('selected');\n updateProgressBar();\n showFinalMessage();\n }, DEFAULT_ANIMATION_SPEED);\n }\n}\n\nfunction handleBackButtonClick() {\n if (currentStep > 0) {\n currentStep--;\n const questionDiv = document.getElementById('question-' + currentStep);\n const answerButtons = questionDiv.querySelectorAll('.answerButton');\n answerButtons.forEach(a => a.disabled = false);\n updateProgressBar();\n showQuestion(currentStep, 'backward');\n }\n}\n\nif (startButton) {\n startButton.addEventListener('click', function (e) {\n e.preventDefault();\n slideOutToTop(mainHeader);\n slideInFromBottom(progressBar);\n body.classList.add('no-scroll');\n mainHeader.style.display = 'none';\n surveySection.classList.add('started');\n slideOutToBottom(landingContainer);\n\n setTimeout(() => {\n slideInFromTop(surveyHeader);\n surveyHeader.style.transform = 'translateY(0)';\n surveyHeader.style.display = 'flex';\n\n if (!questionsObj) {\n questionsObj = JSON.parse(questionsContainer.dataset.questions);\n stepOfTranslation = questionsContainer.dataset.stepTranslation;\n questionsContainer.removeAttribute('data-questions');\n questionsContainer.removeAttribute('data-step-translation');\n }\n questions = questionsObj.questions;\n renderAllQuestions();\n fadeIn(questionsContainer);\n }, 800);\n\n if (closeButton) {\n closeButton.disabled = false;\n closeButton.addEventListener('click', function() {\n body.classList.remove('no-scroll');\n questionsContainer.style.display = 'none';\n fadeOut(questionsContainer);\n \n surveySection.querySelectorAll('.answerButton').forEach(a => {\n a.classList.remove('selected');\n a.disabled = false; \n });\n slideOutToBottom(progressBar);\n currentStep = 0;\n updateProgressBar();\n\n slideOutToTop(surveyHeader);\n \n setTimeout(() => {\n questionsContainer.style.display = 'flex';\n mainHeader.style.display = 'block';\n slideInFromTop(mainHeader);\n mainHeader.style.position = window.innerWidth < 992 ? 'fixed' : 'sticky';\n finalMessage.classList.remove('active');\n\n surveySection.classList.remove('started');\n slideInFromBottom(landingContainer);\n userResponses = [];\n }, 800)\n });\n }\n });\n}\n\nif (backButton) {\n backButton.addEventListener('click', handleBackButtonClick);\n}\n\nfunction showFinalMessage() {\n questionsContainer.style.display = 'none';\n surveyHeader.style.display = 'none';\n finalMessage.classList.add('active');\n \n const marniLetters = finalMessage.querySelectorAll('.marni-logo');\n animateLetters(marniLetters);\n\n let responseString = ''\n userResponses.forEach(resp => responseString += resp.answer.toLowerCase());\n\n setTimeout(() => {\n if (GIFT_FINDER_PLP_BASE_URL && responseString && responseString !== '') {\n window.location = GIFT_FINDER_PLP_BASE_URL + responseString;\n }\n }, DEFAULT_SPLASH_SPEED)\n}\n\nfunction animateLetters(letters) {\n let index = 0;\n\n function addRedClass() {\n if (index < letters.length) {\n letters[index].classList.add('red');\n index++;\n setTimeout(addRedClass, 400);\n } else {\n setTimeout(resetAll, 400); \n }\n }\n\n function resetAll() {\n letters.forEach(letter => letter.classList.remove('red'));\n setTimeout(animateLetters(letters), 1000);\n }\n\n setTimeout(() => {\n addRedClass();\n }, 400)\n}\n\nfunction fadeIn(element, duration = 500) {\n element.style.visibility = \"visible\";\n element.style.position = \"relative\";\n element.style.opacity = 0;\n let start = null;\n\n function step(timestamp) {\n if (!start) start = timestamp;\n let progress = timestamp - start;\n element.style.opacity = Math.min(progress / duration, 1);\n if (progress < duration) {\n window.requestAnimationFrame(step);\n }\n }\n\n window.requestAnimationFrame(step);\n}\n\nfunction fadeOut(element, duration = 500) {\n element.style.opacity = 1;\n let start = null;\n\n function step(timestamp) {\n if (!start) start = timestamp;\n let progress = timestamp - start;\n element.style.opacity = Math.max(1 - progress / duration, 0);\n \n if (progress < duration) {\n window.requestAnimationFrame(step);\n } else {\n element.style.visibility = \"hidden\";\n element.style.position = \"absolute\";\n }\n }\n window.requestAnimationFrame(step);\n}\n\nfunction slideInFromBottom(element, duration = 500) {\n element.style.display = \"block\";\n element.style.visibility = \"visible\";\n element.style.opacity = 0;\n element.style.transform = \"translateY(100%)\";\n let start = null;\n\n function step(timestamp) {\n if (!start) start = timestamp;\n let progress = timestamp - start;\n element.style.opacity = Math.min(progress / duration, 1);\n element.style.transform = `translateY(${Math.max(100 - (progress / duration) * 100, 0)}%)`;\n if (progress < duration) {\n window.requestAnimationFrame(step);\n }\n }\n\n window.requestAnimationFrame(step);\n}\n\nfunction slideInFromTop(element, duration = 500) {\n element.style.display = \"block\";\n element.style.visibility = \"visible\";\n element.style.opacity = 0;\n element.style.transform = \"translateY(-100%)\";\n let start = null;\n\n function step(timestamp) {\n if (!start) start = timestamp;\n let progress = timestamp - start;\n element.style.opacity = Math.min(progress / duration, 1);\n element.style.transform = `translateY(${Math.max(-100 + (progress / duration) * 100, 0)}%)`;\n if (progress < duration) {\n window.requestAnimationFrame(step);\n }\n }\n\n window.requestAnimationFrame(step);\n}\n\nfunction slideOutToTop(element, duration = 500) {\n element.style.opacity = 1;\n element.style.transform = \"translateY(0)\";\n let start = null;\n\n function step(timestamp) {\n if (!start) start = timestamp;\n let progress = timestamp - start;\n element.style.opacity = Math.max(1 - progress / duration, 0);\n element.style.transform = `translateY(${-(progress / duration) * 100}%)`;\n if (progress < duration) {\n window.requestAnimationFrame(step);\n } else {\n element.style.visibility = \"hidden\";\n element.style.position = \"absolute\";\n }\n }\n\n window.requestAnimationFrame(step);\n}\n\nfunction slideOutToBottom(element, duration = 500) {\n element.style.opacity = 1;\n element.style.transform = \"translateY(0)\";\n let start = null; \n\n function step(timestamp) {\n if (!start) start = timestamp;\n let progress = timestamp - start;\n element.style.opacity = Math.max(1 - progress / duration, 0);\n element.style.transform = `translateY(${(progress / duration) * 100}%)`;\n if (progress < duration) {\n window.requestAnimationFrame(step);\n } else {\n element.style.visibility = \"hidden\";\n element.style.position = \"absolute\";\n }\n }\n\n window.requestAnimationFrame(step);\n}\n\nfunction updateProgressBar() {\n const progressBarFill = document.getElementById('progress-bar-fill');\n const progressPercentage = ((currentStep+1) / totalQuestions) * 100;\n progressBarFill.style.width = `${progressPercentage}%`;\n}\n\nfunction toggleBackButton() {\n const backButton = document.getElementById('back-button');\n backButton.disabled = currentStep === 0;\n}\n\nwindow.addEventListener('resize', () => {\n const isMobile = () => window.innerWidth < 992;\n if(landingContainer && !isMobile()) {\n const mainHeader = document.querySelector('header.header');\n let imgContainer = landingContainer.querySelector('.img-container');\n let actionContainer = landingContainer.querySelector('.actions-container');\n \n let headerHeight = mainHeader.clientHeight;\n imgContainer.setAttribute('style', 'max-height: '+(window.innerHeight-headerHeight)+'px !important');\n actionContainer.setAttribute('style', 'max-height: '+(window.innerHeight-headerHeight)+'px !important');\n mainHeader.style.position = 'sticky';\n } else if (landingContainer && isMobile()) {\n const mainHeader = document.querySelector('header.header');\n let imgContainer = landingContainer.querySelector('.img-container');\n let actionContainer = landingContainer.querySelector('.actions-container');\n imgContainer.removeAttribute('style');\n actionContainer.removeAttribute('style');\n mainHeader.style.position = 'fixed';\n }\n});"],"sourceRoot":""}