{"version":3,"sources":["webpack:///./scripts/components/onboarding.js"],"names":["component","startTour","setupEvents","handleNextEnd","handleSlickChange","endTour","isSkip","currentTourState","TourSkipCount","TourCompleted","focusTrap","deactivate","$","removeClass","$onboarding","fadeOut","$skip","blur","propKey","isDesktopView","userStateManager","setSubState","sessionStorage","setItem","ev","slick","currentSlide","$currentPageCurrent","text","setTimeout","$slider","find","attr","totalSlides","addClass","html","document","on","nextText","off","hasClass","$next","remove","children","length","init","prependTo","insertBefore","fadeIn","first","focus","$currentPageTotal","createFocusTrap","activate","skipLimit","dots","infinite","speed","prevArrow","previousText","nextArrow","responsive","breakpoint","settings","module","window","width","tourRanThisSession","getItem","resetTour","tourResetData","TourStep","removeItem","getUserState","data","TourState","MobileTourState"],"mappings":"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","file":"22.4715bc14c4347bac8957.js","sourcesContent":["import userStateManager from \"../helpers/stateManager\";\n\nexport const component = async () => {\n const module = await import(\"focus-trap\");\n const createFocusTrap = module.default;\n\n const slick = await import(\"../vendor/jquery.slick\");\n\n var $onboarding = $(\".onboarding\");\n var $skip = $(\"#onboarding-skip\");\n var $slider = $(\".onboarding__slides\");\n var $next = $(\".tooltip__next\");\n var totalSlides = 0;\n var $currentPageCurrent = $(\"#onboarding-counter-current\");\n var $currentPageTotal = $(\"#onboarding-counter-total\");\n var skipLimit = 5;\n var focusTrap;\n var currentTourState = {};\n var isDesktopView = $(window).width() > 1200;\n var tourRanThisSession = sessionStorage.getItem(\"tourRanThisSession\");\n var previousText = 'Previous Slide';\n var nextText = 'Next Slide';\n\n //Allow users to reset their tour\n window.resetTour = function () {\n console.log(\"resetting tour\");\n //Update desktop or mobile tour\n var tourResetData = {\n TourCompleted: false,\n TourSkipCount: 0,\n TourStep: 0,\n };\n userStateManager.setSubState(tourResetData, \"TourState\", function () {\n userStateManager.setSubState(tourResetData, \"MobileTourState\");\n });\n //Update session status\n sessionStorage.removeItem(\"tourRanThisSession\");\n };\n\n if ($onboarding.length < 1 || tourRanThisSession === \"true\") {\n return false;\n }\n\n userStateManager.getUserState(function (data) {\n // console.log('Initial user state:');\n // console.log(data);\n\n if (currentTourState !== null && currentTourState !== undefined) {\n //Set tour state based on device type and decide if we progress\n if (isDesktopView === true) {\n currentTourState = data.TourState;\n if (currentTourState.TourCompleted === false) {\n //Timeout to give fonts a chance to load\n setTimeout(() => {\n startTour();\n }, 2000);\n }\n } else if (data && data.MobileTourState) {\n currentTourState = data.MobileTourState;\n if (currentTourState.TourCompleted === false) {\n setTimeout(() => {\n startTour();\n }, 2000);\n }\n }\n }\n });\n\n function startTour() {\n $(\"html\").addClass(\"hide-scroll\");\n\n //Remove the slide that's not on mobile\n if (!isDesktopView) {\n $(\".slide--removed-mobile\").remove();\n }\n //Set total slides\n totalSlides = $slider.children().length;\n\n $slider.on(\"init\", function (ev, init) {\n $slider.find(\".slick-dots\").prependTo(\".onboarding__slides\");\n $skip.insertBefore($slider.find(\".slick-next\"));\n $onboarding.fadeIn();\n $onboarding.find(\"a, button\").first().focus();\n\n $currentPageTotal.text(totalSlides);\n\n setupEvents();\n\n focusTrap = createFocusTrap(\"#onboarding\");\n focusTrap.activate();\n\n //Disable skip button if we're up to skip limit\n //Dev note: Change request to always hide skip on mobile, so mobile skip limit is ignored\n if (\n currentTourState.TourSkipCount >= skipLimit ||\n isDesktopView === false\n ) {\n $skip.addClass(\"-disabled\");\n }\n });\n\n $slider.slick({\n dots: true,\n infinite: false,\n speed: 500,\n prevArrow: ``,\n nextArrow: ``,\n responsive: [\n {\n breakpoint: 768,\n settings: {\n speed: 200,\n },\n },\n ],\n });\n }\n\n function setupEvents() {\n //Skip button, but can end as a finish for mobile on last slide\n $skip.on(\"click touchend\", function () {\n if (!$skip.hasClass(\"-disabled\")) {\n const isSkip = $onboarding.hasClass(\"-atend\") ? false : true;\n endTour(isSkip);\n }\n });\n\n $next.on(\"click\", function () {\n $slider.slick(\"slickNext\");\n });\n\n $slider.on(\"afterChange\", handleSlickChange);\n\n //Quick workaround to block interacting with dots\n //tabindex is set after init event...\n $slider.find(\".slick-dots li\").off(\"click\");\n setTimeout(() => {\n $slider.find(\".slick-dots li button\").attr(\"tabindex\", \"-1\");\n }, 500);\n }\n\n function handleNextEnd() {\n endTour(false);\n }\n\n function handleSlickChange(ev, slick, currentSlide) {\n $currentPageCurrent.text(currentSlide + 1);\n\n //tabindex is set after change event...\n setTimeout(() => {\n $slider.find(\".slick-dots li button\").attr(\"tabindex\", \"-1\");\n }, 500);\n\n if (currentSlide + 1 === totalSlides) {\n $onboarding.addClass(\"-atend\");\n $slider.find(\".slick-next\").html(\"Finish\");\n\n $(document).on(\"click\", \".onboarding .slick-next\", handleNextEnd);\n } else {\n $slider.find(\".slick-next\").html(nextText);\n $onboarding.removeClass(\"-atend\");\n\n $(document).off(\"click\", \".onboarding .slick-next\", handleNextEnd);\n }\n\n if (currentSlide === 0) {\n $onboarding.addClass(\"-atstart\");\n } else {\n $onboarding.removeClass(\"-atstart\");\n }\n }\n\n function endTour(isSkip) {\n if (isSkip === true) {\n currentTourState.TourSkipCount = currentTourState.TourSkipCount + 1;\n } else {\n currentTourState.TourCompleted = true;\n }\n\n focusTrap.deactivate();\n $(\"html\").removeClass(\"hide-scroll\");\n $onboarding.fadeOut();\n $skip.blur();\n\n //console.log('Tour state to be saved...');\n //console.log(currentTourState);\n\n //Update desktop or mobile tour\n let propKey = isDesktopView ? \"TourState\" : \"MobileTourState\";\n userStateManager.setSubState(currentTourState, propKey);\n //Update session status\n sessionStorage.setItem(\"tourRanThisSession\", \"true\");\n }\n};\n"],"sourceRoot":""}