Sfoglia il codice sorgente

update-dist: add npm gulp build:hugh use babel and terser to es6

Hugh Harlequin 2 anni fa
parent
commit
500e516ce2
15 ha cambiato i file con 2408 aggiunte e 1138 eliminazioni
  1. 5 0
      .gitignore
  2. 3 0
      .jshintrc
  3. 70 153
      dist/vegas.css
  4. 937 943
      dist/vegas.js
  5. 0 0
      dist/vegas.min.css
  6. 0 0
      dist/vegas.min.css.map
  7. 0 9
      dist/vegas.min.js
  8. 0 0
      dist/vegas.min.js.map
  9. 0 0
      dist/vegas.terser.min.js
  10. 0 0
      dist/vegas.terser.min.js.map
  11. 37 6
      gulpfile.js
  12. 1262 1
      package-lock.json
  13. 8 2
      package.json
  14. 55 0
      src/sass/main/vegas.sass
  15. 31 24
      src/vegas.js

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+.*.swp
+.*.swo
+package-lock.json
+node_modules
+.idea/

+ 3 - 0
.jshintrc

@@ -0,0 +1,3 @@
+{
+  "esversion": 6
+}

+ 70 - 153
dist/vegas.css

@@ -77,6 +77,67 @@ body.vegas-container > .vegas-slide {
 }
 
 /* Target Safari IOS7+ in order to add 76px */
+*[type=vegas] .vegas-content-scrollable .contents {
+    display: none;
+}
+
+.vegas-prev-icon:before {
+    content: "";
+    width: 40px;
+    height: 40px;
+    display: block;
+    border-top: white 5px solid;
+    border-left: white 5px solid;
+    transform: rotate(-45deg) translateY(-50%);
+    top: 50%;
+    left: 40px;
+    position: absolute;
+    cursor: pointer;
+}
+
+.vegas-next-icon:before {
+    content: "";
+    width: 40px;
+    height: 40px;
+    display: block;
+    border-top: white 5px solid;
+    border-right: white 5px solid;
+    transform: rotate(45deg) translateY(-50%);
+    top: 50%;
+    right: 40px;
+    position: absolute;
+    cursor: pointer;
+}
+
+.vegas-disabled:not(.vegas-prev), .vegas-disabled *, .vegas-disabled *:before, .vegas-disabled *:after {
+    cursor: not-allowed !important;
+}
+
+.vegas-dots {
+    width: 100%;
+    bottom: 0;
+    left: 0;
+    text-align: center;
+    position: absolute;
+}
+
+.vegas-dot {
+    margin: 0 4px;
+    width: 8px;
+    height: 8px;
+    border-radius: 100%;
+    background: #000;
+    opacity: .2;
+    display: inline-block;
+    cursor: pointer;
+}
+
+.vegas-dot-active {
+    cursor: default;
+    background: orange;
+    opacity: 1;
+}
+
 /*******************************************/
 /* blur transition */
 /*******************************************/
