{"version":3,"file":"javascripts/chunks/1b805af67eff88ec4e56.main-stage.js","mappings":"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","sources":["webpack:///./components/main-stage/javascripts/main-stage.js","webpack:///./javascripts/dom/select.js","webpack:///./javascripts/helpers/baseModule.js"],"sourcesContent":["import { stagger, timeline } from 'motion';\nimport BaseModule from '../../../javascripts/helpers/baseModule';\n\nexport default class Form extends BaseModule {\n  constructor(element) {\n    super(element, element.getAttribute('data-js-module'));\n    this.getElements([\n      {\n        id: 'slide',\n        selector: 'slide'\n      },\n      {\n        id: 'slideButton',\n        selector: 'slide-button'\n      },\n      {\n        id: 'slideIndicator',\n        selector: 'slide-button-indicator'\n      }\n    ]);\n\n    this.slideDuration = 7000;\n    this.prevIndex = null;\n    this.slideIndex = 0;\n    this.updateSlide();\n    if (this.elements.slide.length > 1) this.bindEvents();\n  }\n\n  updateSlide() {\n    if (typeof this.prevIndex === 'number') {\n      const previousSlide = this.elements.slide[this.prevIndex];\n\n      const pImage = previousSlide.querySelector('.main-stage__image');\n      const pText = previousSlide.querySelectorAll('.main-stage__slideText');\n\n      const leaveSequence = [\n        [pText, { opacity: 0 }, { duration: 1 }],\n        [pText, { clipPath: 'inset(0 100% 0 0)' }, { at: 1 }],\n        [pImage, { opacity: 0 }, { duration: 1 }]\n      ];\n\n      pImage.classList.remove('main-stage__image--animate');\n      this.elements.slideButton[this.prevIndex].classList.remove(\n        'main-stage__slide-button--active'\n      );\n      timeline(leaveSequence).finished.then(() => {\n        previousSlide.style.zIndex = '0';\n      });\n    }\n\n    const activeSlide =\n      this.elements.slide.length > 1\n        ? this.elements.slide[this.slideIndex]\n        : this.elements.slide;\n\n    const aImage = activeSlide.querySelector('.main-stage__image');\n    const aText = activeSlide.querySelectorAll('.main-stage__slideText');\n\n    const enterSequence = [\n      [aImage, { opacity: 1 }, { duration: 1 }],\n      [aText, { opacity: 1 }, { duration: 0 }],\n      [\n        aText,\n        { clipPath: 'inset(0 0 0 0)' },\n        { duration: 1, delay: stagger(0.2) }\n      ]\n    ];\n\n    aImage.classList.add('main-stage__image--animate');\n\n    if (this.elements.slide.length > 1) {\n      this.elements.slideButton[this.slideIndex].classList.add(\n        'main-stage__slide-button--active'\n      );\n    }\n\n    timeline(enterSequence, { delay: 0.5 }).finished.then(() => {\n      activeSlide.style.zIndex = '1';\n    });\n  }\n\n  nextSlide() {\n    const isLastSlide = this.slideIndex === this.elements.slide.length - 1;\n    this.prevIndex = this.slideIndex;\n    this.slideIndex = isLastSlide ? 0 : this.slideIndex + 1;\n    this.updateSlide();\n  }\n\n  changeSlide(index) {\n    this.prevIndex = this.slideIndex;\n    this.slideIndex = index;\n    this.updateSlide();\n  }\n\n  bindEvents() {\n    this.elements.slideButton.forEach((e, i) => {\n      e.addEventListener('click', this.changeSlide.bind(this, i));\n    });\n\n    this.elements.slideIndicator.forEach((e) => {\n      e.addEventListener('animationend', this.nextSlide.bind(this));\n    });\n\n    this.elements.self.querySelectorAll('a').forEach((e) => {\n      e.addEventListener('mouseenter', () =>\n        this.elements.self.classList.add('main-stage--paused')\n      );\n      e.addEventListener('mouseleave', () =>\n        this.elements.self.classList.remove('main-stage--paused')\n      );\n    });\n\n    this.elements.self.addEventListener('touchstart', () => {\n      this.elements.self.classList.add('main-stage--paused');\n    });\n\n    this.elements.self.addEventListener('touchend', () => {\n      this.elements.self.classList.remove('main-stage--paused');\n    });\n  }\n}\n","/**\n * This methods selects Elements from a specific context by a selector\n * @param {string} selector Selector of the element to find\n * @param {Element|HTMLDocument} [element] Context of the selectable\n * @returns {Array<Element>} Am array with selected Elements\n */\nexport default (selector, element = window.document) =>\n  [].slice.call(element.querySelectorAll(selector));\n","import select from '../dom/select';\n\nclass BaseModule {\n  constructor(element, id) {\n    this.id = id;\n    this.elements = {\n      self: element\n    };\n\n    this.setInitialized();\n  }\n\n  setInitialized() {\n    if (this.elements.self) {\n      this.elements.self.setAttribute('data-js-module-initialized', true);\n    }\n  }\n\n  setUnInitialized() {\n    if (this.elements.self) {\n      this.elements.self.removeAttribute('data-js-module-initialized');\n    }\n  }\n\n  /**\n   * Selects DOMElements of a module with a specific data attribute (`data-js-element=\"${module}__${selector}\"`)\n   * Receives an object where the id param is the key in the elements cache\n   * The selector param of the config is the selector part in the query-selector described above\n   * @param {Object} config Configuration object in a key value format\n   * @returns {void}\n   */\n  getElements(config) {\n    const elementsConfig = config.map((elementConfig) => ({\n      ...elementConfig,\n      selector: `${this.id}__${elementConfig.selector}`\n    }));\n\n    const domElements = select('[data-js-element]', this.elements.self);\n\n    for (let i = 0; i < domElements.length; i += 1) {\n      const domElement = domElements[i];\n      const elementConfigCandidates = elementsConfig.filter(\n        (singleConfig) =>\n          domElement.getAttribute('data-js-element') === singleConfig.selector\n      );\n\n      const [elementConfig] = elementConfigCandidates;\n\n      if (elementConfig) {\n        if (typeof this.elements[elementConfig.id] === 'undefined') {\n          this.elements[elementConfig.id] = domElement;\n        } else {\n          if (typeof this.elements[elementConfig.id].push === 'undefined') {\n            this.elements[elementConfig.id] = [this.elements[elementConfig.id]];\n          }\n          this.elements[elementConfig.id].push(domElement);\n        }\n      }\n    }\n\n    /*\n     * Append a attribute \"asList\" to each element/s in this.elements\n     * which is always an array no matter if element/s is an array\n     * or a single HTMLElement\n     */\n\n    const asList = (obj) => (typeof obj.push === 'undefined' ? [obj] : obj);\n    Object.values(this.elements).forEach((obj) => {\n      obj.asList = asList(obj); // eslint-disable-line no-param-reassign\n    });\n  }\n}\n\nexport default BaseModule;\n"],"names":["Form","element","getAttribute","getElements","id","selector","slideDuration","prevIndex","slideIndex","updateSlide","elements","slide","length","bindEvents","this","previousSlide","pImage","querySelector","pText","querySelectorAll","leaveSequence","opacity","duration","clipPath","at","classList","remove","slideButton","timeline","finished","then","style","zIndex","activeSlide","aImage","aText","enterSequence","delay","stagger","add","isLastSlide","index","forEach","e","i","addEventListener","changeSlide","bind","slideIndicator","nextSlide","self","BaseModule","window","document","slice","call","setInitialized","setAttribute","removeAttribute","config","elementsConfig","map","elementConfig","domElements","select","domElement","filter","singleConfig","push","Object","values","obj","asList"],"sourceRoot":""}