diff --git a/dist/plyr.js b/dist/plyr.js index 29264940..b694b070 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -95,7 +95,11 @@ var supportsPassiveListeners = function () { function toggleListener(elements, event, callback) { var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + + var _this = this; + var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; + var once = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; // Bail if no elemetns, event, or callback if (is.empty(elements) || is.empty(event) || !is.function(callback)) { @@ -133,6 +137,11 @@ function toggleListener(elements, event, callback) { // If a single node is passed, bind the event listener events.forEach(function (type) { + if (_this && _this.eventListeners && toggle && !once) { + // Cache event listener + _this.eventListeners.push({ elements: elements, type: type, callback: callback, options: options }); + } + elements[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options); }); } @@ -144,7 +153,7 @@ function on(element) { var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - toggleListener(element, events, callback, true, passive, capture); + toggleListener.call(this, element, events, callback, true, passive, capture); } // Unbind event handler @@ -154,11 +163,31 @@ function off(element) { var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - toggleListener(element, events, callback, false, passive, capture); + toggleListener.call(this, element, events, callback, false, passive, capture); +} + +// Bind once-only event handler +function once(element) { + var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + var callback = arguments[2]; + var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + function onceCallback() { + off(element, events, onceCallback, passive, capture); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + } + + toggleListener(element, events, onceCallback, true, passive, capture, true); } // Trigger event -function trigger(element) { +function triggerEvent(element) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; @@ -180,6 +209,22 @@ function trigger(element) { element.dispatchEvent(event); } +// Unbind all cached event listeners +function unbindListeners() { + if (this && this.eventListeners) { + this.eventListeners.forEach(function (item) { + var elements = item.elements, + type = item.type, + callback = item.callback, + options = item.options; + + elements.removeEventListener(type, callback, options); + }); + + this.eventListeners = []; + } +} + var classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -744,67 +789,29 @@ var support = { // ========================================================================== -// Remove duplicates in an array -function dedupe(array) { - if (!is.array(array)) { - return array; - } - - return array.filter(function (item, index) { - return array.indexOf(item) === index; - }); -} - -// Get the closest value in an array -function closest(array, value) { - if (!is.array(array) || !array.length) { - return null; - } - - return array.reduce(function (prev, curr) { - return Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev; - }); -} - -// ========================================================================== - var html5 = { getSources: function getSources() { + var _this = this; + if (!this.isHTML5) { - return null; + return []; } - return this.media.querySelectorAll('source'); + var sources = Array.from(this.media.querySelectorAll('source')); + + // Filter out unsupported sources + return sources.filter(function (source) { + return support.mime.call(_this, source.getAttribute('type')); + }); }, // Get quality levels getQualityOptions: function getQualityOptions() { - if (!this.isHTML5) { - return null; - } - - // Get sources - var sources = html5.getSources.call(this); - - if (is.empty(sources)) { - return null; - } - - // Get with size attribute - var sizes = Array.from(sources).filter(function (source) { - return !is.empty(source.getAttribute('size')); - }); - - // If none, bail - if (is.empty(sizes)) { - return null; - } - - // Reduce to unique list - return dedupe(sizes.map(function (source) { + // Get sizes from elements + return html5.getSources.call(this).map(function (source) { return Number(source.getAttribute('size')); - })); + }).filter(Boolean); }, extend: function extend() { if (!this.isHTML5) { @@ -815,71 +822,48 @@ var html5 = { // Quality Object.defineProperty(player.media, 'quality', { - get: function get() { + get: function get$$1() { // Get sources var sources = html5.getSources.call(player); - if (is.empty(sources)) { - return null; - } - - var matches$$1 = Array.from(sources).filter(function (source) { + var _sources$filter = sources.filter(function (source) { return source.getAttribute('src') === player.source; - }); + }), + _sources$filter2 = slicedToArray(_sources$filter, 1), + source = _sources$filter2[0]; - if (is.empty(matches$$1)) { - return null; - } + // Return size, if match is found - return Number(matches$$1[0].getAttribute('size')); + + return source && Number(source.getAttribute('size')); }, - set: function set(input) { + set: function set$$1(input) { // Get sources var sources = html5.getSources.call(player); - if (is.empty(sources)) { - return; - } - - // Get matches for requested size - var matches$$1 = Array.from(sources).filter(function (source) { + // Get first match for requested size + var source = sources.find(function (source) { return Number(source.getAttribute('size')) === input; }); - // No matches for requested size - if (is.empty(matches$$1)) { + // No matching source found + if (!source) { return; } - // Get supported sources - var supported = matches$$1.filter(function (source) { - return support.mime.call(player, source.getAttribute('type')); - }); - - // No supported sources - if (is.empty(supported)) { - return; - } - - // Trigger change event - trigger.call(player, player.media, 'qualityrequested', false, { - quality: input - }); - // Get current state var currentTime = player.currentTime, playing = player.playing; // Set new source - player.media.src = supported[0].getAttribute('src'); + player.media.src = source.getAttribute('src'); // Restore time var onLoadedMetaData = function onLoadedMetaData() { player.currentTime = currentTime; - player.off('loadedmetadata', onLoadedMetaData); }; - player.on('loadedmetadata', onLoadedMetaData); + player.once('loadedmetadata', onLoadedMetaData); // Load new source player.media.load(); @@ -890,7 +874,7 @@ var html5 = { } // Trigger change event - trigger.call(player, player.media, 'qualitychange', false, { + triggerEvent.call(player, player.media, 'qualitychange', false, { quality: input }); } @@ -906,7 +890,7 @@ var html5 = { } // Remove child sources - removeElement(html5.getSources()); + removeElement(html5.getSources.call(this)); // Set blank video src attribute // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error @@ -1103,6 +1087,30 @@ var i18n = { // ========================================================================== +// Remove duplicates in an array +function dedupe(array) { + if (!is.array(array)) { + return array; + } + + return array.filter(function (item, index) { + return array.indexOf(item) === index; + }); +} + +// Get the closest value in an array +function closest(array, value) { + if (!is.array(array) || !array.length) { + return null; + } + + return array.reduce(function (prev, curr) { + return Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev; + }); +} + +// ========================================================================== + var Storage = function () { function Storage(player) { classCallCheck(this, Storage); @@ -1916,7 +1924,6 @@ var controls = { // Set the quality menu - // TODO: Vimeo support setQualityMenu: function setQualityMenu(options) { var _this3 = this; @@ -1928,9 +1935,9 @@ var controls = { var type = 'quality'; var list = this.elements.settings.panes.quality.querySelector('ul'); - // Set options if passed and filter based on config + // Set options if passed and filter based on uniqueness and config if (is.array(options)) { - this.options.quality = options.filter(function (quality) { + this.options.quality = dedupe(options).filter(function (quality) { return _this3.config.quality.options.includes(quality); }); } @@ -2351,13 +2358,10 @@ var controls = { // Revert back to auto container.style.width = ''; container.style.height = ''; - - // Only listen once - off(container, transitionEndEvent, restore); }; // Listen for the transition finishing and restore auto height/width - on(container, transitionEndEvent, restore); + once(container, transitionEndEvent, restore); // Set dimensions to target container.style.width = size.width + 'px'; @@ -2902,7 +2906,7 @@ var captions = { // Watch changes to textTracks and update captions menu if (this.isHTML5) { var trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack'; - on(this.media.textTracks, trackEvents, captions.update.bind(this)); + on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this)); } // Update available languages in list next tick (the event must not be triggered before the listeners) @@ -2933,7 +2937,7 @@ var captions = { track.mode = 'hidden'; // Add event listener for cue changes - on(track, 'cuechange', function () { + on.call(_this, track, 'cuechange', function () { return captions.updateCues.call(_this); }); }); @@ -3004,7 +3008,7 @@ var captions = { } // Trigger event - trigger.call(this, this.media, 'languagechange'); + triggerEvent.call(this, this.media, 'languagechange'); } if (this.isHTML5 && this.isVideo) { @@ -3140,7 +3144,7 @@ var captions = { this.elements.captions.appendChild(caption); // Trigger event - trigger.call(this, this.media, 'cuechange'); + triggerEvent.call(this, this.media, 'cuechange'); } } }; @@ -3566,7 +3570,7 @@ function onChange() { } // Trigger an event - trigger.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true); + triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true); // Trap focus in container if (!browser.isIos) { @@ -3615,13 +3619,13 @@ var Fullscreen = function () { // Register event listeners // Handle event (incase user presses escape etc) - on(document, this.prefix === 'ms' ? 'MSFullscreenChange' : this.prefix + 'fullscreenchange', function () { + on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : this.prefix + 'fullscreenchange', function () { // TODO: Filter for target?? onChange.call(_this); }); // Fullscreen toggle on double click - on(this.player.elements.container, 'dblclick', function (event) { + on.call(this.player, this.player.elements.container, 'dblclick', function (event) { // Ignore double click in controls if (is.element(_this.player.elements.controls) && _this.player.elements.controls.contains(event.target)) { return; @@ -3905,7 +3909,7 @@ var ui = { // Ready event at end of execution stack setTimeout(function () { - trigger.call(_this, _this.media, 'ready'); + triggerEvent.call(_this, _this.media, 'ready'); }, 0); // Set the title @@ -4230,9 +4234,6 @@ var Listeners = function () { // Add touch class toggleClass(this.player.elements.container, this.player.config.classNames.isTouch, true); - - // Clean up - off(document.body, 'touchstart', this.firstTouch); } // Global window & document listeners @@ -4244,14 +4245,14 @@ var Listeners = function () { // Keyboard shortcuts if (this.player.config.keyboard.global) { - toggleListener(window, 'keydown keyup', this.handleKey, toggle, false); + toggleListener.call(this.player, window, 'keydown keyup', this.handleKey, toggle, false); } // Click anywhere closes menu - toggleListener(document.body, 'click', this.toggleMenu, toggle); + toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle); // Detect touch by events - on(document.body, 'touchstart', this.firstTouch); + once(document.body, 'touchstart', this.firstTouch); } // Container listeners @@ -4263,17 +4264,16 @@ var Listeners = function () { // Keyboard shortcuts if (!this.player.config.keyboard.global && this.player.config.keyboard.focused) { - on(this.player.elements.container, 'keydown keyup', this.handleKey, false); + on.call(this.player, this.player.elements.container, 'keydown keyup', this.handleKey, false); } // Detect tab focus // Remove class on blur/focusout - on(this.player.elements.container, 'focusout', function (event) { + on.call(this.player, this.player.elements.container, 'focusout', function (event) { toggleClass(event.target, _this2.player.config.classNames.tabFocus, false); }); - // Add classname to tabbed elements - on(this.player.elements.container, 'keydown', function (event) { + on.call(this.player, this.player.elements.container, 'keydown', function (event) { if (event.keyCode !== 9) { return; } @@ -4286,7 +4286,7 @@ var Listeners = function () { }); // Toggle controls on mouse events and entering fullscreen - on(this.player.elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { + on.call(this.player, this.player.elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) { var controls$$1 = _this2.player.elements.controls; // Remove button states for fullscreen @@ -4324,24 +4324,24 @@ var Listeners = function () { var _this3 = this; // Time change on media - on(this.player.media, 'timeupdate seeking seeked', function (event) { + on.call(this.player, this.player.media, 'timeupdate seeking seeked', function (event) { return controls.timeUpdate.call(_this3.player, event); }); // Display duration - on(this.player.media, 'durationchange loadeddata loadedmetadata', function (event) { + on.call(this.player, this.player.media, 'durationchange loadeddata loadedmetadata', function (event) { return controls.durationUpdate.call(_this3.player, event); }); // Check for audio tracks on load // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point - on(this.player.media, 'loadeddata canplay', function () { + on.call(this.player, this.player.media, 'canplay', function () { toggleHidden(_this3.player.elements.volume, !_this3.player.hasAudio); toggleHidden(_this3.player.elements.buttons.mute, !_this3.player.hasAudio); }); // Handle the media finishing - on(this.player.media, 'ended', function () { + on.call(this.player, this.player.media, 'ended', function () { // Show poster on end if (_this3.player.isHTML5 && _this3.player.isVideo && _this3.player.config.resetOnEnd) { // Restart @@ -4350,28 +4350,28 @@ var Listeners = function () { }); // Check for buffer progress - on(this.player.media, 'progress playing seeking seeked', function (event) { + on.call(this.player, this.player.media, 'progress playing seeking seeked', function (event) { return controls.updateProgress.call(_this3.player, event); }); // Handle volume changes - on(this.player.media, 'volumechange', function (event) { + on.call(this.player, this.player.media, 'volumechange', function (event) { return controls.updateVolume.call(_this3.player, event); }); // Handle play/pause - on(this.player.media, 'playing play pause ended emptied timeupdate', function (event) { + on.call(this.player, this.player.media, 'playing play pause ended emptied timeupdate', function (event) { return ui.checkPlaying.call(_this3.player, event); }); // Loading state - on(this.player.media, 'waiting canplay seeked playing', function (event) { + on.call(this.player, this.player.media, 'waiting canplay seeked playing', function (event) { return ui.checkLoading.call(_this3.player, event); }); // If autoplay, then load advertisement if required // TODO: Show some sort of loading state while the ad manager loads else there's a delay before ad shows - on(this.player.media, 'playing', function () { + on.call(this.player, this.player.media, 'playing', function () { if (!_this3.player.ads) { return; } @@ -4398,7 +4398,7 @@ var Listeners = function () { } // On click play, pause ore restart - on(wrapper, 'click', function () { + on.call(this.player, wrapper, 'click', function () { // Touch devices will just show controls (if we're hiding controls) if (_this3.player.config.hideControls && _this3.player.touch && !_this3.player.paused) { return; @@ -4417,19 +4417,19 @@ var Listeners = function () { // Disable right click if (this.player.supported.ui && this.player.config.disableContextMenu) { - on(this.player.elements.wrapper, 'contextmenu', function (event) { + on.call(this.player, this.player.elements.wrapper, 'contextmenu', function (event) { event.preventDefault(); }, false); } // Volume change - on(this.player.media, 'volumechange', function () { + on.call(this.player, this.player.media, 'volumechange', function () { // Save to storage _this3.player.storage.set({ volume: _this3.player.volume, muted: _this3.player.muted }); }); // Speed change - on(this.player.media, 'ratechange', function () { + on.call(this.player, this.player.media, 'ratechange', function () { // Update UI controls.updateSetting.call(_this3.player, 'speed'); @@ -4438,19 +4438,19 @@ var Listeners = function () { }); // Quality request - on(this.player.media, 'qualityrequested', function (event) { + on.call(this.player, this.player.media, 'qualityrequested', function (event) { // Save to storage _this3.player.storage.set({ quality: event.detail.quality }); }); // Quality change - on(this.player.media, 'qualitychange', function (event) { + on.call(this.player, this.player.media, 'qualitychange', function (event) { // Update UI controls.updateSetting.call(_this3.player, 'quality', null, event.detail.quality); }); // Caption language change - on(this.player.media, 'languagechange', function () { + on.call(this.player, this.player.media, 'languagechange', function () { // Update UI controls.updateSetting.call(_this3.player, 'captions'); @@ -4459,7 +4459,7 @@ var Listeners = function () { }); // Captions toggle - on(this.player.media, 'captionsenabled captionsdisabled', function () { + on.call(this.player, this.player.media, 'captionsenabled captionsdisabled', function () { // Update UI controls.updateSetting.call(_this3.player, 'captions'); @@ -4469,7 +4469,7 @@ var Listeners = function () { // Proxy events to container // Bubble up key events for Edge - on(this.player.media, this.player.config.events.concat(['keyup', 'keydown']).join(' '), function (event) { + on.call(this.player, this.player.media, this.player.config.events.concat(['keyup', 'keydown']).join(' '), function (event) { var _event$detail = event.detail, detail = _event$detail === undefined ? {} : _event$detail; @@ -4479,7 +4479,7 @@ var Listeners = function () { detail = _this3.player.media.error; } - trigger.call(_this3.player, _this3.player.elements.container, event.type, true, detail); + triggerEvent.call(_this3.player, _this3.player.elements.container, event.type, true, detail); }); } @@ -4517,7 +4517,7 @@ var Listeners = function () { var customHandler = _this4.player.config.listeners[customHandlerKey]; var hasCustomHandler = is.function(customHandler); - on(element, type, function (event) { + on.call(_this4.player, element, type, function (event) { return proxy(event, defaultHandler, customHandlerKey); }, passive && !hasCustomHandler); }; @@ -4752,14 +4752,6 @@ var Listeners = function () { } }, 'volume', false); } - - // Reset on destroy - - }, { - key: 'clear', - value: function clear() { - this.global(false); - } }]); return Listeners; }(); @@ -5107,7 +5099,7 @@ function assurePlaybackState(play) { } if (this.media.paused === play) { this.media.paused = !play; - trigger.call(this, this.media, play ? 'play' : 'pause'); + triggerEvent.call(this, this.media, play ? 'play' : 'pause'); } } @@ -5261,7 +5253,7 @@ var vimeo = { // Set seeking state and trigger event media.seeking = true; - trigger.call(player, media, 'seeking'); + triggerEvent.call(player, media, 'seeking'); // If paused, mute until seek is complete Promise.resolve(restorePause && embed.setVolume(0)) @@ -5291,7 +5283,7 @@ var vimeo = { set: function set(input) { player.embed.setPlaybackRate(input).then(function () { speed = input; - trigger.call(player, player.media, 'ratechange'); + triggerEvent.call(player, player.media, 'ratechange'); }).catch(function (error) { // Hide menu item (and menu if empty) if (error.name === 'Error') { @@ -5311,7 +5303,7 @@ var vimeo = { set: function set(input) { player.embed.setVolume(input).then(function () { volume = input; - trigger.call(player, player.media, 'volumechange'); + triggerEvent.call(player, player.media, 'volumechange'); }); } }); @@ -5328,7 +5320,7 @@ var vimeo = { player.embed.setVolume(toggle ? 0 : player.config.volume).then(function () { muted = toggle; - trigger.call(player, player.media, 'volumechange'); + triggerEvent.call(player, player.media, 'volumechange'); }); } }); @@ -5390,13 +5382,13 @@ var vimeo = { // Get current time player.embed.getCurrentTime().then(function (value) { currentTime = value; - trigger.call(player, player.media, 'timeupdate'); + triggerEvent.call(player, player.media, 'timeupdate'); }); // Get duration player.embed.getDuration().then(function (value) { player.media.duration = value; - trigger.call(player, player.media, 'durationchange'); + triggerEvent.call(player, player.media, 'durationchange'); }); // Get captions @@ -5420,7 +5412,7 @@ var vimeo = { player.embed.getPaused().then(function (paused) { assurePlaybackState.call(player, !paused); if (!paused) { - trigger.call(player, player.media, 'playing'); + triggerEvent.call(player, player.media, 'playing'); } }); @@ -5435,7 +5427,7 @@ var vimeo = { player.embed.on('play', function () { assurePlaybackState.call(player, true); - trigger.call(player, player.media, 'playing'); + triggerEvent.call(player, player.media, 'playing'); }); player.embed.on('pause', function () { @@ -5445,16 +5437,16 @@ var vimeo = { player.embed.on('timeupdate', function (data) { player.media.seeking = false; currentTime = data.seconds; - trigger.call(player, player.media, 'timeupdate'); + triggerEvent.call(player, player.media, 'timeupdate'); }); player.embed.on('progress', function (data) { player.media.buffered = data.percent; - trigger.call(player, player.media, 'progress'); + triggerEvent.call(player, player.media, 'progress'); // Check all loaded if (parseInt(data.percent, 10) === 1) { - trigger.call(player, player.media, 'canplaythrough'); + triggerEvent.call(player, player.media, 'canplaythrough'); } // Get duration as if we do it before load, it gives an incorrect value @@ -5462,24 +5454,24 @@ var vimeo = { player.embed.getDuration().then(function (value) { if (value !== player.media.duration) { player.media.duration = value; - trigger.call(player, player.media, 'durationchange'); + triggerEvent.call(player, player.media, 'durationchange'); } }); }); player.embed.on('seeked', function () { player.media.seeking = false; - trigger.call(player, player.media, 'seeked'); + triggerEvent.call(player, player.media, 'seeked'); }); player.embed.on('ended', function () { player.media.paused = true; - trigger.call(player, player.media, 'ended'); + triggerEvent.call(player, player.media, 'ended'); }); player.embed.on('error', function (detail) { player.media.error = detail; - trigger.call(player, player.media, 'error'); + triggerEvent.call(player, player.media, 'error'); }); // Rebuild UI @@ -5503,52 +5495,29 @@ function parseId$1(url) { // Standardise YouTube quality unit function mapQualityUnit(input) { - switch (input) { - case 'hd2160': - return 2160; + var qualities = { + hd2160: 2160, + hd1440: 1440, + hd1080: 1080, + hd720: 720, + large: 480, + medium: 360, + small: 240, + tiny: 144 + }; - case 2160: - return 'hd2160'; + var entry = Object.entries(qualities).find(function (entry) { + return entry.includes(input); + }); - case 'hd1440': - return 1440; - - case 1440: - return 'hd1440'; - - case 'hd1080': - return 1080; - - case 1080: - return 'hd1080'; - - case 'hd720': - return 720; - - case 720: - return 'hd720'; - - case 'large': - return 480; - - case 480: - return 'large'; - - case 'medium': - return 360; - - case 360: - return 'medium'; - - case 'small': - return 240; - - case 240: - return 'small'; - - default: - return 'default'; + if (entry) { + // Get the match corresponding to the input + return entry.find(function (value) { + return value !== input; + }); } + + return 'default'; } function mapQualityUnits(levels) { @@ -5568,7 +5537,7 @@ function assurePlaybackState$1(play) { } if (this.media.paused === play) { this.media.paused = !play; - trigger.call(this, this.media, play ? 'play' : 'pause'); + triggerEvent.call(this, this.media, play ? 'play' : 'pause'); } } @@ -5756,10 +5725,10 @@ var youtube = { player.media.error = detail; - trigger.call(player, player.media, 'error'); + triggerEvent.call(player, player.media, 'error'); }, onPlaybackQualityChange: function onPlaybackQualityChange() { - trigger.call(player, player.media, 'qualitychange', false, { + triggerEvent.call(player, player.media, 'qualitychange', false, { quality: player.media.quality }); }, @@ -5770,7 +5739,7 @@ var youtube = { // Get current speed player.media.playbackRate = instance.getPlaybackRate(); - trigger.call(player, player.media, 'ratechange'); + triggerEvent.call(player, player.media, 'ratechange'); }, onReady: function onReady(event) { // Get the instance @@ -5811,7 +5780,7 @@ var youtube = { // Set seeking state and trigger event player.media.seeking = true; - trigger.call(player, player.media, 'seeking'); + triggerEvent.call(player, player.media, 'seeking'); // Seek after events sent instance.seekTo(time); @@ -5834,15 +5803,7 @@ var youtube = { return mapQualityUnit(instance.getPlaybackQuality()); }, set: function set(input) { - var quality = input; - - // Set via API - instance.setPlaybackQuality(mapQualityUnit(quality)); - - // Trigger request event - trigger.call(player, player.media, 'qualityrequested', false, { - quality: quality - }); + instance.setPlaybackQuality(mapQualityUnit(input)); } }); @@ -5856,7 +5817,7 @@ var youtube = { set: function set(input) { volume = input; instance.setVolume(volume * 100); - trigger.call(player, player.media, 'volumechange'); + triggerEvent.call(player, player.media, 'volumechange'); } }); @@ -5871,7 +5832,7 @@ var youtube = { var toggle = is.boolean(input) ? input : muted; muted = toggle; instance[toggle ? 'mute' : 'unMute'](); - trigger.call(player, player.media, 'volumechange'); + triggerEvent.call(player, player.media, 'volumechange'); } }); @@ -5897,8 +5858,8 @@ var youtube = { player.media.setAttribute('tabindex', -1); } - trigger.call(player, player.media, 'timeupdate'); - trigger.call(player, player.media, 'durationchange'); + triggerEvent.call(player, player.media, 'timeupdate'); + triggerEvent.call(player, player.media, 'durationchange'); // Reset timer clearInterval(player.timers.buffering); @@ -5910,7 +5871,7 @@ var youtube = { // Trigger progress only when we actually buffer something if (player.media.lastBuffered === null || player.media.lastBuffered < player.media.buffered) { - trigger.call(player, player.media, 'progress'); + triggerEvent.call(player, player.media, 'progress'); } // Set last buffer point @@ -5921,7 +5882,7 @@ var youtube = { clearInterval(player.timers.buffering); // Trigger event - trigger.call(player, player.media, 'canplaythrough'); + triggerEvent.call(player, player.media, 'canplaythrough'); } }, 200); @@ -5942,7 +5903,7 @@ var youtube = { if (seeked) { // Unset seeking and fire seeked event player.media.seeking = false; - trigger.call(player, player.media, 'seeked'); + triggerEvent.call(player, player.media, 'seeked'); } // Handle events @@ -5955,11 +5916,11 @@ var youtube = { switch (event.data) { case -1: // Update scrubber - trigger.call(player, player.media, 'timeupdate'); + triggerEvent.call(player, player.media, 'timeupdate'); // Get loaded % from YouTube player.media.buffered = instance.getVideoLoadedFraction(); - trigger.call(player, player.media, 'progress'); + triggerEvent.call(player, player.media, 'progress'); break; @@ -5972,7 +5933,7 @@ var youtube = { instance.stopVideo(); instance.playVideo(); } else { - trigger.call(player, player.media, 'ended'); + triggerEvent.call(player, player.media, 'ended'); } break; @@ -5984,11 +5945,11 @@ var youtube = { } else { assurePlaybackState$1.call(player, true); - trigger.call(player, player.media, 'playing'); + triggerEvent.call(player, player.media, 'playing'); // Poll to get playback progress player.timers.playing = setInterval(function () { - trigger.call(player, player.media, 'timeupdate'); + triggerEvent.call(player, player.media, 'timeupdate'); }, 50); // Check duration again due to YouTube bug @@ -5996,7 +5957,7 @@ var youtube = { // https://code.google.com/p/gdata-issues/issues/detail?id=8690 if (player.media.duration !== instance.getDuration()) { player.media.duration = instance.getDuration(); - trigger.call(player, player.media, 'durationchange'); + triggerEvent.call(player, player.media, 'durationchange'); } // Get quality @@ -6018,7 +5979,7 @@ var youtube = { break; } - trigger.call(player, player.elements.container, 'statechange', false, { + triggerEvent.call(player, player.elements.container, 'statechange', false, { code: event.data }); } @@ -6375,7 +6336,7 @@ var Ads = function () { // Proxy event var dispatchEvent = function dispatchEvent(type) { var event = 'ads' + type.replace(/_/g, '').toLowerCase(); - trigger.call(_this7.player, _this7.player.media, event); + triggerEvent.call(_this7.player, _this7.player.media, event); }; switch (event.type) { @@ -6664,7 +6625,7 @@ var Ads = function () { }, { key: 'trigger', - value: function trigger$$1(event) { + value: function trigger(event) { var _this11 = this; for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { @@ -7051,7 +7012,7 @@ var Plyr = function () { this.elements.container.className = ''; // Get attributes from URL and set config - if (!url.searchParams) { + if (url.searchParams.length) { var truthy = ['1', 'true']; if (truthy.includes(url.searchParams.get('autoplay'))) { @@ -7126,6 +7087,8 @@ var Plyr = function () { return; } + this.eventListeners = []; + // Create listeners this.listeners = new Listeners(this); @@ -7152,7 +7115,7 @@ var Plyr = function () { // Listen for events if debugging if (this.config.debug) { - on(this.elements.container, this.config.events.join(' '), function (event) { + on.call(this, this.elements.container, this.config.events.join(' '), function (event) { _this.debug.log('event: ' + event.type); }); } @@ -7351,7 +7314,7 @@ var Plyr = function () { // Update state and trigger event if (active !== this.captions.active) { this.captions.active = active; - trigger.call(this, this.media, this.captions.active ? 'captionsenabled' : 'captionsdisabled'); + triggerEvent.call(this, this.media, this.captions.active ? 'captionsenabled' : 'captionsdisabled'); } } @@ -7401,7 +7364,7 @@ var Plyr = function () { // Trigger event on change if (hiding !== isHidden) { var eventName = hiding ? 'controlshidden' : 'controlsshown'; - trigger.call(this, this.media, eventName); + triggerEvent.call(this, this.media, eventName); } return !hiding; } @@ -7417,9 +7380,19 @@ var Plyr = function () { }, { key: 'on', value: function on$$1(event, callback) { - on(this.elements.container, event, callback); + on.call(this, this.elements.container, event, callback); } + /** + * Add event listeners once + * @param {string} event - Event type + * @param {function} callback - Callback for when event occurs + */ + }, { + key: 'once', + value: function once$$1(event, callback) { + once(this.elements.container, event, callback); + } /** * Remove event listeners * @param {string} event - Event type @@ -7480,13 +7453,13 @@ var Plyr = function () { } } else { // Unbind listeners - _this2.listeners.clear(); + unbindListeners.call(_this2); // Replace the container with the original element provided replaceElement(_this2.elements.original, _this2.elements.container); // Event - trigger.call(_this2, _this2.elements.original, 'destroyed', true); + triggerEvent.call(_this2, _this2.elements.original, 'destroyed', true); // Callback if (is.function(callback)) { @@ -7878,36 +7851,26 @@ var Plyr = function () { }, { key: 'quality', set: function set$$1(input) { - var quality = null; + var config = this.config.quality; + var options = this.options.quality; - if (!is.empty(input)) { - quality = Number(input); - } - - if (!is.number(quality)) { - quality = this.storage.get('quality'); - } - - if (!is.number(quality)) { - quality = this.config.quality.selected; - } - - if (!is.number(quality)) { - quality = this.config.quality.default; - } - - if (!this.options.quality.length) { + if (!options.length) { return; } - if (!this.options.quality.includes(quality)) { - var value = closest(this.options.quality, quality); + var quality = [!is.empty(input) && Number(input), this.storage.get('quality'), config.selected, config.default].find(is.number); + + if (!options.includes(quality)) { + var value = closest(options, quality); this.debug.warn('Unsupported quality option: ' + quality + ', using ' + value + ' instead'); quality = value; } + // Trigger request event + triggerEvent.call(this, this.media, 'qualityrequested', false, { quality: quality }); + // Update config - this.config.quality.selected = quality; + config.selected = quality; // Set quality this.media.quality = quality; @@ -8136,8 +8099,8 @@ var Plyr = function () { }, { key: 'loadSprite', - value: function loadSprite(url, id) { - return loadScript(url, id); + value: function loadSprite$$1(url, id) { + return loadSprite(url, id); } /** diff --git a/dist/plyr.js.map b/dist/plyr.js.map index 8fec6f6f..bf3d73ee 100644 --- a/dist/plyr.js.map +++ b/dist/plyr.js.map @@ -1 +1 @@ -{"version":3,"sources":["utils/is.js","utils/events.js","utils/elements.js","utils/animation.js","utils/browser.js","support.js","utils/arrays.js","html5.js","utils/objects.js","utils/strings.js","i18n.js","storage.js","utils/loadSprite.js","utils/time.js","controls.js","utils/fetch.js","utils/urls.js","captions.js","config/defaults.js","config/types.js","console.js","fullscreen.js","utils/loadImage.js","ui.js","listeners.js","../../node_modules/loadjs/dist/loadjs.umd.js","utils/loadScript.js","plugins/vimeo.js","plugins/youtube.js","media.js","plugins/ads.js","source.js","plyr.js"],"names":["getConstructor","input","constructor","instanceOf","Boolean","is","Object","Number","isNaN","String","Function","nullOrUndefined","Array","isArray","WeakMap","NodeList","Element","Text","Event","window","TextTrackCue","VTTCue","TextTrack","string","kind","test","array","nodeList","length","object","keys","supportsPassiveListeners","supported","options","defineProperty","addEventListener","removeEventListener","e","toggleListener","elements","event","callback","toggle","passive","capture","empty","function","from","forEach","element","Node","call","events","split","type","on","off","trigger","bubbles","detail","CustomEvent","assign","dispatchEvent","wrap","wrapper","targets","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","key","value","setAttribute","createElement","text","document","innerText","insertAfter","target","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","s","trim","className","replace","stripped","parts","start","charAt","class","id","toggleHidden","hidden","hide","boolean","hasAttribute","removeAttribute","toggleClass","force","method","classList","contains","hasClass","matches","prototype","match","querySelectorAll","includes","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getElements","container","getElement","querySelector","getFocusElement","focused","activeElement","body","trapFocus","focusable","first","last","trap","keyCode","shiftKey","focus","preventDefault","toggleState","pressed","getAttribute","state","transitionEndEvent","find","style","undefined","repaint","offsetHeight","browser","documentMode","documentElement","navigator","userAgent","platform","support","provider","playsinline","api","ui","canPlayInline","isIPhone","video","rangeInput","audio","webkitSetPresentationMode","WebKitPlaybackTargetAvailabilityEvent","media","isHTML5","canPlayType","isVideo","isAudio","range","matchMedia","dedupe","filter","item","indexOf","closest","reduce","prev","curr","Math","abs","html5","sources","getSources","sizes","source","map","player","mime","currentTime","playing","src","onLoadedMetaData","load","play","config","blankVideo","debug","log","cloneDeep","JSON","parse","stringify","getDeep","path","obj","extend","shift","generateId","prefix","floor","random","format","args","toString","i","getPercentage","current","max","toFixed","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toPascalCase","toCamelCase","slice","stripHTML","fragment","createDocumentFragment","innerHTML","firstChild","getHTML","i18n","seekTime","title","Storage","enabled","storage","store","localStorage","getItem","json","get","setItem","removeItem","loadSprite","url","hasId","isCached","exists","getElementById","update","data","insertAdjacentElement","useStorage","cached","content","then","result","catch","getHours","parseInt","getMinutes","getSeconds","formatTime","time","displayHours","inverted","number","hours","mins","secs","controls","URL","iconUrl","location","cors","host","isIE","svg4everybody","selectors","buttons","pause","restart","rewind","fastForward","mute","pip","airplay","settings","captions","fullscreen","progress","inputs","seek","volume","display","buffer","duration","seekTooltip","classNames","tooltip","error","warn","toggleNativeControls","namespace","getIconUrl","iconPath","iconPrefix","icon","createElementNS","use","setAttributeNS","attr","badge","menu","buttonType","button","label","labelPressed","iconPressed","control","createIcon","createLabel","push","updateRangeFill","suffix","list","checked","radio","faux","insertAdjacentHTML","forceHours","setRange","muted","setProgress","getElementsByTagName","nodeValue","buffered","isWebkit","setProperty","tooltips","percent","clientRect","getBoundingClientRect","visible","touch","width","pageX","left","parseFloat","updateTimeDisplay","invert","invertTime","seeking","updateProgress","hasDuration","displayDuration","paused","updateSeekTooltip","setting","tabs","panes","quality","toggleTab","checkMenu","getBadge","createBadge","sort","a","b","sorting","createMenuItem","getLabel","updateSetting","pane","currentTrack","default","tracks","getTracks","track","active","language","unshift","bind","speed","isVimeo","values","some","tab","form","show","isMenuItem","isButton","stopPropagation","open","clone","position","opacity","name","scrollWidth","height","scrollHeight","isTab","transitions","reducedMotion","size","getTabSize","restore","propertyName","createButton","createRange","createProgress","createTime","inner","home","back","setQualityMenu","getQualityOptions","setSpeedMenu","props","create","findElements","labels","join","fetch","responseType","Promise","resolve","reject","request","XMLHttpRequest","responseText","response","Error","statusText","send","parseUrl","safe","parser","href","buildUrlParams","params","URLSearchParams","set","isYouTube","textTracks","setCaptionsMenu","hostname","protocol","createObjectURL","blob","userLanguage","setLanguage","trackEvents","meta","mode","updateCues","trackRemoved","currentTrackNode","firstMatch","toggleCaptions","getCurrentTrack","embed","enableTextTrack","has","fromLanguage","sortIsDefault","sorted","cues","activeCues","cue","getCueAsHTML","cueText","changed","caption","defaults","providers","types","getProviderByUrl","youtube","vimeo","noop","Console","console","onChange","isIos","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","x","y","overflow","fallback","Fullscreen","property","native","iosNative","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","cancelFullScreen","exitFullscreen","action","enter","exit","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","prefixes","pre","loadImage","minWidth","image","Image","handler","onload","onerror","naturalWidth","uiSupported","listeners","inject","setup","loop","updateVolume","timeUpdate","checkPlaying","isTouch","ready","setTitle","poster","backgroundImage","setPoster","durationUpdate","isEmbed","iframe","enable","posterEnabled","loadPromise","togglePoster","stopped","toggleControls","loading","timers","setTimeout","hideControls","hover","Listeners","lastKey","handleKey","toggleMenu","firstTouch","code","which","repeat","altKey","ctrlKey","metaKey","seekByKey","editable","togglePlay","increaseVolume","decreaseVolume","forward","keyboard","global","tabFocus","delay","hasAudio","resetOnEnd","checkLoading","ads","initialized","managerPromise","clickToPlay","ended","disableContextMenu","concat","inputEvent","proxy","defaultHandler","customHandlerKey","customHandler","hasCustomHandler","returned","showHomeTab","showTab","currentTarget","eventType","done","seekTo","toggleInvert","noTransition","webkitDirectionInvertedFromDevice","step","direction","deltaY","deltaX","define","this","loadScript","parseId","regex","$2","getAspectRatio","getRatio","w","h","ratio","assurePlaybackState","hasPlayed","setAspectRatio","Vimeo","urls","sdk","padding","paddingBottom","offset","transform","autoplay","embedContainer","thumbnail_large","pathname","Player","autopause","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","selected","setPlaybackRate","setLoop","currentSrc","getVideoUrl","all","getVideoWidth","getVideoHeight","dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","strippedCues","getPaused","frame","seconds","build","mapQualityUnit","mapQualityUnits","levels","level","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","videoId","getVideoData","google","items","snippet","currentId","startsWith","posterSrc","backgroundSize","message","instance","playbackRate","getPlaybackRate","getTitle","playVideo","pauseVideo","stopVideo","getPlaybackQuality","setPlaybackQuality","getAvailablePlaybackRates","buffering","setInterval","getVideoLoadedFraction","lastBuffered","seeked","getAvailableQualityLevels","unMute","Ads","publisherId","manager","loader","cuePoints","safetyTimer","countdownTimer","ima","googleIMA","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","displayContainer","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","tagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","cuePoint","seekElement","cuePercentage","AdEvent","onAdEvent","ad","getAd","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","cancel","contentComplete","seekedTime","discardAdBreak","splice","resize","ViewMode","NORMAL","initialize","init","adError","zIndex","destroy","handlers","apply","Date","now","base","attribute","cancelRequests","check","crossorigin","addStyleHook","insertElements","Plyr","failed","jQuery","plyr","original","tagName","searchParams","truthy","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","clear","unload","inputIsValid","min","end","fauxDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","change","states","inline","webkitPresentationMode","t"],"mappings":"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","file":"plyr.js","sourcesContent":["// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\n\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst is = {\n object(input) {\n return getConstructor(input) === Object;\n },\n number(input) {\n return getConstructor(input) === Number && !Number.isNaN(input);\n },\n string(input) {\n return getConstructor(input) === String;\n },\n boolean(input) {\n return getConstructor(input) === Boolean;\n },\n function(input) {\n return getConstructor(input) === Function;\n },\n array(input) {\n return !is.nullOrUndefined(input) && Array.isArray(input);\n },\n weakMap(input) {\n return instanceOf(input, WeakMap);\n },\n nodeList(input) {\n return instanceOf(input, NodeList);\n },\n element(input) {\n return instanceOf(input, Element);\n },\n textNode(input) {\n return getConstructor(input) === Text;\n },\n event(input) {\n return instanceOf(input, Event);\n },\n cue(input) {\n return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\n },\n track(input) {\n return instanceOf(input, TextTrack) || (!is.nullOrUndefined(input) && is.string(input.kind));\n },\n url(input) {\n return !is.nullOrUndefined(input) && /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/.test(input);\n },\n nullOrUndefined(input) {\n return input === null || typeof input === 'undefined';\n },\n empty(input) {\n return (\n is.nullOrUndefined(input) ||\n ((is.string(input) || is.array(input) || is.nodeList(input)) && !input.length) ||\n (is.object(input) && !Object.keys(input).length)\n );\n },\n};\n\nexport default is;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(elements, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no elemetns, event, or callback\n if (is.empty(elements) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // If a nodelist is passed, call itself on each node\n if (is.nodeList(elements) || is.array(elements)) {\n // Create listener for each node\n Array.from(elements).forEach(element => {\n if (element instanceof Node) {\n toggleListener.call(null, element, event, callback, toggle, passive, capture);\n }\n });\n\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n elements[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener(element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener(element, events, callback, false, passive, capture);\n}\n\n// Trigger event\nexport function trigger(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: Object.assign({}, detail, {\n plyr: this,\n }),\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { off, on } from './events';\nimport is from './is';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n Object.entries(attributes).forEach(([\n key,\n value,\n ]) => {\n element.setAttribute(key, value);\n });\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n // Inject the new \n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = existingAttributes;\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n\n // Get the parts and value\n const parts = stripped.split('=');\n const key = parts[0];\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.object(existing) && is.string(existing.class)) {\n existing.class += ` ${className}`;\n }\n\n attributes.class = className;\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return attributes;\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hasAttribute('hidden');\n }\n\n if (hide) {\n element.setAttribute('hidden', '');\n } else {\n element.removeAttribute('hidden');\n }\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return null;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const matches = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match;\n\n return matches.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Get the focused element\nexport function getFocusElement() {\n let focused = document.activeElement;\n\n if (!focused || focused === document.body) {\n focused = null;\n } else {\n focused = document.querySelector(':focus');\n }\n\n return focused;\n}\n\n// Trap focus inside container\nexport function trapFocus(element = null, toggle = false) {\n if (!is.element(element)) {\n return;\n }\n\n const focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n const trap = event => {\n // Bail if not tab key or not fullscreen\n if (event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = getFocusElement();\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n if (toggle) {\n on(this.elements.container, 'keydown', trap, false);\n } else {\n off(this.elements.container, 'keydown', trap, false);\n }\n}\n\n// Toggle aria-pressed state on a toggle button\n// http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles\nexport function toggleState(element, input) {\n // If multiple elements passed\n if (is.array(element) || is.nodeList(element)) {\n Array.from(element).forEach(target => toggleState(target, input));\n return;\n }\n\n // Bail if no target\n if (!is.element(element)) {\n return;\n }\n\n // Get state\n const pressed = element.getAttribute('aria-pressed') === 'true';\n const state = is.boolean(input) ? input : !pressed;\n\n // Set the attribute on target\n element.setAttribute('aria-pressed', state);\n}\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport { toggleHidden } from './elements';\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element) {\n setTimeout(() => {\n toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\n }, 0);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n};\n\nexport default browser;\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, playsinline) {\n let api = false;\n let ui = false;\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\n switch (`${provider}:${type}`) {\n case 'html5:video':\n api = support.video;\n ui = api && support.rangeInput && (!browser.isIPhone || canPlayInline);\n break;\n\n case 'html5:audio':\n api = support.audio;\n ui = api && support.rangeInput;\n break;\n\n case 'youtube:video':\n case 'vimeo:video':\n api = true;\n ui = support.rangeInput && (!browser.isIPhone || canPlayInline);\n break;\n\n default:\n api = support.audio && support.video;\n ui = api && support.rangeInput;\n }\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari only currently\n pip: (() => !browser.isIPhone && is.function(createElement('video').webkitSetPresentationMode))(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(type) {\n const { media } = this;\n\n try {\n // Bail if no checking function\n if (!this.isHTML5 || !is.function(media.canPlayType)) {\n return false;\n }\n\n // Check directly if codecs specified\n if (type.includes('codecs=')) {\n return media.canPlayType(type).replace(/no/, '');\n }\n\n // Type specific checks\n if (this.isVideo) {\n switch (type) {\n case 'video/webm':\n return media.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/no/, '');\n\n case 'video/mp4':\n return media.canPlayType('video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"').replace(/no/, '');\n\n case 'video/ogg':\n return media.canPlayType('video/ogg; codecs=\"theora\"').replace(/no/, '');\n\n default:\n return false;\n }\n } else if (this.isAudio) {\n switch (type) {\n case 'audio/mpeg':\n return media.canPlayType('audio/mpeg;').replace(/no/, '');\n\n case 'audio/ogg':\n return media.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/no/, '');\n\n case 'audio/wav':\n return media.canPlayType('audio/wav; codecs=\"1\"').replace(/no/, '');\n\n default:\n return false;\n }\n }\n } catch (e) {\n return false;\n }\n\n // If we got this far, we're stuffed\n return false;\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport { removeElement } from './utils/elements';\nimport { trigger } from './utils/events';\nimport is from './utils/is';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return null;\n }\n\n return this.media.querySelectorAll('source');\n },\n\n // Get quality levels\n getQualityOptions() {\n if (!this.isHTML5) {\n return null;\n }\n\n // Get sources\n const sources = html5.getSources.call(this);\n\n if (is.empty(sources)) {\n return null;\n }\n\n // Get with size attribute\n const sizes = Array.from(sources).filter(source => !is.empty(source.getAttribute('size')));\n\n // If none, bail\n if (is.empty(sizes)) {\n return null;\n }\n\n // Reduce to unique list\n return dedupe(sizes.map(source => Number(source.getAttribute('size'))));\n },\n\n extend() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n\n if (is.empty(sources)) {\n return null;\n }\n\n const matches = Array.from(sources).filter(source => source.getAttribute('src') === player.source);\n\n if (is.empty(matches)) {\n return null;\n }\n\n return Number(matches[0].getAttribute('size'));\n },\n set(input) {\n // Get sources\n const sources = html5.getSources.call(player);\n\n if (is.empty(sources)) {\n return;\n }\n\n // Get matches for requested size\n const matches = Array.from(sources).filter(source => Number(source.getAttribute('size')) === input);\n\n // No matches for requested size\n if (is.empty(matches)) {\n return;\n }\n\n // Get supported sources\n const supported = matches.filter(source => support.mime.call(player, source.getAttribute('type')));\n\n // No supported sources\n if (is.empty(supported)) {\n return;\n }\n\n // Trigger change event\n trigger.call(player, player.media, 'qualityrequested', false, {\n quality: input,\n });\n\n // Get current state\n const { currentTime, playing } = player;\n\n // Set new source\n player.media.src = supported[0].getAttribute('src');\n\n // Restore time\n const onLoadedMetaData = () => {\n player.currentTime = currentTime;\n player.off('loadedmetadata', onLoadedMetaData);\n };\n player.on('loadedmetadata', onLoadedMetaData);\n\n // Load new source\n player.media.load();\n\n // Resume playing\n if (playing) {\n player.play();\n }\n\n // Trigger change event\n trigger.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources());\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => (is.string(args[i]) ? args[i] : ''));\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return (current / max * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './utils/is';\nimport { getDeep } from './utils/objects';\nimport { replaceAll } from './utils/strings';\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([\n key,\n value,\n ]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from './../storage';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => parseInt((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => parseInt((value / 60) % 60, 10);\nexport const getSeconds = value => parseInt(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(null, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport i18n from './i18n';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement, emptyElement, getAttributesFromSelector, getElement, getElements, hasClass, removeElement, setAttributes, toggleClass, toggleHidden, toggleState } from './utils/elements';\nimport { off, on } from './utils/events';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls and store references in custom controls\n // TODO: Allow settings menus with custom controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n role: 'presentation',\n focusable: 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n } else {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n }\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(type, attr) {\n let text = i18n.get(type, this.config);\n const attributes = Object.assign({}, attr);\n\n switch (type) {\n case 'pip':\n text = 'PIP';\n break;\n\n case 'airplay':\n text = 'AirPlay';\n break;\n\n default:\n break;\n }\n\n if ('class' in attributes) {\n attributes.class += ` ${this.config.classNames.hidden}`;\n } else {\n attributes.class = this.config.classNames.hidden;\n }\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a
to hide the standard controls and UI\n setAspectRatio(input) {\n const ratio = is.string(input) ? input.split(':') : this.config.ratio.split(':');\n const padding = 100 / ratio[0] * ratio[1];\n this.elements.wrapper.style.paddingBottom = `${padding}%`;\n\n if (this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n\n // Get Vimeo params for the iframe\n const options = {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n // muted: player.muted,\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: 0,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n };\n const params = buildUrlParams(options);\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Inject the package\n const wrapper = createElement('div', { class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href);\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n trigger.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n trigger.call(player, player.media, 'ratechange');\n })\n .catch(error => {\n // Hide menu item (and menu if empty)\n if (error.name === 'Error') {\n controls.setSpeedMenu.call(player, []);\n }\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n trigger.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n trigger.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([\n player.embed.getVideoWidth(),\n player.embed.getVideoHeight(),\n ]).then(dimensions => {\n const ratio = getAspectRatio(dimensions[0], dimensions[1]);\n vimeo.setAspectRatio.call(this, ratio);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n trigger.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n trigger.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n trigger.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n trigger.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n trigger.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n trigger.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n trigger.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n trigger.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n trigger.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n trigger.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n trigger.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport controls from './../controls';\nimport ui from './../ui';\nimport { dedupe } from './../utils/arrays';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { trigger } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadImage from './../utils/loadImage';\nimport loadScript from './../utils/loadScript';\nimport { format, generateId } from './../utils/strings';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Standardise YouTube quality unit\nfunction mapQualityUnit(input) {\n switch (input) {\n case 'hd2160':\n return 2160;\n\n case 2160:\n return 'hd2160';\n\n case 'hd1440':\n return 1440;\n\n case 1440:\n return 'hd1440';\n\n case 'hd1080':\n return 1080;\n\n case 1080:\n return 'hd1080';\n\n case 'hd720':\n return 720;\n\n case 720:\n return 'hd720';\n\n case 'large':\n return 480;\n\n case 480:\n return 'large';\n\n case 'medium':\n return 360;\n\n case 360:\n return 'medium';\n\n case 'small':\n return 240;\n\n case 240:\n return 'small';\n\n default:\n return 'default';\n }\n}\n\nfunction mapQualityUnits(levels) {\n if (is.empty(levels)) {\n return levels;\n }\n\n return dedupe(levels.map(level => mapQualityUnit(level)));\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n trigger.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set aspect ratio\n youtube.setAspectRatio.call(this);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Load the API\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n\n // Setup callback for the API\n // YouTube has it's own system of course...\n window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];\n\n // Add to queue\n window.onYouTubeReadyCallbacks.push(() => {\n youtube.ready.call(this);\n });\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n window.onYouTubeReadyCallbacks.forEach(callback => {\n callback();\n });\n };\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n // Try via undocumented API method first\n // This method disappears now and then though...\n // https://github.com/sampotts/plyr/issues/709\n if (is.function(this.embed.getVideoData)) {\n const { title } = this.embed.getVideoData();\n\n if (is.empty(title)) {\n this.config.title = title;\n ui.setTitle.call(this);\n return;\n }\n }\n\n // Or via Google API\n const key = this.config.keys.google;\n if (is.string(key) && !is.empty(key)) {\n const url = format(this.config.urls.youtube.api, videoId, key);\n\n fetch(url)\n .then(result => {\n if (is.object(result)) {\n this.config.title = result.items[0].snippet.title;\n ui.setTitle.call(this);\n }\n })\n .catch(() => {});\n }\n },\n\n // Set aspect ratio\n setAspectRatio() {\n const ratio = this.config.ratio.split(':');\n this.elements.wrapper.style.paddingBottom = `${100 / ratio[0] * ratio[1]}%`;\n },\n\n // API ready\n ready() {\n const player = this;\n\n // Ignore already setup (race condition)\n const currentId = player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the