{"version":3,"sources":["src/scripts/components/navigation.js"],"names":["init","$","jQuery","$component","$fixWrapper","$progressBar","$articleTitle","position","window","scrollTop","dir","dimensions","getHeights","length","setNav","headline","text","html","on","getArticle","resetVals","backToTop","animate","getDirection","opDir","hasClass","addClass","removeClass","currentPosition","positions","getPositions","i","next","undefined","Math","max","document","height","width","$btn","perc","getPercent","offset","scrollPercent","setProgress","heights","$sections","push","outerHeight","top","articleOffset","articleHeight","scroll","delay","timer","callback","ms","clearTimeout","setTimeout","pause","$window","resize","docWidth","overlayToggle","find","css","slideToggle","show","toggleMenu","off","issueToggle","e","stopPropagation","preventDefault"],"mappings":"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","file":"navigation.js","sourcesContent":["import {debounce} from '../utils/utilities.js';\nvar $ = jQuery;\n\n/* eslint-disable */\nimport featherlight from '../libs/featherlight.js';\n/* eslint-enable */\n\nexport function init() {\n\n\n var $component = $('.navigation-global');\n var $fixWrapper = $('.navigation-global__fix-wrapper');\n var $progressBar = $('.article-progress');\n var $articleTitle = $('.navigation__article-title');\n var position = $(window).scrollTop();\n\n var dir;\n var dimensions = getHeights();\n\n\n if($('.page-node-type-report').length > 0) {\n\n setNav();\n // TEMP\n let headline = $('.article-headline').text();\n $articleTitle.html(headline);\n // ENDTEMP\n\n $(window).on('scroll', setNav);\n $(window).on('scroll', getArticle);\n\n $(window).on('resize', debounce(function() {\n resetVals();\n }, 250));\n\n $articleTitle.on('click', backToTop);\n }\n\n function backToTop() {\n $('html, body').animate({ scrollTop: 0 }, 'slow');\n return false;\n }\n\n function resetVals() {\n dimensions = getHeights();\n }\n\n function setNav() {\n dir = getDirection();\n let opDir = dir === '_down' ? '_up' : '_down';\n\n if(position > 20) {\n if(!$component.hasClass('_inactive')) {\n $fixWrapper.addClass('_inactive');\n }\n }\n else {\n $fixWrapper.removeClass('_inactive');\n }\n\n if(!$component.hasClass(dir)) {\n $component.removeClass(opDir).addClass(dir);\n }\n }\n\n function getArticle() {\n let currentPosition = $(window).scrollTop();\n let positions = getPositions();\n\n dimensions = getHeights();\n\n for(var i = 0; i < positions.length; i ++) {\n let next = positions[i+1] === undefined ? Math.max($(document).height(), $(window).height()) : positions[i+1];\n if(((currentPosition >= positions[i]) && (currentPosition <= next)) || currentPosition < positions[0]) {\n // let headline = $('.article-headline')[i];\n // let headlineText = $(headline).find('span').text();\n\n // if(headlineText !== $articleTitle.text()) {\n // // $articleTitle.html(headlineText);\n // $progressBar.width(0+'%');\n // }\n\n $progressBar.width(0+'%');\n\n let $btn = $('.article-body__read-more')[i];\n\n if($($btn).hasClass('_inactive')) {\n let perc = getPercent(dimensions[i].offset, dimensions[i].height);\n let scrollPercent = perc > 100 ? 100 : perc;\n\n $progressBar.width(scrollPercent+'%');\n setProgress(scrollPercent);\n }\n\n break;\n }\n }\n\n }\n\n function getHeights() {\n let heights = [];\n let $sections = $('.article__body-copy ');\n for(let i = 0; i < $sections.length; i ++) {\n heights.push({\n 'height': $($sections[i]).outerHeight(true),\n 'offset': $($sections[i]).offset().top\n });\n }\n return heights;\n }\n\n function getPositions() {\n let positions = [];\n let $sections = $('.headline');\n\n for(let i = 0; i < $sections.length; i ++) {\n if(i === 0) {\n positions.push($($sections[i]).offset().top - $($sections[i]).outerHeight());\n }\n else {\n positions.push($($sections[i]).offset().top - $($sections[i]).outerHeight());\n }\n }\n return positions;\n }\n\n function setProgress(scrollPercent) {\n if(scrollPercent > 30 && dir === '_down') {\n if(!$fixWrapper.hasClass('_compact')) {\n $fixWrapper.addClass('_compact');\n }\n }\n else {\n $fixWrapper.removeClass('_compact');\n }\n }\n\n function getPercent(articleOffset, articleHeight) {\n return 100 * ($(window).scrollTop() - articleOffset) / (articleHeight -$(window).height());\n }\n\n function getDirection() {\n var scroll = $(window).scrollTop();\n let dir = '_down';\n\n if (scroll > position) {\n dir = '_down';\n }\n else {\n dir = '_up';\n }\n\n position = scroll;\n\n return dir;\n }\n var delay = (function() {\n var timer = 0;\n\n return function(callback, ms) {\n clearTimeout (timer);\n timer = setTimeout(callback, ms);\n };\n })();\n\n $(function() {\n var pause = 100;\n var $window = $(window);\n\n // [RK] Fires the function when resizing from higher breakpoints to Mobile, when doc isn not reloaded\n $window.resize(function() {\n\n delay(function() {\n\n // var docHeight = $(document).height();\n var docWidth = $(window).width();\n // var $bar = $('.navigation-global__progress-bar-indicator');\n // var barBase = $window.height() / docHeight * 100;\n\n // [RK] Checks if the breakpoint is Mobile\n if( docWidth <= 767 ) {\n\n // Progress bar Mobile function\n // $bar.css('width', barBase + '%');\n // $window.scroll(function(e) {\n // var barFiller = $window.scrollTop() / docHeight * 100 + barBase;\n // $bar.css('width', barFiller + '%');\n // });\n }\n\n /* [RK] Checks if the breakpoint is Tablet, Fires the function only after the breakpoint is hit\n and not when the doc loads on Mobile and then resizes to tab */\n else if( docWidth >= 767) {\n\n // Rotate top issues\n // rotateTerm();\n }\n\n }, pause );\n });\n\n $(window).resize();\n });\n\n // Mobile overlay Toggle\n function overlayToggle() {\n $component.find('.navigation-global__menu-mobile').on('click', function() {\n\n // [RK] Makes sure the breakpoints switch does not let the animation hide the dom elements\n $('.navigation-global__top-issues-text').css({'opacity': '1'});\n $('.navigation-global__issue-list1 > li').css({'opacity': '1'});\n $('.navigation-global__issue-list2 > li').css({'opacity': '1'});\n $('.navigation-global__issue-category').css({'opacity': '1'});\n $('.navigation-global__nav-bar-wrap').css({'display': 'none'});\n $('.navigation-global').find('.navigation-global__issue-expanded').slideToggle('slow');\n });\n\n $component.find('.navigation-global__close-icon').on('click', function() {\n $('.navigation-global__issue-expanded').css({'display': 'none'});\n $component.find('.navigation-global__nav-bar-wrap').show();\n });\n }\n overlayToggle();\n\n\n function toggleMenu() {\n var $btn = $('.navigation-global__issue-toggle-text');\n if($btn.hasClass('_main-open')) {\n $btn.removeClass('_main-open');\n $('.page__wrapper').off('click', toggleMenu);\n }\n else {\n $btn.addClass('_main-open');\n $('.page__wrapper').on('click', toggleMenu);\n }\n\n $('.navigation-global').find('.navigation-global__issue-expanded').slideToggle(300);\n }\n\n // Toggle open state for navigation\n function issueToggle() {\n\n $('.navigation-global__issue-expanded').on('click', function(e) {\n e.stopPropagation();\n });\n\n $component.find('.navigation-global__issue-toggle-text').on('click', function(e) {\n e.preventDefault();\n e.stopPropagation();\n toggleMenu();\n });\n }\n\n issueToggle();\n}\n"]}