{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/animation/utils.ts","webpack://@verndale/toolkit/./src/js/helpers/index.ts","webpack://@verndale/toolkit/./src/js/modules/carouselAndFeaturedInsights.ts"],"names":["defaultEasing","defaultCSSEasing","easing","debounce","callback","wait","timerId","args","darkColorPalette","lightColorPalette","getRandomColor","background","CarouselAndFutureInsights","Component","el","__publicField","Splide","data","item","button","link","_a","_b","slideRight","entrySequence","exitSequence","prevElement","activeElement","timeline","pictures","initialIndex","index","picture","color"],"mappings":"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","file":"scripts/4689.994d30a164a046c717bb.js","sourcesContent":["import { Easing } from 'motion';\n\nexport const defaultEasing = [0.61, 1, 0.88, 1] as Easing;\n\nexport const defaultCSSEasing = (easing: Easing = defaultEasing) => {\n  return `cubic-bezier(${[...easing].join(',')})`;\n};\n","// /**\n// * debounce function\n// * Delays the processing of the event\n// */\nexport const debounce = (callback: (args: unknown) => void, wait: number) => {\n  let timerId: ReturnType<typeof setTimeout>;\n\n  return (...args: [unknown]) => {\n    clearTimeout(timerId);\n    timerId = setTimeout(() => {\n      callback(...args);\n    }, wait);\n  };\n};\n\ninterface IColorPalette {\n  name: string;\n  code: string;\n}\n\nexport const darkColorPalette: Array<IColorPalette> = [\n  { name: 'orange', code: '#f47920' },\n  { name: 'yellow', code: '#f4b450' },\n  { name: 'green', code: '#0f9d58' },\n  { name: 'light-blue', code: '#009cde' }\n];\n\nexport const lightColorPalette: Array<IColorPalette> = [\n  { name: 'red', code: '#da291c' },\n  { name: 'purple', code: '#492d8c' },\n  { name: 'blue', code: '#2e67b2' },\n  { name: 'orange', code: '#f47920' },\n  { name: 'yellow', code: '#f4b450' },\n  { name: 'green', code: '#0f9d58' },\n  { name: 'light-blue', code: '#009cde' }\n];\n\nexport const getRandomColor = (\n  background: 'light' | 'dark' = 'light'\n): IColorPalette => {\n  if (background === 'light') {\n    const lightRandomColor =\n      lightColorPalette[Math.floor(Math.random() * lightColorPalette.length)];\n    return lightRandomColor;\n  }\n\n  const darkRandomColor =\n    darkColorPalette[Math.floor(Math.random() * darkColorPalette.length)];\n  return darkRandomColor;\n};\n","import { Component } from '@verndale/core';\nimport { Splide } from '@splidejs/splide';\nimport { defaultCSSEasing } from '../animation/utils';\nimport { AnimationControls, ElementOrSelector, timeline } from 'motion';\nimport { TimelineDefinition } from '@motionone/dom/types/timeline/types';\nimport { debounce, lightColorPalette } from '../helpers';\n\nclass CarouselAndFutureInsights extends Component {\n  MOTION_ZERO_DURATION = 0.000001;\n  slider: Splide | null = null;\n  lastIndex = -1;\n  entryTimeline: AnimationControls | undefined;\n  exitTimeline: AnimationControls | undefined;\n  reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n  isDragging = false;\n  isMobile = false;\n  isTablet = false;\n  isDesktop = false;\n\n  constructor(el: HTMLElement) {\n    super(el);\n    this.checkViewportWidth();\n    this.generateRandomColor();\n    this.slider = new Splide(this.dom.slider as HTMLElement, {\n      arrows: true,\n      easing: defaultCSSEasing(),\n      speed: 1000,\n      perPage: 1,\n      gap: '50px',\n      type:\n        Array.from(this.dom.sliderSlides as NodeListOf<HTMLElement>).length > 1\n          ? 'loop'\n          : 'slide',\n      drag:\n        Array.from(this.dom.sliderSlides as NodeListOf<HTMLElement>).length > 1\n          ? true\n          : false,\n      breakpoints: {\n        1024: {\n          gap: '25px',\n          perPage: 1\n        }\n      },\n      classes: {\n        pagination: 'splide__pagination carousel__splide-pagination',\n        page: 'carousel__splide-pagination-page '\n      }\n    });\n\n    this.slider.on('pagination:mounted', data => {\n      data.items.forEach(function (item) {\n        item.button.innerHTML = `<div class=\"indicator__wrapper\">\n          <span class=\"indicator__dot\"></span>\n          <div class=\"indicator__line-container\">\n            <span class=\"indicator__line\"></span>\n          </div>\n          <span class=\"indicator__dot-border\"></span>\n          <div class=\"indicator__text-container\">\n            <span class=\"indicator__text\">0${item.page + 1}<span>\n          </div>\n        </div>`;\n      });\n      requestAnimationFrame(() => {\n        this.dom.paginationButtons = this.el.querySelectorAll(\n          '.carousel__splide-pagination-page'\n        );\n        this.dom.paginationButtons.forEach((button: HTMLElement) => {\n          (\n            button.querySelector('.indicator__dot-border') as HTMLElement\n          ).style.transform = 'scale(0)';\n        });\n        this.updateAnimation();\n      });\n    });\n\n    this.slider.on('drag', () => {\n      this.isDragging = true;\n    });\n    this.slider.on('moved', () => {\n      this.isDragging = false;\n    });\n    this.slider.on('pagination:updated', this.updateAnimation.bind(this));\n    this.slider.mount();\n  }\n\n  setupDefaults() {\n    this.dom = {\n      slider: this.el.querySelector<HTMLElement>('.carousel'),\n      sliderSlides: this.el.querySelectorAll('.carousel__slide'),\n      links: this.el.querySelectorAll('a')\n    };\n  }\n\n  addListeners() {\n    window.addEventListener(\n      'resize',\n      debounce(this.handlePageResize.bind(this), 300)\n    );\n    [].forEach.call(this.dom.links, (link: HTMLElement) => {\n      link.addEventListener('click', this.handleLinkClick.bind(this));\n    });\n  }\n\n  handleLinkClick(e: Event) {\n    if (this.isDragging) {\n      e.preventDefault();\n    }\n  }\n\n  handlePageResize() {\n    this.checkViewportWidth();\n    this.entryTimeline?.stop();\n    this.exitTimeline?.stop();\n    this.lastIndex = -1;\n    this.updateAnimation();\n  }\n\n  checkViewportWidth() {\n    this.isMobile =\n      !window.matchMedia(`(min-width: ${1024}px)`).matches &&\n      !window.matchMedia(`(min-width: ${1440}px)`).matches;\n    this.isTablet =\n      window.matchMedia(`(min-width: ${1024}px)`).matches &&\n      !window.matchMedia(`(min-width: ${1440}px)`).matches;\n    this.isDesktop = window.matchMedia(`(min-width: ${1440}px)`).matches;\n  }\n\n  updateAnimation() {\n    if (!this.slider || this.slider.index === this.lastIndex) return;\n    const slideRight = this.slider.index > this.lastIndex ? true : false;\n\n    this.dom.paginationButtons = this.el.querySelectorAll(\n      '.carousel__splide-pagination-page'\n    );\n    this.dom.activeButton = this.el.querySelector<HTMLElement>(\n      '.carousel__splide-pagination-page.is-active'\n    );\n    this.dom.prevButton = this.dom.paginationButtons[this.lastIndex];\n\n    const entrySequence = [] as TimelineDefinition;\n    const exitSequence = [] as TimelineDefinition;\n    let prevElement: {\n      indicatorDot?: HTMLElement | null;\n      indicatorText?: HTMLElement | null;\n      indicatorDotBorder?: HTMLElement | null;\n      indicatorWrapper?: HTMLElement | null;\n      indicatorLineContainer?: HTMLElement | null;\n    } = {};\n    let activeElement: {\n      indicatorDot?: HTMLElement | null;\n      indicatorText?: HTMLElement | null;\n      indicatorDotBorder?: HTMLElement | null;\n      indicatorWrapper?: HTMLElement | null;\n      indicatorLineContainer?: HTMLElement | null;\n    } = {};\n\n    if (this.dom.prevButton) {\n      prevElement = {\n        indicatorWrapper: (\n          this.dom.prevButton as HTMLElement\n        ).querySelector<HTMLElement>('.indicator__wrapper'),\n        indicatorDot: (\n          this.dom.prevButton as HTMLElement\n        ).querySelector<HTMLElement>('.indicator__dot'),\n        indicatorDotBorder: (\n          this.dom.prevButton as HTMLElement\n        ).querySelector<HTMLElement>('.indicator__dot-border'),\n        indicatorLineContainer: (\n          this.dom.prevButton as HTMLElement\n        ).querySelector<HTMLElement>('.indicator__line-container'),\n        indicatorText: (\n          this.dom.prevButton as HTMLElement\n        ).querySelector<HTMLElement>('.indicator__text')\n      };\n\n      (prevElement.indicatorDot as HTMLElement).style.transform = 'unset';\n      (prevElement.indicatorDot as HTMLElement).style.right = 'unset';\n      (prevElement.indicatorDot as HTMLElement).style.left = this.isMobile\n        ? '7px'\n        : '15px';\n\n      exitSequence.push({ name: 'start', at: 0 });\n      exitSequence.push({ name: 'scale-wrapper', at: 0.25 });\n      exitSequence.push({ name: 'move-dot', at: 0.5 });\n      exitSequence.push([\n        prevElement.indicatorText as ElementOrSelector,\n        {\n          transform: 'translate(0, 40px)'\n        },\n        {\n          at: 'start',\n          duration: this.reducedMotion.matches ? this.MOTION_ZERO_DURATION : 0.5\n        }\n      ]);\n      exitSequence.push([\n        prevElement.indicatorDotBorder as ElementOrSelector,\n        {\n          transform: ['scale(1)', 'scale(0)']\n        },\n        {\n          at: 'start',\n          duration: this.reducedMotion.matches ? this.MOTION_ZERO_DURATION : 0.5\n        }\n      ]);\n      exitSequence.push([\n        prevElement.indicatorWrapper as ElementOrSelector,\n        {\n          inlineSize: this.isMobile ? '24px' : '40px'\n        },\n        {\n          at: this.reducedMotion.matches ? 'start' : 'scale-wrapper',\n          duration: this.reducedMotion.matches\n            ? this.MOTION_ZERO_DURATION\n            : 0.75\n        }\n      ]);\n      if (!this.isMobile) {\n        exitSequence.push([\n          prevElement.indicatorLineContainer as ElementOrSelector,\n          {\n            transform: ['scale(1)', 'scale(0)']\n          },\n          {\n            at: this.reducedMotion.matches ? 'start' : 'scale-wrapper',\n            duration: this.reducedMotion.matches\n              ? this.MOTION_ZERO_DURATION\n              : 0.75\n          }\n        ]);\n      }\n    }\n\n    activeElement = {\n      indicatorWrapper: (\n        this.dom.activeButton as HTMLElement\n      ).querySelector<HTMLElement>('.indicator__wrapper'),\n      indicatorDot: (\n        this.dom.activeButton as HTMLElement\n      ).querySelector<HTMLElement>('.indicator__dot'),\n      indicatorDotBorder: (\n        this.dom.activeButton as HTMLElement\n      ).querySelector<HTMLElement>('.indicator__dot-border'),\n      indicatorLineContainer: (\n        this.dom.activeButton as HTMLElement\n      ).querySelector<HTMLElement>('.indicator__line-container'),\n      indicatorText: (\n        this.dom.activeButton as HTMLElement\n      ).querySelector<HTMLElement>('.indicator__text')\n    };\n\n    if (\n      !activeElement.indicatorWrapper ||\n      !activeElement.indicatorDot ||\n      !activeElement.indicatorDotBorder ||\n      !activeElement.indicatorLineContainer ||\n      !activeElement.indicatorText\n    )\n      return;\n\n    if (!this.isMobile) {\n      activeElement.indicatorDot.style.setProperty('left', 'unset');\n      activeElement.indicatorDot.style.setProperty('right', 'unset');\n\n      slideRight\n        ? activeElement.indicatorDot.style.setProperty('right', '15px')\n        : activeElement.indicatorDot.style.setProperty('left', '15px');\n    }\n\n    entrySequence.push({ name: 'start', at: 0.25 });\n    entrySequence.push({ name: 'move-dot', at: 0.5 });\n    entrySequence.push({ name: 'scale-border', at: this.isMobile ? 0 : 0.75 });\n    entrySequence.push({ name: 'move-text', at: 1 });\n    if (!this.isMobile) {\n      entrySequence.push([\n        activeElement.indicatorWrapper as ElementOrSelector,\n        { inlineSize: this.isDesktop ? '265px' : '246px' },\n        {\n          at: 'start',\n          duration: this.reducedMotion.matches\n            ? this.MOTION_ZERO_DURATION\n            : 0.75\n        }\n      ]);\n    }\n    if (!this.isMobile) {\n      entrySequence.push([\n        activeElement.indicatorDot as ElementOrSelector,\n        {\n          transform: slideRight\n            ? `translate(-${this.isDesktop ? 225 : 206}px, 0)`\n            : 'translate(0, 0)'\n        },\n        {\n          at: this.reducedMotion.matches ? 'start' : 'move-dot',\n          duration: this.reducedMotion.matches\n            ? this.MOTION_ZERO_DURATION\n            : 0.75\n        }\n      ]);\n    }\n    entrySequence.push([\n      activeElement.indicatorDotBorder as ElementOrSelector,\n      { transform: ['scale(0)', 'scale(1)'] },\n      {\n        at: this.reducedMotion.matches ? 'start' : 'scale-border',\n        duration: this.reducedMotion.matches ? this.MOTION_ZERO_DURATION : 0.75\n      }\n    ]);\n    entrySequence.push([\n      activeElement.indicatorDotBorder as ElementOrSelector,\n      { transform: ['scale(0)', 'scale(1)'] },\n      {\n        at: this.reducedMotion.matches ? 'start' : 'scale-border',\n        duration: this.reducedMotion.matches ? this.MOTION_ZERO_DURATION : 0.75\n      }\n    ]);\n    if (!this.isMobile) {\n      entrySequence.push([\n        activeElement.indicatorLineContainer as ElementOrSelector,\n        { transform: ['scale(0)', 'scale(1)'] },\n        {\n          at: this.reducedMotion.matches ? 'start' : 'scale-border',\n          duration: this.reducedMotion.matches\n            ? this.MOTION_ZERO_DURATION\n            : 0.75\n        }\n      ]);\n    }\n    entrySequence.push([\n      activeElement.indicatorText as ElementOrSelector,\n      { transform: 'translate(0, 0)' },\n      {\n        at: this.reducedMotion.matches ? 'start' : 'move-text',\n        duration: this.reducedMotion.matches ? this.MOTION_ZERO_DURATION : 0.75\n      }\n    ]);\n\n    if (Array.from(this.dom.sliderSlides as NodeListOf<HTMLElement>).length > 1)\n      this.slider.Components.Drag.disable(true);\n    this.dom.paginationButtons.forEach((button: HTMLElement) => {\n      (button as HTMLElement).style.pointerEvents = 'none';\n    });\n    this.entryTimeline = timeline(entrySequence);\n    this.exitTimeline = timeline(exitSequence);\n    this.entryTimeline.playbackRate = 1.35;\n    this.exitTimeline.playbackRate = 1.35;\n    this.exitTimeline.finished.then(() => {\n      //console.log('exit finished');\n    });\n    this.entryTimeline.finished.then(() => {\n      (this.dom.paginationButtons as NodeListOf<HTMLElement>).forEach(\n        (button: HTMLElement) => {\n          (button as HTMLElement).style.pointerEvents = 'auto';\n        }\n      );\n      if (\n        Array.from(this.dom.sliderSlides as NodeListOf<HTMLElement>).length > 1\n      )\n        this.slider?.Components.Drag.disable(false);\n    });\n\n    this.lastIndex = this.slider.index;\n  }\n\n  generateRandomColor() {\n    const pictures = this.el.querySelectorAll<HTMLElement>(\n      '.carousel__slide .picture'\n    );\n\n    const initialIndex = Math.floor(Math.random() * lightColorPalette.length);\n    let index = initialIndex;\n\n    [].forEach.call(pictures, (picture: HTMLElement) => {\n      const color = lightColorPalette[index];\n      picture.classList.add(`picture--${color.name}-glow`);\n      if (index < lightColorPalette.length - 1) index++;\n      else index = initialIndex;\n    });\n  }\n}\n\nexport default CarouselAndFutureInsights;\n"],"sourceRoot":""}