export default function initialize()

in src/scripts/blocks/quotes.js [44:100]


export default function initialize({
  containerClass = 'js--fade-slider',
  slideClass = 'js--fade-slider__slide',
  slideActiveClass = 'js--fade-slider__slide--active',
  linkClass = 'js--fade-slider__nav-link',
  linkActiveClass = 'js--fade-slider__nav--active',
  timeoutInterval = 3000,
} = {}) {
  const container = document.querySelector(`.${containerClass}`);

  if (!container) {
    return;
  }

  // Alias these functions and bind the container for brevity.
  const setClass = impure.setClassBySelector.bind(null, container);
  const removeClassFromAll = impure.removeClassFromAll.bind(null, container);

  const startLoop = impure.startInterval.bind(
    null,
    container,
    slideClass,
    slideActiveClass,
    linkClass,
    linkActiveClass,
    timeoutInterval
  );

  let looper = startLoop();

  // Find the first slide and nav item and activates them.
  setClass(`.${slideClass}`, slideActiveClass);
  setClass(`.${linkClass}`, linkActiveClass);

  // Add a click handler for the nav.
  container.addEventListener('click', event => {
    if (event.target.classList.contains(linkClass)) {
      const targetSlideId = event.target.href.split('#')[1];

      if (targetSlideId) {
        event.preventDefault();

        // Reset the active classes on slides and nav links.
        removeClassFromAll(`.${slideClass}`, slideActiveClass);
        removeClassFromAll(`.${linkClass}`, linkActiveClass);

        // Add active classes to the selected slide and nav link.
        setClass(`#${targetSlideId}`, slideActiveClass);
        setClass(`a[href="#${targetSlideId}"]`, linkActiveClass);

        // Restart the interval.
        clearInterval(looper);
        looper = startLoop();
      }
    }
  });
}