Audio fullscreen, Tooltip tweaks, Docs
This commit is contained in:
		| @ -78,7 +78,8 @@ | ||||
|         fullscreen: { | ||||
|             enabled:            true, | ||||
|             fallback:           true, | ||||
|             hideControls:       true | ||||
|             hideControls:       true, | ||||
|             allowAudio:         false | ||||
|         }, | ||||
|         storage: { | ||||
|             enabled:            true, | ||||
| @ -664,7 +665,7 @@ | ||||
|             time = typeof time === 'number' ? time : plyr.media.currentTime; | ||||
|  | ||||
|             // If there's no subs available, bail | ||||
|             if(!plyr.captions[plyr.subcount]) { | ||||
|             if (!plyr.captions[plyr.subcount]) { | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
| @ -930,9 +931,6 @@ | ||||
|                 _remove(containers[i]); | ||||
|             } | ||||
|  | ||||
|             // Set ID | ||||
|             container.setAttribute('id', id); | ||||
|  | ||||
|             // Add embed class for responsive | ||||
|             _toggleClass(plyr.media, config.classes.videoWrapper, true); | ||||
|             _toggleClass(plyr.media, config.classes.embedWrapper, true); | ||||
| @ -942,6 +940,9 @@ | ||||
|                 // Create the YouTube container | ||||
|                 plyr.media.appendChild(container); | ||||
|  | ||||
|                 // Set ID | ||||
|                 container.setAttribute('id', id); | ||||
|  | ||||
|                 // Setup API | ||||
|                 if (typeof YT === 'object') { | ||||
|                     _youTubeReady(videoId, container); | ||||
| @ -984,7 +985,7 @@ | ||||
|  | ||||
|                     // Wait for fragaloop load | ||||
|                     var timer = window.setInterval(function() { | ||||
|                         if('$f' in window && iframe.loaded) { | ||||
|                         if ('$f' in window && iframe.loaded) { | ||||
|                             window.clearInterval(timer); | ||||
|  | ||||
|                             _vimeoReady.call(iframe); | ||||
| @ -1122,11 +1123,11 @@ | ||||
|         // Vimeo ready | ||||
|         function _vimeoReady() { | ||||
|             /* jshint validthis: true */ | ||||
|             // Get the frame with fragaloop lib | ||||
|             plyr.embed = $f(this); | ||||
|  | ||||
|             // Setup on ready | ||||
|             plyr.embed.addEvent('ready', function() { | ||||
|  | ||||
|                 // Create a faux HTML5 API using the Vimeo API | ||||
|                 plyr.media.play = function() { plyr.embed.api('play'); }; | ||||
|                 plyr.media.pause = function() { plyr.embed.api('pause'); }; | ||||
| @ -1178,13 +1179,13 @@ | ||||
|                     _triggerEvent(plyr.media, 'ended'); | ||||
|                 }); | ||||
|  | ||||
|                 /*// Always seek to 0 | ||||
|                 plyr.embed.api('seekTo', 0); | ||||
|                 // Always seek to 0 | ||||
|                 //plyr.embed.api('seekTo', 0); | ||||
|  | ||||
|                 // Prevent autoplay if needed (seek will play) | ||||
|                 if (!config.autoplay) { | ||||
|                     plyr.embed.api('pause'); | ||||
|                 }*/                 | ||||
|                 //if (!config.autoplay) { | ||||
|                 //    plyr.embed.api('pause'); | ||||
|                 //}                 | ||||
|             }); | ||||
|         } | ||||
|  | ||||
| @ -1192,7 +1193,7 @@ | ||||
|         function _setupCaptions() { | ||||
|             if (plyr.type === 'video') { | ||||
|                 // Inject the container | ||||
|                 if(!_getElement(config.selectors.captions)) { | ||||
|                 if (!_getElement(config.selectors.captions)) { | ||||
|                     plyr.videoContainer.insertAdjacentHTML('afterbegin', '<div class="' + _getClassname(config.selectors.captions) + '"><span></span></div>'); | ||||
|                 } | ||||
|  | ||||
| @ -1340,7 +1341,7 @@ | ||||
|  | ||||
|         // Setup fullscreen | ||||
|         function _setupFullscreen() { | ||||
|             if (plyr.type != 'audio' && config.fullscreen.enabled) { | ||||
|             if ((plyr.type != 'audio' || config.fullscreen.allowAudio) && config.fullscreen.enabled) { | ||||
|                 // Check for native support | ||||
|                 var nativeSupport = fullscreen.supportsFullScreen; | ||||
|  | ||||
| @ -1660,18 +1661,21 @@ | ||||
|             // If there's no full support, or there's no caption toggle | ||||
|             if (!plyr.supported.full || !plyr.buttons.captions) { | ||||
|                 return; | ||||
|             } | ||||
|             }           | ||||
|  | ||||
|             // If the method is called without parameter, toggle based on current value | ||||
|             if (typeof show !== 'boolean') { | ||||
|                 show = (plyr.container.className.indexOf(config.classes.captions.active) === -1); | ||||
|             } | ||||
|  | ||||
|             // Set global | ||||
|             plyr.captionsEnabled = show; | ||||
|  | ||||
|             // Toggle state | ||||
|             _toggleState(plyr.buttons.captions, show); | ||||
|             _toggleState(plyr.buttons.captions, plyr.captionsEnabled); | ||||
|  | ||||
|             // Add class hook | ||||
|             _toggleClass(plyr.container, config.classes.captions.active, show); | ||||
|             _toggleClass(plyr.container, config.classes.captions.active, plyr.captionsEnabled); | ||||
|         } | ||||
|  | ||||
|         // Check if media is loading | ||||
| @ -1753,7 +1757,7 @@ | ||||
|             } | ||||
|  | ||||
|             // Fallback to 0 | ||||
|             if(isNaN(time)) { | ||||
|             if (isNaN(time)) { | ||||
|                 time = 0; | ||||
|             } | ||||
|  | ||||
| @ -1798,10 +1802,10 @@ | ||||
|  | ||||
|         // Add elements to HTML5 media (source, tracks, etc) | ||||
|         function _insertChildElements(type, attributes) { | ||||
|             if(typeof attributes === 'string') { | ||||
|             if (typeof attributes === 'string') { | ||||
|                _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--) { | ||||
|                     _insertElement(type, plyr.media, attributes[i]); | ||||
|                 } | ||||
| @ -1811,7 +1815,7 @@ | ||||
|         // Update source | ||||
|         // Sources are not checked for support so be careful | ||||
|         function _updateSource(source) { | ||||
|             if(typeof source === 'undefined') { | ||||
|             if (typeof source === 'undefined') { | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
| @ -1819,7 +1823,7 @@ | ||||
|             _pause(); | ||||
|  | ||||
|             // Clean up YouTube stuff | ||||
|             if(plyr.type === 'youtube') { | ||||
|             if (plyr.type === 'youtube') { | ||||
|                 // Destroy the embed instance | ||||
|                 plyr.embed.destroy(); | ||||
|  | ||||
| @ -1836,7 +1840,7 @@ | ||||
|             _remove(plyr.media); | ||||
|  | ||||
|             // Set the new type | ||||
|             if('type' in source && source.type !== plyr.type) { | ||||
|             if ('type' in source && source.type !== plyr.type) { | ||||
|                 plyr.type = source.type; | ||||
|             } | ||||
|  | ||||
| @ -1853,7 +1857,7 @@ | ||||
|                 case 'youtube': | ||||
|                 case 'vimeo': | ||||
|                     plyr.media = document.createElement('div'); | ||||
|                     plyr.embedId = source.sources; | ||||
|                     plyr.embedId = (typeof source.sources === 'string' ? source.sources : source.sources[0].src); | ||||
|                     break; | ||||
|             } | ||||
|  | ||||
| @ -1861,8 +1865,8 @@ | ||||
|             _prependChild(plyr.container, plyr.media); | ||||
|  | ||||
|             // Set attributes for audio video | ||||
|             if(_inArray(config.types.html5, plyr.type)) { | ||||
|                 if(config.crossorigin) { | ||||
|             if (_inArray(config.types.html5, plyr.type)) { | ||||
|                 if (config.crossorigin) { | ||||
|                     plyr.media.setAttribute('crossorigin', ''); | ||||
|                 } | ||||
|                 if (config.autoplay) { | ||||
| @ -1879,16 +1883,20 @@ | ||||
|             // Classname reset | ||||
|             plyr.container.className = plyr.originalClassName; | ||||
|  | ||||
|             // Restore class hooks | ||||
|             _toggleClass(plyr.container, config.classes.fullscreen.active, plyr.isFullscreen); | ||||
|             _toggleClass(plyr.container, config.classes.captions.active, plyr.captionsEnabled); | ||||
|  | ||||
|             // Autoplay the new source? | ||||
|             config.autoplay = (source.autoplay || config.autoplay); | ||||
|                 | ||||
|             // Set media id for embeds | ||||
|             if(_inArray(config.types.embed, plyr.type)) { | ||||
|             if (_inArray(config.types.embed, plyr.type)) { | ||||
|                 plyr.embedId = source.sources;  | ||||
|             } | ||||
|  | ||||
|             // Set new sources for html5 | ||||
|             if(_inArray(config.types.html5, plyr.type)) { | ||||
|             if (_inArray(config.types.html5, plyr.type)) { | ||||
|                 _insertChildElements('source', source.sources); | ||||
|             } | ||||
|  | ||||
| @ -1899,13 +1907,13 @@ | ||||
|             _mediaUpdated(); | ||||
|  | ||||
|             // HTML5 stuff | ||||
|             if(_inArray(config.types.html5, plyr.type)) { | ||||
|             if (_inArray(config.types.html5, plyr.type)) { | ||||
|                 // Set volume | ||||
|                 _setVolume(); | ||||
|                 _updateVolume(); | ||||
|  | ||||
|                 // UI updates | ||||
|                 if(plyr.supported.full) { | ||||
|                 if (plyr.supported.full) { | ||||
|                     // Reset time display | ||||
|                     _timeUpdate(); | ||||
|  | ||||
| @ -1914,7 +1922,7 @@ | ||||
|                 } | ||||
|  | ||||
|                 // Setup captions | ||||
|                 if('tracks' in source) { | ||||
|                 if ('tracks' in source) { | ||||
|                     _insertChildElements('track', source.tracks); | ||||
|  | ||||
|                     // Captions | ||||
| @ -1930,7 +1938,7 @@ | ||||
|                 }  | ||||
|             }  | ||||
|  | ||||
|             if('title' in source) { | ||||
|             if ('title' in source) { | ||||
|                 config.title = source.title; | ||||
|                 _setupPlayAria(); | ||||
|             }        | ||||
| @ -2292,17 +2300,17 @@ | ||||
|  | ||||
|         // Select the elements | ||||
|         // Assume elements is a NodeList by default | ||||
|         if(typeof elements === 'string') { | ||||
|         if (typeof elements === 'string') { | ||||
|             elements = document.querySelectorAll(elements); | ||||
|         } | ||||
|         // Single HTMLElement passed | ||||
|         else if(elements instanceof HTMLElement) { | ||||
|         else if (elements instanceof HTMLElement) { | ||||
|             elements = [elements]; | ||||
|         } | ||||
|         // No selector passed, possibly options as first argument | ||||
|         else if (!(elements instanceof NodeList) && typeof elements !== 'string')  { | ||||
|             // If options are the first argument | ||||
|             if(typeof options === 'undefined' && typeof elements === 'object') { | ||||
|             if (typeof options === 'undefined' && typeof elements === 'object') { | ||||
|                 options = elements; | ||||
|             } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user