More bug fixes
This commit is contained in:
		
							
								
								
									
										5
									
								
								src/js/controls.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								src/js/controls.js
									
									
									
									
										vendored
									
									
								
							| @ -581,6 +581,11 @@ const controls = { | ||||
|             list = pane && pane.querySelector('ul'); | ||||
|         } | ||||
|  | ||||
|         // If there's no list it means it's not been rendered... | ||||
|         if (!utils.is.element(list)) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         // Update the label | ||||
|         const label = this.elements.settings.tabs[setting].querySelector(`.${this.config.classNames.menu.value}`); | ||||
|         label.innerHTML = controls.getLabel.call(this, setting, value); | ||||
|  | ||||
| @ -35,10 +35,14 @@ const vimeo = { | ||||
|     setAspectRatio(input) { | ||||
|         const ratio = utils.is.string(input) ? input.split(':') : this.config.ratio.split(':'); | ||||
|         const padding = 100 / ratio[0] * ratio[1]; | ||||
|         const height = 240; | ||||
|         const offset = (height - padding) / (height / 50); | ||||
|         this.elements.wrapper.style.paddingBottom = `${padding}%`; | ||||
|         this.media.style.transform = `translateY(-${offset}%)`; | ||||
|  | ||||
|         if (this.supported.ui) { | ||||
|             const height = 240; | ||||
|             const offset = (height - padding) / (height / 50); | ||||
|  | ||||
|             this.media.style.transform = `translateY(-${offset}%)`; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     // API Ready | ||||
| @ -55,6 +59,7 @@ const vimeo = { | ||||
|             speed: true, | ||||
|             transparent: 0, | ||||
|             gesture: 'media', | ||||
|             playsinline: !this.config.fullscreen.iosNative, | ||||
|         }; | ||||
|         const params = utils.buildUrlParams(options); | ||||
|  | ||||
| @ -88,6 +93,11 @@ const vimeo = { | ||||
|         player.media.paused = true; | ||||
|         player.media.currentTime = 0; | ||||
|  | ||||
|         // Disable native text track rendering | ||||
|         if (player.supported.ui) { | ||||
|             player.embed.disableTextTrack(); | ||||
|         } | ||||
|  | ||||
|         // Create a faux HTML5 API using the Vimeo API | ||||
|         player.media.play = () => { | ||||
|             player.embed.play().then(() => { | ||||
|  | ||||
| @ -185,12 +185,17 @@ class Plyr { | ||||
|                         if (truthy.includes(params.autoplay)) { | ||||
|                             this.config.autoplay = true; | ||||
|                         } | ||||
|                         if (truthy.includes(params.playsinline)) { | ||||
|                             this.config.inline = true; | ||||
|                         } | ||||
|                         if (truthy.includes(params.loop)) { | ||||
|                             this.config.loop.active = true; | ||||
|                         } | ||||
|  | ||||
|                         // TODO: replace fullscreen.iosNative with this playsinline config option | ||||
|                         // YouTube requires the playsinline in the URL | ||||
|                         if (this.isYouTube) { | ||||
|                             this.config.playsinline = truthy.includes(params.playsinline); | ||||
|                         } else { | ||||
|                             this.config.playsinline = true; | ||||
|                         } | ||||
|                     } | ||||
|                 } else { | ||||
|                     // <div> with attributes | ||||
| @ -224,7 +229,7 @@ class Plyr { | ||||
|                     this.config.autoplay = true; | ||||
|                 } | ||||
|                 if (this.media.hasAttribute('playsinline')) { | ||||
|                     this.config.inline = true; | ||||
|                     this.config.playsinline = true; | ||||
|                 } | ||||
|                 if (this.media.hasAttribute('muted')) { | ||||
|                     this.config.muted = true; | ||||
| @ -241,7 +246,7 @@ class Plyr { | ||||
|         } | ||||
|  | ||||
|         // Check for support again but with type | ||||
|         this.supported = support.check(this.type, this.provider, this.config.inline); | ||||
|         this.supported = support.check(this.type, this.provider, this.config.playsinline); | ||||
|  | ||||
|         // If no support for even API, bail | ||||
|         if (!this.supported.api) { | ||||
|  | ||||
| @ -55,7 +55,7 @@ const source = { | ||||
|                 this.provider = !utils.is.empty(input.sources[0].provider) ? input.sources[0].provider : providers.html5; | ||||
|  | ||||
|                 // Check for support | ||||
|                 this.supported = support.check(this.type, this.provider, this.config.inline); | ||||
|                 this.supported = support.check(this.type, this.provider, this.config.playsinline); | ||||
|  | ||||
|                 // Create new markup | ||||
|                 switch (`${this.provider}:${this.type}`) { | ||||
| @ -103,7 +103,7 @@ const source = { | ||||
|                     if (this.config.muted) { | ||||
|                         this.media.setAttribute('muted', ''); | ||||
|                     } | ||||
|                     if (this.config.inline) { | ||||
|                     if (this.config.playsinline) { | ||||
|                         this.media.setAttribute('playsinline', ''); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
| @ -12,16 +12,16 @@ const support = { | ||||
|  | ||||
|     // Check for support | ||||
|     // Basic functionality vs full UI | ||||
|     check(type, provider, inline) { | ||||
|     check(type, provider, playsinline) { | ||||
|         let api = false; | ||||
|         let ui = false; | ||||
|         const browser = utils.getBrowser(); | ||||
|         const playsInline = browser.isIPhone && inline && support.inline; | ||||
|         const canPlayInline = browser.isIPhone && playsinline && support.playsinline; | ||||
|  | ||||
|         switch (`${provider}:${type}`) { | ||||
|             case 'html5:video': | ||||
|                 api = support.video; | ||||
|                 ui = api && support.rangeInput && (!browser.isIPhone || playsInline); | ||||
|                 ui = api && support.rangeInput && (!browser.isIPhone || canPlayInline); | ||||
|                 break; | ||||
|  | ||||
|             case 'html5:audio': | ||||
| @ -32,7 +32,7 @@ const support = { | ||||
|             case 'youtube:video': | ||||
|             case 'vimeo:video': | ||||
|                 api = true; | ||||
|                 ui = support.rangeInput && (!browser.isIPhone || playsInline); | ||||
|                 ui = support.rangeInput && (!browser.isIPhone || canPlayInline); | ||||
|                 break; | ||||
|  | ||||
|             default: | ||||
| @ -59,7 +59,7 @@ const support = { | ||||
|  | ||||
|     // Inline playback support | ||||
|     // https://webkit.org/blog/6784/new-video-policies-for-ios/ | ||||
|     inline: 'playsInline' in document.createElement('video'), | ||||
|     playsinline: 'playsInline' in document.createElement('video'), | ||||
|  | ||||
|     // Check for mime type support against a player instance | ||||
|     // Credits: http://diveintohtml5.info/everything.html | ||||
|  | ||||
		Reference in New Issue
	
	Block a user