{"version":3,"sources":["../../node_modules/js-tools/viewport.js","plugins/prevent-scroll.js","header.js"],"names":["Viewport","breakpoints","this","mediaQuery","breakpoint","type","size","matchMedia","window","matches","customMediaQuery","customMatchMedia","customMatches","resize","callback","windowResizing","addEventListener","clearTimeout","setTimeout","app","_this","preventScroll","active","on","htmlEl","document","querySelector","bodyScrollTop","body","scrollTop","htmlScrollTop","currentPosition","style","position","currentOverflow","overflowY","currentWidth","width","top","off","parseInt","plugins","Inchbald","Header","_this2","viewport","outerWrapper","el","headerMarker","heights","toggle","itemToggle","querySelectorAll","init","watchPageScroll","watchToggle","watchResize","trapFocus","setDocHeight","checkPageScroll","bind","isActiveNav","activateNav","setNavheight","setItemAria","documentElement","setProperty","innerHeight","resetNavheight","deactivateFixed","addListener","e","deactivateNav","atTop","clientHeight","headerNavContainer","getBoundingClientRect","offset","visibleFocusableEls","firstFocusableEl","focusableEls","forEach","push","lastFocusableEl","length","key","keyCode","shiftKey","activeElement","focus","preventDefault","item","setAttribute","status","activateFixed","classList","add","remove","height","headerTop","dataset","headerNav"],"mappings":"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","file":"../header.js","sourcesContent":["function Viewport(breakpoints) {\n\n    // Get the breakpoint config\n    this.breakpoints = breakpoints;\n\n    // Constuct the breakpoint for the media query\n    this.mediaQuery = function(breakpoint) {\n        return '(' + this.breakpoints[breakpoint].type + ': ' + this.breakpoints[breakpoint].size + 'px)';\n    }\n\n    // Check if the media query matches\n    this.matchMedia = function(breakpoint) {\n        return window.matchMedia(this.mediaQuery(breakpoint));\n    }\n\n    // Check if the media query matches\n    this.matches = function(breakpoint) {\n        return window.matchMedia(this.mediaQuery(breakpoint)).matches;\n    }\n\n    // Construct the custom media query\n    this.customMediaQuery = function(breakpoint) {\n        return breakpoint;\n    }\n\n    // Check if the custom media query matches\n    this.customMatchMedia = function(breakpoint) {\n        return window.matchMedia(this.customMediaQuery(breakpoint));\n    }\n\n    // Check if the custom media query matches\n    this.customMatches = function(breakpoint) {\n        return window.matchMedia(this.customMediaQuery(breakpoint)).matches;\n    }\n\n    // Watch for viewport resize\n    this.resize = function(callback) {\n        var windowResizing;\n\n        window.addEventListener('resize', function() {\n            clearTimeout(windowResizing);\n            windowResizing = setTimeout(function() {\n                if (typeof callback == 'function') {\n                    callback();\n                }\n            }, 100);\n        });\n    }\n}\n","(function (app) {\n    var preventScroll = {\n        active: false,\n        on: () => {\n            var htmlEl = document.querySelector('html');\n            var body = document.body;\n\n            // Determine the `scrollTop` to use. Some browsers require checking the\n            // `body`, others use `html`.\n            var bodyScrollTop = body.scrollTop;\n            var htmlScrollTop = htmlEl.scrollTop;\n            var scrollTop = bodyScrollTop ? bodyScrollTop : htmlScrollTop;\n\n            // Store the current value of the htmlEl's styles – we're about to override\n            // them.\n            this.currentPosition = htmlEl.style.position;\n            this.currentOverflow = htmlEl.style.overflowY;\n            this.currentWidth = htmlEl.style.width;\n\n            // Fixing the position of the `htmlEl` prevents the page from scrolling\n            // at all.\n            htmlEl.style.position = 'fixed';\n            // Setting `overflowY` to `scroll` ensures that any scrollbars that are\n            // around stick around. Otherwise, there would be a \"jump\" when the page\n            // becomes unscrollable as the bar would vanish.\n            htmlEl.style.overflowY = 'scroll';\n            // This makes sure that the page doesn't collapse (usually your CSS will\n            // prevent this, but it's best to be safe)\n            htmlEl.style.width = '100%';\n            // Scoot down the `htmlEl` to be in the same place that the user had\n            // scrolled to.\n            htmlEl.style.top = (0 - scrollTop) + 'px';\n\n            // Set active state\n            this.active = true;\n        },\n\n        off: () => {\n            var htmlEl = document.querySelector('html');\n            var body = document.body;\n\n            // Reset `htmlEl` to the original styles.\n            htmlEl.style.position = this.currentPosition;\n            htmlEl.style.overflowY = this.currentOverflow;\n            htmlEl.style.width = this.currentWidth;\n\n            // Retrieve our original scrollTop from the htmlEl's top\n            var scrollTop = -parseInt(htmlEl.style.top);\n            // Return us to the original scroll position. Once again, we set this on\n            // both the `body` and the `htmlEl` to be safe.\n            htmlEl.scrollTop = scrollTop;\n            body.scrollTop = scrollTop;\n\n            // Unset active state\n            this.active = false;\n        }\n    }\n    app.plugins = app.plugins || {};\n    app.plugins.preventScroll = preventScroll;\n})(window.Inchbald = window.Inchbald || {});","function Viewport(breakpoints) {\n\n    // Get the breakpoint config\n    this.breakpoints = breakpoints;\n\n    // Constuct the breakpoint for the media query\n    this.mediaQuery = function(breakpoint) {\n        return '(' + this.breakpoints[breakpoint].type + ': ' + this.breakpoints[breakpoint].size + 'px)';\n    }\n\n    // Check if the media query matches\n    this.matchMedia = function(breakpoint) {\n        return window.matchMedia(this.mediaQuery(breakpoint));\n    }\n\n    // Check if the media query matches\n    this.matches = function(breakpoint) {\n        return window.matchMedia(this.mediaQuery(breakpoint)).matches;\n    }\n\n    // Construct the custom media query\n    this.customMediaQuery = function(breakpoint) {\n        return breakpoint;\n    }\n\n    // Check if the custom media query matches\n    this.customMatchMedia = function(breakpoint) {\n        return window.matchMedia(this.customMediaQuery(breakpoint));\n    }\n\n    // Check if the custom media query matches\n    this.customMatches = function(breakpoint) {\n        return window.matchMedia(this.customMediaQuery(breakpoint)).matches;\n    }\n\n    // Watch for viewport resize\n    this.resize = function(callback) {\n        var windowResizing;\n\n        window.addEventListener('resize', function() {\n            clearTimeout(windowResizing);\n            windowResizing = setTimeout(function() {\n                if (typeof callback == 'function') {\n                    callback();\n                }\n            }, 100);\n        });\n    }\n}\n\n(function (app) {\n    var preventScroll = {\n        active: false,\n        on: () => {\n            var htmlEl = document.querySelector('html');\n            var body = document.body;\n\n            // Determine the `scrollTop` to use. Some browsers require checking the\n            // `body`, others use `html`.\n            var bodyScrollTop = body.scrollTop;\n            var htmlScrollTop = htmlEl.scrollTop;\n            var scrollTop = bodyScrollTop ? bodyScrollTop : htmlScrollTop;\n\n            // Store the current value of the htmlEl's styles – we're about to override\n            // them.\n            this.currentPosition = htmlEl.style.position;\n            this.currentOverflow = htmlEl.style.overflowY;\n            this.currentWidth = htmlEl.style.width;\n\n            // Fixing the position of the `htmlEl` prevents the page from scrolling\n            // at all.\n            htmlEl.style.position = 'fixed';\n            // Setting `overflowY` to `scroll` ensures that any scrollbars that are\n            // around stick around. Otherwise, there would be a \"jump\" when the page\n            // becomes unscrollable as the bar would vanish.\n            htmlEl.style.overflowY = 'scroll';\n            // This makes sure that the page doesn't collapse (usually your CSS will\n            // prevent this, but it's best to be safe)\n            htmlEl.style.width = '100%';\n            // Scoot down the `htmlEl` to be in the same place that the user had\n            // scrolled to.\n            htmlEl.style.top = (0 - scrollTop) + 'px';\n\n            // Set active state\n            this.active = true;\n        },\n\n        off: () => {\n            var htmlEl = document.querySelector('html');\n            var body = document.body;\n\n            // Reset `htmlEl` to the original styles.\n            htmlEl.style.position = this.currentPosition;\n            htmlEl.style.overflowY = this.currentOverflow;\n            htmlEl.style.width = this.currentWidth;\n\n            // Retrieve our original scrollTop from the htmlEl's top\n            var scrollTop = -parseInt(htmlEl.style.top);\n            // Return us to the original scroll position. Once again, we set this on\n            // both the `body` and the `htmlEl` to be safe.\n            htmlEl.scrollTop = scrollTop;\n            body.scrollTop = scrollTop;\n\n            // Unset active state\n            this.active = false;\n        }\n    }\n    app.plugins = app.plugins || {};\n    app.plugins.preventScroll = preventScroll;\n})(window.Inchbald = window.Inchbald || {});\n//=require polyfills/object.forEach.js\n\n(function (app) {\n    function Header() {\n        let viewport = new Viewport(Inchbald.breakpoints);\n\n        this.outerWrapper = document.querySelector('.outer-wrapper');\n        this.body = document.querySelector('body');\n        this.el = document.querySelector('.js-header');\n        this.headerMarker = document.querySelector('.js-header-marker');\n\n        this.heights = {};\n\n        if (this.el) {\n            this.toggle = this.el.querySelector('.js-header-nav__toggle');\n            this.itemToggle = this.el.querySelectorAll('.js-header__item-toggle');\n        }\n\n        this.init = () => {\n            if (this.el) {\n                this.watchPageScroll();\n                this.watchToggle();\n                this.watchResize();\n                this.trapFocus();\n                this.setDocHeight();\n            }\n        }\n\n        this.watchPageScroll = () => {\n            this.checkPageScroll();\n            document.addEventListener('scroll', this.checkPageScroll.bind(this));\n        }\n\n        this.watchToggle = () => {\n            this.toggle.addEventListener('click', () => {\n                if (viewport.matches('nav')) {\n                    if (this.isActiveNav()) {\n                        this.deactivateNav();\n                        this.resetNavheight();\n                        this.setItemAria(this.toggle, false);\n\n                        app.plugins.preventScroll.off();\n                    } else {\n                        this.activateNav();\n                        this.setNavheight();\n                        this.setItemAria(this.toggle, true);\n\n                        app.plugins.preventScroll.on();\n                    }\n                }\n            });\n        }\n\n        this.setDocHeight = () => {\n            document.documentElement.style.setProperty('--vh', `${window.innerHeight/100}px`);\n        };\n        \n        this.watchResize = () => {\n            viewport.resize(() => {\n                if (viewport.matches('nav')) {\n                    if (this.isActiveNav()) {\n                        this.setNavheight();\n                    }\n                } else {\n                    this.resetNavheight();\n                    this.deactivateFixed();\n                }\n            })\n\n            viewport.matchMedia('nav').addListener((e) => {\n                if (!e.matches) {\n                    if (this.isActiveNav()) {\n                        this.deactivateNav();\n                        this.setItemAria(this.toggle, false);\n\n                        app.plugins.preventScroll.off();\n                    }\n                }\n            });\n        }\n\n        // Check how far the page has scrolled\n        this.checkPageScroll = () => {\n            if (viewport.matches('nav')) {\n                if (this.atTop()) {\n                    this.deactivateFixed();\n                } else {\n                    this.activateFixed();\n                }\n            }\n        }\n\n        // Is the page scrolled to the top\n        this.atTop = () => {\n            var offset = parseInt(window.getComputedStyle(this.outerWrapper, null).getPropertyValue('padding-top'));\n            if (viewport.matches('nav')) {\n                return this.headerMarker.getBoundingClientRect().top >= offset;\n            } else {\n                if (this.headerMarker.clientHeight == this.heights.headerNavContainer) {\n                    return this.headerMarker.getBoundingClientRect().top >= offset;\n                } else {\n                    return this.headerMarker.getBoundingClientRect().top + this.heights.headerTop >= offset;\n                }\n            }\n        }\n\n        this.trapFocus = () => {\n            const KEYCODE_TAB = 9;\n            const focusableEls = this.el.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\n            let visibleFocusableEls = [];\n\n            focusableEls.forEach((el) => {\n                if (el.getBoundingClientRect().width > 0) {\n                    visibleFocusableEls.push(el);\n                }\n            });\n\n            const firstFocusableEl = visibleFocusableEls[0];\n            const lastFocusableEl = visibleFocusableEls[visibleFocusableEls.length - 1];\n\n            this.el.addEventListener('keydown', (e) => {\n                const isTabPressed = (e.key === 'Tab' || e.keyCode === KEYCODE_TAB);\n\n                if (!isTabPressed || !this.isActiveNav()) {\n                    return;\n                }\n\n                if (e.shiftKey) {\n                    if (document.activeElement === firstFocusableEl) {\n                        lastFocusableEl.focus();\n                        e.preventDefault();\n                    }\n                } else {\n                    if (document.activeElement === lastFocusableEl) {\n                        firstFocusableEl.focus();\n                        e.preventDefault();\n                    }\n                }\n\n            });\n        }\n\n        this.setItemAria = (item, status) => {\n            item.setAttribute('aria-expanded', status);\n        }\n\n        this.activateNav = () => {\n            this.body.setAttribute('data-header-nav-loading', true);\n            setTimeout(() => {\n                this.body.setAttribute('data-header-nav', true);\n            }, 1);\n        }\n\n        this.deactivateNav = () => {\n            this.body.setAttribute('data-header-nav', false);\n            setTimeout(() => {\n                this.body.setAttribute('data-header-nav-loading', false);\n            }, 300);\n        }\n\n        // Activate the fixed header\n        this.activateFixed = () => {\n            this.el.classList.add('header--fixed');\n        }\n\n        // Deactivate the fixed header\n        this.deactivateFixed = () => {\n            this.el.classList.remove('header--fixed');\n            this.headerMarker.classList.remove('header-marker__height--active');\n\n            if (!viewport.matches('nav')) {\n                this.headerMarker.style.top = this.heights.headerTop + 'px';\n                this.headerMarker.style.height = this.heights.headerNavContainer + 'px';\n            } else {\n                this.headerMarker.style.top = 0;\n                this.headerMarker.style.height = this.heights.headerTop + 'px';\n            }\n        }\n\n        this.isActiveNav = () => {\n            return this.body.dataset.headerNav === 'true';\n        }\n\n        this.setNavheight = () => {\n            this.el.style.height = (window.innerHeight - 40) + 'px';\n        }\n\n        this.resetNavheight = () => {\n            this.el.style.height = null;\n        }\n    }\n\n    const header = new Header();\n    header.init();\n\n    app.Header = Header;\n})(window.Inchbald = window.Inchbald || {});"]}