{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/src/js/advisor.js","webpack:///./assets/src/js/modules/tooltips.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","AdivisorOption","options","getIeBrowserVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","RegExp","$1","appVersion","indexOf","isTouchEnabled","isTouchDevice","document","documentElement","maxTouchPoints","msMaxTouchPoints","$option","jqSelector","onClickCallback","containerXPos","on","addClass","removeClass","parent","offset","left","event","keyCode","window","advisor","gotoStep","num","slider","slick","currentStep","$","addBackTooltipEvents","card","tooltipBtns","querySelectorAll","length","addNewTooltipToButton","btn","setRecommendation","empty","id","data","isHidden","getRecommendendProductElement","contents","clone","appendTo","querySelector","formatOptionHtml","option","update","Math","round","reset","totalScore","each","parseInt","this","attr","score","matchDetails","noMatchDetails","percentageMatch","percentageMatchDisplay","values","materialMatch","find","text","sort","isHighest","median","item","len","append","matchCt","children","noMatchCt","matchCtDisplay","noMatchCtDisplay","removeAttr","updateDOM","hasClass","nonMatchesHtml","outerHTML","detach","resultWrapperDiv","a","b","Priority","sortPriority","sortAbc","prod","match","numSteps","init","arrows","infinite","swipe","draggable","waitForAnimate","index","$this","toggleClass","siblings","activeElement","blur","centerMode","mobileFirst","slidesToShow","responsive","breakpoint","settings","stopPropagation","urlOpt","replace","results","location","search","decodeURIComponent","getParameterByName","closest","getCurrentStep","setDefaultRecommendation","showTooltip","target","getAttribute","tooltip","getElementById","classList","add","x","offsetLeft","offsetWidth","caret","style","right","abs","removeAttribute","y","offsetTop","offsetHeight","top","setTooltipPosition","hideTooltip","remove","toggleTooltip","contains","addTooltipEventHandlers","addEventListener","addNewTooltipsToButtonGroup","btns","addTooltipsOnPageLoad"],"mappings":"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","file":"advisor.min.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 = 0);\n","import { addNewTooltipToButton } from './modules/tooltips';\nvar AdivisorOption = function AdivisorOption(options) {\n var getIeBrowserVersion = () => {\n var rv = -1; // Return value assumes failure.\n if (navigator.appName === 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent;\n var re = new RegExp('MSIE ([0-9]{1,}[\\\\.0-9]{0,})');\n if (re.exec(ua) !== null) {\n rv = parseFloat(RegExp.$1);\n }\n } else if (navigator.appName === 'Netscape') {\n // in IE 11 the navigator.appVersion says 'trident'\n // in Edge the navigator.appVersion does not say trident\n if (navigator.appVersion.indexOf('Trident') === -1) {\n // Not IE, Edge\n rv = 12;\n } else {\n rv = 11;\n }\n }\n return rv;\n };\n\n // Surface/touch detection\n var isTouchEnabled = false;\n var isTouchDevice = 'ontouchstart' in document.documentElement;\n var maxTouchPoints = navigator.maxTouchPoints || navigator.msMaxTouchPoints;\n if (isTouchDevice || maxTouchPoints > 1) {\n isTouchEnabled = true;\n }\n // Fix for edge on actual non-touch devices\n if (getIeBrowserVersion() > -1 && maxTouchPoints > 2) {\n isTouchEnabled = true;\n } else {\n isTouchEnabled = false;\n }\n // console.log(getIeBrowserVersion() + '/' + isTouchEnabled);\n\n var $option = options.jqSelector;\n var onClickCallback = options.onClickCallback;\n var containerXPos = 0;\n var addEventHandlers = function() {\n // Check if touch device\n if (getIeBrowserVersion() > -1 && isTouchEnabled) {\n // Don't add events\n } else {\n $option\n .on('mouseenter', function() {\n $option.addClass('is-active');\n })\n .on('mouseleave', function() {\n $option.removeClass('is-active');\n })\n }\n $option.on('mousedown', function() {\n containerXPos = $option.parent().offset().left;\n });\n $option.on('mouseup', function() {\n if (containerXPos !== $option.parent().offset().left) {\n return;\n }\n if (onClickCallback) {\n onClickCallback();\n }\n });\n $option.on('keydown', function(event) {\n if (event.keyCode === 13 && onClickCallback) {\n onClickCallback();\n }\n });\n };\n var init = function() {\n addEventHandlers();\n };\n init();\n};\n\nvar Advisor = function Advisor() {\n var data,\n matchCutoff = 50, // must be at least a 50% match to be returned\n cls_selected = 'selected',\n cls_active = 'is-active',\n cls_hidden = 'hidden',\n cls_option = 'advisor-step--slide',\n cls_tab = 'filter-tabs--tab',\n cls_recommendation = 'your-recommendation-wrapper',\n cls_step = 'advisor-step',\n cls_stepNav = 'advisor-step-nav',\n cls_stepNavPrev = 'advisor-step-nav-prev',\n cls_stepNavNext = 'advisor-step-nav-next',\n attr_id = 'data-paId',\n slider = $('#advisor-slider'),\n resultWrapperDiv = $('.result-wrapper'),\n currentStep = 1,\n noMatchDefault = '',\n numSteps = $('.advisor-step--wrapper').length,\n nonMatchesHtml = '';\n\n this.init = function(options) {\n // Set data source\n data = options.data;\n // Main slider containing 4 steps\n slider.slick({\n arrows: false,\n infinite: false,\n swipe: false,\n draggable: false,\n waitForAnimate: false\n });\n\n // Add click event to step tabs\n /* $('.' + cls_tab).on('click', function() {\n currentStep = $(this).index() + 1;\n gotoStep($(this).index());\n }); */\n $('.' + cls_tab + '> button').on('click', function() {\n currentStep = $(this).parent().index() + 1;\n gotoStep($(this).parent().index());\n });\n $('.' + cls_tab + '> button').on('focus', function() {\n currentStep = $(this).parent().index() + 1;\n gotoStep($(this).parent().index());\n });\n\n // Add event handlers to step options\n $('.' + cls_option).each(function() {\n var $this = $(this); \n var option = new AdivisorOption({\n jqSelector: $(this),\n onClickCallback: function() {\n $this.toggleClass(cls_selected);\n // Deselect every other sibling, except if on step 4\n if (currentStep !== numSteps) {\n $this.siblings().removeClass(cls_selected);\n }\n // Update results\n update();\n // If option is no longer selected, remove focus\n if (!$this.hasClass(cls_selected)) {\n document.activeElement.blur();\n }\n // Each selection advances except step 4\n // Do not advance if unselecting\n if (currentStep !== 4 && currentStep !== numSteps && $this.hasClass(cls_selected)) {\n gotoStep(currentStep);\n }\n }\n });\n });\n\n // Add slick to individual steps for smaller screen sizes\n $('.' + cls_step).each(function() {\n var $this = $(this);\n $this.slick({\n arrows: false,\n centerMode: false,\n infinite: true,\n mobileFirst: true,\n slidesToShow: 3,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: $this.find('.' + cls_option).length\n }\n },\n {\n breakpoint: 860,\n settings: {\n slidesToShow: $this.find('.' + cls_option).length\n }\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 4,\n }\n }\n ]\n }); \n });\n\n // Advisor step nav (smaller screens)\n $('.' + cls_stepNav).on('click', function(event) {\n event.stopPropagation();\n var $this = $(this);\n if ($this.hasClass(cls_stepNavPrev)) {\n gotoStep(currentStep - 2);\n } else if ($this.hasClass(cls_stepNavNext)) {\n gotoStep(currentStep);\n }\n });\n\n // Check params for option\n // Could do comma separated list if we wanted...\n var urlOpt = getParameterByName('option');\n if (urlOpt !== '') {\n var option = $('.' + cls_option + '[' + attr_id + '=\"' + urlOpt + '\"]');\n currentStep = getCurrentStep(option) + 1;\n if (currentStep >= numSteps) {\n currentStep = 1;\n }\n option.addClass(cls_selected);\n }\n // Inits\n // Go to the next step\n gotoStep(currentStep - 1);\n };\n\n this.setDefaultRecommendation = function() {\n // Set default recommendation\n setRecommendation();\n updateDOM();\n // Sort by priority/generally\n update();\n };\n\n function getParameterByName(name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regex = new RegExp('[\\\\?&]' + name + '=([^]*)'),\n results = regex.exec(location.search);\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n }\n\n function gotoStep(num) {\n slider.slick('slickGoTo', num);\n currentStep = num + 1;\n setActiveTab();\n }\n\n function getCurrentStep(option) {\n return option.closest('.advisor-step--wrapper').index() + 1;\n }\n\n function getRecommendendProductElement() {\n var id = '';\n for (var i = 0; i < data.length; i++) {\n // Get first product that isn't hidden\n if (id === '' && !data[i].isHidden) {\n id = data[i].id\n }\n }\n return $('.matched-result[data-product=\"' + id + '\"] ');\n }\n\n function addBackTooltipEvents(card) {\n if (!card) {\n return;\n }\n var tooltipBtns = card.querySelectorAll('[data-tooltip-id]');\n for (var i = 0; i < tooltipBtns.length; i++) {\n addNewTooltipToButton({\n btn: tooltipBtns[i],\n });\n }\n }\n function setRecommendation() {\n // Before clearing card, remove hidden from featured card in grid\n // Clear out current contents\n $('.' + cls_recommendation).empty();\n var card = getRecommendendProductElement();\n card.contents().clone().appendTo('.' + cls_recommendation);\n addBackTooltipEvents(document.querySelector('.' + cls_recommendation));\n // Hide card in grid\n card.addClass(cls_hidden);\n }\n\n function setActiveTab() {\n $('.' + cls_tab + '.' + cls_active).removeClass(cls_active);\n $('.' + cls_tab + ':eq(' + (currentStep - 1) + ')').addClass(cls_active);\n }\n\n function formatOptionHtml(option) {\n return '
' + option + '
'\n }\n\n function update() {\n // Reset DOM\n reset();\n var totalScore = 0;\n // What is the total score for each selected option\n $('.' + cls_option + '.' + cls_selected).each(function() {\n totalScore += parseInt($(this).attr('data-paMaxVal'));\n });\n var p, s;\n for (var i = 0; i < data.length; i++) {\n p = data[i];\n p.score = 0;\n p.matchDetails = '';\n p.noMatchDetails = noMatchDefault;\n p.totalScore = totalScore;\n // If nothing is selected, return all\n if ($('.' + cls_option + '.' + cls_selected).length === 0) {\n p.isHidden = false;\n p.percentageMatch = 1;\n p.percentageMatchDisplay = 'N/A';\n } else {\n // Get all selected options\n $('.' + cls_option + '.' + cls_selected).each(function() {\n p.score += p.values[$(this).attr(attr_id)];\n // If we're checking material, then need to be exclusive\n p.isHidden = !materialMatch(p);\n // Wrap option w/ html formatting \n s = formatOptionHtml($(this).find('.heading--icon').text());\n if (p.values[$(this).attr(attr_id)] === 0) {\n p.noMatchDetails += s;\n } else {\n p.matchDetails += s;\n }\n });\n // Clear out noMatchDetails if no noMatches exist\n if (p.noMatchDetails === noMatchDefault) {\n p.noMatchDetails = '';\n }\n p.percentageMatch = Math.round((p.score / totalScore) * 10000)/100;\n p.percentageMatchDisplay = String(Math.round((p.score / totalScore) * 10000)/100) + '%';\n\n if (p.score === 0) {\n p.isHidden = true;\n }\n }\n }\n // Multi-dimension sort, by score and isHidden\n data.sort(sort);\n // Below 50% match, cut it off\n var isMatch,\n isHighest = -1,\n median = matchCutoff;\n for (i = 0; i < data.length; i++) {\n p = data[i];\n if (!p.isHidden && p.percentageMatch > isHighest) {\n isHighest = p.percentageMatch;\n if (isHighest < median) {\n median = isHighest;\n }\n }\n // console.log('median: ' + median + ' best match %: ' + isHighest + '%');\n if (p.percentageMatch < median) {\n p.isHidden = true;\n }\n }\n\n // Update DOM\n var logStr = '-------\\nMatches\\n-------\\n';\n var len = 0,\n item;\n for (i = 0; i < data.length; i++) {\n p = data[i];\n item = $('.matched-result[data-product=\"' + p.id + '\"]');\n if (!p.isHidden) {\n logStr += p.name + ': ' + p.percentageMatch + '%\\n';\n item.removeClass(cls_hidden);\n // Add match/no-match to tooltips\n item.find('.match .tooltip-inner').empty().append(p.matchDetails);\n item.find('.no-match .tooltip-inner').empty().append(p.noMatchDetails);\n len++;\n } else {\n item.addClass(cls_hidden);\n }\n // Add match/no-match count to tooltip buttons\n var matchCt = item.find('.match .tooltip-inner').children('p').length;\n var noMatchCt = item.find('.no-match .tooltip-inner').children('p').length;\n var matchCtDisplay = '0';\n var noMatchCtDisplay = '0';\n if (matchCt > 0) {\n matchCtDisplay = '+' + matchCt;\n item.find('.card-features .match button').removeAttr('disabled');\n } else {\n item.find('.card-features .match button').attr('disabled', 'disabled');\n }\n if (noMatchCt > 0) {\n noMatchCtDisplay = '+' + noMatchCt;\n item.find('.card-features .no-match button').removeAttr('disabled');\n } else {\n item.find('.card-features .no-match button').attr('disabled', 'disabled');\n }\n item.find('.card-features .match button var').text(matchCtDisplay);\n item.find('.card-features .no-match button var').text(noMatchCtDisplay);\n }\n // If there's no matches\n if (len === 0) {\n logStr += 'No matches.\\n'; \n }\n setRecommendation();\n updateDOM();\n // console.log(logStr);\n }\n\n function updateDOM() {\n // Resort based on what's not hidden, remove the hiddens\n var p, item;\n for (var i = 0; i < data.length; i++) {\n p = data[i];\n item = $('.matched-result[data-product=\"' + p.id + '\"]');\n if (item.hasClass(cls_hidden)) {\n nonMatchesHtml += item[0].outerHTML;\n item.detach();\n } else {\n resultWrapperDiv.append(item);\n addBackTooltipEvents(document.querySelector('.matched-result[data-product=\"' + p.id + '\"]'));\n }\n }\n // If there are no results in \"Also consider...\" then hide that div\n // Also vice versa\n if ($('#alsoConsiderContent .matched-result').length === 0) {\n $('#alsoConsiderContent').addClass(cls_hidden);\n } else {\n $('#alsoConsiderContent').removeClass(cls_hidden);\n } \n }\n\n function reset() {\n // Readd non-matches to DOM\n resultWrapperDiv.append(nonMatchesHtml);\n // Reset nonMatchesHtml\n nonMatchesHtml = '';\n }\n\n function sort(a,b) {\n if (a.percentageMatch < b.percentageMatch)\n return 1;\n if (a.percentageMatch > b.percentageMatch)\n return -1;\n if (a.percentageMatch === b.percentageMatch)\n // Should look at priority here\n if (a.values.Priority !== 0 || b.values.Priority !== 0) {\n return sortPriority(a,b);\n } else {\n return sortAbc(a,b);\n }\n }\n\n function sortAbc(a,b) {\n if (a.name < b.name)\n return -1;\n if (a.name > b.name)\n return 1;\n return 0;\n }\n\n function sortPriority(a,b) {\n if (a.values.Priority < b.values.Priority)\n return 1;\n if (a.values.Priority > b.values.Priority)\n return -1;\n return 0;\n }\n\n function materialMatch(prod) {\n // if there are none selected, do not use as criteria and return all\n if ($('.' + cls_step + ':eq(2) .' + cls_selected).length === 0) {\n return true;\n }\n // Otherwise check\n var match = false;\n $('.' + cls_step +':eq(2) .' + cls_selected).each(function() {\n if (prod.values[$(this).attr(attr_id)] === 1) {\n match = true;\n }\n });\n // See if match, return true/false\n return match;\n }\n\n return this;\n}\n// Instantiate...\nwindow.advisor = new Advisor();\n","const setTooltipPosition = (btn, tooltip) => {\n let x = (btn.offsetLeft + btn.offsetWidth) - tooltip.offsetWidth;\n const caret = tooltip.querySelector('.tooltip-caret');\n if (x < 0) {\n // Offset caret\n caret.style.right = `${Math.abs(x) + 5}px`;\n // Reset x to 0\n x = 0;\n } else {\n caret.removeAttribute('style');\n }\n const y = btn.offsetTop - (tooltip.offsetHeight + 12);\n tooltip.style.left = `${x}px`;\n tooltip.style.top = `${y}px`;\n};\n\nconst showTooltip = (event) => {\n const btn = event.target.closest('[data-tooltip-id]');\n if (btn === null) {\n return;\n }\n const id = btn.getAttribute('data-tooltip-id');\n const tooltip = document.getElementById(id);\n tooltip.classList.add('show');\n setTooltipPosition(btn, tooltip);\n};\n\nconst hideTooltip = (event) => {\n const btn = event.target.closest('[data-tooltip-id]');\n if (btn === null) {\n return;\n }\n const id = btn.getAttribute('data-tooltip-id');\n const tooltip = document.getElementById(id);\n tooltip.classList.remove('show');\n};\n\nconst toggleTooltip = (event) => {\n const btn = event.target.closest('[data-tooltip-id]');\n if (btn === null) {\n return;\n }\n const id = btn.getAttribute('data-tooltip-id');\n const tooltip = document.getElementById(id);\n if (tooltip.classList.contains('show')) {\n tooltip.classList.remove('show');\n } else {\n tooltip.classList.add('show');\n }\n};\n\nconst addTooltipEventHandlers = (btn) => {\n btn.addEventListener('click', toggleTooltip);\n btn.addEventListener('mouseover', showTooltip);\n btn.addEventListener('mouseout', hideTooltip);\n btn.addEventListener('focus', showTooltip);\n btn.addEventListener('blur', hideTooltip);\n};\n\nconst addTooltipsOnPageLoad = () => {\n const tooltipBtns = document.querySelectorAll('[data-tooltip-id]');\n if (tooltipBtns.length === 0) {\n return;\n }\n for (let i = 0; i < tooltipBtns.length; i++) { /* eslint-disable-line no-plusplus */\n addTooltipEventHandlers(tooltipBtns[i]);\n }\n};\n\nconst addNewTooltipsToButtonGroup = (options) => {\n const { btns } = options;\n if (btns.length === 0) {\n return;\n }\n for (let i = 0; i < btns.length; i++) { /* eslint-disable-line no-plusplus */\n addTooltipEventHandlers(btns[i]);\n }\n};\n\nconst addNewTooltipToButton = (options) => {\n const { btn } = options;\n addTooltipEventHandlers(btn);\n};\n\nexport {\n addNewTooltipToButton,\n addNewTooltipsToButtonGroup,\n addTooltipsOnPageLoad,\n};\n"],"sourceRoot":""}