Source change fix

This commit is contained in:
Sam Potts 2017-06-04 15:50:47 +10:00
parent 7daa08c32f
commit a49d77afab
2 changed files with 39 additions and 30 deletions

4
dist/plyr.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1194,6 +1194,7 @@
var player = this;
var timers = {};
var api = {};
player.ready = false;
// Get the media element
player.media = media;
@ -1282,7 +1283,6 @@
if (utils.is.string(element)) {
utils.removeElement(player.elements[element]);
player.elements[element] = null;
} else {
utils.removeElement(element);
}
@ -3389,9 +3389,6 @@
return;
}
// Remove ready class hook
player.ready = false;
// Stop playback
player.stop();
@ -3410,7 +3407,7 @@
player.embed = null;
// Remove media
removeElement('media');
removeElement(player.media);
// Remove the old captions
removeElement('captions');
@ -4111,6 +4108,8 @@
// Everything done
function ready() {
player.ready = true;
// Ready event at end of execution stack
trigger(player.elements.container, 'ready', true);
@ -4209,7 +4208,7 @@
player.elements.container = utils.wrap(target, utils.createElement('div'));
// Cache original element state for .destroy()
player.original = target.cloneNode(true);
player.elements.original = target.cloneNode(true);
// Allow focus to be captured
player.elements.container.setAttribute('tabindex', 0);
@ -5007,28 +5006,29 @@
// http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory
Player.prototype.destroy = function(callback, restore) {
var player = this;
// Type specific stuff
switch (player.type) {
case 'youtube':
// Clear timers
window.clearInterval(player.timers.buffering);
window.clearInterval(player.timers.playing);
window.clearInterval(player.core.timers.buffering);
window.clearInterval(player.core.timers.playing);
// Destroy YouTube API
player.embed.destroy();
// Clean up
cleanUp();
done();
break;
case 'vimeo':
// Destroy Vimeo API
// then clean up (wait, to prevent postmessage errors)
player.embed.unload().then(cleanUp);
player.embed.unload().then(done);
// Vimeo does not always return
window.setTimeout(cleanUp, 200);
window.setTimeout(done, 200);
break;
@ -5038,35 +5038,44 @@
player.core.toggleNativeControls(true);
// Clean up
cleanUp();
done();
break;
}
function cleanUp() {
function done() {
// Bail if already destroyed
if (!player.ready) {
return;
}
// Default to restore original element
if (!utils.is.boolean(restore)) {
restore = true;
}
// Callback
if (utils.is.function(callback)) {
callback.call(player.original);
}
// Bail if we don't need to restore the original element
if (!restore) {
return;
}
// Replace the container with the original element provided
player.elements.container.parentNode.replaceChild(player.original, player.elements.container);
// Reset overflow (incase destroyed while fullscreen)
// Reset overflow (incase destroyed while in fullscreen)
document.body.style.overflow = '';
// Replace the container with the original element provided
if (restore) {
var parent = player.elements.container.parentNode;
if (utils.is.htmlElement(parent)) {
parent.replaceChild(player.elements.original, player.elements.container);
}
}
// Remove ready state
player.ready = false;
// Event
player.core.trigger(player.original, 'destroyed', true);
player.core.trigger(player.elements.original, 'destroyed', true);
// Callback
if (utils.is.function(callback)) {
callback.call(player.elements.original);
}
}
// Allow chaining