v3.4.6
- Added picture-in-picture support for Chrome 70+ - Fixed issue with versioning the SVG sprite in the gulp build script
This commit is contained in:
		| @ -1,3 +1,8 @@ | |||||||
|  | # v3.4.6 | ||||||
|  |  | ||||||
|  | -   Added picture-in-picture support for Chrome 70+ | ||||||
|  | -   Fixed issue with versioning the SVG sprite in the gulp build script | ||||||
|  |  | ||||||
| # v3.4.5 | # v3.4.5 | ||||||
|  |  | ||||||
| -   Added download button option to download either current source or a custom URL you specify in options | -   Added download button option to download either current source or a custom URL you specify in options | ||||||
|  | |||||||
							
								
								
									
										79
									
								
								dist/plyr.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										79
									
								
								dist/plyr.js
									
									
									
									
										vendored
									
									
								
							| @ -705,9 +705,25 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|       }; |       }; | ||||||
|     }, |     }, | ||||||
|     // Picture-in-picture support |     // Picture-in-picture support | ||||||
|     // Safari only currently |     // Safari & Chrome only currently | ||||||
|     pip: function () { |     pip: function () { | ||||||
|       return !browser.isIPhone && is.function(createElement('video').webkitSetPresentationMode); |       if (browser.isIPhone) { | ||||||
|  |         return false; | ||||||
|  |       } // Safari | ||||||
|  |       // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls | ||||||
|  |  | ||||||
|  |  | ||||||
|  |       if (is.function(createElement('video').webkitSetPresentationMode)) { | ||||||
|  |         return true; | ||||||
|  |       } // Chrome | ||||||
|  |       // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture | ||||||
|  |  | ||||||
|  |  | ||||||
|  |       if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) { | ||||||
|  |         return true; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       return false; | ||||||
|     }(), |     }(), | ||||||
|     // Airplay support |     // Airplay support | ||||||
|     // Safari only currently |     // Safari only currently | ||||||
| @ -840,10 +856,6 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|  |  | ||||||
|           triggerEvent.call(player, player.media, 'qualitychange', false, { |           triggerEvent.call(player, player.media, 'qualitychange', false, { | ||||||
|             quality: input |             quality: input | ||||||
|           }); // Save to storage |  | ||||||
|  |  | ||||||
|           player.storage.set({ |  | ||||||
|             quality: input |  | ||||||
|           }); |           }); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
| @ -3180,7 +3192,7 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|     // Sprite (for icons) |     // Sprite (for icons) | ||||||
|     loadSprite: true, |     loadSprite: true, | ||||||
|     iconPrefix: 'plyr', |     iconPrefix: 'plyr', | ||||||
|     iconUrl: 'https://cdn.plyr.io/3.3.12/plyr.svg', |     iconUrl: 'https://cdn.plyr.io/3.4.6/plyr.svg', | ||||||
|     // Blank video (used to prevent errors on source change) |     // Blank video (used to prevent errors on source change) | ||||||
|     blankVideo: 'https://cdn.plyr.io/static/blank.mp4', |     blankVideo: 'https://cdn.plyr.io/static/blank.mp4', | ||||||
|     // Quality default |     // Quality default | ||||||
| @ -3444,6 +3456,14 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   // ========================================================================== | ||||||
|  |   // Plyr states | ||||||
|  |   // ========================================================================== | ||||||
|  |   var pip = { | ||||||
|  |     active: 'picture-in-picture', | ||||||
|  |     inactive: 'inline' | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   // ========================================================================== |   // ========================================================================== | ||||||
|   // Plyr supported types and providers |   // Plyr supported types and providers | ||||||
|   // ========================================================================== |   // ========================================================================== | ||||||
| @ -7429,17 +7449,26 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         var quality = [!is.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is.number); |         var quality = [!is.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is.number); | ||||||
|  |         var updateStorage = true; | ||||||
|  |  | ||||||
|         if (!options.includes(quality)) { |         if (!options.includes(quality)) { | ||||||
|           var value = closest(options, quality); |           var value = closest(options, quality); | ||||||
|           this.debug.warn("Unsupported quality option: ".concat(quality, ", using ").concat(value, " instead")); |           this.debug.warn("Unsupported quality option: ".concat(quality, ", using ").concat(value, " instead")); | ||||||
|           quality = value; |           quality = value; // Don't update storage if quality is not supported | ||||||
|  |  | ||||||
|  |           updateStorage = false; | ||||||
|         } // Update config |         } // Update config | ||||||
|  |  | ||||||
|  |  | ||||||
|         config.selected = quality; // Set quality |         config.selected = quality; // Set quality | ||||||
|  |  | ||||||
|         this.media.quality = quality; |         this.media.quality = quality; // Save to storage | ||||||
|  |  | ||||||
|  |         if (updateStorage) { | ||||||
|  |           this.storage.set({ | ||||||
|  |             quality: quality | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       /** |       /** | ||||||
|        * Get current quality level |        * Get current quality level | ||||||
| @ -7618,19 +7647,27 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|     }, { |     }, { | ||||||
|       key: "pip", |       key: "pip", | ||||||
|       set: function set(input) { |       set: function set(input) { | ||||||
|         var states = { |         // Bail if no support | ||||||
|           pip: 'picture-in-picture', |  | ||||||
|           inline: 'inline' |  | ||||||
|         }; // Bail if no support |  | ||||||
|  |  | ||||||
|         if (!support.pip) { |         if (!support.pip) { | ||||||
|           return; |           return; | ||||||
|         } // Toggle based on current state if not passed |         } // Toggle based on current state if not passed | ||||||
|  |  | ||||||
|  |  | ||||||
|         var toggle = is.boolean(input) ? input : this.pip === states.inline; // Toggle based on current state |         var toggle = is.boolean(input) ? input : !this.pip; // Toggle based on current state | ||||||
|  |         // Safari | ||||||
|  |  | ||||||
|         this.media.webkitSetPresentationMode(toggle ? states.pip : states.inline); |         if (is.function(this.media.webkitSetPresentationMode)) { | ||||||
|  |           this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive); | ||||||
|  |         } // Chrome | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         if (is.function(this.media.requestPictureInPicture)) { | ||||||
|  |           if (!this.pip && toggle) { | ||||||
|  |             this.media.requestPictureInPicture(); | ||||||
|  |           } else if (this.pip && !toggle) { | ||||||
|  |             document.exitPictureInPicture(); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       /** |       /** | ||||||
|        * Get the current picture-in-picture state |        * Get the current picture-in-picture state | ||||||
| @ -7639,9 +7676,15 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|       get: function get() { |       get: function get() { | ||||||
|         if (!support.pip) { |         if (!support.pip) { | ||||||
|           return null; |           return null; | ||||||
|         } |         } // Safari | ||||||
|  |  | ||||||
|         return this.media.webkitPresentationMode; |  | ||||||
|  |         if (!is.empty(this.media.webkitPresentationMode)) { | ||||||
|  |           return this.media.webkitPresentationMode === pip.active; | ||||||
|  |         } // Chrome | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         return this.media === document.pictureInPictureElement; | ||||||
|       } |       } | ||||||
|     }], [{ |     }], [{ | ||||||
|       key: "supported", |       key: "supported", | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dist/plyr.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/plyr.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/plyr.min.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.min.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										79
									
								
								dist/plyr.polyfilled.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										79
									
								
								dist/plyr.polyfilled.js
									
									
									
									
										vendored
									
									
								
							| @ -3329,9 +3329,25 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|       }; |       }; | ||||||
|     }, |     }, | ||||||
|     // Picture-in-picture support |     // Picture-in-picture support | ||||||
|     // Safari only currently |     // Safari & Chrome only currently | ||||||
|     pip: function () { |     pip: function () { | ||||||
|       return !browser.isIPhone && is$1.function(createElement('video').webkitSetPresentationMode); |       if (browser.isIPhone) { | ||||||
|  |         return false; | ||||||
|  |       } // Safari | ||||||
|  |       // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls | ||||||
|  |  | ||||||
|  |  | ||||||
|  |       if (is$1.function(createElement('video').webkitSetPresentationMode)) { | ||||||
|  |         return true; | ||||||
|  |       } // Chrome | ||||||
|  |       // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture | ||||||
|  |  | ||||||
|  |  | ||||||
|  |       if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) { | ||||||
|  |         return true; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       return false; | ||||||
|     }(), |     }(), | ||||||
|     // Airplay support |     // Airplay support | ||||||
|     // Safari only currently |     // Safari only currently | ||||||
| @ -3463,10 +3479,6 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|  |  | ||||||
|           triggerEvent.call(player, player.media, 'qualitychange', false, { |           triggerEvent.call(player, player.media, 'qualitychange', false, { | ||||||
|             quality: input |             quality: input | ||||||
|           }); // Save to storage |  | ||||||
|  |  | ||||||
|           player.storage.set({ |  | ||||||
|             quality: input |  | ||||||
|           }); |           }); | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
| @ -5843,7 +5855,7 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|     // Sprite (for icons) |     // Sprite (for icons) | ||||||
|     loadSprite: true, |     loadSprite: true, | ||||||
|     iconPrefix: 'plyr', |     iconPrefix: 'plyr', | ||||||
|     iconUrl: 'https://cdn.plyr.io/3.3.12/plyr.svg', |     iconUrl: 'https://cdn.plyr.io/3.4.6/plyr.svg', | ||||||
|     // Blank video (used to prevent errors on source change) |     // Blank video (used to prevent errors on source change) | ||||||
|     blankVideo: 'https://cdn.plyr.io/static/blank.mp4', |     blankVideo: 'https://cdn.plyr.io/static/blank.mp4', | ||||||
|     // Quality default |     // Quality default | ||||||
| @ -6107,6 +6119,14 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   // ========================================================================== | ||||||
|  |   // Plyr states | ||||||
|  |   // ========================================================================== | ||||||
|  |   var pip = { | ||||||
|  |     active: 'picture-in-picture', | ||||||
|  |     inactive: 'inline' | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   // ========================================================================== |   // ========================================================================== | ||||||
|   // Plyr supported types and providers |   // Plyr supported types and providers | ||||||
|   // ========================================================================== |   // ========================================================================== | ||||||
| @ -10119,17 +10139,26 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         var quality = [!is$1.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is$1.number); |         var quality = [!is$1.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is$1.number); | ||||||
|  |         var updateStorage = true; | ||||||
|  |  | ||||||
|         if (!options.includes(quality)) { |         if (!options.includes(quality)) { | ||||||
|           var value = closest(options, quality); |           var value = closest(options, quality); | ||||||
|           this.debug.warn("Unsupported quality option: ".concat(quality, ", using ").concat(value, " instead")); |           this.debug.warn("Unsupported quality option: ".concat(quality, ", using ").concat(value, " instead")); | ||||||
|           quality = value; |           quality = value; // Don't update storage if quality is not supported | ||||||
|  |  | ||||||
|  |           updateStorage = false; | ||||||
|         } // Update config |         } // Update config | ||||||
|  |  | ||||||
|  |  | ||||||
|         config.selected = quality; // Set quality |         config.selected = quality; // Set quality | ||||||
|  |  | ||||||
|         this.media.quality = quality; |         this.media.quality = quality; // Save to storage | ||||||
|  |  | ||||||
|  |         if (updateStorage) { | ||||||
|  |           this.storage.set({ | ||||||
|  |             quality: quality | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       /** |       /** | ||||||
|        * Get current quality level |        * Get current quality level | ||||||
| @ -10308,19 +10337,27 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|     }, { |     }, { | ||||||
|       key: "pip", |       key: "pip", | ||||||
|       set: function set(input) { |       set: function set(input) { | ||||||
|         var states = { |         // Bail if no support | ||||||
|           pip: 'picture-in-picture', |  | ||||||
|           inline: 'inline' |  | ||||||
|         }; // Bail if no support |  | ||||||
|  |  | ||||||
|         if (!support.pip) { |         if (!support.pip) { | ||||||
|           return; |           return; | ||||||
|         } // Toggle based on current state if not passed |         } // Toggle based on current state if not passed | ||||||
|  |  | ||||||
|  |  | ||||||
|         var toggle = is$1.boolean(input) ? input : this.pip === states.inline; // Toggle based on current state |         var toggle = is$1.boolean(input) ? input : !this.pip; // Toggle based on current state | ||||||
|  |         // Safari | ||||||
|  |  | ||||||
|         this.media.webkitSetPresentationMode(toggle ? states.pip : states.inline); |         if (is$1.function(this.media.webkitSetPresentationMode)) { | ||||||
|  |           this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive); | ||||||
|  |         } // Chrome | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         if (is$1.function(this.media.requestPictureInPicture)) { | ||||||
|  |           if (!this.pip && toggle) { | ||||||
|  |             this.media.requestPictureInPicture(); | ||||||
|  |           } else if (this.pip && !toggle) { | ||||||
|  |             document.exitPictureInPicture(); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       /** |       /** | ||||||
|        * Get the current picture-in-picture state |        * Get the current picture-in-picture state | ||||||
| @ -10329,9 +10366,15 @@ typeof navigator === "object" && (function (global, factory) { | |||||||
|       get: function get() { |       get: function get() { | ||||||
|         if (!support.pip) { |         if (!support.pip) { | ||||||
|           return null; |           return null; | ||||||
|         } |         } // Safari | ||||||
|  |  | ||||||
|         return this.media.webkitPresentationMode; |  | ||||||
|  |         if (!is$1.empty(this.media.webkitPresentationMode)) { | ||||||
|  |           return this.media.webkitPresentationMode === pip.active; | ||||||
|  |         } // Chrome | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         return this.media === document.pictureInPictureElement; | ||||||
|       } |       } | ||||||
|     }], [{ |     }], [{ | ||||||
|       key: "supported", |       key: "supported", | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dist/plyr.polyfilled.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.polyfilled.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/plyr.polyfilled.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.polyfilled.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/plyr.polyfilled.min.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.polyfilled.min.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -311,10 +311,10 @@ if (Object.keys(credentials).includes('aws') && Object.keys(credentials).include | |||||||
|         const files = ['plyr.js', 'plyr.polyfilled.js', 'config/defaults.js']; |         const files = ['plyr.js', 'plyr.polyfilled.js', 'config/defaults.js']; | ||||||
|  |  | ||||||
|         return gulp |         return gulp | ||||||
|             .src(files.map(file => path.join(root, `src/js/${file}`))) |             .src(files.map(file => path.join(root, `src/js/${file}`)), { base: '.' }) | ||||||
|             .pipe(replace(semver, `v${version}`)) |             .pipe(replace(semver, `v${version}`)) | ||||||
|             .pipe(replace(cdnpath, `${aws.cdn.domain}/${version}/`)) |             .pipe(replace(cdnpath, `${aws.cdn.domain}/${version}/`)) | ||||||
|             .pipe(gulp.dest(path.join(root, 'src/js/'))); |             .pipe(gulp.dest('./')); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     // Publish version to CDN bucket |     // Publish version to CDN bucket | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|     "name": "plyr", |     "name": "plyr", | ||||||
|     "version": "3.4.5", |     "version": "3.4.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": "https://plyr.io", |     "homepage": "https://plyr.io", | ||||||
|     "author": "Sam Potts <sam@potts.es>", |     "author": "Sam Potts <sam@potts.es>", | ||||||
|  | |||||||
| @ -132,13 +132,13 @@ See [initialising](#initialising) for more information on advanced setups. | |||||||
| You can use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript. There's 2 versions; one with and one without [polyfills](#polyfills). My recommendation would be to manage polyfills seperately as part of your application but to make life easier you can use the polyfilled build. | You can use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript. There's 2 versions; one with and one without [polyfills](#polyfills). My recommendation would be to manage polyfills seperately as part of your application but to make life easier you can use the polyfilled build. | ||||||
|  |  | ||||||
| ```html | ```html | ||||||
| <script src="https://cdn.plyr.io/3.4.5/plyr.js"></script> | <script src="https://cdn.plyr.io/3.4.6/plyr.js"></script> | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ...or... | ...or... | ||||||
|  |  | ||||||
| ```html | ```html | ||||||
| <script src="https://cdn.plyr.io/3.4.5/plyr.polyfilled.js"></script> | <script src="https://cdn.plyr.io/3.4.6/plyr.polyfilled.js"></script> | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### CSS | ### CSS | ||||||
| @ -152,13 +152,13 @@ Include the `plyr.css` stylsheet into your `<head>` | |||||||
| If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the following: | If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the following: | ||||||
|  |  | ||||||
| ```html | ```html | ||||||
| <link rel="stylesheet" href="https://cdn.plyr.io/3.4.5/plyr.css"> | <link rel="stylesheet" href="https://cdn.plyr.io/3.4.6/plyr.css"> | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### SVG Sprite | ### SVG Sprite | ||||||
|  |  | ||||||
| The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For | The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For | ||||||
| reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/3.4.5/plyr.svg`. | reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/3.4.6/plyr.svg`. | ||||||
|  |  | ||||||
| ## Ads | ## Ads | ||||||
|  |  | ||||||
|  | |||||||
| @ -60,7 +60,7 @@ const defaults = { | |||||||
|     // Sprite (for icons) |     // Sprite (for icons) | ||||||
|     loadSprite: true, |     loadSprite: true, | ||||||
|     iconPrefix: 'plyr', |     iconPrefix: 'plyr', | ||||||
|     iconUrl: 'https://cdn.plyr.io/3.3.12/plyr.svg', |     iconUrl: 'https://cdn.plyr.io/3.4.6/plyr.svg', | ||||||
|  |  | ||||||
|     // Blank video (used to prevent errors on source change) |     // Blank video (used to prevent errors on source change) | ||||||
|     blankVideo: 'https://cdn.plyr.io/static/blank.mp4', |     blankVideo: 'https://cdn.plyr.io/static/blank.mp4', | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| // ========================================================================== | // ========================================================================== | ||||||
| // Plyr | // Plyr | ||||||
| // plyr.js v3.4.5 | // plyr.js v3.4.6 | ||||||
| // https://github.com/sampotts/plyr | // https://github.com/sampotts/plyr | ||||||
| // License: The MIT License (MIT) | // License: The MIT License (MIT) | ||||||
| // ========================================================================== | // ========================================================================== | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| // ========================================================================== | // ========================================================================== | ||||||
| // Plyr Polyfilled Build | // Plyr Polyfilled Build | ||||||
| // plyr.js v3.4.5 | // plyr.js v3.4.6 | ||||||
| // https://github.com/sampotts/plyr | // https://github.com/sampotts/plyr | ||||||
| // License: The MIT License (MIT) | // License: The MIT License (MIT) | ||||||
| // ========================================================================== | // ========================================================================== | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user