{"version":3,"file":"vegas.min.js","sources":["vegas.min.js"],"sourcesContent":["/*!-----------------------------------------------------------------------------\n * Vegas - Fullscreen Backgrounds and Slideshows.\n * v2.6.0 - built 2024-07-30\n * Licensed under the MIT License.\n * http://vegas.jaysalvat.com/\n * ----------------------------------------------------------------------------\n * Copyright (C) 2010-2024 Jay Salvat\n * http://jaysalvat.com/\n * --------------------------------------------------------------------------*/\n\n(function ($) {\n 'use strict';\n\n var defaults = {\n slide: 0,\n delay: 5000,\n loop: true,\n preload: false,\n preloadImage: false,\n preloadVideo: false,\n timer: true,\n overlay: false,\n autoplay: true,\n shuffle: false,\n cover: true,\n color: null,\n align: 'center',\n valign: 'center',\n firstTransition: null,\n firstTransitionDuration: null,\n transition: 'fade',\n transitionDuration: 1000,\n transitionRegister: [],\n animation: null,\n animationDuration: 'auto',\n animationRegister: [],\n slidesToKeep: 1,\n init: function () {},\n play: function () {},\n pause: function () {},\n walk: function () {},\n slides: [\n // {\n // src: null,\n // color: null,\n // delay: null,\n // align: null,\n // valign: null,\n // transition: null,\n // transitionDuration: null,\n // animation: null,\n // animationDuration: null,\n // cover: true,\n // video: {\n // src: [],\n // muted: true,\n // loop: true\n // }\n // ...\n ]\n };\n\n var videoCache = {};\n var instances = 0;\n\n var Vegas = function (elmt, options) {\n this.elmt = elmt;\n this.settings = $.extend({}, defaults, $.vegas.defaults, options);\n this.slide = this.settings.slide;\n this.total = this.settings.slides.length;\n this.noshow = this.total < 2;\n this.paused = !this.settings.autoplay || this.noshow;\n this.ended = false;\n this.$elmt = $(elmt);\n this.$timer = null;\n this.$overlay = null;\n this.$slide = null;\n this.timeout = null;\n this.first = true;\n\n this.instance = instances++;\n\n this.transitions = [\n 'fade', 'fade2',\n 'blur', 'blur2',\n 'flash', 'flash2',\n 'negative', 'negative2',\n 'burn', 'burn2',\n 'slideLeft', 'slideLeft2',\n 'slideRight', 'slideRight2',\n 'slideUp', 'slideUp2',\n 'slideDown', 'slideDown2',\n 'zoomIn', 'zoomIn2',\n 'zoomOut', 'zoomOut2',\n 'swirlLeft', 'swirlLeft2',\n 'swirlRight', 'swirlRight2'\n ];\n\n this.animations = [\n 'kenburns',\n 'kenburnsLeft', 'kenburnsRight',\n 'kenburnsUp', 'kenburnsUpLeft', 'kenburnsUpRight',\n 'kenburnsDown', 'kenburnsDownLeft', 'kenburnsDownRight'\n ];\n\n if (!(this.settings.transitionRegister instanceof Array)) {\n this.settings.transitionRegister = [ this.settings.transitionRegister ];\n }\n\n if (!(this.settings.animationRegister instanceof Array)) {\n this.settings.animationRegister = [ this.settings.animationRegister ];\n }\n\n this.transitions = this.transitions.concat(this.settings.transitionRegister);\n this.animations = this.animations.concat(this.settings.animationRegister);\n\n this.support = {\n objectFit: 'objectFit' in document.body.style,\n transition: 'transition' in document.body.style || 'WebkitTransition' in document.body.style\n };\n\n if (this.settings.shuffle === true) {\n this.shuffle();\n }\n this._init();\n };\n\n Vegas.prototype = {\n _init: function () {\n var $content,\n $contentScroll,\n $overlay,\n $timer,\n isBody = this.elmt.tagName === 'BODY',\n timer = this.settings.timer,\n overlay = this.settings.overlay,\n self = this;\n\n // Preloading\n this._preload();\n\n // Div with scrollable content\n if (!isBody) {\n $contentScroll = $('
');\n\n $content = $('
')\n .css('overflow', this.$elmt.css('overflow'))\n .css('padding', this.$elmt.css('padding'));\n\n // Some browsers don't compute padding shorthand\n if (!this.$elmt.css('padding')) {\n $content\n .css('padding-top', this.$elmt.css('padding-top'))\n .css('padding-bottom', this.$elmt.css('padding-bottom'))\n .css('padding-left', this.$elmt.css('padding-left'))\n .css('padding-right', this.$elmt.css('padding-right'));\n }\n\n this.$elmt.css('padding', 0);\n\n this.$elmt.clone(true).children().appendTo($content);\n this.elmt.innerHTML = '';\n }\n\n // Timer\n if (timer && this.support.transition) {\n $timer = $('
');\n this.$timer = $timer;\n this.$elmt.prepend($timer);\n }\n\n // Overlay\n if (overlay) {\n $overlay = $('
');\n\n if (typeof overlay === 'string') {\n $overlay.css('background-image', 'url(' + overlay + ')');\n }\n\n this.$overlay = $overlay;\n this.$elmt.prepend($overlay);\n }\n\n // Container\n this.$elmt.addClass('vegas-container');\n\n if (!isBody) {\n this.$elmt.append($contentScroll);\n $contentScroll.append($content);\n }\n\n setTimeout(function () {\n self.trigger('init');\n self._goto(self.slide);\n\n if (self.settings.autoplay) {\n self.trigger('play');\n }\n }, 1);\n },\n\n _preload: function () {\n var img, i;\n\n for (i = 0; i < this.settings.slides.length; i++) {\n if (this.settings.preload || this.settings.preloadImages) {\n if (this.settings.slides[i].src) {\n img = new Image();\n img.src = this.settings.slides[i].src;\n }\n }\n\n if (this.settings.preload || this.settings.preloadVideos) {\n if (this.settings.slides[i].video) {\n if (this.settings.slides[i].video instanceof Array) {\n this._video(this.settings.slides[i].video);\n } else {\n this._video(this.settings.slides[i].video.src);\n }\n }\n }\n }\n },\n\n _random: function (array) {\n return array[Math.floor(Math.random() * array.length)];\n },\n\n _slideShow: function () {\n var self = this;\n\n if (this.total > 1 && !this.ended && !this.paused && !this.noshow) {\n this.timeout = setTimeout(function () {\n self.next();\n }, this._options('delay'));\n }\n },\n\n _timer: function (state) {\n var self = this;\n\n clearTimeout(this.timeout);\n\n if (!this.$timer) {\n return;\n }\n\n this.$timer\n .removeClass('vegas-timer-running')\n .find('div')\n .css('transition-duration', '0ms');\n\n if (this.ended || this.paused || this.noshow) {\n return;\n }\n\n if (state) {\n setTimeout(function () {\n self.$timer\n .addClass('vegas-timer-running')\n .find('div')\n .css('transition-duration', self._options('delay') - 100 + 'ms');\n }, 100);\n }\n },\n\n _video: function (srcs) {\n var video,\n source,\n cacheKey = this.instance + srcs.toString();\n\n if (videoCache[cacheKey]) {\n return videoCache[cacheKey];\n }\n\n if (!(srcs instanceof Array)) {\n srcs = [ srcs ];\n }\n\n video = document.createElement('video');\n video.preload = true;\n video.playsInline = true;\n video.controls = false;\n\n srcs.forEach(function (src) {\n source = document.createElement('source');\n source.src = src;\n video.appendChild(source);\n });\n\n videoCache[cacheKey] = video;\n\n return video;\n },\n\n _fadeOutSound: function (video, duration) {\n var self = this,\n delay = duration / 10,\n volume = video.volume - 0.09;\n\n if (volume > 0) {\n video.volume = volume;\n\n setTimeout(function () {\n self._fadeOutSound(video, duration);\n }, delay);\n } else {\n video.pause();\n }\n },\n\n _fadeInSound: function (video, duration) {\n var self = this,\n delay = duration / 10,\n volume = video.volume + 0.09;\n\n if (volume < 1) {\n video.volume = volume;\n\n setTimeout(function () {\n self._fadeInSound(video, duration);\n }, delay);\n }\n },\n\n _options: function (key, i) {\n if (i === undefined) {\n i = this.slide;\n }\n\n if (this.settings.slides[i][key] !== undefined) {\n return this.settings.slides[i][key];\n }\n\n return this.settings[key];\n },\n\n _goto: function (nb) {\n if (typeof this.settings.slides[nb] === 'undefined') {\n nb = 0;\n }\n\n this.slide = nb;\n\n var $slide,\n $inner,\n $video,\n $slides = this.$elmt.children('.vegas-slide'),\n src = this.settings.slides[nb].src,\n videoSettings = this.settings.slides[nb].video,\n delay = this._options('delay'),\n align = this._options('align'),\n valign = this._options('valign'),\n cover = this._options('cover'),\n color = this._options('color') || this.$elmt.css('background-color'),\n self = this,\n total = $slides.length,\n video,\n img;\n\n var transition = this._options('transition'),\n transitionDuration = this._options('transitionDuration'),\n animation = this._options('animation'),\n animationDuration = this._options('animationDuration');\n\n if (this.settings.firstTransition && this.first) {\n transition = this.settings.firstTransition || transition;\n }\n\n if (this.settings.firstTransitionDuration && this.first) {\n transitionDuration = this.settings.firstTransitionDuration || transitionDuration;\n }\n\n if (this.first) {\n this.first = false;\n }\n\n if (cover !== 'repeat') {\n if (cover === true) {\n cover = 'cover';\n } else if (cover === false) {\n cover = 'contain';\n }\n }\n\n if (transition === 'random' || transition instanceof Array) {\n if (transition instanceof Array) {\n transition = this._random(transition);\n } else {\n transition = this._random(this.transitions);\n }\n }\n\n if (animation === 'random' || animation instanceof Array) {\n if (animation instanceof Array) {\n animation = this._random(animation);\n } else {\n animation = this._random(this.animations);\n }\n }\n\n if (transitionDuration === 'auto' || transitionDuration > delay) {\n transitionDuration = delay;\n }\n\n if (animationDuration === 'auto') {\n animationDuration = delay;\n }\n\n $slide = $('
');\n\n if (this.support.transition && transition) {\n $slide.addClass('vegas-transition-' + transition);\n }\n\n // Video\n\n if (videoSettings) {\n if (videoSettings instanceof Array) {\n video = this._video(videoSettings);\n } else {\n video = this._video(videoSettings.src);\n }\n\n video.loop = videoSettings.loop !== undefined ? videoSettings.loop : true;\n video.muted = videoSettings.muted !== undefined ? videoSettings.muted : true;\n\n if (video.muted === false) {\n video.volume = 0;\n this._fadeInSound(video, transitionDuration);\n } else {\n video.pause();\n }\n\n $video = $(video)\n .addClass('vegas-video')\n .css('background-color', color);\n\n if (this.support.objectFit) {\n $video\n .css('object-position', align + ' ' + valign)\n .css('object-fit', cover)\n .css('width', '100%')\n .css('height', '100%');\n } else if (cover === 'contain') {\n $video\n .css('width', '100%')\n .css('height', '100%');\n }\n\n $slide.append($video);\n\n // Image\n\n } else {\n img = new Image();\n\n $inner = $('
')\n .css('background-image', 'url(\"' + src + '\")')\n .css('background-color', color)\n .css('background-position', align + ' ' + valign);\n\n if (cover === 'repeat') {\n $inner.css('background-repeat', 'repeat');\n } else {\n $inner.css('background-size', cover);\n }\n\n if (this.support.transition && animation) {\n $inner\n .addClass('vegas-animation-' + animation)\n .css('animation-duration', animationDuration + 'ms');\n }\n\n $slide.append($inner);\n }\n\n if (!this.support.transition) {\n $slide.css('display', 'none');\n }\n\n if (total) {\n $slides.eq(total - 1).after($slide);\n } else {\n this.$elmt.prepend($slide);\n }\n\n $slides\n .css('transition', 'all 0ms')\n .each(function () {\n this.className = 'vegas-slide';\n\n if (this.tagName === 'VIDEO') {\n this.className += ' vegas-video';\n }\n\n if (transition) {\n this.className += ' vegas-transition-' + transition;\n this.className += ' vegas-transition-' + transition + '-in';\n }\n }\n );\n\n self._timer(false);\n\n function go () {\n self._timer(true);\n\n setTimeout(function () {\n if (transition) {\n if (self.support.transition) {\n $slides\n .css('transition', 'all ' + transitionDuration + 'ms')\n .addClass('vegas-transition-' + transition + '-out');\n\n $slides.each(function () {\n var video = $slides.find('video').get(0);\n\n if (video) {\n video.volume = 1;\n self._fadeOutSound(video, transitionDuration);\n }\n });\n\n $slide\n .css('transition', 'all ' + transitionDuration + 'ms')\n .addClass('vegas-transition-' + transition + '-in');\n } else {\n $slide.fadeIn(transitionDuration);\n }\n }\n\n for (var i = 0; i < $slides.length - self.settings.slidesToKeep; i++) {\n $slides.eq(i).remove();\n }\n\n self.trigger('walk');\n self._slideShow();\n }, 100);\n }\n if (video) {\n if (video.readyState === 4) {\n video.currentTime = 0;\n }\n\n video.play();\n go();\n } else {\n img.src = src;\n\n if (img.complete) {\n go();\n } else {\n img.onload = go;\n }\n }\n },\n\n _end: function () {\n this.ended = !this.settings.autoplay;\n this._timer(false);\n this.trigger('end');\n },\n\n shuffle: function () {\n var temp,\n rand;\n\n for (var i = this.total - 1; i > 0; i--) {\n rand = Math.floor(Math.random() * (i + 1));\n temp = this.settings.slides[i];\n\n this.settings.slides[i] = this.settings.slides[rand];\n this.settings.slides[rand] = temp;\n }\n },\n\n play: function () {\n if (this.paused) {\n this.paused = false;\n this.next();\n this.trigger('play');\n }\n },\n\n pause: function () {\n this._timer(false);\n this.paused = true;\n this.trigger('pause');\n },\n\n toggle: function () {\n if (this.paused) {\n this.play();\n } else {\n this.pause();\n }\n },\n\n playing: function () {\n return !this.paused && !this.noshow;\n },\n\n current: function (advanced) {\n if (advanced) {\n return {\n slide: this.slide,\n data: this.settings.slides[this.slide]\n };\n }\n return this.slide;\n },\n\n jump: function (nb) {\n if (nb < 0 || nb > this.total - 1 || nb === this.slide) {\n return;\n }\n\n this.slide = nb;\n this._goto(this.slide);\n },\n\n next: function () {\n this.slide++;\n\n if (this.slide >= this.total) {\n if (!this.settings.loop) {\n return this._end();\n }\n\n this.slide = 0;\n }\n\n this._goto(this.slide);\n },\n\n previous: function () {\n this.slide--;\n\n if (this.slide < 0) {\n if (!this.settings.loop) {\n this.slide++;\n return;\n } else {\n this.slide = this.total - 1;\n }\n }\n\n this._goto(this.slide);\n },\n\n trigger: function (fn) {\n var params = [];\n\n if (fn === 'init') {\n params = [ this.settings ];\n } else {\n params = [\n this.slide,\n this.settings.slides[this.slide]\n ];\n }\n\n this.$elmt.trigger('vegas' + fn, params);\n\n if (typeof this.settings[fn] === 'function') {\n this.settings[fn].apply(this.$elmt, params);\n }\n },\n\n options: function (key, value) {\n var oldSlides = this.settings.slides.slice();\n\n if (typeof key === 'object') {\n this.settings = $.extend({}, defaults, $.vegas.defaults, key);\n } else if (typeof key === 'string') {\n if (value === undefined) {\n return this.settings[key];\n }\n this.settings[key] = value;\n } else {\n return this.settings;\n }\n\n // In case slides have changed\n if (this.settings.slides !== oldSlides) {\n this.total = this.settings.slides.length;\n this.noshow = this.total < 2;\n this._preload();\n }\n },\n\n destroy: function () {\n clearTimeout(this.timeout);\n\n this.$elmt.removeClass('vegas-container');\n this.$elmt.find('> .vegas-slide').remove();\n this.$elmt.find('> .vegas-wrapper').clone(true).children().appendTo(this.$elmt);\n this.$elmt.find('> .vegas-wrapper').remove();\n\n if (this.settings.timer) {\n this.$timer.remove();\n }\n\n if (this.settings.overlay) {\n this.$overlay.remove();\n }\n\n this.elmt._vegas = null;\n }\n };\n\n $.fn.vegas = function(options) {\n var args = arguments,\n error = false,\n returns;\n\n if (options === undefined || typeof options === 'object') {\n return this.each(function () {\n if (!this._vegas) {\n this._vegas = new Vegas(this, options);\n }\n });\n } else if (typeof options === 'string') {\n this.each(function () {\n var instance = this._vegas;\n\n if (!instance) {\n throw new Error('No Vegas applied to this element.');\n }\n\n if (typeof instance[options] === 'function' && options[0] !== '_') {\n returns = instance[options].apply(instance, [].slice.call(args, 1));\n } else {\n error = true;\n }\n });\n\n if (error) {\n throw new Error('No method \"' + options + '\" in Vegas.');\n }\n\n return returns !== undefined ? returns : this;\n }\n };\n\n $.vegas = {};\n $.vegas.defaults = defaults;\n\n $.vegas.isVideoCompatible = function () {\n return true;\n };\n\n})(window.jQuery || window.Zepto || window.m4q);\n"],"names":["$","Vegas","elmt","options","this","settings","extend","defaults","vegas","slide","total","slides","length","noshow","paused","autoplay","ended","$elmt","$timer","$overlay","$slide","timeout","first","instance","instances","transitions","animations","transitionRegister","Array","animationRegister","concat","support","objectFit","document","body","style","transition","shuffle","_init","delay","loop","preload","preloadImage","preloadVideo","timer","overlay","cover","color","align","valign","firstTransition","firstTransitionDuration","transitionDuration","animation","animationDuration","slidesToKeep","init","play","pause","walk","videoCache","prototype","$content","$contentScroll","isBody","tagName","self","_preload","css","clone","children","appendTo","innerHTML","prepend","addClass","append","setTimeout","trigger","_goto","i","preloadImages","src","Image","preloadVideos","video","_video","_random","array","Math","floor","random","_slideShow","next","_options","_timer","state","clearTimeout","removeClass","find","srcs","source","cacheKey","toString","createElement","playsInline","controls","forEach","appendChild","_fadeOutSound","duration","volume","_fadeInSound","key","undefined","nb","img","$slides","videoSettings","go","each","get","fadeIn","eq","remove","muted","$video","$inner","after","className","readyState","currentTime","complete","onload","_end","temp","rand","toggle","playing","current","advanced","data","jump","previous","fn","params","apply","value","oldSlides","slice","destroy","_vegas","returns","args","arguments","error","Error","call","isVideoCompatible","window","jQuery","Zepto","m4q"],"mappings":"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"}