{"version":3,"sources":["webpack:///./src/js/utils.js","webpack:///./src/js/modules/homepageMasthead.js"],"names":["updateHomepageDynamicStyles","homePageLeftBorder","document","querySelector","homeMastheadMediaContainer","headerExpandedShortcuts","window","innerWidth","breakpoints","tabletLandscape","svgHeight","offsetHeight","borderTopPosition","offsetTop","style","top","height","mastheadMediaTop","getBoundingClientRect","offset","desktop","calculateLeftBorderHeight","leftBorderElement","update","updateTop","laptop","defaultResolver","element","leftBorderTop","footerResolver","Math","floor","visualStoryRowResolver","leftBorderHeight","exploreAllFourResolver","leaf","fullScreenModules","selector","selectorType","elementClass","resolver","elementDataModule","getFullScreenModulesSelector","map","module","join","fullScreenElement","stopper","find","classList","contains","dataset","ScrollManager","this","scrollTop","scrollLeft","scrolledPosition","scrollY","body","position","pageXOffset","documentElement","scrollTo","HomepageMasthead","wasWelcomeAnimationExecuted","localStorage","getItem","RUN_ANIMATION_KEY","dom","mediaContainer","el","vimeoVideo","homepageAnimation","leftBorder","homepageMastheadHeader","addVideoClass","minHeight","watchMainElement","ResizeObserver","entries","observe","addEventListener","customEvents","leftBorderResizeTrigger","add","Component"],"mappings":"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","file":"44.4eeb838bd5886da74c46.js","sourcesContent":["import { breakpoints } from './helpers/constants';\n\nexport const updateHomepageDynamicStyles = () => {\n const homePageLeftBorder = document.querySelector(\n '.homepage-masthead__left-border'\n );\n const homeMastheadMediaContainer = document.querySelector(\n '.homepage-masthead__media-container'\n );\n const headerExpandedShortcuts = document.querySelector(\n '.header__expanded-shortcuts'\n );\n if (window.innerWidth < breakpoints.tabletLandscape) {\n if (homeMastheadMediaContainer && homePageLeftBorder) {\n const svgHeight = document.querySelector(\n '.homepage-masthead__header-logo'\n ).offsetHeight;\n const borderTopPosition =\n homeMastheadMediaContainer.offsetTop - svgHeight / 2;\n // Update left border top value\n homePageLeftBorder.style.top = `${borderTopPosition}px`;\n homePageLeftBorder.style.height = 'auto';\n }\n } else {\n // Update header expanded shortcuts nav height\n if (homeMastheadMediaContainer && headerExpandedShortcuts) {\n const {\n top: mastheadMediaTop\n } = homeMastheadMediaContainer.getBoundingClientRect();\n const offset = window.innerWidth > breakpoints.desktop ? 140 : 100;\n headerExpandedShortcuts.style.height = `${mastheadMediaTop - offset}px`;\n }\n }\n};\n\nexport const calculateLeftBorderHeight = (leftBorderElement, update = true) => {\n const updateTop = () => {\n const headerOffset = document.querySelector('header').offsetTop;\n const offset = window.innerWidth < breakpoints.laptop ? 32 : 44;\n const top = headerOffset + offset;\n leftBorderElement.style.top = `${top}px`;\n return top;\n };\n\n const defaultResolver = (element, update) => {\n const top = element.offsetTop;\n const leftBorderTop = updateTop();\n if (update) leftBorderElement.style.height = `${top - leftBorderTop}px`;\n return top;\n };\n\n const footerResolver = (element, update) => {\n const top = element.offsetTop;\n const height = element.offsetHeight;\n const leftBorderTop = updateTop();\n if (window.innerWidth < breakpoints.desktop) {\n if (update) leftBorderElement.style.height = `${top - leftBorderTop}px`;\n } else {\n if (update)\n leftBorderElement.style.height = `${\n top + Math.floor(height / 2) - 50 - leftBorderTop\n }px`;\n }\n };\n\n const visualStoryRowResolver = (element, update) => {\n const top = element.offsetTop;\n const offset = element.querySelector('.visual-story-row__image').offsetTop;\n const leftBorderTop = updateTop();\n const leftBorderHeight = top + offset - leftBorderTop;\n if (update) leftBorderElement.style.height = `${leftBorderHeight}px`;\n return leftBorderHeight;\n };\n\n const exploreAllFourResolver = (element, update) => {\n const leaf = element.querySelector('.explore-all-four__leaf');\n const top = element.offsetTop;\n const height = leaf.offsetHeight;\n const leftBorderTop = updateTop();\n const leftBorderHeight = top + Math.floor(height / 2) - leftBorderTop;\n if (update) leftBorderElement.style.height = `${leftBorderHeight}px`;\n return leftBorderHeight;\n };\n\n const fullScreenModules = [\n {\n selector: '.timeline',\n selectorType: 'class',\n elementClass: 'timeline',\n resolver: defaultResolver\n },\n {\n selector: '.values',\n selectorType: 'class',\n elementClass: 'values',\n resolver: defaultResolver\n },\n {\n selector: '.quick-statistics',\n selectorType: 'class',\n elementClass: 'quick-statistics',\n resolver: defaultResolver\n },\n {\n selector: '.flexible-carousel--dark',\n selectorType: 'class',\n elementClass: 'flexible-carousel--dark',\n resolver: defaultResolver\n },\n {\n selector: '.featured-content-row',\n selectorType: 'class',\n elementClass: 'featured-content-row',\n resolver: defaultResolver\n },\n {\n selector: '.featured-vertical-cards:not(.featured-vertical-cards--light)',\n selectorType: 'class',\n elementClass: 'featured-vertical-cards',\n resolver: defaultResolver\n },\n {\n selector: '.who-we-are:not(.who-we-are--light)',\n selectorType: 'class',\n elementClass: 'who-we-are',\n resolver: defaultResolver\n },\n {\n selector: '.footer',\n selectorType: 'class',\n elementClass: 'footer',\n resolver: footerResolver\n },\n {\n selector: '[data-module=\"filterContentModule\"]',\n selectorType: 'dataModule',\n elementDataModule: 'filterContentModule',\n resolver: defaultResolver\n },\n {\n selector: '.visual-story-row',\n selectorType: 'class',\n elementClass: 'visual-story-row',\n resolver: visualStoryRowResolver\n },\n {\n selector: '.explore-all-four',\n selectorType: 'class',\n elementClass: 'explore-all-four',\n resolver: exploreAllFourResolver\n },\n {\n selector: '.up-cards.up-cards--dark',\n selectorType: 'class',\n elementClass: 'up-cards',\n resolver: defaultResolver\n },\n {\n selector: '.event-finder',\n selectorType: 'class',\n elementClass: 'event-finder',\n resolver: defaultResolver\n }\n ];\n\n const getFullScreenModulesSelector = () =>\n fullScreenModules.map(module => module.selector).join(', ');\n // Get first full screen element\n const fullScreenElement = document.querySelector(\n getFullScreenModulesSelector()\n );\n\n // Return if there are no full screen elements\n if (!fullScreenElement) return;\n // Get the full screen module that would be the stopper of the left border\n const stopper = fullScreenModules.find(module => {\n if (module.selectorType === 'class') {\n return fullScreenElement.classList.contains(module.elementClass);\n } else if (module.selectorType === 'dataModule') {\n return fullScreenElement.dataset.module === module.elementDataModule;\n }\n });\n // Check resolver type\n if (window.innerWidth >= breakpoints.tabletLandscape) {\n return stopper.resolver(fullScreenElement, update);\n }\n};\n\nexport class ScrollManager {\n constructor() {\n this.scrollTop = 0;\n this.scrollLeft = 0;\n }\n\n disableScroll() {\n const scrolledPosition = window.scrollY;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${scrolledPosition}px`;\n this.scrollTop = scrolledPosition;\n this.scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n }\n\n enableScroll() {\n document.body.style.position = '';\n window.scrollTo(this.scrollLeft, this.scrollTop);\n }\n}\n","import { Component } from '@verndale/core';\nimport { calculateLeftBorderHeight, updateHomepageDynamicStyles } from '../utils';\nimport { customEvents, RUN_ANIMATION_KEY } from '../helpers/constants';\n\n\nclass HomepageMasthead extends Component {\n setupDefaults() {\n this.wasWelcomeAnimationExecuted = window.localStorage.getItem(RUN_ANIMATION_KEY);\n this.dom = {\n mediaContainer: this.el.querySelector('.homepage-masthead__media-container'),\n vimeoVideo: this.el.querySelector('.homepage-masthead__media-container .vimeo-video'),\n homepageAnimation: document.querySelector('.homepage-animation'),\n leftBorder: document.querySelector('.homepage-masthead__left-border'),\n homepageMastheadHeader: document.querySelector('.homepage-masthead__header'),\n headerExpandedShortcuts: document.querySelector(\n '.header__expanded-shortcuts'\n )\n };\n this.addVideoClass();\n this.dom.homepageMastheadHeader.style.minHeight = `${this.dom.headerExpandedShortcuts.offsetHeight}px`\n this.watchMainElement();\n }\n\n watchMainElement() {\n const resizeObserver = new ResizeObserver(entries => {\n if (!this.dom.homepageAnimation || this.wasWelcomeAnimationExecuted) updateHomepageDynamicStyles();\n calculateLeftBorderHeight(this.dom.leftBorder);\n });\n\n resizeObserver.observe(document.querySelector('body, main'));\n }\n\n addListeners() {\n window.addEventListener(customEvents.leftBorderResizeTrigger, () => {\n calculateLeftBorderHeight(this.dom.leftBorder);\n });\n }\n\n addVideoClass() {\n if (this.dom.vimeoVideo) {\n this.dom.mediaContainer.classList.add('with-video')\n }\n }\n}\n\nexport default HomepageMasthead;\n"],"sourceRoot":""}