{"version":3,"sources":["PageNavigation/pageNavigation.js","PageNavigation/main.js"],"names":["define","isAnyPartOfElementInViewport","el","rect","getBoundingClientRect","windowHeight","window","innerHeight","document","documentElement","clientHeight","top","height","deselectAllHrefs","itemsHref","activeCssClasses","i","length","activeElement","$","has","removeClass","init","pageNavSelectorMobile","each","element","pageNavItems","pageNavItemLinks","value","this","attr","push","firstNavItem","find","html","on","isFirstElementSelected","index","activeElementTitle","text","hasClass","addClass","event","preventDefault","menuToggler","getElementById","menuTogglerHeight","offsetHeight","animate","scrollTop","offset","pageNavigationSelector","data","require","pageNavigation"],"mappings":"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","file":"PageNavigation.js","sourcesContent":["define('PageNavigation/pageNavigation',[\r\n],\r\n function () {\r\n\r\n const pageNavigationSelector = \".page-navigation\";\r\n const navigationItemSelector = \".page-navigation .page-navigation-item\";\r\n const pageNavSelectorMobile = \".page-navigation-mobile\";\r\n const navItemSelectorMobile = \".page-navigation-mobile .page-navigation-item\";\r\n\r\n //Check if element is in the viewport\r\n function isAnyPartOfElementInViewport(el) {\r\n const rect = el.getBoundingClientRect();\r\n const windowHeight = (window.innerHeight || document.documentElement.clientHeight);\r\n const vertInView = (rect.top <= windowHeight) && ((rect.top + rect.height) >= 0);\r\n\r\n return (vertInView);\r\n }\r\n\r\n function deselectAllHrefs(itemsHref, activeCssClasses) {\r\n if (itemsHref) {\r\n for (var i = 0; i < itemsHref.length; i++) {\r\n var activeElement = $(\".page-navigation .page-navigation-item\").has(\"a[href='\" + itemsHref[i] + \"']\");\r\n $(activeElement).removeClass(activeCssClasses);\r\n }\r\n }\r\n }\r\n\r\n function init() {\r\n\r\n //MOBILE PAGE NAVIGATION\r\n\r\n //Initialize all Mobile Page Navigations on the page\r\n $(pageNavSelectorMobile).each(function (i, element) {\r\n\r\n var pageNavItems = $(\".page-navigation-mobile .page-navigation-item\");\r\n var pageNavItemLinks = $(\".page-navigation-mobile .page-navigation-item a[href^='#']\");\r\n var itemsHref = [];\r\n \r\n\r\n //Extract ids from pageNavItems\r\n $.each(pageNavItemLinks, function () {\r\n\r\n var value = $(this).attr('href');\r\n\r\n //Don't push to itemsHref if href is \"#\"\r\n if (value !== \"#\") {\r\n itemsHref.push(value);\r\n }\r\n });\r\n\r\n //populate #menu-toggler with the first menu item\r\n var firstNavItem = $(pageNavItemLinks[0]).find('.item-text').html();\r\n $('#menu-toggler').html(firstNavItem);\r\n\r\n //On scroll populate #menu-toggler with the last active menu item\r\n $(window).on('scroll', function () {\r\n\r\n var isFirstElementSelected = false;\r\n\r\n $.each(itemsHref, function (index, value) {\r\n var element = $(value)[0];\r\n\r\n if (element) {\r\n\r\n if (isAnyPartOfElementInViewport(element)) {\r\n\r\n if (!isFirstElementSelected) {\r\n\r\n var activeElement = $(\".page-navigation .page-navigation-item\").has(\"a[href='\" + value + \"']\");\r\n\r\n //var activeElementTitle = activeElement[0].innerText.trim();\r\n\r\n var activeElementTitle = $(activeElement[0]).find(\"span.scWebEditInput\").text(); // this will work okay in Exp. Editor\r\n if (!(activeElementTitle && activeElementTitle.length)) {\r\n // this will work in normal runtime\r\n activeElementTitle = $(activeElement[0]).find('.item-text').html();\r\n }\r\n\r\n $('#menu-toggler').html(activeElementTitle);\r\n\r\n isFirstElementSelected = true;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n //Trigger mobile dropdown\r\n $('#menu-toggler').on('click', function () {\r\n\r\n //Add .is-open to rotate the arrow\r\n if (!$(this).hasClass('is-open')) {\r\n $(this).addClass('is-open');\r\n } else {\r\n $(this).removeClass('is-open');\r\n }\r\n\r\n //Display all available menu items\r\n $.each(pageNavItems, function () {\r\n\r\n if ($(this).hasClass('active')) {\r\n $(this).removeClass('active');\r\n } else {\r\n $(this).addClass('active');\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n //After selecting a menu item pass it's text into #toggler and hide other items\r\n $.each(pageNavItems, function (index) {\r\n $(this).on('click', function (event) {\r\n\r\n event.preventDefault();\r\n\r\n $('#menu-toggler').html($(this).find('.item-text').html());\r\n $('#menu-toggler').removeClass('is-open');\r\n $(pageNavItems).removeClass('active');\r\n\r\n //Add scroll offset\r\n var $target = $(itemsHref);\r\n var menuToggler = document.getElementById('menu-toggler');\r\n var menuTogglerHeight = menuToggler.offsetHeight;\r\n\r\n $(\"html, body\").animate({ scrollTop: $(itemsHref[index]).offset().top - menuTogglerHeight }, 500);\r\n //$(\"html, body\").animate({ scrollTop: $(itemsHref[index]).offset().top - menuTogglerHeight + 64 }, 500);\r\n\r\n });\r\n });\r\n });\r\n\r\n //DESKTOP PAGE NAVIGATION\r\n\r\n // Initialize all Page Navigation components on the page\r\n $(pageNavigationSelector).each(function (i, element) {\r\n\r\n var activeCssClasses = $(element).data(\"activeItemClasses\");\r\n var pageNavItems = $(\".page-navigation .page-navigation-item a[href^='#']\");\r\n var itemsHref = [];\r\n\r\n //Extract ids from pageNavItems\r\n $.each(pageNavItems, function () { \r\n\r\n var value = $(this).attr('href');\r\n\r\n //Don't push to itemsHref if href is \"#\"\r\n if (value !== \"#\") {\r\n itemsHref.push(value);\r\n }\r\n });\r\n\r\n\r\n //On scroll highlight active menu items\r\n $(window).on('scroll', function () {\r\n\r\n var isFirstElementSelected = false;\r\n \r\n $.each(itemsHref, function (index, value) {\r\n var element = $(value)[0];\r\n\r\n if (element) {\r\n\r\n if (isAnyPartOfElementInViewport(element)) {\r\n\r\n if (!isFirstElementSelected) {\r\n deselectAllHrefs(itemsHref, activeCssClasses);\r\n var activeElement = $(\".page-navigation .page-navigation-item\").has(\"a[href='\" + value + \"']\");\r\n if (activeElement)\r\n $(activeElement).addClass(activeCssClasses);\r\n\r\n isFirstElementSelected = true;\r\n }\r\n\r\n }\r\n else {\r\n var activeElement = $(\".page-navigation .page-navigation-item\").has(\"a[href='\" + value + \"']\");\r\n if(activeElement)\r\n $(activeElement).removeClass(activeCssClasses);\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n });\r\n\r\n\r\n });\r\n\r\n }\r\n\r\n return {\r\n init: init\r\n };\r\n }\r\n);\r\n\n","require([\r\n 'PageNavigation/pageNavigation'\r\n],\r\n function (pageNavigation) {\r\n pageNavigation.init();\r\n });\r\n\ndefine(\"PageNavigation/main\", function(){});\n\n"]}