Вход Регистрация
Файл: media/player/videojs/plugins/videojs-thumbnails-master/videojs.thumbnails.js
Строк: 198
<?php
(function() {
    var 
defaults = {
            
0: {
                
src: 'example-thumbnail.png'
            
}
        },
        
extend = function() {
            var 
args, target, i, object, property;
            
args = Array.prototype.slice.call(arguments);
            
target = args.shift() || {};
            for (
i in args) {
                
object = args[i];
                for (
property in object) {
                    if (
object.hasOwnProperty(property)) {
                        if (
typeof object[property] === 'object') {
                            
target[property] = extend(target[property], object[property]);
                        } else {
                            
target[property] = object[property];
                        }
                    }
                }
            }
            return 
target;
        },
        
getComputedStyle = function(el, pseudo) {
            return function(
prop) {
                if (
window.getComputedStyle) {
                    return 
window.getComputedStyle(el, pseudo)[prop];
                } else {
                    return 
el.currentStyle[prop];
                }
            };
        },
        
offsetParent = function(el) {
            if (
el.nodeName !== 'HTML' && getComputedStyle(el)('position') === 'static') {
                return 
offsetParent(el.offsetParent);
            }
            return 
el;
        },
        
getVisibleWidth = function(el, width) {
            var 
clip;
            if (
width) {
                return 
parseFloat(width);
            }
            
clip = getComputedStyle(el)('clip');
            if (
clip !== 'auto' && clip !== 'inherit') {
                
clip = clip.split(/(?:(|))/)[1].split(/(?:,| )/);
                if (
clip.length === 4) {
                    return (
parseFloat(clip[1]) - parseFloat(clip[3]));
                }
            }
            return 
0;
        },
        
getScrollOffset = function() {
            if (
window.pageXOffset) {
                return {
                    
x: window.pageXOffset,
                    
y: window.pageYOffset
                
};
            }
            return {
                
x: document.documentElement.scrollLeft,
                
y: document.documentElement.scrollTop
            
};
        };
    
videojs.plugin('thumbnails', function(options) {
        var 
div, settings, img, player, progressControl, duration, moveListener, moveCancel;
        
settings = extend({}, defaults, options);
        
player = this;
        (function() {
            var 
progressControl, addFakeActive, removeFakeActive;
            if (
navigator.userAgent.toLowerCase().indexOf("android") !== -1) {
                
progressControl = player.controlBar.progressControl;
                
addFakeActive = function() {
                    
progressControl.addClass('fake-active');
                };
                
removeFakeActive = function() {
                    
progressControl.removeClass('fake-active');
                };
                
progressControl.on('touchstart', addFakeActive);
                
progressControl.on('touchend', removeFakeActive);
                
progressControl.on('touchcancel', removeFakeActive);
            }
        })();
        
div = document.createElement('div');
        
div.className = 'vjs-thumbnail-holder';
        
img = document.createElement('img');
        
div.appendChild(img);
        
img.src = settings['0'].src;
        
img.className = 'vjs-thumbnail';
        
extend(img.style, settings['0'].style);
        if (!
img.style.left && !img.style.right) {
            
img.onload = function() {
                
img.style.left = -(img.naturalWidth / 2) + 'px';
            };
        }
        
duration = player.duration();
        
player.on('durationchange', function(event) {
            
duration = player.duration();
        });
        
player.on('loadedmetadata', function(event) {
            
duration = player.duration();
        });
        
progressControl = player.controlBar.progressControl;
        
progressControl.el().appendChild(div);
        
moveListener = function(event) {
            var 
mouseTime, time, active, left, setting, pageX, right, width, halfWidth, pageXOffset, clientRect;
            
active = 0;
            
pageXOffset = getScrollOffset().x;
            
clientRect = offsetParent(progressControl.el()).getBoundingClientRect();
            
right = (clientRect.width || clientRect.right) + pageXOffset;
            
pageX = event.pageX;
            if (
event.changedTouches) {
                
pageX = event.changedTouches[0].pageX;
            }
            
left = pageX || (event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft);
            
left -= offsetParent(progressControl.el()).getBoundingClientRect().left + pageXOffset;
            var 
mouseTimeHMS = $(".vjs-mouse-display").attr("data-current-time").split(":");
            var 
mouseTime = 0;
            for (var 
i = mouseTimeHMS.length - 1; i >= 0; i--) {
                
mouseTime += parseInt((i == mouseTimeHMS.length - 1) ? (mouseTimeHMS[i]) : ((i == mouseTimeHMS.length - 2) ? (mouseTimeHMS[i] * 60) : ((i == mouseTimeHMS.length - 3) ? (mouseTimeHMS[i] * 60 * 60) : (0))));
            }
            for (
time in settings) {
                if (
mouseTime > time) {
                    
active = Math.max(active, time);
                }
            }
            
setting = settings[active];
            if (
setting.src && img.src != setting.src) {
                
img.src = setting.src;
            }
            if (
setting.style && img.style != setting.style) {
                
extend(img.style, setting.style);
            }
            
width = getVisibleWidth(img, setting.width || settings[0].width);
            
halfWidth = width / 2;
            if ((
left + halfWidth) > right) {
                
left -= (left + halfWidth) - right;
            } else if (
left < halfWidth) {
                
left = halfWidth;
            }
            
div.style.left = left + 'px';            
        };
        
progressControl.on('mousemove', moveListener);
        
progressControl.on('touchmove', moveListener);
        
moveCancel = function(event) {
            
div.style.left = '-1000px';
        };
        
progressControl.on('mouseout', moveCancel);
        
progressControl.on('touchcancel', moveCancel);
        
progressControl.on('touchend', moveCancel);
        
player.on('userinactive', moveCancel);
    });
})();
?>
Онлайн: 0
Реклама