remove obsolete local copies of dependencies
This commit is contained in:
parent
491a6e2dad
commit
8e6b09583d
28
src/mediaelement-and-player.min.js
vendored
28
src/mediaelement-and-player.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,268 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file MediaElement Playlist Feature (plugin).
|
|
||||||
* @author Andrew Berezovsky <andrew.berezovsky@gmail.com>
|
|
||||||
* Twitter handle: duozersk
|
|
||||||
* @author Original author: Junaid Qadir Baloch <shekhanzai.baloch@gmail.com>
|
|
||||||
* Twitter handle: jeykeu
|
|
||||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function($) {
|
|
||||||
$.extend(mejs.MepDefaults, {
|
|
||||||
loopText: 'Repeat On/Off',
|
|
||||||
shuffleText: 'Shuffle On/Off',
|
|
||||||
nextText: 'Next Track',
|
|
||||||
prevText: 'Previous Track',
|
|
||||||
playlistText: 'Show/Hide Playlist'
|
|
||||||
});
|
|
||||||
|
|
||||||
$.extend(MediaElementPlayer.prototype, {
|
|
||||||
// LOOP TOGGLE
|
|
||||||
buildloop: function(player, controls, layers, media) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
var loop = $('<div class="mejs-button mejs-loop-button ' + ((player.options.loop) ? 'mejs-loop-on' : 'mejs-loop-off') + '">' +
|
|
||||||
'<button type="button" aria-controls="' + player.id + '" title="' + player.options.loopText + '"></button>' +
|
|
||||||
'</div>')
|
|
||||||
// append it to the toolbar
|
|
||||||
.appendTo(controls)
|
|
||||||
// add a click toggle event
|
|
||||||
.click(function(e) {
|
|
||||||
player.options.loop = !player.options.loop;
|
|
||||||
$(media).trigger('mep-looptoggle', [player.options.loop]);
|
|
||||||
if (player.options.loop) {
|
|
||||||
loop.removeClass('mejs-loop-off').addClass('mejs-loop-on');
|
|
||||||
//media.setAttribute('loop', 'loop');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
loop.removeClass('mejs-loop-on').addClass('mejs-loop-off');
|
|
||||||
//media.removeAttribute('loop');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
t.loopToggle = t.controls.find('.mejs-loop-button');
|
|
||||||
},
|
|
||||||
loopToggleClick: function() {
|
|
||||||
var t = this;
|
|
||||||
t.loopToggle.trigger('click');
|
|
||||||
},
|
|
||||||
// SHUFFLE TOGGLE
|
|
||||||
buildshuffle: function(player, controls, layers, media) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
var shuffle = $('<div class="mejs-button mejs-shuffle-button ' + ((player.options.shuffle) ? 'mejs-shuffle-on' : 'mejs-shuffle-off') + '">' +
|
|
||||||
'<button type="button" aria-controls="' + player.id + '" title="' + player.options.shuffleText + '"></button>' +
|
|
||||||
'</div>')
|
|
||||||
// append it to the toolbar
|
|
||||||
.appendTo(controls)
|
|
||||||
// add a click toggle event
|
|
||||||
.click(function(e) {
|
|
||||||
player.options.shuffle = !player.options.shuffle;
|
|
||||||
$(media).trigger('mep-shuffletoggle', [player.options.shuffle]);
|
|
||||||
if (player.options.shuffle) {
|
|
||||||
shuffle.removeClass('mejs-shuffle-off').addClass('mejs-shuffle-on');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
shuffle.removeClass('mejs-shuffle-on').addClass('mejs-shuffle-off');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
t.shuffleToggle = t.controls.find('.mejs-shuffle-button');
|
|
||||||
},
|
|
||||||
shuffleToggleClick: function() {
|
|
||||||
var t = this;
|
|
||||||
t.shuffleToggle.trigger('click');
|
|
||||||
},
|
|
||||||
// PREVIOUS TRACK BUTTON
|
|
||||||
buildprevtrack: function(player, controls, layers, media) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
var prevTrack = $('<div class="mejs-button mejs-prevtrack-button mejs-prevtrack">' +
|
|
||||||
'<button type="button" aria-controls="' + player.id + '" title="' + player.options.prevText + '"></button>' +
|
|
||||||
'</div>')
|
|
||||||
.appendTo(controls)
|
|
||||||
.click(function(e){
|
|
||||||
$(media).trigger('mep-playprevtrack');
|
|
||||||
player.playPrevTrack();
|
|
||||||
});
|
|
||||||
|
|
||||||
t.prevTrack = t.controls.find('.mejs-prevtrack-button');
|
|
||||||
},
|
|
||||||
prevTrackClick: function() {
|
|
||||||
var t = this;
|
|
||||||
t.prevTrack.trigger('click');
|
|
||||||
},
|
|
||||||
// NEXT TRACK BUTTON
|
|
||||||
buildnexttrack: function(player, controls, layers, media) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
var nextTrack = $('<div class="mejs-button mejs-nexttrack-button mejs-nexttrack">' +
|
|
||||||
'<button type="button" aria-controls="' + player.id + '" title="' + player.options.nextText + '"></button>' +
|
|
||||||
'</div>')
|
|
||||||
.appendTo(controls)
|
|
||||||
.click(function(e){
|
|
||||||
$(media).trigger('mep-playnexttrack');
|
|
||||||
player.playNextTrack();
|
|
||||||
});
|
|
||||||
|
|
||||||
t.nextTrack = t.controls.find('.mejs-nexttrack-button');
|
|
||||||
},
|
|
||||||
nextTrackClick: function() {
|
|
||||||
var t = this;
|
|
||||||
t.nextTrack.trigger('click');
|
|
||||||
},
|
|
||||||
// PLAYLIST TOGGLE
|
|
||||||
buildplaylist: function(player, controls, layers, media) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
var playlistToggle = $('<div class="mejs-button mejs-playlist-button ' + ((player.options.playlist) ? 'mejs-hide-playlist' : 'mejs-show-playlist') + '">' +
|
|
||||||
'<button type="button" aria-controls="' + player.id + '" title="' + player.options.playlistText + '"></button>' +
|
|
||||||
'</div>')
|
|
||||||
.appendTo(controls)
|
|
||||||
.click(function(e) {
|
|
||||||
player.options.playlist = !player.options.playlist;
|
|
||||||
$(media).trigger('mep-playlisttoggle', [player.options.playlist]);
|
|
||||||
if (player.options.playlist) {
|
|
||||||
layers.children('.mejs-playlist').show();
|
|
||||||
playlistToggle.removeClass('mejs-show-playlist').addClass('mejs-hide-playlist');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
layers.children('.mejs-playlist').hide();
|
|
||||||
playlistToggle.removeClass('mejs-hide-playlist').addClass('mejs-show-playlist');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
t.playlistToggle = t.controls.find('.mejs-playlist-button');
|
|
||||||
},
|
|
||||||
playlistToggleClick: function() {
|
|
||||||
var t = this;
|
|
||||||
t.playlistToggle.trigger('click');
|
|
||||||
},
|
|
||||||
// PLAYLIST WINDOW
|
|
||||||
buildplaylistfeature: function(player, controls, layers, media) {
|
|
||||||
var playlist = $('<div class="mejs-playlist mejs-layer">' +
|
|
||||||
'<ul class="mejs"></ul>' +
|
|
||||||
'</div>')
|
|
||||||
.appendTo(layers);
|
|
||||||
if (!player.options.playlist) {
|
|
||||||
playlist.hide();
|
|
||||||
}
|
|
||||||
if (player.options.playlistposition == 'bottom') {
|
|
||||||
playlist.css('top', player.options.audioHeight + 'px');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
playlist.css('bottom', player.options.audioHeight + 'px');
|
|
||||||
}
|
|
||||||
var getTrackName = function(trackUrl) {
|
|
||||||
var trackUrlParts = trackUrl.split("/");
|
|
||||||
if (trackUrlParts.length > 0) {
|
|
||||||
return decodeURIComponent(trackUrlParts[trackUrlParts.length-1]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// calculate tracks and build playlist
|
|
||||||
var tracks = [];
|
|
||||||
//$(media).children('source').each(function(index, element) { // doesn't work in Opera 12.12
|
|
||||||
$('#'+player.id).find('.mejs-mediaelement source').each(function(index, element) {
|
|
||||||
if ($.trim(this.src) != '') {
|
|
||||||
var track = {};
|
|
||||||
track.source = $.trim(this.src);
|
|
||||||
if ($.trim(this.title) != '') {
|
|
||||||
track.name = $.trim(this.title);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
track.name = getTrackName(track.source);
|
|
||||||
}
|
|
||||||
tracks.push(track);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
for (var track in tracks) {
|
|
||||||
layers.find('.mejs-playlist > ul').append('<li data-url="' + tracks[track].source + '" title="' + tracks[track].name + '">' + tracks[track].name + '</li>');
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the first track as current
|
|
||||||
layers.find('li:first').addClass('current played');
|
|
||||||
// play track from playlist when clicking it
|
|
||||||
layers.find('.mejs-playlist > ul li').click(function(e) {
|
|
||||||
if (!$(this).hasClass('current')) {
|
|
||||||
$(this).addClass('played');
|
|
||||||
player.playTrack($(this));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
player.play();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// when current track ends - play the next one
|
|
||||||
media.addEventListener('ended', function(e) {
|
|
||||||
player.playNextTrack();
|
|
||||||
}, false);
|
|
||||||
},
|
|
||||||
playNextTrack: function() {
|
|
||||||
var t = this;
|
|
||||||
var tracks = t.layers.find('.mejs-playlist > ul > li');
|
|
||||||
var current = tracks.filter('.current');
|
|
||||||
var notplayed = tracks.not('.played');
|
|
||||||
if (notplayed.length < 1) {
|
|
||||||
current.removeClass('played').siblings().removeClass('played');
|
|
||||||
notplayed = tracks.not('.current');
|
|
||||||
}
|
|
||||||
if (t.options.shuffle) {
|
|
||||||
var random = Math.floor(Math.random()*notplayed.length);
|
|
||||||
var nxt = notplayed.eq(random);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var nxt = current.next();
|
|
||||||
if (nxt.length < 1 && t.options.loop) {
|
|
||||||
nxt = current.siblings().first();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (nxt.length == 1) {
|
|
||||||
nxt.addClass('played');
|
|
||||||
t.playTrack(nxt);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
playPrevTrack: function() {
|
|
||||||
var t = this;
|
|
||||||
var tracks = t.layers.find('.mejs-playlist > ul > li');
|
|
||||||
var current = tracks.filter('.current');
|
|
||||||
var played = tracks.filter('.played').not('.current');
|
|
||||||
if (played.length < 1) {
|
|
||||||
current.removeClass('played');
|
|
||||||
played = tracks.not('.current');
|
|
||||||
}
|
|
||||||
if (t.options.shuffle) {
|
|
||||||
var random = Math.floor(Math.random()*played.length);
|
|
||||||
var prev = played.eq(random);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var prev = current.prev();
|
|
||||||
if (prev.length < 1 && t.options.loop) {
|
|
||||||
prev = current.siblings().last();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (prev.length == 1) {
|
|
||||||
current.removeClass('played');
|
|
||||||
t.playTrack(prev);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
playTrack: function(track) {
|
|
||||||
var t = this;
|
|
||||||
t.pause();
|
|
||||||
t.setSrc(track.attr('data-url'));
|
|
||||||
t.load();
|
|
||||||
t.play();
|
|
||||||
track.addClass('current').siblings().removeClass('current');
|
|
||||||
},
|
|
||||||
playTrackURL: function(url) {
|
|
||||||
var t = this;
|
|
||||||
var tracks = t.layers.find('.mejs-playlist > ul > li');
|
|
||||||
var track = tracks.filter('[data-url="'+url+'"]');
|
|
||||||
t.playTrack(track);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})(mejs.$);
|
|
Loading…
Reference in New Issue
Block a user