{"version":3,"sources":["header.js"],"names":["window","BoatShows","$","Drupal","Header","$thisBody","$preHeader","$siteHeader","$headerBar","$menu","$mobileMenuOpen","$regionHeader","$contentRegion","headerOffset","$thisContext","$thisWindow","$adminBarTop","$adminBarBottom","desktopBreakpoint","menuOpenClass","updateState","find","outerHeight","behaviors","boatShowHeader","attach","context","settings","once","each","scrollTop","toggleFixedHeaderDesktop","scroll","hasClass","$thisMenuItem","$thisSubMenu","timer","hover","removeClass","width","clearTimeout","openSubmenu","setTimeout","closeSubmenu","click","event","preventDefault","toggleMobileMenu","$thisMenuLink","$submenu","siblings","length","off","addClass","resizeWindowCloseMobileMenu","resize","active","css","offset","top","scrollY","parseInt","resetContentPadding","setStateFixed","$selector","scrollToElementBelowHeader","id","header","adminBar","a","h","isNaN","console","log","y","animate","anchorLinks","document","on","hash","location","substr","e","$link","attr","jQuery"],"mappings":"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","file":"header.js","sourcesContent":["window.BoatShows = window.BoatShows || {};\n\n(function($, Drupal, BoatShows) {\n 'use strict';\n\n var Header = function() {\n var $thisBody,\n $preHeader,\n $siteHeader,\n $headerBar,\n $menu,\n $mobileMenuOpen,\n $regionHeader,\n $contentRegion,\n headerOffset,\n $thisContext,\n $thisWindow,\n $adminBarTop,\n $adminBarBottom;\n\n var desktopBreakpoint = 992;\n var menuOpenClass = 'open';\n\n function updateState() {\n $preHeader = $thisContext.find('.pre-header-wrapper');\n $siteHeader = $thisContext.find('.site-header');\n $headerBar = $siteHeader.find('.header-bar');\n $contentRegion = $thisContext.find('.region.region-content');\n $menu = $siteHeader.find('.mega-menu');\n $mobileMenuOpen = $siteHeader.find('.mobile-trigger');\n $regionHeader = $siteHeader.find('.region-header');\n headerOffset = $preHeader.outerHeight();\n $adminBarTop = $thisContext.find('nav#toolbar-bar');\n // $adminBarBottom = $thisContext.find('#toolbar-item-administration-tray');\n }\n\n Drupal.behaviors.boatShowHeader = {\n attach: function (context, settings) {\n $thisContext = $(context);\n $thisContext.find('.site-header').once('boatshow-nav').each(function() {\n updateState();\n $thisWindow = $(window);\n $thisBody = $thisContext.find('body');\n\n // Fixed header stuff\n if ($thisWindow.scrollTop() >= headerOffset) {\n toggleFixedHeaderDesktop(true);\n }\n\n $thisWindow.scroll(function() {\n if ($thisWindow.scrollTop() >= headerOffset && !$siteHeader.hasClass('fixed-header')) {\n toggleFixedHeaderDesktop(true);\n }\n else if ($thisWindow.scrollTop() < headerOffset && $siteHeader.hasClass('fixed-header')) {\n toggleFixedHeaderDesktop(false);\n }\n });\n\n // mobile menu submenu dropdown\n $menu.find('.parent-item').each(function() {\n var $thisMenuItem = $(this);\n var $thisSubMenu = $thisMenuItem.find('.menu-dropdown');\n var timer;\n // Main nav triggers.\n $thisMenuItem.hover(function() {\n $menu.find('.parent-item > .menu-dropdown, .parent-item > a').removeClass(menuOpenClass);\n\n // mouse in\n if ($thisWindow.width() > desktopBreakpoint) {\n clearTimeout(timer);\n openSubmenu($thisSubMenu);\n }\n }, function() {\n // mouseout\n if ($thisWindow.width() > desktopBreakpoint) {\n timer = setTimeout(function() {\n closeSubmenu($thisSubMenu);\n }, 200);\n }\n });\n });\n\n // Mobile menu button toggle\n $mobileMenuOpen.click(function(event) {\n event.preventDefault();\n\n if (!$(context).find('body').hasClass('mobile-open')) {\n toggleMobileMenu(true);\n }\n else {\n toggleMobileMenu(false);\n }\n });\n });\n\n // Mobile menu item click events\n $menu.find('.parent-item > a').each(function() {\n var $thisMenuLink = $(this);\n var $submenu = $thisMenuLink.siblings('.menu-dropdown');\n\n // Remove remove analytics click listeners if mobile menu dropdown toggles\n if ($thisWindow.width() <= desktopBreakpoint && $submenu.length) {\n $thisMenuLink.off('click');\n }\n\n $thisMenuLink.click(function(event) {\n if ($submenu.length) {\n event.preventDefault();\n }\n\n if ($thisWindow.width() <= desktopBreakpoint) {\n if ($submenu.hasClass(menuOpenClass)) {\n $submenu.removeClass(menuOpenClass);\n }\n else {\n $submenu.addClass(menuOpenClass);\n }\n }\n });\n });\n }\n };\n\n function resizeWindowCloseMobileMenu() {\n $thisWindow.resize(function() {\n var $thisWindow = $(this);\n\n if ($thisWindow.width() > desktopBreakpoint) {\n toggleMobileMenu(false);\n $thisWindow.off('resize');\n }\n });\n }\n\n /**\n * Toggles mobile menu open or closed\n * bool active: true toggles open, false toggles closed\n */\n function toggleMobileMenu(active) {\n // Open\n if (active) {\n $mobileMenuOpen.addClass('mobile-menu-active');\n\n if (!$siteHeader.hasClass('fixed-header')) {\n $siteHeader.css('top', $siteHeader.offset().top - $thisWindow.scrollTop());\n }\n $thisBody.css('top', `-${window.scrollY}px`);\n $thisBody.addClass('mobile-open');\n $regionHeader.css('padding-top', $headerBar.outerHeight());\n $contentRegion.css('margin-top', $headerBar.outerHeight());\n resizeWindowCloseMobileMenu();\n }\n // Close\n else {\n var scrollY = $thisBody.css('top');\n $mobileMenuOpen.removeClass('mobile-menu-active');\n $thisBody.removeClass('mobile-open');\n $siteHeader.css('top', 0);\n $regionHeader.css('padding-top', 0);\n $contentRegion.css('margin-top', 0);\n\n $thisBody.css('position', '');\n $thisBody.css('top', '');\n $thisWindow.scrollTop(parseInt(scrollY || '0') * -1);\n\n resetContentPadding();\n }\n\n updateState();\n }\n\n /**\n * Toggles fixed header state\n * bool active: true toggles fixed, false toggles static\n */\n function toggleFixedHeaderDesktop(active) {\n if (active) {\n $siteHeader.addClass('fixed-header');\n $siteHeader.css('top', $adminBarTop.outerHeight());\n $contentRegion.css('margin-top', $siteHeader.outerHeight());\n }\n else {\n $siteHeader.removeClass('fixed-header');\n $siteHeader.css('top', 0);\n $contentRegion.css('margin-top', 0);\n }\n }\n\n function setStateFixed() {\n updateState();\n $siteHeader.css('top', 0);\n toggleFixedHeaderDesktop(true);\n $thisWindow.off('scroll');\n }\n\n function resetContentPadding() {\n updateState();\n\n if ($siteHeader.hasClass('fixed-header')) {\n $contentRegion.css('margin-top', $siteHeader.outerHeight());\n }\n }\n\n function openSubmenu($selector) {\n $selector.siblings('a').addClass(menuOpenClass);\n $selector.addClass(menuOpenClass);\n }\n\n function closeSubmenu($selector) {\n $selector.siblings('a').removeClass(menuOpenClass);\n $selector.removeClass(menuOpenClass);\n }\n\n function scrollToElementBelowHeader(id, scroll = false, header = $siteHeader, adminBar = $adminBarTop) {\n\n let a = 0;\n let h = 0;\n h = parseInt(header.css('top')) + header.outerHeight();\n if (adminBar){\n a = parseInt(adminBar.css('top')) + adminBar.outerHeight();\n }\n if (isNaN(a)) {\n a = 0;\n }\n console.log(h, a);\n const y = $(id).offset().top - h - a; // top of element with space above for the fixed header\n console.log(y);\n if (scroll){\n $('html, body').animate({scrollTop: y }, 'slow');\n } else {\n $('html, body').scrollTop(y);\n }\n }\n\n Drupal.behaviors.anchorLinks = {\n attach: function (context, settings) {\n // check for hash on load.\n // Wait for document load so that the other header JS has fired\n // and everything is ready to calculate from.\n $(document).on('load', function() {\n console.log('window load');\n const hash = window.location.hash.substr(1);\n if (hash) {\n const id ='#' + hash;\n scrollToElementBelowHeader(id);\n }\n });\n // update anchor link action\n $('a[href ^=\"#\"]').once('anchor-link-init').click(function( e ) {\n e.preventDefault();\n const $link = $(this);\n const id = $link.attr('href');\n window.location.hash = id;\n scrollToElementBelowHeader(id, true);\n });\n }\n };\n\n return {\n setStateFixed: setStateFixed,\n resetContentPadding: resetContentPadding\n };\n };\n\n BoatShows.Header = new Header();\n\n})(jQuery, Drupal, BoatShows);\n"]}