{"version":3,"sources":["webpack:///./src/js/modules/homepageAnimation.js","webpack:///./src/js/utils.js"],"names":["HomepageAnimation","this","timeline","anime","easing","duration","wasWelcomeAnimationExecuted","window","localStorage","getItem","RUN_ANIMATION_KEY","dom","html","document","querySelector","body","scene1","el","scene1Inner","scene2Background","scene2Leaf","scene2Wordmark","homeMastheadHeading","homeMastheadSubHeading","homeLeaf","homeMastheadMediaContainer","homeLeftBorder","headerHomeLink","headerBookNow","headerControls","headerControlsButtons","querySelectorAll","headerExpandedShortcuts","shortcutsHeaderAnimatedElements","homeAllFourLeaf","setItem","innerWidth","breakpoints","tabletLandscape","runMobileAnimation","runDesktopAnimation","hideHomepageAnimationElement","setupValuesWithoutAnimation","classList","add","value","style","overflowY","getBoundingClientRect","top","innerHeight","height","Math","floor","mastHeadMediaAnimationBg","createElement","append","setHtmlOverflow","homeLeafClientRect","scene2LeafClientRect","ceil","left","renderMastheadMediaAnimatedOverlay","headerControlsAnimatedBg","getHomeMastheadMediaTop","leftBorderHeight","calculateLeftBorderHeight","targets","opacity","scale","width","translateX","complete","translateY","remove","delay","stagger","svgHeight","offsetHeight","borderTopPosition","offsetTop","scaleY","direction","updateHomepageDynamicStyles","Component","homePageLeftBorder","mastheadMediaTop","offset","desktop","leftBorderElement","update","updateTop","laptop","defaultResolver","element","leftBorderTop","footerResolver","visualStoryRowResolver","exploreAllFourResolver","leaf","fullScreenModules","selector","selectorType","elementClass","resolver","elementDataModule","getFullScreenModulesSelector","map","module","join","fullScreenElement","stopper","find","contains","dataset","ScrollManager","scrollTop","scrollLeft","scrolledPosition","scrollY","position","pageXOffset","documentElement","scrollTo"],"mappings":"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","file":"45.6338c7f34e9cde96103e.js","sourcesContent":["import { Component } from '@verndale/core';\nimport anime from 'animejs/lib/anime.es.js';\nimport { calculateLeftBorderHeight, updateHomepageDynamicStyles } from '../utils';\nimport { breakpoints, RUN_ANIMATION_KEY } from '../helpers/constants';\n\n\nclass HomepageAnimation extends Component {\n  setupDefaults() {\n    // Create new anime.js timeline\n    this.timeline = anime.timeline({\n      easing: 'easeInOutQuad',\n      duration: 7000\n    });\n    this.wasWelcomeAnimationExecuted = window.localStorage.getItem(RUN_ANIMATION_KEY);\n    this.dom = {\n      html: document.querySelector('html'),\n      body: document.querySelector('body'),\n      scene1: this.el.querySelector('.homepage-animation__scene-1'),\n      scene1Inner:this.el.querySelector('.homepage-animation__scene-1__inner'),\n      scene2Background: this.el.querySelector('.homepage-animation__scene-2__background'),\n      scene2Leaf: this.el.querySelector('.homepage-animation__scene-2 .homepage-animation__scene-2__leaf-container'),\n      scene2Wordmark: this.el.querySelector('.homepage-animation__scene-2 .homepage-animation__scene-2__wordmark-container'),\n      //Masthead elements\n      homeMastheadHeading: document.querySelector('.homepage-masthead__heading'),\n      homeMastheadSubHeading: document.querySelector('.homepage-masthead__sub-heading'),\n      homeLeaf: document.querySelector('.homepage-masthead__header-logo'),\n      homeMastheadMediaContainer: document.querySelector('.homepage-masthead__media-container'),\n      homeLeftBorder: document.querySelector('.homepage-masthead__left-border'),\n      // Header elements\n      headerHomeLink: document.querySelector('.header__home-link'),\n      headerBookNow: document.querySelector('.header__book-now__container'),\n      headerControls: document.querySelector('.header__controls'),\n      headerControlsButtons: [...document.querySelectorAll('.header__controls > button')],\n      headerExpandedShortcuts: document.querySelector('.header__expanded-shortcuts'),\n      shortcutsHeaderAnimatedElements: [...document.querySelectorAll(`\n        .header__expanded-shortcuts__spacer,\n        .header__expanded-shortcuts__nav li,\n        .header__expanded-shortcuts .weather-button\n      `)],\n      // All Four elements\n      homeAllFourLeaf: document.querySelector('.explore-all-four__leaf')\n    };\n\n    if (!this.wasWelcomeAnimationExecuted) {\n      // Update localStorage so animation runs only on first load\n      window.localStorage.setItem(RUN_ANIMATION_KEY, 'false');\n      // Run specific viewport animation\n      return window.innerWidth < breakpoints.tabletLandscape\n        ? this.runMobileAnimation()\n        : this.runDesktopAnimation();\n    }\n    this.hideHomepageAnimationElement();\n    this.setupValuesWithoutAnimation();\n  }\n\n  hideHomepageAnimationElement() {\n    this.el.classList.add('hidden');\n  }\n\n  setHtmlOverflow(value) {\n    this.dom.html.style.overflowY = value;\n  }\n\n  getHomeMastheadMediaTop() {\n    return this.dom.homeMastheadMediaContainer.getBoundingClientRect().top;\n  }\n\n  getAllFourLeafVerticalCenter() {\n    if (!this.dom.homeAllFourLeaf) return window.innerHeight;\n    const { top, height } = this.dom.homeAllFourLeaf.getBoundingClientRect();\n    return top + Math.floor(height/2)\n  }\n\n  renderMastheadMediaAnimatedOverlay() {\n    const mastHeadMediaAnimationBg = document.createElement('div');\n    mastHeadMediaAnimationBg.classList.add('homepage-masthead__animation-background')\n    this.dom.homeMastheadMediaContainer.append(mastHeadMediaAnimationBg);\n    return mastHeadMediaAnimationBg;\n  }\n\n  runDesktopAnimation() {\n    //Disable scroll\n    this.setHtmlOverflow('hidden');\n    // Get values for resizing and movement\n    const homeLeafClientRect = this.dom.homeLeaf.getBoundingClientRect();\n    const scene2LeafClientRect = this.dom.scene2Leaf.getBoundingClientRect();\n    this.dom.scene2Leaf.classList.add('active');\n    this.dom.scene2Wordmark.classList.add('active');\n    this.dom.scene2Leaf.style.top = `${Math.ceil(scene2LeafClientRect.top)}px`;\n    this.dom.scene2Leaf.style.left = `${Math.ceil(scene2LeafClientRect.left)}px`;\n    // Render withe overlay masthead media container background\n    const mastHeadMediaAnimationBg = this.renderMastheadMediaAnimatedOverlay();\n    // Render animated header background\n    const headerControlsAnimatedBg = document.createElement('div');\n    headerControlsAnimatedBg.classList.add('header__controls__background');\n    headerControlsAnimatedBg.style.height = `${this.getHomeMastheadMediaTop()}px`;\n    this.dom.headerControls.append(headerControlsAnimatedBg);\n    this.dom.headerControls.classList.add('with-animation');\n    // Get border left height\n    const leftBorderHeight = calculateLeftBorderHeight(this.dom.homeLeftBorder, false);\n\n    /**\n     * White background, logo scales down and fades\n     */\n    this.timeline.add({\n      targets: this.dom.scene1Inner,\n      opacity: [0, 1],\n      scale: [1.75, 1],\n      duration: 884\n    }, 84);\n    /**\n     * Scene 1 gets removed and scene 2 gets revealed\n     */\n    this.timeline.add({\n      targets: this.dom.scene1,\n      width: ['100%', '0%'],\n      duration: 718\n    }, 1034);\n    /**\n     * Leaf change width/height and position\n     */\n    this.timeline.add({\n      targets: this.dom.scene2Leaf,\n      left: Math.floor(homeLeafClientRect.left),\n      top: Math.ceil(homeLeafClientRect.top),\n      width: [Math.ceil(scene2LeafClientRect.width), Math.ceil(homeLeafClientRect.width)],\n      height: [Math.ceil(scene2LeafClientRect.height), Math.ceil(homeLeafClientRect.height)],\n      duration: 1450\n    }, 1834);\n    /**\n     * Black background slides right and home page gets revealed\n     */\n    this.timeline.add({\n      targets: this.dom.scene2Background,\n      translateX: ['0%', '100%'],\n      duration: 688,\n      complete: () => {\n        this.setHtmlOverflow('auto');\n        this.hideHomepageAnimationElement();\n      }\n    }, 3316);\n    //Remove the white leaf from the screen\n    this.timeline.add({\n      targets: this.dom.scene2Leaf,\n      opacity: [1, 0],\n      duration: 100,\n      easing: 'easeOutExpo'\n    }, '-=260');\n    /**\n     * Slide down header home link\n     */\n    this.timeline.add({\n      targets: this.dom.headerHomeLink,\n      opacity: ['0', '100%'],\n      translateY: ['-10%', '0%'],\n      duration: 250\n    }, 3616);\n    /**\n     * Masthead media (image/video) gets revealed\n     */\n    this.timeline.add({\n      targets: mastHeadMediaAnimationBg,\n      translateX: ['0', '-100%'],\n      duration: 468,\n      complete: () => mastHeadMediaAnimationBg.remove()\n    }, 3600);\n    /**\n     * Left border slides down\n     */\n    this.timeline.add({\n      targets: this.dom.homeLeftBorder,\n      opacity: {\n        value: [0, 1],\n        duration: 200\n      },\n      height: [0, leftBorderHeight],\n      duration: 716\n    }, 3816);\n    /**\n     * Slide up header animated background\n     */\n    this.timeline.add({\n      targets: headerControlsAnimatedBg,\n      translateY: ['100%', '0%'],\n      opacity: ['0', '100%'],\n      duration: 368\n    }, 4134);\n    /**\n     * Fade in header elements\n     */\n    this.timeline.add({\n      targets: this.dom.headerControlsButtons,\n      translateX: ['20%', '0%'],\n      opacity: ['10%', '100%'],\n      duration: 300,\n      delay: anime.stagger(50)\n    }, 4400);\n    // Fade in shortcuts header elements\n    this.timeline.add({\n      targets: this.dom.shortcutsHeaderAnimatedElements,\n      translateX: ['20%', '0%'],\n      opacity: ['0', '100%'],\n      duration: 720,\n      delay: anime.stagger(100)\n    }, 4466);\n  }\n\n  runMobileAnimation() {\n    //Disable scroll\n    this.setHtmlOverflow('hidden');\n    // Render withe overlay masthead media container background\n    const mastHeadMediaAnimationBg = this.renderMastheadMediaAnimatedOverlay();\n    const svgHeight = this.dom.homeLeaf.offsetHeight;\n    const borderTopPosition =  this.dom.homeMastheadMediaContainer.offsetTop - svgHeight/2;\n    // Update left border top value\n    this.dom.homeLeftBorder.style.top = `${borderTopPosition}px`;\n\n    /**\n     * Animation layer scales down and reveal header and sticky bar\n     */\n    this.timeline.add({\n      targets: this.dom.scene1,\n      scaleY: ['100%', `${(window.innerHeight - 120) * 100 / window.innerHeight}%`],\n      duration: 366,\n      complete: () => {\n        this.setHtmlOverflow('auto');\n        this.hideHomepageAnimationElement();\n      }\n    }, 0);\n    /**\n     * Fade in header control buttons\n     */\n    this.timeline.add({\n      targets: this.dom.headerControlsButtons,\n      scale: [1.2, 1],\n      opacity: ['0%', '100%'],\n      translateY: ['16%', '0%'],\n      delay: anime.stagger(166, { direction: 'reverse' }),\n      duration: 500\n    }, 132);\n    /**\n     * Fade in and scale down header logo\n     */\n    this.timeline.add({\n      targets: this.dom.headerHomeLink,\n      scale: [1.2, 1],\n      opacity: ['0%', '100%'],\n      duration: 266\n    }, 166);\n    /**\n     * Fade in book now button\n     */\n    this.timeline.add({\n      targets: this.dom.headerBookNow,\n      translateY: ['25%', '0%'],\n      opacity: ['0', '100%'],\n      duration: 366\n    }, 366);\n    /**\n     * Fade in masthead heading\n     */\n    this.timeline.add({\n      targets: this.dom.homeMastheadHeading,\n      translateY: ['10%', '0%'],\n      opacity: ['30%', '100%'],\n      duration: 360\n    }, 366);\n    /**\n     * Slide up masthead media container animated background\n     */\n    this.timeline.add({\n      targets: mastHeadMediaAnimationBg,\n      height:['100%', '0%'],\n      duration: 300\n    }, 400);\n    /**\n     * Scale down and fadein masthead leaf\n     */\n    this.timeline.add({\n      targets: this.dom.homeLeaf.querySelector('svg'),\n      opacity: {\n        value: ['0%', '100%'],\n        duration: 330\n      },\n      scale: [1.2, 1],\n      duration: 400\n    }, 400);\n    /**\n     * Fade in masthead sub-heading\n     */\n    this.timeline.add({\n      targets: this.dom.homeMastheadSubHeading,\n      translateY: ['10%', '0%'],\n      opacity: ['0', '100%'],\n      duration: 300\n    }, 433);\n    /**\n     * Fill hone left border\n     */\n    this.timeline.add({\n      targets: this.dom.homeLeftBorder,\n      scaleY: ['0%', '100%'],\n      duration: 400\n    }, 566);\n  }\n\n  setupValuesWithoutAnimation() {\n    updateHomepageDynamicStyles();\n  }\n}\n\nexport default HomepageAnimation;\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":""}