{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/modules/monogram-header.js","webpack://@verndale/toolkit/./node_modules/headroom.js/dist/headroom.js"],"names":["Module","Component","BREAKPOINTS","debounce","items","element","firstMenuItem","isMenuItem","bannerHeight","headerHeight","Headroom","sidePanel","el","scrollBehavior","topScrollPros","headerScrollPos","global","factory","module","isBrowser","passiveEventsSupported","supported","options","isSupported","isDocument","obj","isWindow","windowScroller","win","doc","body","html","elementScroller","createScroller","trackScroll","callback","isPassiveSupported","rafId","scrolled","scroller","lastScrollY","details","update","scrollY","height","scrollHeight","handleScroll","eventOptions","normalizeUpDown","t","elem","self","scrollingDown","scrollingUp","className","cls"],"mappings":"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","file":"Areas/SunriseSeniorLiving/Scripts/7374.1f4be603ac6fa0ede0f9.bundle.js","sourcesContent":["import { Component } from '@verndale/core';\nimport Headroom from 'headroom.js';\nimport { debounce } from 'lodash';\nimport { BREAKPOINTS } from '../constants';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $header: this.el,\n $headerInner: this.el._$('.monogram-header__inner'),\n $hamburger: this.el._$('.monogram-header__hamburger'),\n $hamburgerMenu: this.el._$('.monogram-hamburger-menu'),\n $closeHamburger: this.el._$('.monogram-header__close'),\n $primaryNavItems: this.el._$$('.monogram-primary-nav__item'),\n $hamburgerMenuItems: this.el._$$('.monogram-hamburger-menu__item'),\n $contactUs: this.el._$$('.monogram-primary-nav__contact-us-trigger'),\n $banner: this.el._$('.monogram-header__banner'),\n $headerHolder: this.el._$('.monogram-header__items-holder')\n };\n\n this.panelOpenedClass = 'monogram-header--panel-opened';\n this.desktopHiddenClass = 'monogram-primary-nav__item--desktop-hidden';\n this.desktopMediaQuery = window.matchMedia('(min-width: 1200px)');\n this.isFullNav = this.desktopMediaQuery.matches;\n this.breakpoint = window.matchMedia(`(max-width: ${BREAKPOINTS.TABLET_LANDSCAPE - 1}px)`);\n this.expanded = false;\n this.itemsAppended = false;\n this.stick();\n this.setHeight();\n this.fixMac();\n }\n\n\n addListeners() {\n this.dom.$hamburger._on('click', this.handleHamburgerClick.bind(this));\n this.dom.$closeHamburger._on('click', this.handleCloseHamburgerClick.bind(this));\n this.dom.$contactUs._on('click', this.handleContactUsClick.bind(this));\n this.desktopMediaQuery.addEventListener('change', e => { this.isFullNav = e.matches });\n window.addEventListener('resize', debounce(this.setHeight.bind(this), 300));\n }\n\n fixMac(){\n if (navigator.userAgent.indexOf('Mac OS X') !== -1) {\n this.dom.$headerHolder?.classList.add('shadow-mac');\n }\n }\n\n appendToHamburger() {\n if (this.dom.$primaryNavItems.length > 5 && !this.itemsAppended) {\n const items = [];\n\n this.dom.$primaryNavItems.forEach(element => {\n items.push(`\n \n `);\n element.classList.add(this.desktopHiddenClass);\n });\n\n const firstMenuItem = this.dom.$hamburgerMenu.firstElementChild;\n const isMenuItem = firstMenuItem.classList.contains('monogram-hamburger-menu__item');\n\n if (!isMenuItem) {\n firstMenuItem.remove();\n }\n\n this.dom.$hamburgerMenu.innerHTML = `${isMenuItem ? '' : firstMenuItem.outerHTML}${items.join('')}${this.dom.$hamburgerMenu.innerHTML}`;\n this.itemsAppended = true;\n }\n }\n\n setHeight() {\n if (window.matchMedia(`(min-width: ${BREAKPOINTS.DESKTOP}px)`).matches) {\n if (this.dom.$hamburgerMenu) {\n const bannerHeight = this.dom.$banner ? this.dom.$banner.offsetHeight : 0\n const headerHeight = this.dom.$banner ? this.dom.$header.offsetHeight : this.dom.$headerInner.offsetHeight\n this.dom.$hamburgerMenu.style.height = `${window.innerHeight - headerHeight + bannerHeight}px`;\n this.appendToHamburger();\n }\n }\n\n // Hide main nav on desktop for Sky View pages (determined by no hamburger items)\n if (this.isFullNav && this.dom.$hamburgerMenuItems.length == 0) {\n this.dom.$hamburger.style.display = \"none\";\n } else {\n this.dom.$hamburger.style.display = \"block\";\n }\n }\n\n lockScroll() {\n if (this.breakpoint.matches){\n _$('html, body').style.overflow = 'hidden';\n }\n }\n\n unlockScroll() {\n _$('html, body').style.overflow = 'visible';\n }\n\n stick() {\n new Headroom(this.el, {\n offset: this.el.offsetTop,\n classes: {\n initial: 'monogram-header',\n pinned: 'monogram-header--visible',\n unpinned: 'monogram-header--hidden',\n top: '-',\n notTop: '-',\n bottom: '-',\n notBottom: '-',\n frozen: '-'\n },\n onPin: () => {\n const sidePanel = document.querySelector('header')\n if (!sidePanel?.classList.contains('monogram-header--panel-opened')){\n document.body.classList.add('monogram-header--visible');\n document.body.classList.remove('monogram-header--hidden');\n }\n },\n onNotTop: () => {\n document.body.classList.add('header--passed');\n },\n onTop: () => {\n document.body.classList.remove('header--passed');\n },\n onUnpin: () => {\n const sidePanel = document.querySelector('header')\n if (sidePanel?.classList.contains('monogram-header--panel-opened')){\n sidePanel.classList.remove('monogram-header--hidden');\n sidePanel.classList.add('monogram-header--visible');\n } else {\n sidePanel.classList.add('monogram-header--hidden');\n sidePanel.classList.remove('monogram-header--visible');\n }\n }\n }).init();\n }\n\n openPrimaryNavChildMenu() {\n this.el.classList.add(this.childMenuPanelOpenedClass);\n\n if (this.isFullNav) {\n document._on('mousedown', this.handleListenToOutsidePrimaryNavPanel.bind(this));\n }\n }\n\n closePrimaryNavChildMenu() {\n this.el.classList.remove(this.childMenuPanelOpenedClass);\n this.dom.$primaryNavItems.find(el => el.classList.contains(this.expandedPrimaryNavItemClass))?.classList.remove(this.expandedPrimaryNavItemClass);\n }\n\n scrollToHeader(scrollBehavior = 'smooth') {\n const topScrollPros = document.documentElement.scrollTop;\n const headerScrollPos = this.el.getBoundingClientRect().top + topScrollPros;\n if (topScrollPros < headerScrollPos) {\n window.scrollTo({ top: headerScrollPos, behavior: `${scrollBehavior}` });\n }\n }\n\n handleResize() {\n this.setHeight();\n }\n\n handleHamburgerClick() {\n this.expanded = !this.expanded\n this.dom.$hamburger.setAttribute('aria-expanded', this.expanded)\n\n this.el.classList.add(this.panelOpenedClass);\n if (!this.el.classList.contains('isExperienceEditor')) {\n this.lockScroll();\n this.scrollToHeader();\n }\n this.dom.$hamburgerMenu.focus()\n }\n\n handleCloseHamburgerClick() {\n this.expanded = !this.expanded\n this.dom.$hamburger.setAttribute('aria-expanded', this.expanded)\n\n this.el.classList.remove(this.panelOpenedClass);\n this.unlockScroll();\n }\n\n handleContactUsClick() {\n this.el.classList.remove(this.panelOpenedClass);\n this.unlockScroll();\n }\n}\n\nexport default Module;\n","/*!\n * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it\n * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Headroom = factory());\n}(this, function () { 'use strict';\n\n function isBrowser() {\n return typeof window !== \"undefined\";\n }\n\n /**\n * Used to detect browser support for adding an event listener with options\n * Credit: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n */\n function passiveEventsSupported() {\n var supported = false;\n\n try {\n var options = {\n // eslint-disable-next-line getter-return\n get passive() {\n supported = true;\n }\n };\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (err) {\n supported = false;\n }\n\n return supported;\n }\n\n function isSupported() {\n return !!(\n isBrowser() &&\n function() {}.bind &&\n \"classList\" in document.documentElement &&\n Object.assign &&\n Object.keys &&\n requestAnimationFrame\n );\n }\n\n function isDocument(obj) {\n return obj.nodeType === 9; // Node.DOCUMENT_NODE === 9\n }\n\n function isWindow(obj) {\n // `obj === window` or `obj instanceof Window` is not sufficient,\n // as the obj may be the window of an iframe.\n return obj && obj.document && isDocument(obj.document);\n }\n\n function windowScroller(win) {\n var doc = win.document;\n var body = doc.body;\n var html = doc.documentElement;\n\n return {\n /**\n * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\n * @return {Number} the scroll height of the document in pixels\n */\n scrollHeight: function() {\n return Math.max(\n body.scrollHeight,\n html.scrollHeight,\n body.offsetHeight,\n html.offsetHeight,\n body.clientHeight,\n html.clientHeight\n );\n },\n\n /**\n * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\n * @return {Number} the height of the viewport in pixels\n */\n height: function() {\n return win.innerHeight || html.clientHeight || body.clientHeight;\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the page has scrolled along the Y-axis\n */\n scrollY: function() {\n if (win.pageYOffset !== undefined) {\n return win.pageYOffset;\n }\n\n return (html || body.parentNode || body).scrollTop;\n }\n };\n }\n\n function elementScroller(element) {\n return {\n /**\n * @return {Number} the scroll height of the element in pixels\n */\n scrollHeight: function() {\n return Math.max(\n element.scrollHeight,\n element.offsetHeight,\n element.clientHeight\n );\n },\n\n /**\n * @return {Number} the height of the element in pixels\n */\n height: function() {\n return Math.max(element.offsetHeight, element.clientHeight);\n },\n\n /**\n * Gets the Y scroll position\n * @return {Number} pixels the element has scrolled along the Y-axis\n */\n scrollY: function() {\n return element.scrollTop;\n }\n };\n }\n\n function createScroller(element) {\n return isWindow(element) ? windowScroller(element) : elementScroller(element);\n }\n\n /**\n * @param element EventTarget\n */\n function trackScroll(element, options, callback) {\n var isPassiveSupported = passiveEventsSupported();\n var rafId;\n var scrolled = false;\n var scroller = createScroller(element);\n var lastScrollY = scroller.scrollY();\n var details = {};\n\n function update() {\n var scrollY = Math.round(scroller.scrollY());\n var height = scroller.height();\n var scrollHeight = scroller.scrollHeight();\n\n // reuse object for less memory churn\n details.scrollY = scrollY;\n details.lastScrollY = lastScrollY;\n details.direction = scrollY > lastScrollY ? \"down\" : \"up\";\n details.distance = Math.abs(scrollY - lastScrollY);\n details.isOutOfBounds = scrollY < 0 || scrollY + height > scrollHeight;\n details.top = scrollY <= options.offset[details.direction];\n details.bottom = scrollY + height >= scrollHeight;\n details.toleranceExceeded =\n details.distance > options.tolerance[details.direction];\n\n callback(details);\n\n lastScrollY = scrollY;\n scrolled = false;\n }\n\n function handleScroll() {\n if (!scrolled) {\n scrolled = true;\n rafId = requestAnimationFrame(update);\n }\n }\n\n var eventOptions = isPassiveSupported\n ? { passive: true, capture: false }\n : false;\n\n element.addEventListener(\"scroll\", handleScroll, eventOptions);\n update();\n\n return {\n destroy: function() {\n cancelAnimationFrame(rafId);\n element.removeEventListener(\"scroll\", handleScroll, eventOptions);\n }\n };\n }\n\n function normalizeUpDown(t) {\n return t === Object(t) ? t : { down: t, up: t };\n }\n\n /**\n * UI enhancement for fixed headers.\n * Hides header when scrolling down\n * Shows header when scrolling up\n * @constructor\n * @param {DOMElement} elem the header element\n * @param {Object} options options for the widget\n */\n function Headroom(elem, options) {\n options = options || {};\n Object.assign(this, Headroom.options, options);\n this.classes = Object.assign({}, Headroom.options.classes, options.classes);\n\n this.elem = elem;\n this.tolerance = normalizeUpDown(this.tolerance);\n this.offset = normalizeUpDown(this.offset);\n this.initialised = false;\n this.frozen = false;\n }\n Headroom.prototype = {\n constructor: Headroom,\n\n /**\n * Start listening to scrolling\n * @public\n */\n init: function() {\n if (Headroom.cutsTheMustard && !this.initialised) {\n this.addClass(\"initial\");\n this.initialised = true;\n\n // defer event registration to handle browser\n // potentially restoring previous scroll position\n setTimeout(\n function(self) {\n self.scrollTracker = trackScroll(\n self.scroller,\n { offset: self.offset, tolerance: self.tolerance },\n self.update.bind(self)\n );\n },\n 100,\n this\n );\n }\n\n return this;\n },\n\n /**\n * Destroy the widget, clearing up after itself\n * @public\n */\n destroy: function() {\n this.initialised = false;\n Object.keys(this.classes).forEach(this.removeClass, this);\n this.scrollTracker.destroy();\n },\n\n /**\n * Unpin the element\n * @public\n */\n unpin: function() {\n if (this.hasClass(\"pinned\") || !this.hasClass(\"unpinned\")) {\n this.addClass(\"unpinned\");\n this.removeClass(\"pinned\");\n\n if (this.onUnpin) {\n this.onUnpin.call(this);\n }\n }\n },\n\n /**\n * Pin the element\n * @public\n */\n pin: function() {\n if (this.hasClass(\"unpinned\")) {\n this.addClass(\"pinned\");\n this.removeClass(\"unpinned\");\n\n if (this.onPin) {\n this.onPin.call(this);\n }\n }\n },\n\n /**\n * Freezes the current state of the widget\n * @public\n */\n freeze: function() {\n this.frozen = true;\n this.addClass(\"frozen\");\n },\n\n /**\n * Re-enables the default behaviour of the widget\n * @public\n */\n unfreeze: function() {\n this.frozen = false;\n this.removeClass(\"frozen\");\n },\n\n top: function() {\n if (!this.hasClass(\"top\")) {\n this.addClass(\"top\");\n this.removeClass(\"notTop\");\n\n if (this.onTop) {\n this.onTop.call(this);\n }\n }\n },\n\n notTop: function() {\n if (!this.hasClass(\"notTop\")) {\n this.addClass(\"notTop\");\n this.removeClass(\"top\");\n\n if (this.onNotTop) {\n this.onNotTop.call(this);\n }\n }\n },\n\n bottom: function() {\n if (!this.hasClass(\"bottom\")) {\n this.addClass(\"bottom\");\n this.removeClass(\"notBottom\");\n\n if (this.onBottom) {\n this.onBottom.call(this);\n }\n }\n },\n\n notBottom: function() {\n if (!this.hasClass(\"notBottom\")) {\n this.addClass(\"notBottom\");\n this.removeClass(\"bottom\");\n\n if (this.onNotBottom) {\n this.onNotBottom.call(this);\n }\n }\n },\n\n shouldUnpin: function(details) {\n var scrollingDown = details.direction === \"down\";\n\n return scrollingDown && !details.top && details.toleranceExceeded;\n },\n\n shouldPin: function(details) {\n var scrollingUp = details.direction === \"up\";\n\n return (scrollingUp && details.toleranceExceeded) || details.top;\n },\n\n addClass: function(className) {\n this.elem.classList.add.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n removeClass: function(className) {\n this.elem.classList.remove.apply(\n this.elem.classList,\n this.classes[className].split(\" \")\n );\n },\n\n hasClass: function(className) {\n return this.classes[className].split(\" \").every(function(cls) {\n return this.classList.contains(cls);\n }, this.elem);\n },\n\n update: function(details) {\n if (details.isOutOfBounds) {\n // Ignore bouncy scrolling in OSX\n return;\n }\n\n if (this.frozen === true) {\n return;\n }\n\n if (details.top) {\n this.top();\n } else {\n this.notTop();\n }\n\n if (details.bottom) {\n this.bottom();\n } else {\n this.notBottom();\n }\n\n if (this.shouldUnpin(details)) {\n this.unpin();\n } else if (this.shouldPin(details)) {\n this.pin();\n }\n }\n };\n\n /**\n * Default options\n * @type {Object}\n */\n Headroom.options = {\n tolerance: {\n up: 0,\n down: 0\n },\n offset: 0,\n scroller: isBrowser() ? window : null,\n classes: {\n frozen: \"headroom--frozen\",\n pinned: \"headroom--pinned\",\n unpinned: \"headroom--unpinned\",\n top: \"headroom--top\",\n notTop: \"headroom--not-top\",\n bottom: \"headroom--bottom\",\n notBottom: \"headroom--not-bottom\",\n initial: \"headroom\"\n }\n };\n\n Headroom.cutsTheMustard = isSupported();\n\n return Headroom;\n\n}));\n"],"sourceRoot":""}