Fixed AMD definition
This commit is contained in:
parent
1ced6b4d67
commit
15fd7041ab
@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v2.0.6
|
||||||
|
- Fixed merge issue with `Updated define to work with AMD imports #326` PR
|
||||||
|
- Code formatting
|
||||||
|
|
||||||
## v2.0.5
|
## v2.0.5
|
||||||
- Fix for Vimeo in IE9 & IE10
|
- Fix for Vimeo in IE9 & IE10
|
||||||
- Fix for HTML5 elements not firing `ready` event
|
- Fix for HTML5 elements not firing `ready` event
|
||||||
|
2
demo/dist/demo.css
vendored
2
demo/dist/demo.css
vendored
File diff suppressed because one or more lines are too long
2
dist/plyr.css
vendored
2
dist/plyr.css
vendored
File diff suppressed because one or more lines are too long
4
dist/plyr.js
vendored
4
dist/plyr.js
vendored
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "plyr",
|
"name": "plyr",
|
||||||
"version": "2.0.5",
|
"version": "2.0.6",
|
||||||
"description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player",
|
"description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player",
|
||||||
"homepage": "http://plyr.io",
|
"homepage": "http://plyr.io",
|
||||||
"main": "src/js/plyr.js",
|
"main": "src/js/plyr.js",
|
||||||
|
@ -122,7 +122,7 @@ Include the `plyr.js` script before the closing `</body>` tag and then call `ply
|
|||||||
If you want to use our CDN for the JavaScript, you can use the following:
|
If you want to use our CDN for the JavaScript, you can use the following:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<script src="https://cdn.plyr.io/2.0.5/plyr.js"></script>
|
<script src="https://cdn.plyr.io/2.0.6/plyr.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
### CSS
|
### CSS
|
||||||
@ -135,11 +135,11 @@ Include the `plyr.css` stylsheet into your `<head>`
|
|||||||
If you want to use our CDN for the default CSS, you can use the following:
|
If you want to use our CDN for the default CSS, you can use the following:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<link rel="stylesheet" href="https://cdn.plyr.io/2.0.5/plyr.css">
|
<link rel="stylesheet" href="https://cdn.plyr.io/2.0.6/plyr.css">
|
||||||
```
|
```
|
||||||
|
|
||||||
### SVG Sprite
|
### SVG Sprite
|
||||||
The SVG sprite is loaded automatically from our CDN. To change this, see the [options](#Options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/2.0.5/plyr.svg`.
|
The SVG sprite is loaded automatically from our CDN. To change this, see the [options](#Options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/2.0.6/plyr.svg`.
|
||||||
|
|
||||||
## Advanced
|
## Advanced
|
||||||
|
|
||||||
|
207
src/js/plyr.js
207
src/js/plyr.js
@ -1,6 +1,6 @@
|
|||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// Plyr
|
// Plyr
|
||||||
// plyr.js v2.0.5
|
// plyr.js v2.0.6
|
||||||
// https://github.com/selz/plyr
|
// https://github.com/selz/plyr
|
||||||
// License: The MIT License (MIT)
|
// License: The MIT License (MIT)
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
@ -16,7 +16,7 @@
|
|||||||
module.exports = factory(root, document);
|
module.exports = factory(root, document);
|
||||||
} else if (typeof define === 'function' && define.amd) {
|
} else if (typeof define === 'function' && define.amd) {
|
||||||
// AMD
|
// AMD
|
||||||
define(null, function() { factory(root, document) });
|
define([], function () { return factory(root, document); });
|
||||||
} else {
|
} else {
|
||||||
// Browser globals (root is window)
|
// Browser globals (root is window)
|
||||||
root.plyr = factory(root, document);
|
root.plyr = factory(root, document);
|
||||||
@ -43,7 +43,7 @@
|
|||||||
displayDuration: true,
|
displayDuration: true,
|
||||||
loadSprite: true,
|
loadSprite: true,
|
||||||
iconPrefix: 'plyr',
|
iconPrefix: 'plyr',
|
||||||
iconUrl: 'https://cdn.plyr.io/2.0.5/plyr.svg',
|
iconUrl: 'https://cdn.plyr.io/2.0.6/plyr.svg',
|
||||||
clickToPlay: true,
|
clickToPlay: true,
|
||||||
hideControls: true,
|
hideControls: true,
|
||||||
showPosterOnEnd: false,
|
showPosterOnEnd: false,
|
||||||
@ -195,41 +195,36 @@
|
|||||||
isChrome = false,
|
isChrome = false,
|
||||||
isSafari = false;
|
isSafari = false;
|
||||||
|
|
||||||
// MSIE 11
|
|
||||||
if ((navigator.appVersion.indexOf('Windows NT') !== -1) && (navigator.appVersion.indexOf('rv:11') !== -1)) {
|
if ((navigator.appVersion.indexOf('Windows NT') !== -1) && (navigator.appVersion.indexOf('rv:11') !== -1)) {
|
||||||
|
// MSIE 11
|
||||||
isIE = true;
|
isIE = true;
|
||||||
name = 'IE';
|
name = 'IE';
|
||||||
fullVersion = '11';
|
fullVersion = '11';
|
||||||
}
|
} else if ((verOffset = ua.indexOf('MSIE')) !== -1) {
|
||||||
// MSIE
|
// MSIE
|
||||||
else if ((verOffset = ua.indexOf('MSIE')) !== -1) {
|
|
||||||
isIE = true;
|
isIE = true;
|
||||||
name = 'IE';
|
name = 'IE';
|
||||||
fullVersion = ua.substring(verOffset + 5);
|
fullVersion = ua.substring(verOffset + 5);
|
||||||
}
|
} else if ((verOffset = ua.indexOf('Chrome')) !== -1) {
|
||||||
// Chrome
|
// Chrome
|
||||||
else if ((verOffset = ua.indexOf('Chrome')) !== -1) {
|
|
||||||
isChrome = true;
|
isChrome = true;
|
||||||
name = 'Chrome';
|
name = 'Chrome';
|
||||||
fullVersion = ua.substring(verOffset + 7);
|
fullVersion = ua.substring(verOffset + 7);
|
||||||
}
|
} else if ((verOffset = ua.indexOf('Safari')) !== -1) {
|
||||||
// Safari
|
// Safari
|
||||||
else if ((verOffset = ua.indexOf('Safari')) !== -1) {
|
|
||||||
isSafari = true;
|
isSafari = true;
|
||||||
name = 'Safari';
|
name = 'Safari';
|
||||||
fullVersion = ua.substring(verOffset + 7);
|
fullVersion = ua.substring(verOffset + 7);
|
||||||
if ((verOffset = ua.indexOf('Version')) !== -1) {
|
if ((verOffset = ua.indexOf('Version')) !== -1) {
|
||||||
fullVersion = ua.substring(verOffset + 8);
|
fullVersion = ua.substring(verOffset + 8);
|
||||||
}
|
}
|
||||||
}
|
} else if ((verOffset = ua.indexOf('Firefox')) !== -1) {
|
||||||
// Firefox
|
// Firefox
|
||||||
else if ((verOffset = ua.indexOf('Firefox')) !== -1) {
|
|
||||||
isFirefox = true;
|
isFirefox = true;
|
||||||
name = 'Firefox';
|
name = 'Firefox';
|
||||||
fullVersion = ua.substring(verOffset + 8);
|
fullVersion = ua.substring(verOffset + 8);
|
||||||
}
|
} else if ((nameOffset = ua.lastIndexOf(' ') + 1) < (verOffset = ua.lastIndexOf('/'))) {
|
||||||
// In most other browsers, 'name/version' is at the end of userAgent
|
// In most other browsers, 'name/version' is at the end of userAgent
|
||||||
else if ((nameOffset = ua.lastIndexOf(' ') + 1) < (verOffset = ua.lastIndexOf('/'))) {
|
|
||||||
name = ua.substring(nameOffset,verOffset);
|
name = ua.substring(nameOffset,verOffset);
|
||||||
fullVersion = ua.substring(verOffset + 1);
|
fullVersion = ua.substring(verOffset + 1);
|
||||||
|
|
||||||
@ -272,7 +267,6 @@
|
|||||||
function _supportMime(plyr, mimeType) {
|
function _supportMime(plyr, mimeType) {
|
||||||
var media = plyr.media;
|
var media = plyr.media;
|
||||||
|
|
||||||
// Only check video types for video players
|
|
||||||
if (plyr.type === 'video') {
|
if (plyr.type === 'video') {
|
||||||
// Check type
|
// Check type
|
||||||
switch (mimeType) {
|
switch (mimeType) {
|
||||||
@ -280,10 +274,7 @@
|
|||||||
case 'video/mp4': return !!(media.canPlayType && media.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ''));
|
case 'video/mp4': return !!(media.canPlayType && media.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ''));
|
||||||
case 'video/ogg': return !!(media.canPlayType && media.canPlayType('video/ogg; codecs="theora"').replace(/no/, ''));
|
case 'video/ogg': return !!(media.canPlayType && media.canPlayType('video/ogg; codecs="theora"').replace(/no/, ''));
|
||||||
}
|
}
|
||||||
}
|
} else if (plyr.type === 'audio') {
|
||||||
|
|
||||||
// Only check audio types for audio players
|
|
||||||
else if (plyr.type === 'audio') {
|
|
||||||
// Check type
|
// Check type
|
||||||
switch (mimeType) {
|
switch (mimeType) {
|
||||||
case 'audio/mpeg': return !!(media.canPlayType && media.canPlayType('audio/mpeg;').replace(/no/, ''));
|
case 'audio/mpeg': return !!(media.canPlayType && media.canPlayType('audio/mpeg;').replace(/no/, ''));
|
||||||
@ -344,8 +335,7 @@
|
|||||||
// append it to the parent.
|
// append it to the parent.
|
||||||
if (sibling) {
|
if (sibling) {
|
||||||
parent.insertBefore(child, sibling);
|
parent.insertBefore(child, sibling);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
parent.appendChild(child);
|
parent.appendChild(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,8 +400,7 @@
|
|||||||
if (element) {
|
if (element) {
|
||||||
if (element.classList) {
|
if (element.classList) {
|
||||||
element.classList[state ? 'add' : 'remove'](className);
|
element.classList[state ? 'add' : 'remove'](className);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
var name = (' ' + element.className + ' ').replace(/\s+/g, ' ').replace(' ' + className + ' ', '');
|
var name = (' ' + element.className + ' ').replace(/\s+/g, ' ').replace(' ' + className + ' ', '');
|
||||||
element.className = name + (state ? ' ' + className : '');
|
element.className = name + (state ? ' ' + className : '');
|
||||||
}
|
}
|
||||||
@ -423,8 +412,7 @@
|
|||||||
if (element) {
|
if (element) {
|
||||||
if (element.classList) {
|
if (element.classList) {
|
||||||
return element.classList.contains(className);
|
return element.classList.contains(className);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return new RegExp('(\\s|^)' + className + '(\\s|$)').test(element.className);
|
return new RegExp('(\\s|^)' + className + '(\\s|$)').test(element.className);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -568,8 +556,7 @@
|
|||||||
if (source[property] && source[property].constructor && source[property].constructor === Object) {
|
if (source[property] && source[property].constructor && source[property].constructor === Object) {
|
||||||
destination[property] = destination[property] || {};
|
destination[property] = destination[property] || {};
|
||||||
_extend(destination[property], source[property]);
|
_extend(destination[property], source[property]);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
destination[property] = source[property];
|
destination[property] = source[property];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -625,8 +612,7 @@
|
|||||||
// Check for native support
|
// Check for native support
|
||||||
if (!_is.undefined(document.cancelFullScreen)) {
|
if (!_is.undefined(document.cancelFullScreen)) {
|
||||||
fullscreen.supportsFullScreen = true;
|
fullscreen.supportsFullScreen = true;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Check for fullscreen support by vendor prefix
|
// Check for fullscreen support by vendor prefix
|
||||||
for (var i = 0, il = browserPrefixes.length; i < il; i++ ) {
|
for (var i = 0, il = browserPrefixes.length; i < il; i++ ) {
|
||||||
fullscreen.prefix = browserPrefixes[i];
|
fullscreen.prefix = browserPrefixes[i];
|
||||||
@ -634,9 +620,8 @@
|
|||||||
if (!_is.undefined(document[fullscreen.prefix + 'CancelFullScreen'])) {
|
if (!_is.undefined(document[fullscreen.prefix + 'CancelFullScreen'])) {
|
||||||
fullscreen.supportsFullScreen = true;
|
fullscreen.supportsFullScreen = true;
|
||||||
break;
|
break;
|
||||||
}
|
} else if (!_is.undefined(document.msExitFullscreen) && document.msFullscreenEnabled) {
|
||||||
// Special case for MS (when isn't it?)
|
// Special case for MS (when isn't it?)
|
||||||
else if (!_is.undefined(document.msExitFullscreen) && document.msFullscreenEnabled) {
|
|
||||||
fullscreen.prefix = 'ms';
|
fullscreen.prefix = 'ms';
|
||||||
fullscreen.supportsFullScreen = true;
|
fullscreen.supportsFullScreen = true;
|
||||||
break;
|
break;
|
||||||
@ -922,8 +907,7 @@
|
|||||||
|
|
||||||
// Add styling hook
|
// Add styling hook
|
||||||
_toggleClass(plyr.container, config.classes.fullscreen.enabled, true);
|
_toggleClass(plyr.container, config.classes.fullscreen.enabled, true);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_log('Fullscreen not supported and fallback disabled');
|
_log('Fullscreen not supported and fallback disabled');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -974,17 +958,14 @@
|
|||||||
if (captionSrc === '') {
|
if (captionSrc === '') {
|
||||||
plyr.captionExists = false;
|
plyr.captionExists = false;
|
||||||
_log('No caption track found');
|
_log('No caption track found');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_log('Caption track found; URI: ' + captionSrc);
|
_log('Caption track found; URI: ' + captionSrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no caption file exists, hide container for caption text
|
// If no caption file exists, hide container for caption text
|
||||||
if (!plyr.captionExists) {
|
if (!plyr.captionExists) {
|
||||||
_toggleClass(plyr.container, config.classes.captions.enabled);
|
_toggleClass(plyr.container, config.classes.captions.enabled);
|
||||||
}
|
} else {
|
||||||
// If caption file exists, process captions
|
|
||||||
else {
|
|
||||||
// Turn off native caption rendering to avoid double captions
|
// Turn off native caption rendering to avoid double captions
|
||||||
// This doesn't seem to work in Safari 7+, so the <track> elements are removed from the dom below
|
// This doesn't seem to work in Safari 7+, so the <track> elements are removed from the dom below
|
||||||
var tracks = plyr.media.textTracks;
|
var tracks = plyr.media.textTracks;
|
||||||
@ -1020,16 +1001,14 @@
|
|||||||
// Display a cue, if there is one
|
// Display a cue, if there is one
|
||||||
if (this.activeCues[0] && 'text' in this.activeCues[0]) {
|
if (this.activeCues[0] && 'text' in this.activeCues[0]) {
|
||||||
_setCaption(this.activeCues[0].getCueAsHTML());
|
_setCaption(this.activeCues[0].getCueAsHTML());
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_setCaption();
|
_setCaption();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
// Caption tracks not natively supported
|
// Caption tracks not natively supported
|
||||||
else {
|
|
||||||
_log('TextTracks not supported so rendering captions manually');
|
_log('TextTracks not supported so rendering captions manually');
|
||||||
|
|
||||||
// Render captions from array at appropriate time
|
// Render captions from array at appropriate time
|
||||||
@ -1069,8 +1048,7 @@
|
|||||||
plyr.captions.shift();
|
plyr.captions.shift();
|
||||||
|
|
||||||
_log('Successfully loaded the caption file via AJAX');
|
_log('Successfully loaded the caption file via AJAX');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_warn(config.logPrefix + 'There was a problem loading the caption file via AJAX');
|
_warn(config.logPrefix + 'There was a problem loading the caption file via AJAX');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1101,8 +1079,7 @@
|
|||||||
// Set the span content
|
// Set the span content
|
||||||
if (_is.string(caption)) {
|
if (_is.string(caption)) {
|
||||||
content.innerHTML = caption.trim();
|
content.innerHTML = caption.trim();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
content.appendChild(caption);
|
content.appendChild(caption);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1136,8 +1113,7 @@
|
|||||||
function _subTcSecs(tc) {
|
function _subTcSecs(tc) {
|
||||||
if (tc === null || tc === undefined) {
|
if (tc === null || tc === undefined) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
var tc1 = [],
|
var tc1 = [],
|
||||||
tc2 = [],
|
tc2 = [],
|
||||||
seconds;
|
seconds;
|
||||||
@ -1181,8 +1157,7 @@
|
|||||||
|
|
||||||
// Render the caption
|
// Render the caption
|
||||||
_setCaption(plyr.currentCaption);
|
_setCaption(plyr.currentCaption);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_setCaption();
|
_setCaption();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1239,13 +1214,12 @@
|
|||||||
function _checkFocus(event) {
|
function _checkFocus(event) {
|
||||||
// If it is TAB
|
// If it is TAB
|
||||||
if (event.which === 9 && plyr.isFullscreen) {
|
if (event.which === 9 && plyr.isFullscreen) {
|
||||||
// Move focus to first element that can be tabbed if Shift isn't used
|
|
||||||
if (event.target === last && !event.shiftKey) {
|
if (event.target === last && !event.shiftKey) {
|
||||||
|
// Move focus to first element that can be tabbed if Shift isn't used
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
first.focus();
|
first.focus();
|
||||||
}
|
} else if (event.target === first && event.shiftKey) {
|
||||||
// Move focus to last element that can be tabbed if Shift is used
|
// Move focus to last element that can be tabbed if Shift is used
|
||||||
else if (event.target === first && event.shiftKey) {
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
last.focus();
|
last.focus();
|
||||||
}
|
}
|
||||||
@ -1260,8 +1234,7 @@
|
|||||||
function _insertChildElements(type, attributes) {
|
function _insertChildElements(type, attributes) {
|
||||||
if (_is.string(attributes)) {
|
if (_is.string(attributes)) {
|
||||||
_insertElement(type, plyr.media, { src: attributes });
|
_insertElement(type, plyr.media, { src: attributes });
|
||||||
}
|
} else if (attributes.constructor === Array) {
|
||||||
else if (attributes.constructor === Array) {
|
|
||||||
for (var i = attributes.length - 1; i >= 0; i--) {
|
for (var i = attributes.length - 1; i >= 0; i--) {
|
||||||
_insertElement(type, plyr.media, attributes[i]);
|
_insertElement(type, plyr.media, attributes[i]);
|
||||||
}
|
}
|
||||||
@ -1278,8 +1251,7 @@
|
|||||||
if (iconUrl.absolute) {
|
if (iconUrl.absolute) {
|
||||||
_log('AJAX loading absolute SVG sprite' + (plyr.browser.isIE ? ' (due to IE)' : ''));
|
_log('AJAX loading absolute SVG sprite' + (plyr.browser.isIE ? ' (due to IE)' : ''));
|
||||||
loadSprite(iconUrl.url, "sprite-plyr");
|
loadSprite(iconUrl.url, "sprite-plyr");
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_log('Sprite will be used as external resource directly');
|
_log('Sprite will be used as external resource directly');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1395,8 +1367,7 @@
|
|||||||
function _toggleNativeControls(toggle) {
|
function _toggleNativeControls(toggle) {
|
||||||
if (toggle && _inArray(config.types.html5, plyr.type)) {
|
if (toggle && _inArray(config.types.html5, plyr.type)) {
|
||||||
plyr.media.setAttribute('controls', '');
|
plyr.media.setAttribute('controls', '');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
plyr.media.removeAttribute('controls');
|
plyr.media.removeAttribute('controls');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1448,14 +1419,12 @@
|
|||||||
if (!value) {
|
if (!value) {
|
||||||
// Key wasn't set (or had been cleared), move along
|
// Key wasn't set (or had been cleared), move along
|
||||||
return;
|
return;
|
||||||
}
|
} else if (/^\d+(\.\d+)?$/.test(value)) {
|
||||||
else if (/^\d+(\.\d+)?$/.test(value)) {
|
|
||||||
// If value is a number, it's probably volume from an older
|
// If value is a number, it's probably volume from an older
|
||||||
// version of plyr. See: https://github.com/Selz/plyr/pull/313
|
// version of plyr. See: https://github.com/Selz/plyr/pull/313
|
||||||
// Update the key to be JSON
|
// Update the key to be JSON
|
||||||
_updateStorage({volume: parseFloat(value)});
|
_updateStorage({volume: parseFloat(value)});
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Assume it's JSON from this or a later version of plyr
|
// Assume it's JSON from this or a later version of plyr
|
||||||
plyr.storage = JSON.parse(value);
|
plyr.storage = JSON.parse(value);
|
||||||
}
|
}
|
||||||
@ -1538,7 +1507,6 @@
|
|||||||
_toggleClass(plyr.media, config.classes.videoWrapper, true);
|
_toggleClass(plyr.media, config.classes.videoWrapper, true);
|
||||||
_toggleClass(plyr.media, config.classes.embedWrapper, true);
|
_toggleClass(plyr.media, config.classes.embedWrapper, true);
|
||||||
|
|
||||||
// YouTube
|
|
||||||
if (plyr.type === 'youtube') {
|
if (plyr.type === 'youtube') {
|
||||||
// Create the YouTube container
|
// Create the YouTube container
|
||||||
plyr.media.appendChild(container);
|
plyr.media.appendChild(container);
|
||||||
@ -1549,8 +1517,7 @@
|
|||||||
// Setup API
|
// Setup API
|
||||||
if (_is.object(window.YT)) {
|
if (_is.object(window.YT)) {
|
||||||
_youTubeReady(mediaId, container);
|
_youTubeReady(mediaId, container);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Load the API
|
// Load the API
|
||||||
_injectScript(config.urls.youtube.api);
|
_injectScript(config.urls.youtube.api);
|
||||||
|
|
||||||
@ -1565,14 +1532,11 @@
|
|||||||
window.onYouTubeReadyCallbacks.forEach(function(callback) { callback(); });
|
window.onYouTubeReadyCallbacks.forEach(function(callback) { callback(); });
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
} else if (plyr.type === 'vimeo') {
|
||||||
// Vimeo
|
|
||||||
else if (plyr.type === 'vimeo') {
|
|
||||||
// Vimeo needs an extra div to hide controls on desktop (which has full support)
|
// Vimeo needs an extra div to hide controls on desktop (which has full support)
|
||||||
if (plyr.supported.full) {
|
if (plyr.supported.full) {
|
||||||
plyr.media.appendChild(container);
|
plyr.media.appendChild(container);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
container = plyr.media;
|
container = plyr.media;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1590,14 +1554,11 @@
|
|||||||
_vimeoReady(mediaId, container);
|
_vimeoReady(mediaId, container);
|
||||||
}
|
}
|
||||||
}, 50);
|
}, 50);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_vimeoReady(mediaId, container);
|
_vimeoReady(mediaId, container);
|
||||||
}
|
}
|
||||||
}
|
} else if (plyr.type === 'soundcloud') {
|
||||||
// Soundcloud
|
|
||||||
// TODO: Currently unsupported and undocumented
|
// TODO: Currently unsupported and undocumented
|
||||||
else if (plyr.type === 'soundcloud') {
|
|
||||||
// Inject the iframe
|
// Inject the iframe
|
||||||
var soundCloud = document.createElement('iframe');
|
var soundCloud = document.createElement('iframe');
|
||||||
|
|
||||||
@ -1968,12 +1929,9 @@
|
|||||||
toggle = plyr.media.paused;
|
toggle = plyr.media.paused;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Play
|
|
||||||
if (toggle) {
|
if (toggle) {
|
||||||
_play();
|
_play();
|
||||||
}
|
} else {
|
||||||
// Pause
|
|
||||||
else {
|
|
||||||
_pause();
|
_pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2005,12 +1963,9 @@
|
|||||||
paused = plyr.media.paused,
|
paused = plyr.media.paused,
|
||||||
duration = _getDuration();
|
duration = _getDuration();
|
||||||
|
|
||||||
// Explicit position
|
|
||||||
if (_is.number(input)) {
|
if (_is.number(input)) {
|
||||||
targetTime = input;
|
targetTime = input;
|
||||||
}
|
} else if (_is.object(input) && _inArray(['input', 'change'], input.type)) {
|
||||||
// Event
|
|
||||||
else if (_is.object(input) && _inArray(['input', 'change'], input.type)) {
|
|
||||||
// It's the seek slider
|
// It's the seek slider
|
||||||
// Seek to the selected time
|
// Seek to the selected time
|
||||||
targetTime = ((input.target.value / input.target.max) * duration);
|
targetTime = ((input.target.value / input.target.max) * duration);
|
||||||
@ -2019,8 +1974,7 @@
|
|||||||
// Normalise targetTime
|
// Normalise targetTime
|
||||||
if (targetTime < 0) {
|
if (targetTime < 0) {
|
||||||
targetTime = 0;
|
targetTime = 0;
|
||||||
}
|
} else if (targetTime > duration) {
|
||||||
else if (targetTime > duration) {
|
|
||||||
targetTime = duration;
|
targetTime = duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2118,19 +2072,16 @@
|
|||||||
// If it's a fullscreen change event, update the UI
|
// If it's a fullscreen change event, update the UI
|
||||||
if (event && event.type === fullscreen.fullScreenEventName) {
|
if (event && event.type === fullscreen.fullScreenEventName) {
|
||||||
plyr.isFullscreen = fullscreen.isFullScreen(plyr.container);
|
plyr.isFullscreen = fullscreen.isFullScreen(plyr.container);
|
||||||
}
|
} else {
|
||||||
// Else it's a user request to enter or exit
|
// Else it's a user request to enter or exit
|
||||||
else {
|
|
||||||
// Request fullscreen
|
|
||||||
if (!fullscreen.isFullScreen(plyr.container)) {
|
if (!fullscreen.isFullScreen(plyr.container)) {
|
||||||
// Save scroll position
|
// Save scroll position
|
||||||
_saveScrollPosition();
|
_saveScrollPosition();
|
||||||
|
|
||||||
// Request full screen
|
// Request full screen
|
||||||
fullscreen.requestFullScreen(plyr.container);
|
fullscreen.requestFullScreen(plyr.container);
|
||||||
}
|
} else {
|
||||||
// Bail from fullscreen
|
// Bail from fullscreen
|
||||||
else {
|
|
||||||
fullscreen.cancelFullScreen();
|
fullscreen.cancelFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2139,8 +2090,7 @@
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Otherwise, it's a simple toggle
|
// Otherwise, it's a simple toggle
|
||||||
plyr.isFullscreen = !plyr.isFullscreen;
|
plyr.isFullscreen = !plyr.isFullscreen;
|
||||||
|
|
||||||
@ -2389,12 +2339,11 @@
|
|||||||
value = (function() {
|
value = (function() {
|
||||||
var buffered = plyr.media.buffered;
|
var buffered = plyr.media.buffered;
|
||||||
|
|
||||||
// HTML5
|
|
||||||
if (buffered && buffered.length) {
|
if (buffered && buffered.length) {
|
||||||
|
// HTML5
|
||||||
return _getPercentage(buffered.end(0), duration);
|
return _getPercentage(buffered.end(0), duration);
|
||||||
}
|
} else if (_is.number(buffered)) {
|
||||||
// YouTube returns between 0 and 1
|
// YouTube returns between 0 and 1
|
||||||
else if (_is.number(buffered)) {
|
|
||||||
return (buffered * 100);
|
return (buffered * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2423,8 +2372,7 @@
|
|||||||
if (_is.undefined(progress)) {
|
if (_is.undefined(progress)) {
|
||||||
if (plyr.progress && plyr.progress.buffer) {
|
if (plyr.progress && plyr.progress.buffer) {
|
||||||
progress = plyr.progress.buffer;
|
progress = plyr.progress.buffer;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2432,9 +2380,8 @@
|
|||||||
// One progress element passed
|
// One progress element passed
|
||||||
if (_is.htmlElement(progress)) {
|
if (_is.htmlElement(progress)) {
|
||||||
progress.value = value;
|
progress.value = value;
|
||||||
}
|
} else if (progress) {
|
||||||
// Object of progress + text element
|
// Object of progress + text element
|
||||||
else if (progress) {
|
|
||||||
if (progress.bar) {
|
if (progress.bar) {
|
||||||
progress.bar.value = value;
|
progress.bar.value = value;
|
||||||
}
|
}
|
||||||
@ -2547,20 +2494,17 @@
|
|||||||
if (!event) {
|
if (!event) {
|
||||||
if (_hasClass(plyr.progress.tooltip, visible)) {
|
if (_hasClass(plyr.progress.tooltip, visible)) {
|
||||||
percent = plyr.progress.tooltip.style.left.replace('%', '');
|
percent = plyr.progress.tooltip.style.left.replace('%', '');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
percent = ((100 / clientRect.width) * (event.pageX - clientRect.left));
|
percent = ((100 / clientRect.width) * (event.pageX - clientRect.left));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set bounds
|
// Set bounds
|
||||||
if (percent < 0) {
|
if (percent < 0) {
|
||||||
percent = 0;
|
percent = 0;
|
||||||
}
|
} else if (percent > 100) {
|
||||||
else if (percent > 100) {
|
|
||||||
percent = 100;
|
percent = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2607,8 +2551,7 @@
|
|||||||
if (toggle.type === 'focus') {
|
if (toggle.type === 'focus') {
|
||||||
delay = 3000;
|
delay = 3000;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
show = _hasClass(plyr.container, config.classes.hideControls);
|
show = _hasClass(plyr.container, config.classes.hideControls);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2846,8 +2789,7 @@
|
|||||||
// Get the last play button to account for the large play button
|
// Get the last play button to account for the large play button
|
||||||
if (target && target.length > 1) {
|
if (target && target.length > 1) {
|
||||||
target = target[target.length - 1];
|
target = target[target.length - 1];
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
target = target[0];
|
target = target[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2872,8 +2814,7 @@
|
|||||||
|
|
||||||
if (!focused || focused === document.body) {
|
if (!focused || focused === document.body) {
|
||||||
focused = null;
|
focused = null;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
focused = document.querySelector(':focus');
|
focused = document.querySelector(':focus');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2894,8 +2835,7 @@
|
|||||||
for (var i = 0; i < element.length; i++) {
|
for (var i = 0; i < element.length; i++) {
|
||||||
_toggleClass(element[i], config.classes.tabFocus, (element[i] === focused));
|
_toggleClass(element[i], config.classes.tabFocus, (element[i] === focused));
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_toggleClass(element, config.classes.tabFocus, (element === focused));
|
_toggleClass(element, config.classes.tabFocus, (element === focused));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3003,8 +2943,7 @@
|
|||||||
|
|
||||||
// Store last code for next cycle
|
// Store last code for next cycle
|
||||||
last = code;
|
last = code;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
last = null;
|
last = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3101,8 +3040,7 @@
|
|||||||
if (event.deltaY < 0 || event.deltaX > 0) {
|
if (event.deltaY < 0 || event.deltaX > 0) {
|
||||||
if (inverted) {
|
if (inverted) {
|
||||||
_decreaseVolume(step);
|
_decreaseVolume(step);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_increaseVolume(step);
|
_increaseVolume(step);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3111,8 +3049,7 @@
|
|||||||
if (event.deltaY > 0 || event.deltaX < 0) {
|
if (event.deltaY > 0 || event.deltaX < 0) {
|
||||||
if (inverted) {
|
if (inverted) {
|
||||||
_increaseVolume(step);
|
_increaseVolume(step);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_decreaseVolume(step);
|
_decreaseVolume(step);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3181,12 +3118,10 @@
|
|||||||
|
|
||||||
if (plyr.media.paused) {
|
if (plyr.media.paused) {
|
||||||
_play();
|
_play();
|
||||||
}
|
} else if (plyr.media.ended) {
|
||||||
else if (plyr.media.ended) {
|
|
||||||
_seek();
|
_seek();
|
||||||
_play();
|
_play();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
_pause();
|
_pause();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -3334,8 +3269,7 @@
|
|||||||
// Clean up
|
// Clean up
|
||||||
media.removeAttribute('data-type');
|
media.removeAttribute('data-type');
|
||||||
media.removeAttribute('data-video-id');
|
media.removeAttribute('data-video-id');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
plyr.type = tagName;
|
plyr.type = tagName;
|
||||||
config.crossorigin = (media.getAttribute('crossorigin') !== null);
|
config.crossorigin = (media.getAttribute('crossorigin') !== null);
|
||||||
config.autoplay = (config.autoplay || (media.getAttribute('autoplay') !== null));
|
config.autoplay = (config.autoplay || (media.getAttribute('autoplay') !== null));
|
||||||
@ -3524,8 +3458,7 @@
|
|||||||
// Check for CORS support
|
// Check for CORS support
|
||||||
if ('withCredentials' in x) {
|
if ('withCredentials' in x) {
|
||||||
x.open('GET', url, true);
|
x.open('GET', url, true);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3584,16 +3517,14 @@
|
|||||||
selector = [defaults.selectors.html5, defaults.selectors.embed].join(',');
|
selector = [defaults.selectors.html5, defaults.selectors.embed].join(',');
|
||||||
|
|
||||||
// Select the elements
|
// Select the elements
|
||||||
// Assume elements is a NodeList by default
|
|
||||||
if (_is.string(targets)) {
|
if (_is.string(targets)) {
|
||||||
|
// String selector passed
|
||||||
targets = document.querySelectorAll(targets);
|
targets = document.querySelectorAll(targets);
|
||||||
}
|
} else if (_is.htmlElement(targets)) {
|
||||||
// Single HTMLElement passed
|
// Single HTMLElement passed
|
||||||
else if (_is.htmlElement(targets)) {
|
|
||||||
targets = [targets];
|
targets = [targets];
|
||||||
}
|
} else if (!_is.nodeList(targets) && !_is.array(targets) && !_is.string(targets)) {
|
||||||
// No selector passed, possibly options as first argument
|
// No selector passed, possibly options as first argument
|
||||||
else if (!_is.nodeList(targets) && !_is.array(targets) && !_is.string(targets)) {
|
|
||||||
// If options are the first argument
|
// If options are the first argument
|
||||||
if (_is.undefined(options) && _is.object(targets)) {
|
if (_is.undefined(options) && _is.object(targets)) {
|
||||||
options = targets;
|
options = targets;
|
||||||
@ -3640,9 +3571,8 @@
|
|||||||
for (var x = 0; x < children.length; x++) {
|
for (var x = 0; x < children.length; x++) {
|
||||||
add(target, children[x]);
|
add(target, children[x]);
|
||||||
}
|
}
|
||||||
}
|
} else if (_matches(target, selector)) {
|
||||||
// Wrap target if it's a media element
|
// Target is media element
|
||||||
else if (_matches(target, selector)) {
|
|
||||||
add(target, target);
|
add(target, target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3704,12 +3634,11 @@
|
|||||||
|
|
||||||
// Get all instances within a provided container
|
// Get all instances within a provided container
|
||||||
function get(container) {
|
function get(container) {
|
||||||
// Get selector if string passed
|
|
||||||
if (_is.string(container)) {
|
if (_is.string(container)) {
|
||||||
|
// Get selector if string passed
|
||||||
container = document.querySelector(container);
|
container = document.querySelector(container);
|
||||||
}
|
} else if (_is.undefined(container)) {
|
||||||
// Use body by default to get all on page
|
// Use body by default to get all on page
|
||||||
else if (_is.undefined(container)) {
|
|
||||||
container = document.body;
|
container = document.body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user