@@ -325,17 +386,7 @@ body.vegas-container > .vegas-slide {
 /* kenburns animation */
 /*******************************************/
 .vegas-animation-kenburns {
-    -webkit-animation: kenburns ease-out;
-            animation: kenburns ease-out;
-}
-
-@-webkit-keyframes kenburns {
-    0% {
-        transform: scale(1.5);
-    }
-    100% {
-        transform: scale(1);
-    }
+    animation: kenburns ease-out;
 }
 
 @keyframes kenburns {
@@ -351,17 +402,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsDownLeft animation */
 /*******************************************/
 .vegas-animation-kenburnsDownLeft {
-    -webkit-animation: kenburnsDownLeft ease-out;
-            animation: kenburnsDownLeft ease-out;
-}
-
-@-webkit-keyframes kenburnsDownLeft {
-    0% {
-        transform: scale(1.5) translate(10%, -10%);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsDownLeft ease-out;
 }
 
 @keyframes kenburnsDownLeft {
@@ -377,17 +418,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsDownRight animation */
 /*******************************************/
 .vegas-animation-kenburnsDownRight {
-    -webkit-animation: kenburnsDownRight ease-out;
-            animation: kenburnsDownRight ease-out;
-}
-
-@-webkit-keyframes kenburnsDownRight {
-    0% {
-        transform: scale(1.5) translate(-10%, -10%);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsDownRight ease-out;
 }
 
 @keyframes kenburnsDownRight {
@@ -403,17 +434,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsDown animation */
 /*******************************************/
 .vegas-animation-kenburnsDown {
-    -webkit-animation: kenburnsDown ease-out;
-            animation: kenburnsDown ease-out;
-}
-
-@-webkit-keyframes kenburnsDown {
-    0% {
-        transform: scale(1.5) translate(0, -10%);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsDown ease-out;
 }
 
 @keyframes kenburnsDown {
@@ -429,17 +450,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsLeft animation */
 /*******************************************/
 .vegas-animation-kenburnsLeft {
-    -webkit-animation: kenburnsLeft ease-out;
-            animation: kenburnsLeft ease-out;
-}
-
-@-webkit-keyframes kenburnsLeft {
-    0% {
-        transform: scale(1.5) translate(10%, 0);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsLeft ease-out;
 }
 
 @keyframes kenburnsLeft {
@@ -455,17 +466,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsRight animation */
 /*******************************************/
 .vegas-animation-kenburnsRight {
-    -webkit-animation: kenburnsRight ease-out;
-            animation: kenburnsRight ease-out;
-}
-
-@-webkit-keyframes kenburnsRight {
-    0% {
-        transform: scale(1.5) translate(-10%, 0);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsRight ease-out;
 }
 
 @keyframes kenburnsRight {
@@ -481,17 +482,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsUpLeft animation */
 /*******************************************/
 .vegas-animation-kenburnsUpLeft {
-    -webkit-animation: kenburnsUpLeft ease-out;
-            animation: kenburnsUpLeft ease-out;
-}
-
-@-webkit-keyframes kenburnsUpLeft {
-    0% {
-        transform: scale(1.5) translate(10%, 10%);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsUpLeft ease-out;
 }
 
 @keyframes kenburnsUpLeft {
@@ -507,17 +498,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsUpRight animation */
 /*******************************************/
 .vegas-animation-kenburnsUpRight {
-    -webkit-animation: kenburnsUpRight ease-out;
-            animation: kenburnsUpRight ease-out;
-}
-
-@-webkit-keyframes kenburnsUpRight {
-    0% {
-        transform: scale(1.5) translate(-10%, 10%);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsUpRight ease-out;
 }
 
 @keyframes kenburnsUpRight {
@@ -533,17 +514,7 @@ body.vegas-container > .vegas-slide {
 /* kenburnsUp animation */
 /*******************************************/
 .vegas-animation-kenburnsUp {
-    -webkit-animation: kenburnsUp ease-out;
-            animation: kenburnsUp ease-out;
-}
-
-@-webkit-keyframes kenburnsUp {
-    0% {
-        transform: scale(1.5) translate(0, 10%);
-    }
-    100% {
-        transform: scale(1) translate(0, 0);
-    }
+    animation: kenburnsUp ease-out;
 }
 
 @keyframes kenburnsUp {
@@ -554,57 +525,3 @@ body.vegas-container > .vegas-slide {
         transform: scale(1) translate(0, 0);
     }
 }
-*[type=vegas] .vegas-content-scrollable .contents{
-    display:none;
-}
-.vegas-prev-icon:before{
-    content: "";
-    width: 40px;
-    height: 40px;
-    display: block;
-    border-top : white 5px solid;
-    border-left: white 5px solid;
-    transform: rotate(-45deg) translateY(-50%);
-    top: 50%;
-    left: 40px;
-    position: absolute;
-    cursor: pointer;
-}
-.vegas-next-icon:before{
-    content: "";
-    width: 40px;
-    height: 40px;
-    display: block;
-    border-top : white 5px solid;
-    border-right: white 5px solid;
-    transform: rotate(45deg) translateY(-50%);
-    top: 50%;
-    right: 40px;
-    position: absolute;
-    cursor: pointer;
-}
-.vegas-disabled:not(.vegas-prev), .vegas-disabled *, .vegas-disabled *:before, .vegas-disabled *:after{
-    cursor: not-allowed !important;
-}
-.vegas-dots{
-    width: 100%;
-    bottom: 0;
-    left: 0;
-    text-align: center;
-    position: absolute;
-}
-.vegas-dot{
-    margin: 0 4px;
-    width: 8px;
-    height: 8px;
-    border-radius: 100%;
-    background: #000;
-    opacity: .2;
-    display: inline-block;
-    cursor: pointer;
-}
-.vegas-dot-active{
-    cursor:default;
-    background: orange ;
-    opacity: 1;
-}

+ 937 - 943
dist/vegas.js

@@ -1,946 +1,940 @@
-/*!-----------------------------------------------------------------------------
- * Vegas - Fullscreen Backgrounds and Slideshows.
- * v2.5.4 - built 2021-01-30
- * Licensed under the MIT License.
- * http://vegas.jaysalvat.com/
- * ----------------------------------------------------------------------------
- * Copyright (C) 2010-2021 Jay Salvat
- * http://jaysalvat.com/
- * --------------------------------------------------------------------------*/
-/* Customize By Hugh
- * version 1.0.2 - 20201221
- * Simple use by just div[type=vegas] image ...
- */
+
 (function($) {
-    'use strict';
-  
-    var defaults = {
-        slide: 0,
-        delay: 5000,
-        loop: true,
-        preload: false,
-        preloadImage: false,
-        preloadVideo: false,
-        timer: true,
-        overlay: false,
-        autoplay: true,
-        shuffle: false,
-        cover: true,
-        color: null,
-        align: 'center',
-        valign: 'center',
-        firstTransition: null,
-        firstTransitionDuration: null,
-        transition: 'fade',
-        transitionDuration: 1000,
-        transitionRegister: [],
-        animation: null,
-        animationDuration: 'auto',
-        animationRegister: [],
-        slidesToKeep: 1,
-        "arrow-status": 'none',     // none|disabled|hide|show
-        "arrow-hookStatus": 'hide', // none|disabled|hide|show
-        "arrow-prevHook": null,
-        "arrow-nextHook": null,
-        "dot-status": 'none',      //none|show
-        "dot-hook": null,
-        "dot-hookStatus": 'clone', // none|clone|clone-id
-        prevTransparent: true,
-        init: function() {},
-        play: function() {},
-        pause: function() {},
-        walk: function() {},
-        slides: [// {
-        //  src:                null,
-        //  color:              null,
-        //  delay:              null,
-        //  align:              null,
-        //  valign:             null,
-        //  transition:         null,
-        //  transitionDuration: null,
-        //  animation:          null,
-        //  animationDuration:  null,
-        //  cover:              true,
-        //  video: {
-        //      src: [],
-        //      mute: true,
-        //      loop: true
-        // }
-        // ...
-        ]
-    };
-  
-    var videoCache = {};
-  
-    var Vegas = function(elmt, options) {
-        this.elmt = elmt;
-        this.$elmt = $(elmt);
-        this.settings = $.extend({}, defaults, $.vegas.defaults, options);
-        this._init_settings();
-        this.slide = this.settings.slide;
-        this.total = this.settings.slides.length;
-        this.noshow = this.total < 2;
-        this.paused = !this.settings.autoplay || this.noshow;
-        this.ended = false;
-        this.$timer = null;
-        this.$overlay = null;
-        this.$slide = null;
-        this.timeout = null;
-        this.first = true;
-        this.transitions = ['fade', 'fade2', 'blur', 'blur2', 'flash', 'flash2', 'negative', 'negative2', 'burn', 'burn2', 'slideLeft', 'slideLeft2', 'slideRight', 'slideRight2', 'slideUp', 'slideUp2', 'slideDown', 'slideDown2', 'zoomIn', 'zoomIn2', 'zoomOut', 'zoomOut2', 'swirlLeft', 'swirlLeft2', 'swirlRight', 'swirlRight2'];
-  
-        this.animations = ['kenburns', 'kenburnsLeft', 'kenburnsRight', 'kenburnsUp', 'kenburnsUpLeft', 'kenburnsUpRight', 'kenburnsDown', 'kenburnsDownLeft', 'kenburnsDownRight'];
-        if (!(this.settings.transitionRegister instanceof Array)) {
-            this.settings.transitionRegister = [this.settings.transitionRegister];
-        }
-  
-        if (!(this.settings.animationRegister instanceof Array)) {
-            this.settings.animationRegister = [this.settings.animationRegister];
-        }
-  
-        this.transitions = this.transitions.concat(this.settings.transitionRegister);
-        this.animations = this.animations.concat(this.settings.animationRegister);
-  
-        this.support = {
-            objectFit: 'objectFit'in document.body.style,
-            transition: 'transition'in document.body.style || 'WebkitTransition'in document.body.style,
-            video: $.vegas.isVideoCompatible()
-        };
-  
-        if (this.settings.shuffle === true) {
-            this.shuffle();
-        }
-  
-        this._init();
-        this._arrows();
-        this._dots();
-    };
-  
-    Vegas.prototype = {
-        _init_settings: function(options) {
-            var attributes = this.elmt.attributes;
-            var settings = this.settings;
-            window.attr_merge(attributes, settings);
-            this.slide = settings.slide;
-            var slides = [];
-            this.$elmt.children().each(function() {
-                var $this = $(this);
-                if ($this.is('img')) {
-                    slides.push({
-                        src: $this.attr('src'),
-                    });
-                    if ($this.attr('data-transition') != undefined && $this.attr('data-transition') != settings['transition']) {
-                        slides[slides.length - 1].transition = $this.attr('data-transition');
-                    }
-                    if ($this.attr('data-animation') != undefined && $this.attr('data-animation') != settings['animation']) {
-                        slides[slides.length - 1].transition = $this.attr('data-animation');
-                    }
-                }
-                if ($this.is('video')) {
-                    if ($this.children().length > 0) {
-                        slides.push({
-                            video: {
-                                src: [],
-                                loop: eval($this.attr('data-loop') || false),
-                                mute: eval($this.attr('data-mute') || true),
-                            }
-                        });
-                        var video_srces = [];
-                        $this.children().each(function() {
-                            video_srces.push($(this).attr('src'))
-                        });
-                        slides[slides.length - 1].video.src = video_srces;
-                    } else {
-                        slides.push({
-                            video: {
-                                src: [$this.attr('src')],
-                                loop: eval($this.attr('data-loop') || false),
-                                mute: eval($this.attr('data-mute') || true),
-                            }
-                        });
-                    }
-                }
-            });
-            this.settings.slides = slides;
-  
-        },
-        _arrows: function(){
-            let settings = window.attr_prefix(this.settings, 'arrow');
-            let this_prev = this.$elmt.find('.vegas-prev');
-            let this_next = this.$elmt.find('.vegas-next');
-  
-            if (settings.prevHook != null) {
-                $("body").on("click", settings.prevHook, function() {
-                    $('[data-arrow-prevHook="' + settings.prevHook + '"] .vegas-prev').click();
-                });
-            }
-            if (settings.nextHook != null) {
-                $("body").on("click", settings.nextHook, function() {
-                    $('[data-arrow-nextHook="' + settings.nextHook + '"] .vegas-next').click();
-                });
-            }
-  
-            if (settings.status == 'none') {
-                this_prev.hide();
-                this_next.hide();
-            } else if (settings.status == 'hide') {
-                if (this.slide == 0) {
-                    this.$elmt.find('.vegas-prev').hide();
-                }
-                this.$elmt.on('vegaschange', function() {
-                    if ($(this).vegas('current') <= 0) {
-                        $(this).find('.vegas-prev').hide();
-                    } else {
-                        $(this).find('.vegas-prev').show();
-                    }
-                    if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
-                        $(this).find('.vegas-next').hide();
-                    } else {
-                        $(this).find('.vegas-next').show();
-                    }
-                });
-            } else if (settings.status == 'disabled') {
-                if (this.slide == 0) {
-                    this.$elmt.find('.vegas-prev').addClass('vegas-disabled');
-                }
-                this.$elmt.on('vegaschange', function() {
-                    if ($(this).vegas('current') <= 0) {
-                        $(this).find('.vegas-prev').addClass('vegas-disabled');
-                    } else {
-                        $(this).find('.vegas-prev').removeClass('vegas-disabled');
-                    }
-                    if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
-                        $(this).find('.vegas-next').addClass('vegas-disabled');
-                    } else {
-                        $(this).find('.vegas-next').removeClass('vegas-disabled');
-                    }
-                });
-            }
-            if (settings.hookStatus == 'none') {
-                $(settings.prevHook).hide();
-                $(settings.nextHook).hide();
-            } else if (settings.hookStatus == 'hide') {
-                if (this.slide == 0) {
-                    $(settings.prevHook).hide();
-                }
-                this.$elmt.on('vegaschange', function() {
-                    if ($(this).vegas('current') <= 0) {
-                        $(settings.prevHook).hide();
-                    } else {
-                        $(settings.prevHook).show();
-                    }
-                    if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
-                        $(settings.nextHook).hide();
-                    } else {
-                        $(settings.nextHook).show();
-                    }
-                });
-            } else if (settings.hookStatus == 'disabled') {
-                if (this.slide == 0) {
-                    $(settings.prevHook).addClass('vegas-disabled');
-                }
-                this.$elmt.on('vegaschange', function() {
-                    if ($(this).vegas('current') <= 0) {
-                        $(settings.prevHook).addClass('vegas-disabled');
-                    } else {
-                        $(settings.prevHook).removeClass('vegas-disabled');
-                    }
-                    if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
-                        $(settings.nextHook).addClass('vegas-disabled');
-                    } else {
-                        $(settings.nextHook).removeClass('vegas-disabled');
-                    }
-                });
-            } 
-        },
-        _dots: function() {
-            let settings = window.attr_prefix(this.settings, 'dot');
-            let dots = this.$elmt.find('.vegas-dots .vegas-dot').eq(0);
-            let dataHook = $(settings.hook);
-            let dataHookChild = $(settings.hook).children().eq(0);
-            
-            for (var i = 1; i < this.settings.slides.length; i++) {
-                dots.clone(true).appendTo(this.$elmt.find('.vegas-dots'));
-                if (settings.hookStatus == "clone") {
-                    dataHookChild.clone(true).appendTo(dataHook);
-                }
-                if (settings.hookStatus == "clone-id") {
-                    var vegas_dot = dataHookChild.clone(true);
-  
-                    vegas_dot.html(function(x, oldHTML) {
-                        return oldHTML.replace(/\${i}/g, i + 1);
-                    }).appendTo(dataHook);
-                }
-            }
-            if (settings.hookStatus == "clone-id") {
-                dataHookChild.html(function(x, oldHTML) {
-                    return oldHTML.replace(/\${i}/g, 1);
-                })
-            }
-            if (settings.status == "hide") {
-                this.$elmt.find('.vegas-dots').hide();
-            }
-            this.$elmt.find('.vegas-dots .vegas-dot').eq(this.slide).addClass('vegas-dot-active');
-            $(settings.hook).children().eq(this.slide).addClass('vegas-dot-active');
-  
-            this.$elmt.on('vegaschange', function() {
-                $(this).find('.vegas-dots .vegas-dot.vegas-dot-active').removeClass('vegas-dot-active');
-                $(settings.hook).children('.vegas-dot-active').removeClass('vegas-dot-active');
-                var active_dot = $(this).vegas('current') > $(this).find('.vegas-dots .vegas-dot').length - 1 ? $(this).find('.vegas-dots .vegas-dot').length - 1 : $(this).vegas('current');
-                var active_dot = $(this).vegas('current') < 0 ? 0 : active_dot;
-                $(this).find('.vegas-dots .vegas-dot').eq(active_dot).addClass('vegas-dot-active');
-                $(settings.hook).children().eq(active_dot).addClass('vegas-dot-active');
-            });
-            var dot_clone = settings.hook;
-  
-            $(settings.hook).children().on('click', function() {
-                $('[data-dot-hook="' + dot_clone + '"] .vegas-dots').children('.vegas-dot').eq($(this).index()).click();
-            });
-        },
-        _init: function() {
-            var $content, $contentScroll, $overlay, $timer, isBody = this.elmt.tagName === 'BODY', timer = this.settings.timer, overlay = this.settings.overlay, self = this;
-  
-            // Preloading
-            this._preload();
-  
-            // Div with scrollable content
-            if (!isBody) {
-                $contentScroll = $('<div class="vegas-content-scrollable">');
-  
-                $content = $('<div class="vegas-content">').css('overflow', this.$elmt.css('overflow')).css('padding', this.$elmt.css('padding'));
-  
-                // Some browsers don't compute padding shorthand
-                if (!this.$elmt.css('padding')) {
-                    $content.css('padding-top', this.$elmt.css('padding-top')).css('padding-bottom', this.$elmt.css('padding-bottom')).css('padding-left', this.$elmt.css('padding-left')).css('padding-right', this.$elmt.css('padding-right'));
-                }
-                this.$elmt.css('padding', 0);
-                
-                this.$elmt.clone(true).children().appendTo($content);
-  
-                $content.children().not('.vegas-dot-controls').wrapAll("<div class='contents'></div>");
-                $content.append($('<div class="vegas-arrow-controls"></div>'));
-                $content.find('.vegas-arrow-controls').append($('<div class="vegas-prev"></div>')).find('.vegas-prev').append($('<div class="vegas-prev-icon"></div>'));
-                $content.find('.vegas-arrow-controls').append($('<div class="vegas-next"></div>')).find('.vegas-next').append($('<div class="vegas-next-icon"></div>'));
-                $content.append($('<div class="vegas-dot-controls"></div>')).find('.vegas-dot-controls').append($('<div class="vegas-dots"></div>')).find('.vegas-dots').append($('<div class="vegas-dot"></div>'));
-  
-                this.elmt.innerHTML = '';
-            }
-  
-            // Timer
-            if (timer && this.support.transition) {
-                $timer = $('<div class="vegas-timer"><div class="vegas-timer-progress">');
-                this.$timer = $timer;
-                this.$elmt.prepend($timer);
-            }
-  
-            // Overlay
-            if (overlay) {
-                $overlay = $('<div class="vegas-overlay">');
-  
-                if (typeof overlay === 'string') {
-                    $overlay.css('background-image', 'url(' + overlay + ')');
-                }
-  
-                this.$overlay = $overlay;
-                this.$elmt.prepend($overlay);
-            }
-  
-            // Container
-            this.$elmt.addClass('vegas-container');
-  
-            if (!isBody) {
-                this.$elmt.append($contentScroll);
-                $contentScroll.append($content);
-            }
-  
-            this.$elmt.data('vegas', this);
-  
-            setTimeout(function() {
-                self.trigger('init');
-                self._goto(self.slide);
-  
-                if (self.settings.autoplay) {
-                    self.trigger('play');
-                }
-            }, 1);
-        },
-  
-        _preload: function() {
-            var img, i;
-  
-            for (i = 0; i < this.settings.slides.length; i++) {
-                if (this.settings.preload || this.settings.preloadImages) {
-                    if (this.settings.slides[i].src) {
-                        img = new Image();
-                        img.src = this.settings.slides[i].src;
-                    }
-                }
-  
-                if (this.settings.preload || this.settings.preloadVideos) {
-                    if (this.support.video && this.settings.slides[i].video) {
-                        if (this.settings.slides[i].video instanceof Array) {
-                            this._video(this.settings.slides[i].video);
-                        } else {
-                            this._video(this.settings.slides[i].video.src);
-                        }
-                    }
-                }
-            }
-        },
-  
-        _random: function(array) {
-            return array[Math.floor(Math.random() * array.length)];
-        },
-  
-        _slideShow: function() {
-            var self = this;
-  
-            if (this.total > 1 && !this.ended && !this.paused && !this.noshow) {
-                this.timeout = setTimeout(function() {
-                    self.next();
-                }, this._options('delay'));
-            }
-        },
-  
-        _timer: function(state) {
-            var self = this;
-  
-            clearTimeout(this.timeout);
-  
-            if (!this.$timer) {
-                return;
-            }
-  
-            this.$timer.removeClass('vegas-timer-running').find('div').css('transition-duration', '0ms');
-  
-            if (this.ended || this.paused || this.noshow) {
-                return;
-            }
-  
-            if (state) {
-                setTimeout(function() {
-                    self.$timer.addClass('vegas-timer-running').find('div').css('transition-duration', self._options('delay') - 100 + 'ms');
-                }, 100);
-            }
-        },
-  
-        _video: function(srcs) {
-            var video, source, cacheKey = srcs.toString();
-  
-            if (videoCache[cacheKey]) {
-                return videoCache[cacheKey];
-            }
-  
-            if (!(srcs instanceof Array)) {
-                srcs = [srcs];
-            }
-  
-            video = document.createElement('video');
-            video.preload = true;
-  
-            srcs.forEach(function(src) {
-                source = document.createElement('source');
-                source.src = src;
-                video.appendChild(source);
-            });
-  
-            videoCache[cacheKey] = video;
-  
-            return video;
-        },
-  
-        _fadeOutSound: function(video, duration) {
-            var self = this
-              , delay = duration / 10
-              , volume = video.volume - 0.09;
-  
-            if (volume > 0) {
-                video.volume = volume;
-  
-                setTimeout(function() {
-                    self._fadeOutSound(video, duration);
-                }, delay);
-            } else {
-                video.pause();
-            }
-        },
-  
-        _fadeInSound: function(video, duration) {
-            var self = this
-              , delay = duration / 10
-              , volume = video.volume + 0.09;
-  
-            if (volume < 1) {
-                video.volume = volume;
-  
-                setTimeout(function() {
-                    self._fadeInSound(video, duration);
-                }, delay);
-            }
-        },
-  
-        _options: function(key, i) {
-            if (i === undefined) {
-                i = this.slide;
-            }
-  
-            if (this.settings.slides[i][key] !== undefined) {
-                return this.settings.slides[i][key];
-            }
-  
-            return this.settings[key];
-        },
-  
-        _goto: function(nb) {
-            if (typeof this.settings.slides[nb] === 'undefined') {
-                nb = 0;
-            }
-  
-            this.slide = nb;
-  
-            var $slide, $inner, $video, $slides = this.$elmt.children('.vegas-slide'), src = this.settings.slides[nb].src, videoSettings = this.settings.slides[nb].video, delay = this._options('delay'), align = this._options('align'), valign = this._options('valign'), cover = this._options('cover'), color = this._options('color') || this.$elmt.css('background-color'), self = this, total = $slides.length, video, img;
-            var transition = this._options('transition')
-              , transitionDuration = this._options('transitionDuration')
-              , animation = this._options('animation')
-              , animationDuration = this._options('animationDuration');
-  
-            if (this.settings.firstTransition && this.first) {
-                transition = this.settings.firstTransition || transition;
-            }
-  
-            if (this.settings.firstTransitionDuration && this.first) {
-                transitionDuration = this.settings.firstTransitionDuration || transitionDuration;
-            }
-  
-            if (this.first) {
-                this.first = false;
-            }
-  
-            if (cover !== 'repeat') {
-                if (cover === true) {
-                    cover = 'cover';
-                } else if (cover === false) {
-                    cover = 'contain';
-                }
-            }
-  
-            if (transition === 'random' || transition instanceof Array) {
-                if (transition instanceof Array) {
-                    transition = this._random(transition);
-                } else {
-                    transition = this._random(this.transitions);
-                }
-            }
-  
-            if (animation === 'random' || animation instanceof Array) {
-                if (animation instanceof Array) {
-                    animation = this._random(animation);
-                } else {
-                    animation = this._random(this.animations);
-                }
-            }
-  
-            if (transitionDuration === 'auto' || transitionDuration > delay) {
-                transitionDuration = delay;
-            }
-  
-            if (animationDuration === 'auto') {
-                animationDuration = delay;
-            }
-  
-            $slide = $('<div class="vegas-slide"></div>');
-  
-            if (this.support.transition && transition) {
-                $slide.addClass('vegas-transition-' + transition);
-            }
-  
-  
-            if (this.support.video && videoSettings) {
-                // Video
-  
-                if (videoSettings instanceof Array) {
-                    video = this._video(videoSettings);
-                } else {
-                    video = this._video(videoSettings.src);
-                }
-  
-                video.loop = videoSettings.loop !== undefined ? videoSettings.loop : true;
-                video.muted = videoSettings.mute !== undefined ? videoSettings.mute : true;
-  
-                if (video.muted === false) {
-                    video.volume = 0;
-                    this._fadeInSound(video, transitionDuration);
-                } else {
-                    video.pause();
-                }
-  
-                $video = $(video).addClass('vegas-video').css('background-color', color);
-  
-                if (this.support.objectFit) {
-                    $video.css('object-position', align + ' ' + valign).css('object-fit', cover).css('width', '100%').css('height', '100%');
-                } else if (cover === 'contain') {
-                    $video.css('width', '100%').css('height', '100%');
-                }
-  
-                $slide.append($video);
-  
-  
-            } else {
-                // Image
-  
-                img = new Image();
-                $inner = $('<div class="vegas-slide-inner"></div>').css('background-image', 'url("' + src + '")').css('background-color', color).css('background-position', align + ' ' + valign);
-  
-                if (cover === 'repeat') {
-                    $inner.css('background-repeat', 'repeat');
-                } else {
-                    $inner.css('background-size', cover);
-                }
-  
-                if (this.support.transition && animation) {
-                    $inner.addClass('vegas-animation-' + animation).css('animation-duration', animationDuration + 'ms');
-                }
-  
-                $slide.append($inner);
-            }
-  
-            if (!this.support.transition) {
-                $slide.css('display', 'none');
-            }
-            if (total) {
-                $slides.eq(total - 1).after($slide);
-            } else {
-                this.$elmt.prepend($slide);
-            }
-  
-            $slides.css('transition', 'all 0ms').each(function() {
-                this.className = 'vegas-slide';
-  
-                if (this.tagName === 'VIDEO') {
-                    this.className += ' vegas-video';
-                }
-  
-                if (transition) {
-                    this.className += ' vegas-transition-' + transition;
-                    this.className += ' vegas-transition-' + transition + '-in';
-                }
-            });
-  
-            self._timer(false);
-  
-            function go() {
-                self._timer(true);
-  
-                setTimeout(function() {
-                    if (transition) {
-                        if (self.support.transition) {
-                            $slides.css('transition', 'all ' + transitionDuration + 'ms').addClass('vegas-transition-' + transition + '-out').css('opacity', self.settings.prevTransparent ? 0 : 1);
-  
-                            $slides.each(function() {
-                                var video = $slides.find('video').get(0);
-  
-                                if (video) {
-                                    video.volume = 1;
-                                    self._fadeOutSound(video, transitionDuration);
-                                }
-                            });
-  
-                            $slide.css('transition', 'all ' + transitionDuration + 'ms').addClass('vegas-transition-' + transition + '-in');
-                        } else {
-                            $slide.fadeIn(transitionDuration);
-                        }
-                    }
-  
-                    for (var i = 0; i < $slides.length - self.settings.slidesToKeep; i++) {
-                        $slides.eq(i).remove();
-                    }
-  
-                    self.trigger('walk');
-                    self._slideShow();
-                }, 100);
-            }
-            if (video) {
-                if (video.readyState === 4) {
-                    video.currentTime = 0;
-                }
-  
-                video.play();
-                go();
-            } else {
-                img.src = src;
-  
-                if (img.complete) {
-                    go();
-                } else {
-                    img.onload = go;
-                }
-            }
-        },
-  
-        _end: function() {
-            this.ended = !this.settings.autoplay;
-            this._timer(false);
-            this.trigger('end');
-        },
-  
-        shuffle: function() {
-            var temp, rand;
-  
-            for (var i = this.total - 1; i > 0; i--) {
-                rand = Math.floor(Math.random() * (i + 1));
-                temp = this.settings.slides[i];
-  
-                this.settings.slides[i] = this.settings.slides[rand];
-                this.settings.slides[rand] = temp;
-            }
-        },
-  
-        play: function() {
-            if (this.paused) {
-                this.paused = false;
-                this.next();
-                this.trigger('play');
-            }
-        },
-  
-        pause: function() {
-            this._timer(false);
-            this.paused = true;
-            this.trigger('pause');
-        },
-  
-        toggle: function() {
-            if (this.paused) {
-                this.play();
-            } else {
-                this.pause();
-            }
-        },
-  
-        playing: function() {
-            return !this.paused && !this.noshow;
-        },
-  
-        current: function(advanced) {
-            if (advanced) {
-                return {
-                    slide: this.slide,
-                    data: this.settings.slides[this.slide]
-                };
-            }
-            return this.slide;
-        },
-  
-        jump: function(nb) {
-            if (nb < 0 || nb > this.total - 1 || nb === this.slide) {
-                return;
-            }
-            this.trigger('jump');
-            this.slide = nb;
-            this.trigger('change');
-            this._goto(this.slide);
-        },
-  
-        next: function() {
-            this.slide++;
-            this.trigger('next');
-            this.trigger('change');
-            if (this.slide >= this.total) {
-                this.slide--;
-                if (!this.settings.loop) {
-                    return this._end();
-                }
-  
-                this.slide = 0;
-            }
-  
-            this._goto(this.slide);
-        },
-  
-        previous: function() {
-            this.slide--;
-            this.trigger('previous');
-            this.trigger('change');
-            if (this.slide < 0) {
-                if (!this.settings.loop) {
-                    this.slide++;
-                    return;
-                } else {
-                    this.slide = this.total - 1;
-                }
-            }
-  
-            this._goto(this.slide);
-        },
-  
-        trigger: function(fn) {
-            var params = [];
-  
-            if (fn === 'init') {
-                params = [this.settings];
-            } else {
-                params = [this.slide, this.settings.slides[this.slide]];
-            }
-  
-            this.$elmt.trigger('vegas' + fn, params);
-  
-            if (typeof this.settings[fn] === 'function') {
-                this.settings[fn].apply(this.$elmt, params);
-            }
-        },
-  
-        options: function(key, value) {
-            var oldSlides = this.settings.slides.slice();
-  
-            if (typeof key === 'object') {
-                this.settings = $.extend({}, defaults, $.vegas.defaults, key);
-            } else if (typeof key === 'string') {
-                if (value === undefined) {
-                    return this.settings[key];
-                }
-                this.settings[key] = value;
-            } else {
-                return this.settings;
-            }
-  
-            // In case slides have changed
-            if (this.settings.slides !== oldSlides) {
-                this.total = this.settings.slides.length;
-                this.noshow = this.total < 2;
-                this._preload();
-            }
-        },
-  
-        destroy: function() {
-            clearTimeout(this.timeout);
-  
-            this.$elmt.removeClass('vegas-container');
-            this.$elmt.find('> .vegas-slide').remove();
-            this.$elmt.find('> .vegas-wrapper').clone(true).children().appendTo(this.$elmt);
-            this.$elmt.find('> .vegas-wrapper').remove();
-  
-            if (this.settings.timer) {
-                this.$timer.remove();
-            }
-  
-            if (this.settings.overlay) {
-                this.$overlay.remove();
-            }
-  
-            this.elmt._vegas = null;
-        }
-    };
-  
-    $.fn.vegas = function(options) {
-        var args = arguments, error = false, returns;
-        if (options === undefined || typeof options === 'object') {
-            return this.each(function() {
-                if (!this._vegas) {
-                    this._vegas = new Vegas(this,options);
-                }
-            });
-        } else if (typeof options === 'string') {
-            this.each(function() {
-                var instance = this._vegas;
-                if (!instance) {
-                    throw new Error('No Vegas applied to this element.');
-                }
-                if (options[0] === '_' && options[1] === '_'){
-                    returns = instance[options.substring(2)];
-                } else {
-                    if (typeof instance[options] === 'function' && options[0] !== '_') {
-                        returns = instance[options].apply(instance, [].slice.call(args, 1));
-                    } else {
-                        error = true;
-                    }
-                }
-                
-            });
-  
-            if (error) {
-                throw new Error('No method "' + options + '" in Vegas.');
-            }
-  
-            return returns !== undefined ? returns : this;
-        }
-    }
-    ;
-  
-    $.vegas = {};
-    $.vegas.defaults = defaults;
-  
-    $.vegas.isVideoCompatible = function() {
-        return !/(Android|webOS|Phone|iPad|iPod|BlackBerry|Windows Phone)/i.test(navigator.userAgent);
-    }
-    ;
-  
+  'use strict';
+
+  var defaults = {
+      slide: 0,
+      delay: 5000,
+      loop: true,
+      preload: false,
+      preloadImage: false,
+      preloadVideo: false,
+      timer: true,
+      overlay: false,
+      autoplay: true,
+      shuffle: false,
+      cover: true,
+      color: null,
+      align: 'center',
+      valign: 'center',
+      firstTransition: null,
+      firstTransitionDuration: null,
+      transition: 'fade',
+      transitionDuration: 1000,
+      transitionRegister: [],
+      animation: null,
+      animationDuration: 'auto',
+      animationRegister: [],
+      slidesToKeep: 1,
+      "arrow-status": 'none',     // none|disabled|hide|show
+      "arrow-hookStatus": 'hide', // none|disabled|hide|show
+      "arrow-prevHook": null,
+      "arrow-nextHook": null,
+      "dot-status": 'none',      //none|show
+      "dot-hook": null,
+      "dot-hookStatus": 'clone', // none|clone|clone-id
+      prevTransparent: true,
+      init: function() {},
+      play: function() {},
+      pause: function() {},
+      walk: function() {},
+      slides: [// {
+      //  src:                null,
+      //  color:              null,
+      //  delay:              null,
+      //  align:              null,
+      //  valign:             null,
+      //  transition:         null,
+      //  transitionDuration: null,
+      //  animation:          null,
+      //  animationDuration:  null,
+      //  cover:              true,
+      //  video: {
+      //      src: [],
+      //      mute: true,
+      //      loop: true
+      // }
+      // ...
+      ]
+  };
+
+  var videoCache = {};
+
+  var Vegas = function(elmt, options) {
+      this.elmt = elmt;
+      this.$elmt = $(elmt);
+      this.settings = $.extend({}, defaults, $.vegas.defaults, options);
+      this._init_settings();
+      this.slide = this.settings.slide;
+      this.total = this.settings.slides.length;
+      this.noshow = this.total < 2;
+      this.paused = !this.settings.autoplay || this.noshow;
+      this.ended = false;
+      this.$timer = null;
+      this.$overlay = null;
+      this.$slide = null;
+      this.timeout = null;
+      this.first = true;
+      this.transitions = ['fade', 'fade2', 'blur', 'blur2', 'flash', 'flash2', 'negative', 'negative2', 'burn', 'burn2', 'slideLeft', 'slideLeft2', 'slideRight', 'slideRight2', 'slideUp', 'slideUp2', 'slideDown', 'slideDown2', 'zoomIn', 'zoomIn2', 'zoomOut', 'zoomOut2', 'swirlLeft', 'swirlLeft2', 'swirlRight', 'swirlRight2'];
+
+      this.animations = ['kenburns', 'kenburnsLeft', 'kenburnsRight', 'kenburnsUp', 'kenburnsUpLeft', 'kenburnsUpRight', 'kenburnsDown', 'kenburnsDownLeft', 'kenburnsDownRight'];
+      if (!(this.settings.transitionRegister instanceof Array)) {
+          this.settings.transitionRegister = [this.settings.transitionRegister];
+      }
+
+      if (!(this.settings.animationRegister instanceof Array)) {
+          this.settings.animationRegister = [this.settings.animationRegister];
+      }
+
+      this.transitions = this.transitions.concat(this.settings.transitionRegister);
+      this.animations = this.animations.concat(this.settings.animationRegister);
+
+      this.support = {
+          objectFit: 'objectFit'in document.body.style,
+          transition: 'transition'in document.body.style || 'WebkitTransition'in document.body.style,
+          video: $.vegas.isVideoCompatible()
+      };
+
+      if (this.settings.shuffle === true) {
+          this.shuffle();
+      }
+
+      this._init();
+      this._arrows();
+      this._dots();
+  };
+
+  Vegas.prototype = {
+      _init_settings: function(options) {
+          var attributes = this.elmt.attributes;
+          var settings = this.settings;
+          window.attr_merge(attributes, settings);
+          this.slide = settings.slide;
+          var slides = [];
+          this.$elmt.children().each(function() {
+              var $this = $(this);
+              if ($this.is('img')) {
+                  slides.push({
+                      src: $this.attr('src'),
+                  });
+                  if ($this.attr('data-transition') != undefined && $this.attr('data-transition') != settings.transition) {
+                      slides[slides.length - 1].transition = $this.attr('data-transition');
+                  }
+                  if ($this.attr('data-animation') != undefined && $this.attr('data-animation') != settings.animation) {
+                      slides[slides.length - 1].transition = $this.attr('data-animation');
+                  }
+              }
+              if ($this.is('video')) {
+                  if ($this.children().length > 0) {
+                      slides.push({
+                          video: {
+                              src: [],
+                              loop: eval($this.attr('data-loop') || false),
+                              mute: eval($this.attr('data-mute') || true),
+                          }
+                      });
+                      var video_srces = [];
+                      $this.children().each(function() {
+                          video_srces.push($(this).attr('src'));
+                      });
+                      slides[slides.length - 1].video.src = video_srces;
+                  } else {
+                      slides.push({
+                          video: {
+                              src: [$this.attr('src')],
+                              loop: eval($this.attr('data-loop') || false),
+                              mute: eval($this.attr('data-mute') || true),
+                          }
+                      });
+                  }
+              }
+          });
+          this.settings.slides = slides;
+
+      },
+      _arrows: function(){
+          let settings = Object.keys(this.settings).reduce(function (carry, key) {
+              key.includes('arrow-') && (carry[key.replace('arrow-', '')] = this.settings[key])
+              return carry;
+          }, {});
+          let this_prev = this.$elmt.find('.vegas-prev');
+          let this_next = this.$elmt.find('.vegas-next');
+
+          if (settings.prevHook != null) {
+              $("body").on("click", settings.prevHook, function() {
+                  $('[data-arrow-prevHook="' + settings.prevHook + '"] .vegas-prev').click();
+              });
+          }
+          if (settings.nextHook != null) {
+              $("body").on("click", settings.nextHook, function() {
+                  $('[data-arrow-nextHook="' + settings.nextHook + '"] .vegas-next').click();
+              });
+          }
+
+          if (settings.status == 'none') {
+              this_prev.hide();
+              this_next.hide();
+          } else if (settings.status == 'hide') {
+              if (this.slide == 0) {
+                  this.$elmt.find('.vegas-prev').hide();
+              }
+              this.$elmt.on('vegaschange', function() {
+                  if ($(this).vegas('current') <= 0) {
+                      $(this).find('.vegas-prev').hide();
+                  } else {
+                      $(this).find('.vegas-prev').show();
+                  }
+                  if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
+                      $(this).find('.vegas-next').hide();
+                  } else {
+                      $(this).find('.vegas-next').show();
+                  }
+              });
+          } else if (settings.status == 'disabled') {
+              if (this.slide == 0) {
+                  this.$elmt.find('.vegas-prev').addClass('vegas-disabled');
+              }
+              this.$elmt.on('vegaschange', function() {
+                  if ($(this).vegas('current') <= 0) {
+                      $(this).find('.vegas-prev').addClass('vegas-disabled');
+                  } else {
+                      $(this).find('.vegas-prev').removeClass('vegas-disabled');
+                  }
+                  if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
+                      $(this).find('.vegas-next').addClass('vegas-disabled');
+                  } else {
+                      $(this).find('.vegas-next').removeClass('vegas-disabled');
+                  }
+              });
+          }
+          if (settings.hookStatus == 'none') {
+              $(settings.prevHook).hide();
+              $(settings.nextHook).hide();
+          } else if (settings.hookStatus == 'hide') {
+              if (this.slide == 0) {
+                  $(settings.prevHook).hide();
+              }
+              this.$elmt.on('vegaschange', function() {
+                  if ($(this).vegas('current') <= 0) {
+                      $(settings.prevHook).hide();
+                  } else {
+                      $(settings.prevHook).show();
+                  }
+                  if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
+                      $(settings.nextHook).hide();
+                  } else {
+                      $(settings.nextHook).show();
+                  }
+              });
+          } else if (settings.hookStatus == 'disabled') {
+              if (this.slide == 0) {
+                  $(settings.prevHook).addClass('vegas-disabled');
+              }
+              this.$elmt.on('vegaschange', function() {
+                  if ($(this).vegas('current') <= 0) {
+                      $(settings.prevHook).addClass('vegas-disabled');
+                  } else {
+                      $(settings.prevHook).removeClass('vegas-disabled');
+                  }
+                  if ($(this).vegas('current') >= ($(this).vegas('__total') - 1)) {
+                      $(settings.nextHook).addClass('vegas-disabled');
+                  } else {
+                      $(settings.nextHook).removeClass('vegas-disabled');
+                  }
+              });
+          }
+      },
+      _dots: function() {
+          let settings = Object.keys(this.settings).reduce(function (carry, key) {
+              key.includes('dot-') && (carry[key.replace('dot-', '')] = this.settings[key])
+              return carry;
+          }, {});
+          let dots = this.$elmt.find('.vegas-dots .vegas-dot').eq(0);
+          let dataHook = $(settings.hook);
+          let dataHookChild = $(settings.hook).children().eq(0);
+
+          for (var i = 1; i < this.settings.slides.length; i++) {
+              dots.clone(true).appendTo(this.$elmt.find('.vegas-dots'));
+              if (settings.hookStatus == "clone") {
+                  dataHookChild.clone(true).appendTo(dataHook);
+              }
+              if (settings.hookStatus == "clone-id") {
+                  const index = i;
+                  var vegas_dot = dataHookChild.clone(true);
+
+                  vegas_dot.html(function(x, oldHTML) {
+                      return oldHTML.replace(/\${i}/g, index + 1);
+                  }).appendTo(dataHook);
+              }
+          }
+          if (settings.hookStatus == "clone-id") {
+              dataHookChild.html(function(x, oldHTML) {
+                  return oldHTML.replace(/\${i}/g, 1);
+              });
+          }
+          if (settings.status == "hide") {
+              this.$elmt.find('.vegas-dots').hide();
+          }
+          this.$elmt.find('.vegas-dots .vegas-dot').eq(this.slide).addClass('vegas-dot-active');
+          $(settings.hook).children().eq(this.slide).addClass('vegas-dot-active');
+
+          this.$elmt.on('vegaschange', function() {
+              $(this).find('.vegas-dots .vegas-dot.vegas-dot-active').removeClass('vegas-dot-active');
+              $(settings.hook).children('.vegas-dot-active').removeClass('vegas-dot-active');
+              var active_dot = $(this).vegas('current') > $(this).find('.vegas-dots .vegas-dot').length - 1 ? $(this).find('.vegas-dots .vegas-dot').length - 1 : $(this).vegas('current');
+              active_dot = $(this).vegas('current') < 0 ? 0 : active_dot;
+              $(this).find('.vegas-dots .vegas-dot').eq(active_dot).addClass('vegas-dot-active');
+              $(settings.hook).children().eq(active_dot).addClass('vegas-dot-active');
+          });
+          var dot_clone = settings.hook;
+
+          $(settings.hook).children().on('click', function() {
+              $('[data-dot-hook="' + dot_clone + '"] .vegas-dots').children('.vegas-dot').eq($(this).index()).click();
+          });
+      },
+      _init: function() {
+          var $content, $contentScroll, $overlay, $timer, isBody = this.elmt.tagName === 'BODY', timer = this.settings.timer, overlay = this.settings.overlay, self = this;
+
+          // Preloading
+          this._preload();
+
+          // Div with scrollable content
+          if (!isBody) {
+              $contentScroll = $('<div class="vegas-content-scrollable">');
+
+              $content = $('<div class="vegas-content">').css('overflow', this.$elmt.css('overflow')).css('padding', this.$elmt.css('padding'));
+
+              // Some browsers don't compute padding shorthand
+              if (!this.$elmt.css('padding')) {
+                  $content.css('padding-top', this.$elmt.css('padding-top')).css('padding-bottom', this.$elmt.css('padding-bottom')).css('padding-left', this.$elmt.css('padding-left')).css('padding-right', this.$elmt.css('padding-right'));
+              }
+              this.$elmt.css('padding', 0);
+
+              this.$elmt.clone(true).children().appendTo($content);
+
+              $content.children().not('.vegas-dot-controls').wrapAll("<div class='contents'></div>");
+              $content.append($('<div class="vegas-arrow-controls"></div>'));
+              $content.find('.vegas-arrow-controls').append($('<div class="vegas-prev"></div>')).find('.vegas-prev').append($('<div class="vegas-prev-icon"></div>'));
+              $content.find('.vegas-arrow-controls').append($('<div class="vegas-next"></div>')).find('.vegas-next').append($('<div class="vegas-next-icon"></div>'));
+              $content.append($('<div class="vegas-dot-controls"></div>')).find('.vegas-dot-controls').append($('<div class="vegas-dots"></div>')).find('.vegas-dots').append($('<div class="vegas-dot"></div>'));
+
+              this.elmt.innerHTML = '';
+          }
+
+          // Timer
+          if (timer && this.support.transition) {
+              $timer = $('<div class="vegas-timer"><div class="vegas-timer-progress">');
+              this.$timer = $timer;
+              this.$elmt.prepend($timer);
+          }
+
+          // Overlay
+          if (overlay) {
+              $overlay = $('<div class="vegas-overlay">');
+
+              if (typeof overlay === 'string') {
+                  $overlay.css('background-image', 'url(' + overlay + ')');
+              }
+
+              this.$overlay = $overlay;
+              this.$elmt.prepend($overlay);
+          }
+
+          // Container
+          this.$elmt.addClass('vegas-container');
+
+          if (!isBody) {
+              this.$elmt.append($contentScroll);
+              $contentScroll.append($content);
+          }
+
+          this.$elmt.data('vegas', this);
+
+          setTimeout(function() {
+              self.trigger('init');
+              self._goto(self.slide);
+
+              if (self.settings.autoplay) {
+                  self.trigger('play');
+              }
+          }, 1);
+      },
+
+      _preload: function() {
+          var img, i;
+
+          for (i = 0; i < this.settings.slides.length; i++) {
+              if (this.settings.preload || this.settings.preloadImages) {
+                  if (this.settings.slides[i].src) {
+                      img = new Image();
+                      img.src = this.settings.slides[i].src;
+                  }
+              }
+
+              if (this.settings.preload || this.settings.preloadVideos) {
+                  if (this.support.video && this.settings.slides[i].video) {
+                      if (this.settings.slides[i].video instanceof Array) {
+                          this._video(this.settings.slides[i].video);
+                      } else {
+                          this._video(this.settings.slides[i].video.src);
+                      }
+                  }
+              }
+          }
+      },
+
+      _random: function(array) {
+          return array[Math.floor(Math.random() * array.length)];
+      },
+
+      _slideShow: function() {
+          var self = this;
+
+          if (this.total > 1 && !this.ended && !this.paused && !this.noshow) {
+              this.timeout = setTimeout(function() {
+                  self.next();
+              }, this._options('delay'));
+          }
+      },
+
+      _timer: function(state) {
+          var self = this;
+
+          clearTimeout(this.timeout);
+
+          if (!this.$timer) {
+              return;
+          }
+
+          this.$timer.removeClass('vegas-timer-running').find('div').css('transition-duration', '0ms');
+
+          if (this.ended || this.paused || this.noshow) {
+              return;
+          }
+
+          if (state) {
+              setTimeout(function() {
+                  self.$timer.addClass('vegas-timer-running').find('div').css('transition-duration', self._options('delay') - 100 + 'ms');
+              }, 100);
+          }
+      },
+
+      _video: function(srcs) {
+          var video, source, cacheKey = srcs.toString();
+
+          if (videoCache[cacheKey]) {
+              return videoCache[cacheKey];
+          }
+
+          if (!(srcs instanceof Array)) {
+              srcs = [srcs];
+          }
+
+          video = document.createElement('video');
+          video.preload = true;
+
+          srcs.forEach(function(src) {
+              source = document.createElement('source');
+              source.src = src;
+              video.appendChild(source);
+          });
+
+          videoCache[cacheKey] = video;
+
+          return video;
+      },
+
+      _fadeOutSound: function(video, duration) {
+          var self = this,
+              delay = duration / 10,
+              volume = video.volume - 0.09;
+
+          if (volume > 0) {
+              video.volume = volume;
+
+              setTimeout(function() {
+                  self._fadeOutSound(video, duration);
+              }, delay);
+          } else {
+              video.pause();
+          }
+      },
+
+      _fadeInSound: function(video, duration) {
+          var self = this,
+              delay = duration / 10,
+              volume = video.volume + 0.09;
+
+          if (volume < 1) {
+              video.volume = volume;
+
+              setTimeout(function() {
+                  self._fadeInSound(video, duration);
+              }, delay);
+          }
+      },
+
+      _options: function(key, i) {
+          if (i === undefined) {
+              i = this.slide;
+          }
+
+          if (this.settings.slides[i][key] !== undefined) {
+              return this.settings.slides[i][key];
+          }
+
+          return this.settings[key];
+      },
+
+      _goto: function(nb) {
+          if (typeof this.settings.slides[nb] === 'undefined') {
+              nb = 0;
+          }
+
+          this.slide = nb;
+
+          var $slide, $inner, $video, $slides = this.$elmt.children('.vegas-slide'), src = this.settings.slides[nb].src, videoSettings = this.settings.slides[nb].video, delay = this._options('delay'), align = this._options('align'), valign = this._options('valign'), cover = this._options('cover'), color = this._options('color') || this.$elmt.css('background-color'), self = this, total = $slides.length, video, img;
+          var transition = this._options('transition'),
+              transitionDuration = this._options('transitionDuration'),
+              animation = this._options('animation'),
+              animationDuration = this._options('animationDuration');
+
+          if (this.settings.firstTransition && this.first) {
+              transition = this.settings.firstTransition || transition;
+          }
+
+          if (this.settings.firstTransitionDuration && this.first) {
+              transitionDuration = this.settings.firstTransitionDuration || transitionDuration;
+          }
+
+          if (this.first) {
+              this.first = false;
+          }
+
+          if (cover !== 'repeat') {
+              if (cover === true) {
+                  cover = 'cover';
+              } else if (cover === false) {
+                  cover = 'contain';
+              }
+          }
+
+          if (transition === 'random' || transition instanceof Array) {
+              if (transition instanceof Array) {
+                  transition = this._random(transition);
+              } else {
+                  transition = this._random(this.transitions);
+              }
+          }
+
+          if (animation === 'random' || animation instanceof Array) {
+              if (animation instanceof Array) {
+                  animation = this._random(animation);
+              } else {
+                  animation = this._random(this.animations);
+              }
+          }
+
+          if (transitionDuration === 'auto' || transitionDuration > delay) {
+              transitionDuration = delay;
+          }
+
+          if (animationDuration === 'auto') {
+              animationDuration = delay;
+          }
+
+          $slide = $('<div class="vegas-slide"></div>');
+
+          if (this.support.transition && transition) {
+              $slide.addClass('vegas-transition-' + transition);
+          }
+
+
+          if (this.support.video && videoSettings) {
+              // Video
+
+              if (videoSettings instanceof Array) {
+                  video = this._video(videoSettings);
+              } else {
+                  video = this._video(videoSettings.src);
+              }
+
+              video.loop = videoSettings.loop !== undefined ? videoSettings.loop : true;
+              video.muted = videoSettings.mute !== undefined ? videoSettings.mute : true;
+
+              if (video.muted === false) {
+                  video.volume = 0;
+                  this._fadeInSound(video, transitionDuration);
+              } else {
+                  video.pause();
+              }
+
+              $video = $(video).addClass('vegas-video').css('background-color', color);
+
+              if (this.support.objectFit) {
+                  $video.css('object-position', align + ' ' + valign).css('object-fit', cover).css('width', '100%').css('height', '100%');
+              } else if (cover === 'contain') {
+                  $video.css('width', '100%').css('height', '100%');
+              }
+
+              $slide.append($video);
+
+
+          } else {
+              // Image
+
+              img = new Image();
+              $inner = $('<div class="vegas-slide-inner"></div>').css('background-image', 'url("' + src + '")').css('background-color', color).css('background-position', align + ' ' + valign);
+
+              if (cover === 'repeat') {
+                  $inner.css('background-repeat', 'repeat');
+              } else {
+                  $inner.css('background-size', cover);
+              }
+
+              if (this.support.transition && animation) {
+                  $inner.addClass('vegas-animation-' + animation).css('animation-duration', animationDuration + 'ms');
+              }
+
+              $slide.append($inner);
+          }
+
+          if (!this.support.transition) {
+              $slide.css('display', 'none');
+          }
+          if (total) {
+              $slides.eq(total - 1).after($slide);
+          } else {
+              this.$elmt.prepend($slide);
+          }
+
+          $slides.css('transition', 'all 0ms').each(function() {
+              this.className = 'vegas-slide';
+
+              if (this.tagName === 'VIDEO') {
+                  this.className += ' vegas-video';
+              }
+
+              if (transition) {
+                  this.className += ' vegas-transition-' + transition;
+                  this.className += ' vegas-transition-' + transition + '-in';
+              }
+          });
+
+          self._timer(false);
+
+          function go() {
+              self._timer(true);
+
+              setTimeout(function() {
+                  if (transition) {
+                      if (self.support.transition) {
+                          $slides.css('transition', 'all ' + transitionDuration + 'ms').addClass('vegas-transition-' + transition + '-out').css('opacity', self.settings.prevTransparent ? 0 : 1);
+
+                          $slides.each(function() {
+                              var video = $slides.find('video').get(0);
+
+                              if (video) {
+                                  video.volume = 1;
+                                  self._fadeOutSound(video, transitionDuration);
+                              }
+                          });
+
+                          $slide.css('transition', 'all ' + transitionDuration + 'ms').addClass('vegas-transition-' + transition + '-in');
+                      } else {
+                          $slide.fadeIn(transitionDuration);
+                      }
+                  }
+
+                  for (var i = 0; i < $slides.length - self.settings.slidesToKeep; i++) {
+                      $slides.eq(i).remove();
+                  }
+
+                  self.trigger('walk');
+                  self._slideShow();
+              }, 100);
+          }
+          if (video) {
+              if (video.readyState === 4) {
+                  video.currentTime = 0;
+              }
+
+              video.play();
+              go();
+          } else {
+              img.src = src;
+
+              if (img.complete) {
+                  go();
+              } else {
+                  img.onload = go;
+              }
+          }
+      },
+
+      _end: function() {
+          this.ended = !this.settings.autoplay;
+          this._timer(false);
+          this.trigger('end');
+      },
+
+      shuffle: function() {
+          var temp, rand;
+
+          for (var i = this.total - 1; i > 0; i--) {
+              rand = Math.floor(Math.random() * (i + 1));
+              temp = this.settings.slides[i];
+
+              this.settings.slides[i] = this.settings.slides[rand];
+              this.settings.slides[rand] = temp;
+          }
+      },
+
+      play: function() {
+          if (this.paused) {
+              this.paused = false;
+              this.next();
+              this.trigger('play');
+          }
+      },
+
+      pause: function() {
+          this._timer(false);
+          this.paused = true;
+          this.trigger('pause');
+      },
+
+      toggle: function() {
+          if (this.paused) {
+              this.play();
+          } else {
+              this.pause();
+          }
+      },
+
+      playing: function() {
+          return !this.paused && !this.noshow;
+      },
+
+      current: function(advanced) {
+          if (advanced) {
+              return {
+                  slide: this.slide,
+                  data: this.settings.slides[this.slide]
+              };
+          }
+          return this.slide;
+      },
+
+      jump: function(nb) {
+          if (nb < 0 || nb > this.total - 1 || nb === this.slide) {
+              return;
+          }
+          this.trigger('jump');
+          this.slide = nb;
+          this.trigger('change');
+          this._goto(this.slide);
+      },
+
+      next: function() {
+          this.slide++;
+          this.trigger('next');
+          this.trigger('change');
+          if (this.slide >= this.total) {
+              this.slide--;
+              if (!this.settings.loop) {
+                  return this._end();
+              }
+
+              this.slide = 0;
+          }
+
+          this._goto(this.slide);
+      },
+
+      previous: function() {
+          this.slide--;
+          this.trigger('previous');
+          this.trigger('change');
+          if (this.slide < 0) {
+              if (!this.settings.loop) {
+                  this.slide++;
+                  return;
+              } else {
+                  this.slide = this.total - 1;
+              }
+          }
+
+          this._goto(this.slide);
+      },
+
+      trigger: function(fn) {
+          var params = [];
+
+          if (fn === 'init') {
+              params = [this.settings];
+          } else {
+              params = [this.slide, this.settings.slides[this.slide]];
+          }
+
+          this.$elmt.trigger('vegas' + fn, params);
+
+          if (typeof this.settings[fn] === 'function') {
+              this.settings[fn].apply(this.$elmt, params);
+          }
+      },
+
+      options: function(key, value) {
+          var oldSlides = this.settings.slides.slice();
+
+          if (typeof key === 'object') {
+              this.settings = $.extend({}, defaults, $.vegas.defaults, key);
+          } else if (typeof key === 'string') {
+              if (value === undefined) {
+                  return this.settings[key];
+              }
+              this.settings[key] = value;
+          } else {
+              return this.settings;
+          }
+
+          // In case slides have changed
+          if (this.settings.slides !== oldSlides) {
+              this.total = this.settings.slides.length;
+              this.noshow = this.total < 2;
+              this._preload();
+          }
+      },
+
+      destroy: function() {
+          clearTimeout(this.timeout);
+
+          this.$elmt.removeClass('vegas-container');
+          this.$elmt.find('> .vegas-slide').remove();
+          this.$elmt.find('> .vegas-wrapper').clone(true).children().appendTo(this.$elmt);
+          this.$elmt.find('> .vegas-wrapper').remove();
+
+          if (this.settings.timer) {
+              this.$timer.remove();
+          }
+
+          if (this.settings.overlay) {
+              this.$overlay.remove();
+          }
+
+          this.elmt._vegas = null;
+      }
+  };
+
+  $.fn.vegas = function(options) {
+      var args = arguments, error = false, returns;
+      if (options === undefined || typeof options === 'object') {
+          return this.each(function() {
+              if (!this._vegas) {
+                  this._vegas = new Vegas(this,options);
+              }
+          });
+      } else if (typeof options === 'string') {
+          this.each(function() {
+              var instance = this._vegas;
+              if (!instance) {
+                  throw new Error('No Vegas applied to this element.');
+              }
+              if (options[0] === '_' && options[1] === '_'){
+                  returns = instance[options.substring(2)];
+              } else {
+                  if (typeof instance[options] === 'function' && options[0] !== '_') {
+                      returns = instance[options].apply(instance, [].slice.call(args, 1));
+                  } else {
+                      error = true;
+                  }
+              }
+
+          });
+
+          if (error) {
+              throw new Error('No method "' + options + '" in Vegas.');
+          }
+
+          return returns !== undefined ? returns : this;
+      }
   }
-  )(window.jQuery || window.Zepto || window.m4q);
-  $(document).ready(function() {
-    if (typeof $.initialize == 'function'){
-        $.initialize('[type=vegas]', function(event) {
-            if (! window.delegate_vegas){
-                window.delegate_vegas = true;
-                delegate_function();
-            }
-            if ($(this).is(':not("[vegas]")')){
-                $(this).vegas().attr('vegas', '');
-            }
-        });
-    } else {
-        window.init_vegas = function(){
-            $('[type="vegas"]:not("[vegas]")').vegas().attr('vegas', '');
-        }
-        if ($('[type="vegas"]:not("[vegas]")').length > 0){
-            window.init_vegas();
-            window.delegate_vegas = true;
-            delegate_function();
-        }
-    }
-    
-  });
-  function delegate_function(){
-    $("body").delegate("[type=vegas][vegas]", "mousedown", function() {
-        var e = window.event;
-        startX = e.clientX;
-        window.sliding = true;
-    });
-    $("body").delegate("[type=vegas][vegas]", "mouseup", function() {
-        var e = window.event;
-        var endX = e.clientX;
-        // 左滑
-        if ((startX - endX) > 30) {
-            $(this).vegas('next');
-        }
-        // 右滑
-        if ((endX - startX) > 30) {
-            $(this).vegas('previous');
-        }
-        window.sliding = false;
-    });
-    $("body").delegate("[type=vegas][vegas]", "mouseleave", function() {
-        if (window.sliding) {
-            var e = window.event;
-            var endX = e.clientX;
-            // 左滑
-            if ((startX - endX) > 30) {
-                $(this).vegas('next');
-            }
-            // 右滑
-            if ((endX - startX) > 30) {
-                $(this).vegas('previous');
-            }
-            window.sliding = false;
-        }
-    });
-    $("body").delegate('[type=vegas][vegas] .vegas-prev', "click", function() {
-        $(this).parents('[type=vegas]').vegas('previous');
-    });
-    $("body").delegate('[type=vegas][vegas] .vegas-next', "click", function() {
-        $(this).parents('[type=vegas]').vegas('next');
-    });
-    $("body").delegate('[type=vegas][vegas] .vegas-dots .vegas-dot', "click", function() {
-        $(this).parents('[type=vegas]').vegas('jump', $(this).index());
-    });
+  ;
+
+  $.vegas = {};
+  $.vegas.defaults = defaults;
+
+  $.vegas.isVideoCompatible = function() {
+      return !/(Android|webOS|Phone|iPad|iPod|BlackBerry|Windows Phone)/i.test(navigator.userAgent);
+  }
+  ;
+
+}
+)(window.jQuery || window.Zepto || window.m4q);
+$(document).ready(function() {
+  if (typeof $.initialize == 'function'){
+      $.initialize('[type=vegas]', function(event) {
+          if (! window.delegate_vegas){
+              window.delegate_vegas = true;
+              delegate_function();
+          }
+          if ($(this).is(':not("[vegas]")')){
+              $(this).vegas().attr('vegas', '');
+          }
+      });
+  } else {
+      window.init_vegas = function(){
+          $('[type="vegas"]:not("[vegas]")').vegas().attr('vegas', '');
+      };
+      if ($('[type="vegas"]:not("[vegas]")').length > 0){
+          window.init_vegas();
+          window.delegate_vegas = true;
+          delegate_function();
+      }
   }
-  
+
+});
+function delegate_function(){
+  $("body").delegate("[type=vegas][vegas]", "mousedown", function() {
+      var e = window.event;
+      startX = e.clientX;
+      window.sliding = true;
+  });
+  $("body").delegate("[type=vegas][vegas]", "mouseup", function() {
+      var e = window.event;
+      var endX = e.clientX;
+      // 左滑
+      if ((startX - endX) > 30) {
+          $(this).vegas('next');
+      }
+      // 右滑
+      if ((endX - startX) > 30) {
+          $(this).vegas('previous');
+      }
+      window.sliding = false;
+  });
+  $("body").delegate("[type=vegas][vegas]", "mouseleave", function() {
+      if (window.sliding) {
+          var e = window.event;
+          var endX = e.clientX;
+          // 左滑
+          if ((startX - endX) > 30) {
+              $(this).vegas('next');
+          }
+          // 右滑
+          if ((endX - startX) > 30) {
+              $(this).vegas('previous');
+          }
+          window.sliding = false;
+      }
+  });
+  $("body").delegate('[type=vegas][vegas] .vegas-prev', "click", function() {
+      $(this).parents('[type=vegas]').vegas('previous');
+  });
+  $("body").delegate('[type=vegas][vegas] .vegas-next', "click", function() {
+      $(this).parents('[type=vegas]').vegas('next');
+  });
+  $("body").delegate('[type=vegas][vegas] .vegas-dots .vegas-dot', "click", function() {
+      $(this).parents('[type=vegas]').vegas('jump', $(this).index());
+  });
+}

File diff suppressed because it is too large
+ 0 - 0
dist/vegas.min.css


File diff suppressed because it is too large
+ 0 - 0
dist/vegas.min.css.map


File diff suppressed because it is too large
+ 0 - 9
dist/vegas.min.js


File diff suppressed because it is too large
+ 0 - 0
dist/vegas.min.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/vegas.terser.min.js


File diff suppressed because it is too large
+ 0 - 0
dist/vegas.terser.min.js.map


+ 37 - 6
gulpfile.js

@@ -1,7 +1,8 @@
 /* Utlimate Jay Mega Gulpfile */
 /* global require:true, process:true */
 /* jshint laxbreak:true */
-
+const babel = require('gulp-babel');
+const terser = require('gulp-terser-js');
 (function() {
     'use strict';
 
@@ -67,7 +68,7 @@
             .pipe(gulp.dest('./tmp'));
     }
 
-    exports.tmpCopy = gulp.series(tmpCreate, tmpCopy);    
+    exports.tmpCopy = gulp.series(tmpCreate, tmpCopy);
 
     function zip() {
         const filename = settings.name + '.zip';
@@ -77,7 +78,7 @@
             .pipe(gulp.dest('./tmp'));
     }
 
-    exports.zip = gulp.series(tmpCreate, zip);   
+    exports.zip = gulp.series(tmpCreate, zip);
 
     function failIfDirty(cb) {
         return exec('git diff-index HEAD --', function(err, output) {
@@ -214,6 +215,9 @@
 
     function uglify() {
         return gulp.src('./dist/**/!(*.min.js).js')
+            .pipe(babel({
+                presets: ['@babel/env']
+            }))
             .pipe(plugins.rename({ suffix: '.min' }))
             .pipe(plugins.sourcemaps.init())
             .pipe(plugins.uglify({
@@ -230,7 +234,23 @@
             .pipe(gulp.dest('./dist/'));
     }
 
-    exports.copy = copy;
+    exports.uglify = uglify;
+
+    function terserMinify() {
+        return gulp.src('./dist/**/!(*.min).js')
+            .pipe(plugins.rename({ suffix: '.terser.min' }))
+            .pipe(plugins.sourcemaps.init())
+            .pipe(terser({
+                mangle: {
+                    toplevel: true,
+                }
+            }))
+            .on('error', function(err) { console.log(err) })
+            .pipe(plugins.sourcemaps.write('.'))
+            .pipe(gulp.dest('./dist/'));
+    }
+
+    exports.terserMinify = terserMinify;
 
     function cssmin() {
         return gulp.src('./dist/**/!(*.min.css).css')
@@ -353,7 +373,7 @@
     exports.build = build;
 
     const publish = gulp.series(
-        failIfNotMaster, 
+        failIfNotMaster,
         failIfDirty,
         tmpCreate,
         tmpCopy,
@@ -366,7 +386,7 @@
     exports.publish = publish;
 
     const release = gulp.series(
-        failIfNotMaster, 
+        failIfNotMaster,
         failIfDirty,
         gitPull,
         bump,
@@ -387,6 +407,17 @@
     );
 
     exports.release = release;
+
+    exports['build:hugh'] = gulp.series(
+        lint,
+        clean,
+        copy,
+        sass,
+        uglify,
+        terserMinify,
+        cssmin,
+    );
+
 })();
 
 /*

File diff suppressed because it is too large
+ 1262 - 1
package-lock.json


+ 8 - 2
package.json

@@ -15,7 +15,8 @@
     "build": "gulp build",
     "release:patch": "gulp release --type patch",
     "release:minor": "gulp release --type minor",
-    "release:major": "gulp release --type major"
+    "release:major": "gulp release --type major",
+    "build:hugh": "gulp build:hugh"
   },
   "keywords": [
     "background",
@@ -27,11 +28,14 @@
     "zepto"
   ],
   "devDependencies": {
+    "@babel/core": "^7.20.12",
+    "@babel/preset-env": "^7.20.2",
     "date-format": "^3.0.0",
     "del": "^6.0.0",
     "exec": "^0.2.1",
     "gulp": "^4.0.2",
     "gulp-autoprefixer": "^7.0.1",
+    "gulp-babel": "^8.0.0",
     "gulp-bump": "^3.2.0",
     "gulp-cssmin": "^0.2.0",
     "gulp-header": "^2.0.9",
@@ -42,10 +46,12 @@
     "gulp-sass": "^4.1.0",
     "gulp-sourcemaps": "^3.0.0",
     "gulp-sync": "^0.1.4",
+    "gulp-terser-js": "^5.2.2",
     "gulp-uglify": "^3.0.2",
     "gulp-util": "^3.0.8",
     "gulp-zip": "^5.0.2",
     "jshint": "^2.12.0",
     "yargs": "^16.2.0"
-  }
+  },
+  "dependencies": {}
 }

+ 55 - 0
src/sass/main/vegas.sass

@@ -70,3 +70,58 @@ body.vegas-container > .vegas-slide
 // :root body.vegas-container > .vegas-slide,
 // :root body.vegas-container > .vegas-overlay
 //     bottom: -76px
+
+
+*[type=vegas] .vegas-content-scrollable .contents
+    display: none
+
+.vegas-prev-icon:before
+    content: ""
+    width: 40px
+    height: 40px
+    display: block
+    border-top : white 5px solid
+    border-left: white 5px solid
+    transform: rotate(-45deg) translateY(-50%)
+    top: 50%
+    left: 40px
+    position: absolute
+    cursor: pointer
+
+.vegas-next-icon:before
+    content: ""
+    width: 40px
+    height: 40px
+    display: block
+    border-top : white 5px solid
+    border-right: white 5px solid
+    transform: rotate(45deg) translateY(-50%)
+    top: 50%
+    right: 40px
+    position: absolute
+    cursor: pointer
+
+.vegas-disabled:not(.vegas-prev), .vegas-disabled *, .vegas-disabled *:before, .vegas-disabled *:after
+    cursor: not-allowed !important
+
+.vegas-dots
+    width: 100%
+    bottom: 0
+    left: 0
+    text-align: center
+    position: absolute
+
+.vegas-dot
+    margin: 0 4px
+    width: 8px
+    height: 8px
+    border-radius: 100%
+    background: #000
+    opacity: .2
+    display: inline-block
+    cursor: pointer
+
+.vegas-dot-active
+    cursor: default
+    background: orange
+    opacity: 1

+ 31 - 24
src/vegas.js

@@ -117,10 +117,10 @@
                   slides.push({
                       src: $this.attr('src'),
                   });
-                  if ($this.attr('data-transition') != undefined && $this.attr('data-transition') != settings['transition']) {
+                  if ($this.attr('data-transition') != undefined && $this.attr('data-transition') != settings.transition) {
                       slides[slides.length - 1].transition = $this.attr('data-transition');
                   }
-                  if ($this.attr('data-animation') != undefined && $this.attr('data-animation') != settings['animation']) {
+                  if ($this.attr('data-animation') != undefined && $this.attr('data-animation') != settings.animation) {
                       slides[slides.length - 1].transition = $this.attr('data-animation');
                   }
               }
@@ -135,7 +135,7 @@
                       });
                       var video_srces = [];
                       $this.children().each(function() {
-                          video_srces.push($(this).attr('src'))
+                          video_srces.push($(this).attr('src'));
                       });
                       slides[slides.length - 1].video.src = video_srces;
                   } else {
@@ -153,7 +153,10 @@
 
       },
       _arrows: function(){
-          let settings = window.attr_prefix(this.settings, 'arrow');
+          let settings = Object.keys(this.settings).reduce(function (carry, key) {
+              key.includes('arrow-') && (carry[key.replace('arrow-', '')] = this.settings[key])
+              return carry;
+          }, {});
           let this_prev = this.$elmt.find('.vegas-prev');
           let this_next = this.$elmt.find('.vegas-next');
 
@@ -239,31 +242,35 @@
                       $(settings.nextHook).removeClass('vegas-disabled');
                   }
               });
-          } 
+          }
       },
       _dots: function() {
-          let settings = window.attr_prefix(this.settings, 'dot');
+          let settings = Object.keys(this.settings).reduce(function (carry, key) {
+              key.includes('dot-') && (carry[key.replace('dot-', '')] = this.settings[key])
+              return carry;
+          }, {});
           let dots = this.$elmt.find('.vegas-dots .vegas-dot').eq(0);
           let dataHook = $(settings.hook);
           let dataHookChild = $(settings.hook).children().eq(0);
-          
+
           for (var i = 1; i < this.settings.slides.length; i++) {
               dots.clone(true).appendTo(this.$elmt.find('.vegas-dots'));
               if (settings.hookStatus == "clone") {
                   dataHookChild.clone(true).appendTo(dataHook);
               }
               if (settings.hookStatus == "clone-id") {
+                  const index = i;
                   var vegas_dot = dataHookChild.clone(true);
 
                   vegas_dot.html(function(x, oldHTML) {
-                      return oldHTML.replace(/\${i}/g, i + 1);
+                      return oldHTML.replace(/\${i}/g, index + 1);
                   }).appendTo(dataHook);
               }
           }
           if (settings.hookStatus == "clone-id") {
               dataHookChild.html(function(x, oldHTML) {
                   return oldHTML.replace(/\${i}/g, 1);
-              })
+              });
           }
           if (settings.status == "hide") {
               this.$elmt.find('.vegas-dots').hide();
@@ -275,7 +282,7 @@
               $(this).find('.vegas-dots .vegas-dot.vegas-dot-active').removeClass('vegas-dot-active');
               $(settings.hook).children('.vegas-dot-active').removeClass('vegas-dot-active');
               var active_dot = $(this).vegas('current') > $(this).find('.vegas-dots .vegas-dot').length - 1 ? $(this).find('.vegas-dots .vegas-dot').length - 1 : $(this).vegas('current');
-              var active_dot = $(this).vegas('current') < 0 ? 0 : active_dot;
+              active_dot = $(this).vegas('current') < 0 ? 0 : active_dot;
               $(this).find('.vegas-dots .vegas-dot').eq(active_dot).addClass('vegas-dot-active');
               $(settings.hook).children().eq(active_dot).addClass('vegas-dot-active');
           });
@@ -302,7 +309,7 @@
                   $content.css('padding-top', this.$elmt.css('padding-top')).css('padding-bottom', this.$elmt.css('padding-bottom')).css('padding-left', this.$elmt.css('padding-left')).css('padding-right', this.$elmt.css('padding-right'));
               }
               this.$elmt.css('padding', 0);
-              
+
               this.$elmt.clone(true).children().appendTo($content);
 
               $content.children().not('.vegas-dot-controls').wrapAll("<div class='contents'></div>");
@@ -438,9 +445,9 @@
       },
 
       _fadeOutSound: function(video, duration) {
-          var self = this
-            , delay = duration / 10
-            , volume = video.volume - 0.09;
+          var self = this,
+              delay = duration / 10,
+              volume = video.volume - 0.09;
 
           if (volume > 0) {
               video.volume = volume;
@@ -454,9 +461,9 @@
       },
 
       _fadeInSound: function(video, duration) {
-          var self = this
-            , delay = duration / 10
-            , volume = video.volume + 0.09;
+          var self = this,
+              delay = duration / 10,
+              volume = video.volume + 0.09;
 
           if (volume < 1) {
               video.volume = volume;
@@ -487,10 +494,10 @@
           this.slide = nb;
 
           var $slide, $inner, $video, $slides = this.$elmt.children('.vegas-slide'), src = this.settings.slides[nb].src, videoSettings = this.settings.slides[nb].video, delay = this._options('delay'), align = this._options('align'), valign = this._options('valign'), cover = this._options('cover'), color = this._options('color') || this.$elmt.css('background-color'), self = this, total = $slides.length, video, img;
-          var transition = this._options('transition')
-            , transitionDuration = this._options('transitionDuration')
-            , animation = this._options('animation')
-            , animationDuration = this._options('animationDuration');
+          var transition = this._options('transition'),
+              transitionDuration = this._options('transitionDuration'),
+              animation = this._options('animation'),
+              animationDuration = this._options('animationDuration');
 
           if (this.settings.firstTransition && this.first) {
               transition = this.settings.firstTransition || transition;
@@ -842,7 +849,7 @@
                       error = true;
                   }
               }
-              
+
           });
 
           if (error) {
@@ -878,14 +885,14 @@ $(document).ready(function() {
   } else {
       window.init_vegas = function(){
           $('[type="vegas"]:not("[vegas]")').vegas().attr('vegas', '');
-      }
+      };
       if ($('[type="vegas"]:not("[vegas]")').length > 0){
           window.init_vegas();
           window.delegate_vegas = true;
           delegate_function();
       }
   }
-  
+
 });
 function delegate_function(){
   $("body").delegate("[type=vegas][vegas]", "mousedown", function() {

Some files were not shown because too many files changed in this diff