{"version":3,"sources":["webpack:///./src/js/modules/homepageMasthead.js","webpack:///./src/js/utils.js"],"names":["HomepageMasthead","this","wasWelcomeAnimationExecuted","window","localStorage","getItem","RUN_ANIMATION_KEY","dom","mediaContainer","el","querySelector","vimeoVideo","homepageAnimation","document","leftBorder","homepageMastheadHeader","headerExpandedShortcuts","addVideoClass","style","minHeight","offsetHeight","watchMainElement","ResizeObserver","entries","updateHomepageDynamicStyles","calculateLeftBorderHeight","observe","addEventListener","customEvents","leftBorderResizeTrigger","classList","add","Component","homePageLeftBorder","homeMastheadMediaContainer","innerWidth","breakpoints","tabletLandscape","svgHeight","borderTopPosition","offsetTop","top","height","mastheadMediaTop","getBoundingClientRect","offset","desktop","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","contains","dataset","ScrollManager","scrollTop","scrollLeft","scrolledPosition","scrollY","body","position","pageXOffset","documentElement","scrollTo"],"mappings":"mlDAKMA,E,sWACJ,WACEC,KAAKC,4BAA8BC,OAAOC,aAAaC,QAAQC,KAC/DL,KAAKM,IAAM,CACTC,eAAgBP,KAAKQ,GAAGC,cAAc,uCACtCC,WAAYV,KAAKQ,GAAGC,cAAc,oDAClCE,kBAAmBC,SAASH,cAAc,uBAC1CI,WAAYD,SAASH,cAAc,mCACnCK,uBAAwBF,SAASH,cAAc,8BAC/CM,wBAAyBH,SAASH,cAChC,gCAGJT,KAAKgB,gBACLhB,KAAKM,IAAIQ,uBAAuBG,MAAMC,UAAtC,UAAqDlB,KAAKM,IAAIS,wBAAwBI,aAAtF,MACAnB,KAAKoB,qB,8BAGP,WAAmB,WACM,IAAIC,gBAAe,SAAAC,GACnC,EAAKhB,IAAIK,oBAAqB,EAAKV,6BAA6BsB,cACrEC,YAA0B,EAAKlB,IAAIO,eAGtBY,QAAQb,SAASH,cAAc,iB,0BAGhD,WAAe,WACbP,OAAOwB,iBAAiBC,IAAaC,yBAAyB,WAC5DJ,YAA0B,EAAKlB,IAAIO,iB,2BAIvC,WACMb,KAAKM,IAAII,YACXV,KAAKM,IAAIC,eAAesB,UAAUC,IAAI,mB,8BAnCbC,aAwChBhC,a,+UC3CR,IAAMwB,EAA8B,WACzC,IAAMS,EAAqBpB,SAASH,cAClC,mCAEIwB,EAA6BrB,SAASH,cAC1C,uCAEIM,EAA0BH,SAASH,cACvC,+BAEF,GAAIP,OAAOgC,WAAaC,IAAYC,iBAClC,GAAIH,GAA8BD,EAAoB,CACpD,IAAMK,EAAYzB,SAASH,cACzB,mCACAU,aACImB,EACJL,EAA2BM,UAAYF,EAAY,EAErDL,EAAmBf,MAAMuB,IAAzB,UAAkCF,EAAlC,MACAN,EAAmBf,MAAMwB,OAAS,aAIpC,GAAIR,GAA8BlB,EAAyB,CACzD,IACO2B,EACHT,EAA2BU,wBAD7BH,IAEII,EAAS1C,OAAOgC,WAAaC,IAAYU,QAAU,IAAM,IAC/D9B,EAAwBE,MAAMwB,OAA9B,UAA0CC,EAAmBE,EAA7D,QAKOpB,EAA4B,SAACsB,GAAqC,IAAlBC,IAAkB,yDACvEC,EAAY,WAChB,IAEMR,EAFe5B,SAASH,cAAc,UAAU8B,WACvCrC,OAAOgC,WAAaC,IAAYc,OAAS,GAAK,IAG7D,OADAH,EAAkB7B,MAAMuB,IAAxB,UAAiCA,EAAjC,MACOA,GAGHU,EAAkB,SAACC,EAASJ,GAChC,IAAMP,EAAMW,EAAQZ,UACda,EAAgBJ,IAEtB,OADID,IAAQD,EAAkB7B,MAAMwB,OAAxB,UAAoCD,EAAMY,EAA1C,OACLZ,GAGHa,EAAiB,SAACF,EAASJ,GAC/B,IAAMP,EAAMW,EAAQZ,UACdE,EAASU,EAAQhC,aACjBiC,EAAgBJ,IAClB9C,OAAOgC,WAAaC,IAAYU,QAC9BE,IAAQD,EAAkB7B,MAAMwB,OAAxB,UAAoCD,EAAMY,EAA1C,OAERL,IACFD,EAAkB7B,MAAMwB,OAAxB,UACED,EAAMc,KAAKC,MAAMd,EAAS,GAAK,GAAKW,EADtC,QAMAI,EAAyB,SAACL,EAASJ,GACvC,IAGMU,EAHMN,EAAQZ,UACLY,EAAQ1C,cAAc,4BAA4B8B,UAC3CS,IAGtB,OADID,IAAQD,EAAkB7B,MAAMwB,OAAxB,UAAoCgB,EAApC,OACLA,GAGHC,EAAyB,SAACP,EAASJ,GACvC,IAAMY,EAAOR,EAAQ1C,cAAc,2BAC7B+B,EAAMW,EAAQZ,UACdE,EAASkB,EAAKxC,aACdiC,EAAgBJ,IAChBS,EAAmBjB,EAAMc,KAAKC,MAAMd,EAAS,GAAKW,EAExD,OADIL,IAAQD,EAAkB7B,MAAMwB,OAAxB,UAAoCgB,EAApC,OACLA,GAGHG,EAAoB,CACxB,CACEC,SAAU,YACVC,aAAc,QACdC,aAAc,WACdC,SAAUd,GAEZ,CACEW,SAAU,UACVC,aAAc,QACdC,aAAc,SACdC,SAAUd,GAEZ,CACEW,SAAU,oBACVC,aAAc,QACdC,aAAc,mBACdC,SAAUd,GAEZ,CACEW,SAAU,2BACVC,aAAc,QACdC,aAAc,0BACdC,SAAUd,GAEZ,CACEW,SAAU,wBACVC,aAAc,QACdC,aAAc,uBACdC,SAAUd,GAEZ,CACEW,SAAU,gEACVC,aAAc,QACdC,aAAc,0BACdC,SAAUd,GAEZ,CACEW,SAAU,sCACVC,aAAc,QACdC,aAAc,aACdC,SAAUd,GAEZ,CACEW,SAAU,UACVC,aAAc,QACdC,aAAc,SACdC,SAAUX,GAEZ,CACEQ,SAAU,sCACVC,aAAc,aACdG,kBAAmB,sBACnBD,SAAUd,GAEZ,CACEW,SAAU,oBACVC,aAAc,QACdC,aAAc,mBACdC,SAAUR,GAEZ,CACEK,SAAU,oBACVC,aAAc,QACdC,aAAc,mBACdC,SAAUN,GAEZ,CACEG,SAAU,2BACVC,aAAc,QACdC,aAAc,WACdC,SAAUd,GAEZ,CACEW,SAAU,gBACVC,aAAc,QACdC,aAAc,eACdC,SAAUd,IAIRgB,EAA+B,kBACnCN,EAAkBO,KAAI,SAAAC,GAAM,OAAIA,EAAOP,YAAUQ,KAAK,OAElDC,EAAoB1D,SAASH,cACjCyD,KAIF,GAAKI,EAAL,CAEA,IAAMC,EAAUX,EAAkBY,MAAK,SAAAJ,GACrC,MAA4B,UAAxBA,EAAON,aACFQ,EAAkBzC,UAAU4C,SAASL,EAAOL,cAClB,eAAxBK,EAAON,aACTQ,EAAkBI,QAAQN,SAAWA,EAAOH,uBAD9C,KAKT,OAAI/D,OAAOgC,YAAcC,IAAYC,gBAC5BmC,EAAQP,SAASM,EAAmBvB,QAD7C,IAKW4B,EAAb,WACE,c,4FAAc,SACZ3E,KAAK4E,UAAY,EACjB5E,KAAK6E,WAAa,E,UAHtB,O,EAAA,G,EAAA,4BAME,WACE,IAAMC,EAAmB5E,OAAO6E,QAChCnE,SAASoE,KAAK/D,MAAMgE,SAAW,QAC/BrE,SAASoE,KAAK/D,MAAMuB,IAApB,WAA8BsC,EAA9B,MACA9E,KAAK4E,UAAYE,EACjB9E,KAAK6E,WAAa3E,OAAOgF,aAAetE,SAASuE,gBAAgBN,aAXrE,0BAcE,WACEjE,SAASoE,KAAK/D,MAAMgE,SAAW,GAC/B/E,OAAOkF,SAASpF,KAAK6E,WAAY7E,KAAK4E,gB,2BAhB1C","file":"46.1c3016a54cbbc71e9116.js","sourcesContent":["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","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"],"sourceRoot":""}