{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/user-preferences/user-preferences.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/user-preferences/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/video/video.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/video/index.js"],"names":["UserPreferences","constructor","bindEvents","prefersReducedMotion","_prefersReducedMotion","value","window","matchMedia","matches","addEventListener","VIDEO_HOOK","PLAYER_HOOK","VIDEO_AUDIO_HOOK","VIDEO_AUDIO_ON_HOOK","VIDEO_AUDIO_OFF_HOOK","VIDEO_PLAY_HOOK","VIDEO_PAUSE_HOOK","VIDEO_REPLAY_HOOK","VIDEO_READY_CLASS","VIDEO_PLAYING_CLASS","VIDEO_PAUSED_CLASS","VIDEO_REPLAY_CLASS","VIDEO_COOKIE_INVALID_CLASS","VIDEOS","Array","from","document","querySelectorAll","Video","videos","registeredPlatforms","registerPlatforms","platforms","_bindEvent","Events","$on","_event","element","inviewProperties","isInViewport","vertical","dataset","videoLoop","$trigger","id","_videoIsInitialised","scrolledPastViewport","bottom","initVideo","iterateVideos","data","classList","add","remove","bindPlayerEvents","concat","getVideos","forEach","video","PlatformClass","videoPlatform","options","constructVideoOptions","Object","keys","length","playerInstance","toggleAudioIcon","videoMuted","filter","prototype","hasOwnProperty","call","muted","player","audioOn","querySelector","audioOff","style","display","videoId","videoSources","videoClosedcaptions","videoTime","videoInfo","videoControls","videoAutoplay","videoAutopause","videoPlaysinline","instanceId","parseInt","play","pause","replay","mute","unMute","setVolume","audioButton","playButton","pauseButton","replayButton"],"mappings":"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","file":"js/Video.js","sourcesContent":["class UserPreferences {\n  constructor() {\n    this.bindEvents()\n  }\n\n  get prefersReducedMotion() {\n    return this._prefersReducedMotion\n  }\n\n  set prefersReducedMotion(value) {\n    this._prefersReducedMotion = value\n  }\n\n  bindEvents() {\n    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)')\n    this.prefersReducedMotion = prefersReducedMotion.matches\n\n    if (typeof prefersReducedMotion.addEventListener !== 'function') return\n\n    prefersReducedMotion.addEventListener('change', () => {\n      this.prefersReducedMotion = prefersReducedMotion.matches\n    })\n  }\n}\n\nexport default new UserPreferences()\n","/**\n *  @shelf-version: 1.0.0\n */\n\nimport UserPreferences from './user-preferences'\n\nexport default UserPreferences\n","import Events from '@utilities/events'\nimport UserPreferences from '@utilities/user-preferences'\n\nconst VIDEO_HOOK = '[js-hook-video]'\nconst PLAYER_HOOK = '[js-hook-video-player]'\n\nconst VIDEO_AUDIO_HOOK = '[js-hook-video-audio]'\nconst VIDEO_AUDIO_ON_HOOK = '[js-hook-video-audio-on]'\nconst VIDEO_AUDIO_OFF_HOOK = '[js-hook-video-audio-off]'\nconst VIDEO_PLAY_HOOK = '[js-hook-video-play]'\nconst VIDEO_PAUSE_HOOK = '[js-hook-video-pause]'\nconst VIDEO_REPLAY_HOOK = '[js-hook-video-replay]'\n\nconst VIDEO_READY_CLASS = 'video--is-initialised'\nconst VIDEO_PLAYING_CLASS = 'video--is-playing'\nconst VIDEO_PAUSED_CLASS = 'video--is-paused'\nconst VIDEO_REPLAY_CLASS = 'video--is-ended'\nconst VIDEO_COOKIE_INVALID_CLASS = 'video--has-invalid-cookie'\n\n/**\n * @typedef {HTMLElement & {\n *  _videoIsInitialised: boolean\n * }} VideoElement\n */\n\n/** @type {VideoElement[]} */\nconst VIDEOS = Array.from(document.querySelectorAll(VIDEO_HOOK))\n\nclass Video {\n  constructor() {\n    this.videos = []\n    this.registeredPlatforms = {}\n  }\n\n  registerPlatforms(platforms) {\n    if (typeof platforms !== 'object') return\n    this.registeredPlatforms = platforms\n\n    this._bindEvent()\n  }\n\n  /**\n   * Bind generic events\n   */\n  _bindEvent() {\n    Events.$on('video::inview', (_event, element) => {\n      if (!element.inviewProperties.isInViewport.vertical && !element.dataset.videoLoop) {\n        Events.$trigger(`video[${element.id}]::pause`)\n      }\n\n      if (!element._videoIsInitialised && element.inviewProperties.scrolledPastViewport.bottom) {\n        this.initVideo(element)\n      }\n    })\n\n    Events.$on('video::update', (_event, element) => {\n      if (!element) {\n        this.iterateVideos()\n      } else {\n        this.initVideo(element)\n      }\n    })\n\n    Events.$on('video::ready', (_event, data) => {\n      data.element.classList.add(VIDEO_READY_CLASS)\n      data.element.classList.add(VIDEO_PAUSED_CLASS)\n    })\n\n    Events.$on('video::playing', (_event, data) => {\n      data.element.classList.remove(VIDEO_REPLAY_CLASS)\n      data.element.classList.remove(VIDEO_PAUSED_CLASS)\n      data.element.classList.add(VIDEO_PLAYING_CLASS)\n    })\n\n    Events.$on('video::paused', (_event, data) => {\n      data.element.classList.remove(VIDEO_PLAYING_CLASS)\n      data.element.classList.add(VIDEO_PAUSED_CLASS)\n    })\n\n    Events.$on('video::ended', (_event, data) => {\n      data.element.classList.remove(VIDEO_PLAYING_CLASS)\n      data.element.classList.add(VIDEO_REPLAY_CLASS)\n    })\n\n    Events.$on('video::bind-player-events', (_event, data) => {\n      if (data) bindPlayerEvents(data)\n    })\n\n    Events.$on('video::cookie-invalid', (_event, element) => {\n      if (element) element.classList.add(VIDEO_COOKIE_INVALID_CLASS)\n    })\n  }\n\n  /**\n   * Iterate over platform types\n   */\n  iterateVideos() {\n    this.videos = this.videos.concat(getVideos(this.registeredPlatforms))\n\n    this.videos.forEach(video => {\n      this.initVideo(video)\n    })\n  }\n\n  /**\n   * Init all videos\n   * @param {object} video\n   */\n  initVideo(video) {\n    if (video._videoIsInitialised) return\n\n    const PlatformClass = this.registeredPlatforms[video.dataset.videoPlatform]\n    const options = constructVideoOptions(video)\n\n    if (Object.keys(options).length) {\n      options.element.playerInstance = new PlatformClass(options)\n    }\n\n    toggleAudioIcon(options.videoMuted, options.element)\n  }\n}\n\n/**\n * Get all videos matching the hook\n * @param {object} platforms\n * @returns {Object}\n */\nfunction getVideos(platforms) {\n  return VIDEOS.filter(video =>\n    Object.prototype.hasOwnProperty.call(platforms, video.dataset.videoPlatform) &&\n    !video._videoIsInitialised\n      ? video\n      : false,\n  )\n}\n\nfunction toggleAudioIcon(muted, player) {\n  const audioOn = player.querySelector(VIDEO_AUDIO_ON_HOOK)\n  const audioOff = player.querySelector(VIDEO_AUDIO_OFF_HOOK)\n  if (!audioOn || !audioOff) return\n\n  if (muted) {\n      audioOn.style.display = 'none';\n      audioOff.style.display = 'block';\n  } else {\n      audioOn.style.display = 'block';\n      audioOff.style.display = 'none';\n  }\n}\n\n/**\n * Construct the video options object\n * @param {VideoElement} element\n * @returns {Object}\n */\nfunction constructVideoOptions(element) {\n  const {\n    videoPlatform,\n    videoId,\n    videoSources,\n    videoClosedcaptions,\n    videoTime = '0',\n    videoInfo = '0',\n    videoControls = '0',\n    videoMuted = '0',\n    videoAutoplay = '0',\n    videoAutopause = '1',\n    videoLoop = '0',\n    videoPlaysinline = '0',\n  } = element.dataset\n\n  const instanceId = element.id\n  const player = element.querySelector(PLAYER_HOOK)\n\n  if (!videoPlatform || !videoId || element._videoIsInitialised) return {}\n\n  element._videoIsInitialised = true\n\n  return {\n    element,\n    player,\n    instanceId,\n    videoPlatform,\n    videoId,\n    videoInfo,\n    videoSources,\n    videoClosedcaptions,\n    // Boolean options:\n    videoTime: parseInt(videoTime, 10),\n    videoControls: parseInt(videoControls, 10),\n    videoMuted: parseInt(videoMuted, 10),\n    videoAutoplay: UserPreferences.prefersReducedMotion ? 0 : parseInt(videoAutoplay, 10),\n    videoAutopause: parseInt(videoAutopause, 10),\n    videoPlaysinline: parseInt(videoPlaysinline, 10),\n    videoLoop: parseInt(videoLoop, 10),\n  }\n}\n\n/**\n * Bind all the player specific events\n * @param {Object} options\n */\nfunction bindPlayerEvents(options) {\n  Events.$on(`video[${options.instanceId}]::play`, () => {\n    options.element.playerInstance.play()\n  })\n\n  Events.$on(`video[${options.instanceId}]::pause`, () => {\n    options.element.playerInstance.pause()\n  })\n\n  Events.$on(`video[${options.instanceId}]::replay`, () => {\n    options.element.playerInstance.replay()\n  })\n\n  Events.$on(`video[${options.instanceId}]::mute`, () => {\n    options.element.playerInstance.mute()\n  })\n\n  Events.$on(`video[${options.instanceId}]::unmute`, () => {\n    options.element.playerInstance.unMute()\n  })\n\n  Events.$on(`video[${options.instanceId}]::volume`, (_event, data) => {\n    options.element.playerInstance.setVolume(data.data)\n  })\n\n  const audioButton = options.element.querySelector(VIDEO_AUDIO_HOOK)\n  if (audioButton) {\n    audioButton.addEventListener('click', () => {\n      if (options.videoMuted) {\n          options.videoMuted = 0\n          Events.$trigger(`video[${options.instanceId}]::unmute`)\n          toggleAudioIcon(options.videoMuted, options.element)\n      } else {\n          options.videoMuted = 1\n          Events.$trigger(`video[${options.instanceId}]::mute`)\n          toggleAudioIcon(options.videoMuted, options.element)\n      }\n    })\n  }\n\n  const playButton = options.element.querySelector(VIDEO_PLAY_HOOK)\n  if (playButton) {\n    playButton.addEventListener('click', () => {\n      Events.$trigger(`video[${options.instanceId}]::play`)\n    })\n  }\n\n  const pauseButton = options.element.querySelector(VIDEO_PAUSE_HOOK)\n  if (pauseButton) {\n    pauseButton.addEventListener('click', () => {\n      Events.$trigger(`video[${options.instanceId}]::pause`)\n    })\n  }\n\n  const replayButton = options.element.querySelector(VIDEO_REPLAY_HOOK)\n  if (replayButton) {\n    replayButton.addEventListener('click', () => {\n      Events.$trigger(`video[${options.instanceId}]::replay`)\n    })\n  }\n}\n\nexport default new Video()\n","/**\n *  @shelf-version: 1.1.0\n */\nimport Video from './video'\n\nexport default Video\n"],"sourceRoot":""}