Selaa lähdekoodia

Update mediaelement js lib to v4.2.8

jmontoyaa 7 vuotta sitten
vanhempi
commit
f11e2ffc66
26 muutettua tiedostoa jossa 1039 lisäystä ja 661 poistoa
  1. 4 4
      app/Resources/public/assets/mediaelement/.bower.json
  2. 8 0
      app/Resources/public/assets/mediaelement/README.md
  3. 462 335
      app/Resources/public/assets/mediaelement/build/mediaelement-and-player.js
  4. 0 0
      app/Resources/public/assets/mediaelement/build/mediaelement-and-player.min.js
  5. BIN
      app/Resources/public/assets/mediaelement/build/mediaelement-flash-audio-ogg.swf
  6. BIN
      app/Resources/public/assets/mediaelement/build/mediaelement-flash-audio.swf
  7. BIN
      app/Resources/public/assets/mediaelement/build/mediaelement-flash-video-hls.swf
  8. BIN
      app/Resources/public/assets/mediaelement/build/mediaelement-flash-video-mdash.swf
  9. BIN
      app/Resources/public/assets/mediaelement/build/mediaelement-flash-video.swf
  10. 224 98
      app/Resources/public/assets/mediaelement/build/mediaelement.js
  11. 0 0
      app/Resources/public/assets/mediaelement/build/mediaelement.min.js
  12. 5 2
      app/Resources/public/assets/mediaelement/build/mediaelementplayer-legacy.css
  13. 0 0
      app/Resources/public/assets/mediaelement/build/mediaelementplayer-legacy.min.css
  14. 5 2
      app/Resources/public/assets/mediaelement/build/mediaelementplayer.css
  15. 0 0
      app/Resources/public/assets/mediaelement/build/mediaelementplayer.min.css
  16. 42 20
      app/Resources/public/assets/mediaelement/build/renderers/dailymotion.js
  17. 0 0
      app/Resources/public/assets/mediaelement/build/renderers/dailymotion.min.js
  18. 183 169
      app/Resources/public/assets/mediaelement/build/renderers/facebook.js
  19. 0 0
      app/Resources/public/assets/mediaelement/build/renderers/facebook.min.js
  20. 5 4
      app/Resources/public/assets/mediaelement/build/renderers/soundcloud.js
  21. 0 0
      app/Resources/public/assets/mediaelement/build/renderers/soundcloud.min.js
  22. 9 9
      app/Resources/public/assets/mediaelement/build/renderers/twitch.js
  23. 0 0
      app/Resources/public/assets/mediaelement/build/renderers/twitch.min.js
  24. 24 18
      app/Resources/public/assets/mediaelement/build/renderers/vimeo.js
  25. 0 0
      app/Resources/public/assets/mediaelement/build/renderers/vimeo.min.js
  26. 68 0
      app/Resources/public/assets/mediaelement/changelog.md

+ 4 - 4
app/Resources/public/assets/mediaelement/.bower.json

@@ -23,12 +23,12 @@
     "./build/mediaelement-and-player.js",
     "./build/mediaelementplayer.css"
   ],
-  "version": "4.2.5",
-  "_release": "4.2.5",
+  "version": "4.2.8",
+  "_release": "4.2.8",
   "_resolution": {
     "type": "version",
-    "tag": "4.2.5",
-    "commit": "71a4642fa25a8db2fb1f81f4171e2cd4fd64244c"
+    "tag": "4.2.8",
+    "commit": "0896fce181f4f1450bdc1c70598e66fe0bfa872b"
   },
   "_source": "https://github.com/johndyer/mediaelement.git",
   "_target": "4.*",

+ 8 - 0
app/Resources/public/assets/mediaelement/README.md

@@ -14,6 +14,7 @@ One file. Any browser. Same UI.
 [![Coverage Status](https://img.shields.io/coveralls/mediaelement/mediaelement.svg)](https://coveralls.io/github/mediaelement/mediaelement)
 [![MIT License](https://img.shields.io/npm/l/mediaelement.svg)](https://mediaelement.mit-license.org/)
 [![CDNJS](https://img.shields.io/cdnjs/v/mediaelement.svg)](https://cdnjs.com/libraries/mediaelement)
+[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/mediaelement/badge?style=rounded)](https://www.jsdelivr.com/package/npm/mediaelement)
 
 # Table of Contents
 
@@ -39,6 +40,13 @@ In general, `MediaElement.js` supports **IE11+, MS Edge, Chrome, Firefox, Safari
 
 **It is strongly recommended to read the entire documentation and check the `demo` folder to get the most out of this package**. Visit [here](docs) to start.
 
+## * IMPORTANT NOTE for Safari users (Jun 8, 2017)
+
+Since Sierra version, `autoplay` policies have changed. You may experience an error if you try to execute `play` programatically or via `autoplay` attribute with MediaElement, unless `muted` attribute is specified. 
+
+For more information, read https://webkit.org/blog/7734/auto-play-policy-changes-for-macos/
+
+
 ## * IMPORTANT CHANGES on `4.2.0` version
 
 As part of the continuous improvements the player, we have decided to drop completely support for IE9 and IE10, since market share of those browsers together is 0.4%, according to http://caniuse.com/usage-table.

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 462 - 335
app/Resources/public/assets/mediaelement/build/mediaelement-and-player.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/mediaelement-and-player.min.js


BIN
app/Resources/public/assets/mediaelement/build/mediaelement-flash-audio-ogg.swf


BIN
app/Resources/public/assets/mediaelement/build/mediaelement-flash-audio.swf


BIN
app/Resources/public/assets/mediaelement/build/mediaelement-flash-video-hls.swf


BIN
app/Resources/public/assets/mediaelement/build/mediaelement-flash-video-mdash.swf


BIN
app/Resources/public/assets/mediaelement/build/mediaelement-flash-video.swf


+ 224 - 98
app/Resources/public/assets/mediaelement/build/mediaelement.js

@@ -315,8 +315,8 @@ i18n.language = function () {
 			throw new TypeError('Language code must be a string value');
 		}
 
-		if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
-			throw new TypeError('Language code must have format `xx` or `xx-xx`');
+		if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
+			throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
 		}
 
 		i18n.lang = args[0];
@@ -864,9 +864,23 @@ var MediaElement = function MediaElement(idOrNode, options, sources) {
 	    triggerAction = function triggerAction(methodName, args) {
 		try {
 			if (methodName === 'play' && t.mediaElement.rendererName === 'native_dash') {
-				setTimeout(function () {
-					t.mediaElement.renderer[methodName](args);
-				}, 100);
+				var response = t.mediaElement.renderer[methodName](args);
+				if (response && typeof response.then === 'function') {
+					response.catch(function () {
+						if (t.mediaElement.paused) {
+							setTimeout(function () {
+								var tmpResponse = t.mediaElement.renderer.play();
+								if (tmpResponse !== undefined) {
+									tmpResponse.catch(function () {
+										if (!t.mediaElement.renderer.paused) {
+											t.mediaElement.renderer.pause();
+										}
+									});
+								}
+							}, 150);
+						}
+					});
+				}
 			} else {
 				t.mediaElement.renderer[methodName](args);
 			}
@@ -947,6 +961,15 @@ var MediaElement = function MediaElement(idOrNode, options, sources) {
 		}
 	};
 
+	t.mediaElement.destroy = function () {
+		var mediaElement = t.mediaElement.originalNode.cloneNode(true);
+		var wrapper = t.mediaElement.parentElement;
+		mediaElement.removeAttribute('id');
+		mediaElement.remove();
+		t.mediaElement.remove();
+		wrapper.append(mediaElement);
+	};
+
 	if (mediaFiles.length) {
 		t.mediaElement.src = mediaFiles;
 	}
@@ -975,6 +998,7 @@ var MediaElement = function MediaElement(idOrNode, options, sources) {
 };
 
 _window2.default.MediaElement = MediaElement;
+_mejs2.default.MediaElement = MediaElement;
 
 exports.default = MediaElement;
 
@@ -993,7 +1017,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
 
 var mejs = {};
 
-mejs.version = '4.2.5';
+mejs.version = '4.2.8';
 
 mejs.html5media = {
 	properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
@@ -1305,12 +1329,12 @@ var DashNativeRenderer = {
 		options = Object.assign(options, mediaElement.options);
 
 		var props = _mejs2.default.html5media.properties,
-		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
+			return e !== 'error';
+		}),
 		    attachNativeEvents = function attachNativeEvents(e) {
-			if (e.type !== 'error') {
-				var _event = (0, _general.createEvent)(e.type, mediaElement);
-				mediaElement.dispatchEvent(_event);
-			}
+			var event = (0, _general.createEvent)(e.type, mediaElement);
+			mediaElement.dispatchEvent(event);
 		},
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -1385,25 +1409,21 @@ var DashNativeRenderer = {
 				assignEvents(events[_i3]);
 			}
 
-			var assignMdashEvents = function assignMdashEvents(name, data) {
-				if (name.toLowerCase() === 'error') {
-					mediaElement.generateError(data.message, node.src);
-					console.error(data);
+			var assignMdashEvents = function assignMdashEvents(e) {
+				if (e.type.toLowerCase() === 'error') {
+					mediaElement.generateError(e.message, node.src);
+					console.error(e);
 				} else {
-					var _event2 = (0, _general.createEvent)(name, mediaElement);
-					_event2.data = data;
-					mediaElement.dispatchEvent(_event2);
+					var _event = (0, _general.createEvent)(e.type, mediaElement);
+					_event.data = e;
+					mediaElement.dispatchEvent(_event);
 				}
 			};
 
 			for (var eventType in dashEvents) {
 				if (dashEvents.hasOwnProperty(eventType)) {
 					dashPlayer.on(dashEvents[eventType], function (e) {
-						for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
-							args[_key - 1] = arguments[_key];
-						}
-
-						return assignMdashEvents(e.type, args);
+						return assignMdashEvents(e);
 					});
 				}
 			}
@@ -1561,6 +1581,7 @@ var FlashMediaElementRenderer = {
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var flash = {};
+		var isActive = false;
 
 		flash.options = options;
 		flash.id = mediaElement.id + '_' + flash.options.prefix;
@@ -1628,21 +1649,23 @@ var FlashMediaElementRenderer = {
 		var methods = _mejs2.default.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
 			flash[methodName] = function () {
-				if (flash.flashApi !== null) {
-					if (flash.flashApi['fire_' + methodName]) {
-						try {
-							flash.flashApi['fire_' + methodName]();
-						} catch (e) {
+				if (isActive) {
+					if (flash.flashApi !== null) {
+						if (flash.flashApi['fire_' + methodName]) {
+							try {
+								flash.flashApi['fire_' + methodName]();
+							} catch (e) {
+								
+							}
+						} else {
 							
 						}
 					} else {
-						
+						flash.flashApiStack.push({
+							type: 'call',
+							methodName: methodName
+						});
 					}
-				} else {
-					flash.flashApiStack.push({
-						type: 'call',
-						methodName: methodName
-					});
 				}
 			};
 		};
@@ -1714,16 +1737,28 @@ var FlashMediaElementRenderer = {
 			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
 		}
 
+		if (flash.options.streamDelimiter) {
+			flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
+		}
+
+		if (flash.options.proxyType) {
+			flashVars.push('proxytype=' + flash.options.proxyType);
+		}
+
 		mediaElement.appendChild(flash.flashWrapper);
 		mediaElement.originalNode.style.display = 'none';
 
 		var settings = [];
 
-		if (_constants.IS_IE) {
+		if (_constants.IS_IE || _constants.IS_EDGE) {
 			var specialIEContainer = _document2.default.createElement('div');
 			flash.flashWrapper.appendChild(specialIEContainer);
 
-			settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
+			if (_constants.IS_EDGE) {
+				settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
+			} else {
+				settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
+			}
 
 			if (!isVideo) {
 				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
@@ -1732,10 +1767,13 @@ var FlashMediaElementRenderer = {
 			specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
 		} else {
 
-			settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
+			settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"'];
 
-			if (!isVideo) {
-				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			if (isVideo) {
+				settings.push('width="' + flashWidth + '"');
+				settings.push('height="' + flashHeight + '"');
+			} else {
+				settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
 			}
 
 			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
@@ -1744,11 +1782,13 @@ var FlashMediaElementRenderer = {
 		flash.flashNode = flash.flashWrapper.lastChild;
 
 		flash.hide = function () {
+			isActive = false;
 			if (isVideo) {
 				flash.flashNode.style.display = 'none';
 			}
 		};
 		flash.show = function () {
+			isActive = true;
 			if (isVideo) {
 				flash.flashNode.style.display = '';
 			}
@@ -1813,7 +1853,11 @@ if (hasFlash) {
 
 			pseudoStreamingStartQueryParam: 'start',
 
-			pseudoStreamingType: 'byte'
+			pseudoStreamingType: 'byte',
+
+			proxyType: '',
+
+			streamDelimiter: ''
 		},
 
 		canPlayType: function canPlayType(type) {
@@ -1923,7 +1967,7 @@ var NativeFlv = {
 				NativeFlv._createPlayer(settings);
 			});
 		} else {
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.2/flv.min.js';
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
 
 			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
 			NativeFlv.promise.then(function () {
@@ -1937,7 +1981,7 @@ var NativeFlv = {
 	_createPlayer: function _createPlayer(settings) {
 		flvjs.LoggingControl.enableDebug = settings.options.debug;
 		flvjs.LoggingControl.enableVerbose = settings.options.debug;
-		var player = flvjs.createPlayer(settings.options);
+		var player = flvjs.createPlayer(settings.options, settings.configs);
 		_window2.default['__ready__' + settings.id](player);
 		return player;
 	}
@@ -1948,7 +1992,7 @@ var FlvNativeRenderer = {
 	options: {
 		prefix: 'native_flv',
 		flv: {
-			path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.2/flv.min.js',
+			path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
 
 			cors: true,
 			debug: false
@@ -1971,12 +2015,12 @@ var FlvNativeRenderer = {
 		options = Object.assign(options, mediaElement.options);
 
 		var props = _mejs2.default.html5media.properties,
-		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
+			return e !== 'error';
+		}),
 		    attachNativeEvents = function attachNativeEvents(e) {
-			if (e.type !== 'error') {
-				var _event = (0, _general.createEvent)(e.type, mediaElement);
-				mediaElement.dispatchEvent(_event);
-			}
+			var event = (0, _general.createEvent)(e.type, mediaElement);
+			mediaElement.dispatchEvent(event);
 		},
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -1996,6 +2040,7 @@ var FlvNativeRenderer = {
 							_flvOptions.cors = options.flv.cors;
 							_flvOptions.debug = options.flv.debug;
 							_flvOptions.path = options.flv.path;
+							var _flvConfigs = options.flv.configs;
 
 							flvPlayer.destroy();
 							for (var i = 0, total = events.length; i < total; i++) {
@@ -2003,6 +2048,7 @@ var FlvNativeRenderer = {
 							}
 							flvPlayer = NativeFlv._createPlayer({
 								options: _flvOptions,
+								configs: _flvConfigs,
 								id: id
 							});
 							flvPlayer.attachMediaElement(node);
@@ -2043,9 +2089,9 @@ var FlvNativeRenderer = {
 					var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
 					mediaElement.generateError(message, node.src);
 				} else {
-					var _event2 = (0, _general.createEvent)(name, mediaElement);
-					_event2.data = data;
-					mediaElement.dispatchEvent(_event2);
+					var _event = (0, _general.createEvent)(name, mediaElement);
+					_event.data = data;
+					mediaElement.dispatchEvent(_event);
 				}
 			};
 
@@ -2087,6 +2133,7 @@ var FlvNativeRenderer = {
 		flvOptions.cors = options.flv.cors;
 		flvOptions.debug = options.flv.debug;
 		flvOptions.path = options.flv.path;
+		var flvConfigs = options.flv.configs;
 
 		node.setSize = function (width, height) {
 			node.style.width = width + 'px';
@@ -2118,6 +2165,7 @@ var FlvNativeRenderer = {
 
 		mediaElement.promises.push(NativeFlv.load({
 			options: flvOptions,
+			configs: flvConfigs,
 			id: id
 		}));
 
@@ -2168,7 +2216,7 @@ var NativeHls = {
 				NativeHls._createPlayer(settings);
 			});
 		} else {
-			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.7.11/hls.min.js';
+			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
 
 			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
 			NativeHls.promise.then(function () {
@@ -2191,7 +2239,7 @@ var HlsNativeRenderer = {
 	options: {
 		prefix: 'native_hls',
 		hls: {
-			path: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.7.11/hls.min.js',
+			path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
 
 			autoStartLoad: false,
 			debug: false
@@ -2210,19 +2258,21 @@ var HlsNativeRenderer = {
 		    autoplay = originalNode.autoplay;
 
 		var hlsPlayer = null,
-		    node = null;
+		    node = null,
+		    index = 0,
+		    total = mediaFiles.length;
 
 		node = originalNode.cloneNode(true);
 		options = Object.assign(options, mediaElement.options);
 		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
 
 		var props = _mejs2.default.html5media.properties,
-		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
+			return e !== 'error';
+		}),
 		    attachNativeEvents = function attachNativeEvents(e) {
-			if (e.type !== 'error') {
-				var _event = (0, _general.createEvent)(e.type, mediaElement);
-				mediaElement.dispatchEvent(_event);
-			}
+			var event = (0, _general.createEvent)(e.type, mediaElement);
+			mediaElement.dispatchEvent(event);
 		},
 		    assignGettersSetters = function assignGettersSetters(propName) {
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
@@ -2237,7 +2287,7 @@ var HlsNativeRenderer = {
 						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
 						if (hlsPlayer !== null) {
 							hlsPlayer.destroy();
-							for (var i = 0, total = events.length; i < total; i++) {
+							for (var i = 0, _total = events.length; i < _total; i++) {
 								node.removeEventListener(events[i], attachNativeEvents);
 							}
 							hlsPlayer = NativeHls._createPlayer({
@@ -2254,7 +2304,7 @@ var HlsNativeRenderer = {
 			};
 		};
 
-		for (var i = 0, total = props.length; i < total; i++) {
+		for (var i = 0, _total2 = props.length; i < _total2; i++) {
 			assignGettersSetters(props[i]);
 		}
 
@@ -2272,7 +2322,7 @@ var HlsNativeRenderer = {
 				node.addEventListener(eventName, attachNativeEvents);
 			};
 
-			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+			for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
 				assignEvents(events[_i]);
 			}
 
@@ -2280,7 +2330,8 @@ var HlsNativeRenderer = {
 			    recoverSwapAudioCodecDate = void 0;
 			var assignHlsEvents = function assignHlsEvents(name, data) {
 				if (name === 'hlsError') {
-					console.warn(name, data);
+					console.warn(data);
+					data = data[1];
 
 					if (data.fatal) {
 						switch (data.type) {
@@ -2295,15 +2346,27 @@ var HlsNativeRenderer = {
 									hlsPlayer.swapAudioCodec();
 									hlsPlayer.recoverMediaError();
 								} else {
-									var _message = 'Cannot recover, last media error recovery failed';
-									mediaElement.generateError(_message, node.src);
-									console.error(_message);
+									var message = 'Cannot recover, last media error recovery failed';
+									mediaElement.generateError(message, node.src);
+									console.error(message);
 								}
 								break;
 							case 'networkError':
-								var message = 'Network error';
-								mediaElement.generateError(message, node.src);
-								console.error(message);
+								if (data.details === 'manifestLoadError') {
+									if (index < total && mediaFiles[index + 1] !== undefined) {
+										node.setSrc(mediaFiles[index++].src);
+										node.load();
+										node.play();
+									} else {
+										var _message = 'Network error';
+										mediaElement.generateError(_message, mediaFiles);
+										console.error(_message);
+									}
+								} else {
+									var _message2 = 'Network error';
+									mediaElement.generateError(_message2, mediaFiles);
+									console.error(_message2);
+								}
 								break;
 							default:
 								hlsPlayer.destroy();
@@ -2311,9 +2374,9 @@ var HlsNativeRenderer = {
 						}
 					}
 				} else {
-					var _event2 = (0, _general.createEvent)(name, mediaElement);
-					_event2.data = data;
-					mediaElement.dispatchEvent(_event2);
+					var _event = (0, _general.createEvent)(name, mediaElement);
+					_event.data = data;
+					mediaElement.dispatchEvent(_event);
 				}
 			};
 
@@ -2334,10 +2397,10 @@ var HlsNativeRenderer = {
 			}
 		};
 
-		if (mediaFiles && mediaFiles.length > 0) {
-			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
-				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
-					node.setAttribute('src', mediaFiles[_i2].src);
+		if (total > 0) {
+			for (; index < total; index++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
+					node.setAttribute('src', mediaFiles[index].src);
 					break;
 				}
 			}
@@ -2450,6 +2513,7 @@ var HtmlMediaElement = {
 	create: function create(mediaElement, options, mediaFiles) {
 
 		var id = mediaElement.id + '_' + options.prefix;
+		var isActive = false;
 
 		var node = null;
 
@@ -2477,19 +2541,23 @@ var HtmlMediaElement = {
 			};
 		};
 
-		for (var i = 0, total = props.length; i < total; i++) {
+		for (var i = 0, _total = props.length; i < _total; i++) {
 			assignGettersSetters(props[i]);
 		}
 
-		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
+			return e !== 'error';
+		}),
 		    assignEvents = function assignEvents(eventName) {
 			node.addEventListener(eventName, function (e) {
-				var event = (0, _general.createEvent)(e.type, mediaElement);
-				mediaElement.dispatchEvent(event);
+				if (isActive) {
+					var _event = (0, _general.createEvent)(e.type, e.target);
+					mediaElement.dispatchEvent(_event);
+				}
 			});
 		};
 
-		for (var _i = 0, _total = events.length; _i < _total; _i++) {
+		for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
 			assignEvents(events[_i]);
 		}
 
@@ -2500,26 +2568,42 @@ var HtmlMediaElement = {
 		};
 
 		node.hide = function () {
+			isActive = false;
 			node.style.display = 'none';
 
 			return node;
 		};
 
 		node.show = function () {
+			isActive = true;
 			node.style.display = '';
 
 			return node;
 		};
 
-		if (mediaFiles && mediaFiles.length > 0) {
-			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
-				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
-					node.setAttribute('src', mediaFiles[_i2].src);
+		var index = 0,
+		    total = mediaFiles.length;
+		if (total > 0) {
+			for (; index < total; index++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
+					node.setAttribute('src', mediaFiles[index].src);
 					break;
 				}
 			}
 		}
 
+		node.addEventListener('error', function (e) {
+			if (e.target.error.code === 4 && isActive) {
+				if (index < total && mediaFiles[index + 1] !== undefined) {
+					node.src = mediaFiles[index++].src;
+					node.load();
+					node.play();
+				} else {
+					mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
+				}
+			}
+		});
+
 		var event = (0, _general.createEvent)('rendererready', node);
 		mediaElement.dispatchEvent(event);
 
@@ -2828,6 +2912,29 @@ var YouTubeIframeRenderer = {
 			assignMethods(methods[_i]);
 		}
 
+		var errorHandler = function errorHandler(error) {
+			var message = '';
+			switch (error.data) {
+				case 2:
+					message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
+					break;
+				case 5:
+					message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
+					break;
+				case 100:
+					message = 'The video requested was not found. Either video has been removed or has been marked as private.';
+					break;
+				case 101:
+				case 105:
+					message = 'The owner of the requested video does not allow it to be played in embedded players.';
+					break;
+				default:
+					message = 'Unknown error.';
+					break;
+			}
+			mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
+		};
+
 		var youtubeContainer = _document2.default.createElement('div');
 		youtubeContainer.id = youtube.id;
 
@@ -2855,9 +2962,6 @@ var YouTubeIframeRenderer = {
 				showinfo: 0,
 				modestbranding: 0,
 				html5: 1,
-				playsinline: 0,
-				start: 0,
-				end: 0,
 				iv_load_policy: 3
 			}, youtube.options.youtube),
 			origin: _window2.default.location.host,
@@ -2887,7 +2991,7 @@ var YouTubeIframeRenderer = {
 
 					youTubeIframe = youTubeApi.getIframe();
 
-					if (mediaElement.originalNode.getAttribute('muted')) {
+					if (mediaElement.originalNode.muted) {
 						youTubeApi.mute();
 					}
 
@@ -2954,25 +3058,29 @@ var YouTubeIframeRenderer = {
 					}
 				},
 				onError: function onError(e) {
-					var event = (0, _general.createEvent)('error', youtube);
-					event.data = e.data;
-					mediaElement.dispatchEvent(event);
+					return errorHandler(e);
 				}
 			}
 		};
 
-		if (isAudio) {
+		if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
 			youtubeSettings.playerVars.playsinline = 1;
 		}
 
+		if (mediaElement.originalNode.controls) {
+			youtubeSettings.playerVars.controls = 1;
+		}
 		if (mediaElement.originalNode.autoplay) {
 			youtubeSettings.playerVars.autoplay = 1;
 		}
-
 		if (mediaElement.originalNode.loop) {
 			youtubeSettings.playerVars.loop = 1;
 		}
 
+		if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {
+			youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
+		}
+
 		YouTubeApi.enqueueIframe(youtubeSettings);
 
 		youtube.onEvent = function (eventName, player, _youTubeState) {
@@ -3042,7 +3150,7 @@ _renderer.renderer.add(YouTubeIframeRenderer);
 Object.defineProperty(exports, "__esModule", {
 	value: true
 });
-exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
+exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
 
 var _window = _dereq_(3);
 
@@ -3089,6 +3197,20 @@ var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
 	return !!supports;
 }();
 
+var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
+	var supportsPassive = false;
+	try {
+		var opts = Object.defineProperty({}, 'passive', {
+			get: function get() {
+				supportsPassive = true;
+			}
+		});
+		_window2.default.addEventListener('test', null, opts);
+	} catch (e) {}
+
+	return supportsPassive;
+}();
+
 var html5Elements = ['source', 'track', 'audio', 'video'];
 var video = void 0;
 
@@ -3195,6 +3317,7 @@ _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
 _mejs2.default.Features.hasMSE = HAS_MSE;
 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
+_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
 _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
@@ -3357,7 +3480,10 @@ function siblings(el, filter) {
 }
 
 function visible(elem) {
-	return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
+	if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
+		return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
+	}
+	return !!(elem.offsetWidth || elem.offsetHeight);
 }
 
 function ajax(url, dataType, success, error) {
@@ -3815,9 +3941,9 @@ if (window.Element && !Element.prototype.closest) {
 })();
 
 if (/firefox/i.test(navigator.userAgent)) {
-	window.mediaElementJsOldGetComputedStyle = window.getComputedStyle;
+	var getComputedStyle = window.getComputedStyle;
 	window.getComputedStyle = function (el, pseudoEl) {
-		var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl);
+		var t = getComputedStyle(el, pseudoEl);
 		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
 	};
 }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/mediaelement.min.js


+ 5 - 2
app/Resources/public/assets/mediaelement/build/mediaelementplayer-legacy.css

@@ -517,6 +517,7 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
 }
 
 .mejs-volume-button > .mejs-volume-slider {
+    -webkit-backface-visibility: hidden;
     background: rgba(50, 50, 50, 0.7);
     border-radius: 0;
     bottom: 100%;
@@ -660,7 +661,7 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     list-style-type: none !important;
     margin: 0 0 6px;
     overflow: hidden;
-    padding: 0 10px;
+    padding: 0;
 }
 
 .mejs-captions-selector-list-item:hover,
@@ -684,7 +685,8 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     float: left;
     font-size: 10px;
     line-height: 15px;
-    padding: 4px 0 0;
+    padding: 4px 10px 0;
+    width: 100%;
 }
 
 .mejs-captions-selected,
@@ -748,6 +750,7 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
 }
 .mejs-overlay-error > img {
     left: 0;
+    max-width: 100%;
     position: absolute;
     top: 0;
     z-index: -1;

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/mediaelementplayer-legacy.min.css


+ 5 - 2
app/Resources/public/assets/mediaelement/build/mediaelementplayer.css

@@ -517,6 +517,7 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
 }
 
 .mejs__volume-button > .mejs__volume-slider {
+    -webkit-backface-visibility: hidden;
     background: rgba(50, 50, 50, 0.7);
     border-radius: 0;
     bottom: 100%;
@@ -660,7 +661,7 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     list-style-type: none !important;
     margin: 0 0 6px;
     overflow: hidden;
-    padding: 0 10px;
+    padding: 0;
 }
 
 .mejs__captions-selector-list-item:hover,
@@ -684,7 +685,8 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
     float: left;
     font-size: 10px;
     line-height: 15px;
-    padding: 4px 0 0;
+    padding: 4px 10px 0;
+    width: 100%;
 }
 
 .mejs__captions-selected,
@@ -748,6 +750,7 @@ Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-h
 }
 .mejs__overlay-error > img {
     left: 0;
+    max-width: 100%;
     position: absolute;
     top: 0;
     z-index: -1;

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/mediaelementplayer.min.css


+ 42 - 20
app/Resources/public/assets/mediaelement/build/renderers/dailymotion.js

@@ -109,7 +109,8 @@ var DailyMotionIframeRenderer = {
 
 		var events = void 0,
 		    dmPlayer = null,
-		    dmIframe = null;
+		    dmIframe = null,
+		    muted = mediaElement.originalNode.muted;
 
 		dm.options = options;
 		dm.id = mediaElement.id + '_' + options.prefix;
@@ -136,7 +137,8 @@ var DailyMotionIframeRenderer = {
 						case 'ended':
 							return dmPlayer.ended;
 						case 'muted':
-							return dmPlayer.muted;
+							muted = dmPlayer.muted;
+							return muted;
 						case 'buffered':
 							var percentLoaded = dmPlayer.bufferedTime,
 							    duration = dmPlayer.duration;
@@ -172,7 +174,11 @@ var DailyMotionIframeRenderer = {
 							dmPlayer.seek(value);
 							break;
 						case 'muted':
+							if (value === true) {
+								dmPlayer.setVolume(0);
+							}
 							dmPlayer.setMuted(value);
+							muted = value;
 							setTimeout(function () {
 								var event = mejs.Utils.createEvent('volumechange', dm);
 								mediaElement.dispatchEvent(event);
@@ -180,6 +186,14 @@ var DailyMotionIframeRenderer = {
 							break;
 						case 'volume':
 							dmPlayer.setVolume(value);
+							if (value === 0 && !dmPlayer.muted) {
+								dmPlayer.setMuted(true);
+								muted = true;
+							} else if (value > 0 && dmPlayer.muted) {
+								dmPlayer.setMuted(false);
+								muted = false;
+							}
+
 							setTimeout(function () {
 								var event = mejs.Utils.createEvent('volumechange', dm);
 								mediaElement.dispatchEvent(event);
@@ -258,8 +272,11 @@ var DailyMotionIframeRenderer = {
 			}
 
 			if (mediaElement.originalNode.muted) {
-				dmPlayer.setMuted(true);
 				dmPlayer.setVolume(0);
+				dmPlayer.setMuted(true);
+			} else {
+				dmPlayer.setVolume(dmPlayer.volume);
+				dmPlayer.setMuted(false);
 			}
 
 			events = mejs.html5media.events;
@@ -267,7 +284,7 @@ var DailyMotionIframeRenderer = {
 			var assignNativeEvents = function assignNativeEvents(eventName) {
 				if (eventName !== 'ended') {
 					dmPlayer.addEventListener(eventName, function (e) {
-						var event = mejs.Utils.createEvent(e.type, dmPlayer);
+						var event = mejs.Utils.createEvent(e.type, dm);
 						mediaElement.dispatchEvent(event);
 					});
 				}
@@ -278,42 +295,42 @@ var DailyMotionIframeRenderer = {
 			}
 
 			dmPlayer.addEventListener('ad_start', function () {
-				var event = mejs.Utils.createEvent('play', dmPlayer);
+				var event = mejs.Utils.createEvent('play', dm);
 				mediaElement.dispatchEvent(event);
 
-				event = mejs.Utils.createEvent('progress', dmPlayer);
+				event = mejs.Utils.createEvent('progress', dm);
 				mediaElement.dispatchEvent(event);
 
-				event = mejs.Utils.createEvent('timeupdate', dmPlayer);
+				event = mejs.Utils.createEvent('timeupdate', dm);
 				mediaElement.dispatchEvent(event);
 			});
 			dmPlayer.addEventListener('ad_timeupdate', function () {
-				var event = mejs.Utils.createEvent('timeupdate', dmPlayer);
+				var event = mejs.Utils.createEvent('timeupdate', dm);
 				mediaElement.dispatchEvent(event);
 			});
 			dmPlayer.addEventListener('ad_pause', function () {
-				var event = mejs.Utils.createEvent('pause', dmPlayer);
-				mediaElement.dispatchEvent(event);
-			});
-			dmPlayer.addEventListener('ad_end', function () {
-				var event = mejs.Utils.createEvent('ended', dmPlayer);
+				var event = mejs.Utils.createEvent('pause', dm);
 				mediaElement.dispatchEvent(event);
 			});
 			dmPlayer.addEventListener('start', function () {
-				if (mediaElement.originalNode.muted) {
-					dmPlayer.setMuted(true);
+				if (dmPlayer.muted) {
+					var event = mejs.Utils.createEvent('volumechange', dm);
+					mediaElement.dispatchEvent(event);
 				}
 			});
 			dmPlayer.addEventListener('video_start', function () {
-				var event = mejs.Utils.createEvent('play', dmPlayer);
+				var event = mejs.Utils.createEvent('play', dm);
 				mediaElement.dispatchEvent(event);
+
+				var playingEvent = mejs.Utils.createEvent('playing', dm);
+				mediaElement.dispatchEvent(playingEvent);
 			});
 			dmPlayer.addEventListener('ad_timeupdate', function () {
-				var event = mejs.Utils.createEvent('timeupdate', dmPlayer);
+				var event = mejs.Utils.createEvent('timeupdate', dm);
 				mediaElement.dispatchEvent(event);
 			});
 			dmPlayer.addEventListener('video_end', function () {
-				var event = mejs.Utils.createEvent('ended', dmPlayer);
+				var event = mejs.Utils.createEvent('ended', dm);
 				mediaElement.dispatchEvent(event);
 
 				if (mediaElement.originalNode.getAttribute('loop')) {
@@ -339,11 +356,15 @@ var DailyMotionIframeRenderer = {
 		mediaElement.originalNode.style.display = 'none';
 
 		var videoId = DailyMotionApi.getDailyMotionId(mediaFiles[0].src),
-		    dmSettings = Object.assign({
+		    dmSettings = {
 			id: dm.id,
 			container: dmContainer,
 			videoId: videoId
-		}, dm.options.dailymotion);
+		};
+
+		dmSettings.params = Object.assign({}, dm.options.dailymotion);
+
+		dmSettings.params.controls = !!mediaElement.originalNode.controls;
 
 		if (mediaElement.originalNode.autoplay) {
 			dmSettings.params.autoplay = true;
@@ -351,6 +372,7 @@ var DailyMotionIframeRenderer = {
 		if (mediaElement.originalNode.muted) {
 			dmSettings.params.mute = true;
 		}
+		dmSettings.params.api = '1';
 
 		DailyMotionApi.enqueueIframe(dmSettings);
 

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/renderers/dailymotion.min.js


+ 183 - 169
app/Resources/public/assets/mediaelement/build/renderers/facebook.js

@@ -11,6 +11,30 @@
  */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
 'use strict';
 
+var FacebookApi = {
+
+	promise: null,
+
+	load: function load(settings) {
+
+		if (typeof FB !== 'undefined') {
+			FacebookApi._createPlayer(settings);
+		} else {
+			FacebookApi.promise = FacebookApi.promise || mejs.Utils.loadScript('https://connect.facebook.net/' + settings.options.lang + '/sdk.js');
+			FacebookApi.promise.then(function () {
+				FB.init(settings.options);
+
+				setTimeout(function () {
+					FacebookApi._createPlayer(settings);
+				}, 50);
+			});
+		}
+	},
+
+	_createPlayer: function _createPlayer(settings) {
+		window['__ready__' + settings.id]();
+	}
+};
 var FacebookRenderer = {
 	name: 'facebook',
 	options: {
@@ -18,7 +42,8 @@ var FacebookRenderer = {
 		facebook: {
 			appId: '',
 			xfbml: true,
-			version: 'v2.10'
+			version: 'v2.10',
+			lang: 'en_US'
 		}
 	},
 
@@ -27,54 +52,50 @@ var FacebookRenderer = {
 	},
 
 	create: function create(mediaElement, options, mediaFiles) {
+		var apiStack = [],
+		    fb = {},
+		    readyState = 4;
 
-		var fbWrapper = {},
-		    apiStack = [],
-		    eventHandler = {},
-		    readyState = 4,
-		    autoplay = mediaElement.originalNode.autoplay;
-
-		var poster = '',
-		    src = '',
+		var hasStartedPlaying = false,
 		    paused = true,
 		    ended = false,
-		    hasStartedPlaying = false,
-		    fbApi = null,
-		    fbDiv = null;
+		    fbPlayer = null,
+		    src = '',
+		    poster = '',
+		    autoplay = mediaElement.originalNode.autoplay;
+
+		fb.options = options;
+		fb.id = mediaElement.id + '_' + options.prefix;
+		fb.mediaElement = mediaElement;
 
 		if (mejs.Features.isiPhone && mediaElement.originalNode.getAttribute('poster')) {
 			poster = mediaElement.originalNode.getAttribute('poster');
 			mediaElement.originalNode.removeAttribute('poster');
 		}
 
-		options = Object.assign(options, mediaElement.options);
-		fbWrapper.options = options;
-		fbWrapper.id = mediaElement.id + '_' + options.prefix;
-		fbWrapper.mediaElement = mediaElement;
-
 		var props = mejs.html5media.properties,
 		    assignGettersSetters = function assignGettersSetters(propName) {
 
 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-			fbWrapper['get' + capName] = function () {
+			fb['get' + capName] = function () {
 
-				if (fbApi !== null) {
+				if (fbPlayer !== null) {
 					var value = null;
 
 					switch (propName) {
 						case 'currentTime':
-							return fbApi.getCurrentPosition();
+							return fbPlayer.getCurrentPosition();
 						case 'duration':
-							return fbApi.getDuration();
+							return fbPlayer.getDuration();
 						case 'volume':
-							return fbApi.getVolume();
+							return fbPlayer.getVolume();
 						case 'paused':
 							return paused;
 						case 'ended':
 							return ended;
 						case 'muted':
-							return fbApi.isMuted();
+							return fbPlayer.isMuted();
 						case 'buffered':
 							return {
 								start: function start() {
@@ -97,47 +118,60 @@ var FacebookRenderer = {
 				}
 			};
 
-			fbWrapper['set' + capName] = function (value) {
+			fb['set' + capName] = function (value) {
 
-				if (fbApi !== null) {
+				if (fbPlayer !== null) {
 
 					switch (propName) {
 						case 'src':
 							var url = typeof value === 'string' ? value : value[0].src;
+							src = url;
+
+							fbContainer.remove();
+							fbContainer = document.createElement('div');
+							fbContainer.id = fb.id;
+							fbContainer.className = 'fb-video';
+							fbContainer.setAttribute('data-href', url);
+							fbContainer.setAttribute('data-allowfullscreen', 'true');
+							fbContainer.setAttribute('data-controls', 'false');
+
+							mediaElement.originalNode.parentNode.insertBefore(fbContainer, mediaElement.originalNode);
+							mediaElement.originalNode.style.display = 'none';
 
-							fbDiv.remove();
-							createFacebookEmbed(url, options.facebook);
+							FacebookApi.load({
+								lang: fb.options.lang,
+								id: fb.id
+							});
 
 							FB.XFBML.parse();
 
 							if (autoplay) {
-								fbApi.play();
+								fbPlayer.play();
 							}
-
 							break;
 						case 'currentTime':
-							fbApi.seek(value);
+							fbPlayer.seek(value);
 							break;
 						case 'muted':
 							if (value) {
-								fbApi.mute();
+								fbPlayer.mute();
 							} else {
-								fbApi.unmute();
+								fbPlayer.unmute();
 							}
 							setTimeout(function () {
-								var event = mejs.Utils.createEvent('volumechange', fbWrapper);
+								var event = mejs.Utils.createEvent('volumechange', fb);
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
 						case 'volume':
-							fbApi.setVolume(value);
+							fbPlayer.setVolume(value);
 							setTimeout(function () {
-								var event = mejs.Utils.createEvent('volumechange', fbWrapper);
+								var event = mejs.Utils.createEvent('volumechange', fb);
 								mediaElement.dispatchEvent(event);
 							}, 50);
 							break;
 						case 'readyState':
-							var event = mejs.Utils.createEvent('canplay', fbWrapper);
+							var event = mejs.Utils.createEvent('canplay', fb);
 							mediaElement.dispatchEvent(event);
 							break;
 						default:
@@ -156,13 +190,13 @@ var FacebookRenderer = {
 
 		var methods = mejs.html5media.methods,
 		    assignMethods = function assignMethods(methodName) {
-			fbWrapper[methodName] = function () {
-				if (fbApi !== null) {
+			fb[methodName] = function () {
+				if (fbPlayer !== null) {
 					switch (methodName) {
 						case 'play':
-							return fbApi.play();
+							return fbPlayer.play();
 						case 'pause':
-							return fbApi.pause();
+							return fbPlayer.pause();
 						case 'load':
 							return null;
 					}
@@ -176,165 +210,145 @@ var FacebookRenderer = {
 			assignMethods(methods[_i]);
 		}
 
-		function sendEvents(events) {
+		function assignEvents(events) {
 			for (var _i2 = 0, _total2 = events.length; _i2 < _total2; _i2++) {
-				var event = mejs.Utils.createEvent(events[_i2], fbWrapper);
+				var event = mejs.Utils.createEvent(events[_i2], fb);
 				mediaElement.dispatchEvent(event);
 			}
 		}
 
-		function createFacebookEmbed(url, config) {
-			src = url;
-
-			fbDiv = document.createElement('div');
-			fbDiv.id = fbWrapper.id;
-			fbDiv.className = "fb-video";
-			fbDiv.setAttribute("data-href", url);
-			fbDiv.setAttribute("data-allowfullscreen", "true");
-			fbDiv.setAttribute("data-controls", "false");
-
-			mediaElement.originalNode.parentNode.insertBefore(fbDiv, mediaElement.originalNode);
-			mediaElement.originalNode.style.display = 'none';
-
-			window.fbAsyncInit = function () {
-
-				FB.init(config);
-
-				FB.Event.subscribe('xfbml.ready', function (msg) {
-
-					if (msg.type === 'video') {
-
-						fbApi = msg.instance;
-
-						var fbIframe = fbDiv.getElementsByTagName('iframe')[0],
-						    width = fbIframe.offsetWidth,
-						    height = fbIframe.offsetHeight,
-						    events = ['mouseover', 'mouseout'],
-						    assignEvents = function assignEvents(e) {
-							var event = mejs.Utils.createEvent(e.type, fbWrapper);
-							mediaElement.dispatchEvent(event);
-						};
+		window['__ready__' + fb.id] = function () {
+			FB.Event.subscribe('xfbml.ready', function (msg) {
+				if (msg.type === 'video' && fb.id === msg.id) {
+					mediaElement.fbPlayer = fbPlayer = msg.instance;
+
+					var fbIframe = document.getElementById(fb.id),
+					    width = fbIframe.offsetWidth,
+					    height = fbIframe.offsetHeight,
+					    events = ['mouseover', 'mouseout'],
+					    assignIframeEvents = function assignIframeEvents(e) {
+						var event = mejs.Utils.createEvent(e.type, fb);
+						mediaElement.dispatchEvent(event);
+					};
+
+					fb.setSize(width, height);
+					if (!mediaElement.originalNode.muted) {
+						fbPlayer.unmute();
+					}
 
-						fbWrapper.setSize(width, height);
+					if (autoplay) {
+						fbPlayer.play();
+					}
 
-						if (autoplay) {
-							fbApi.play();
-						}
+					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
+						fbIframe.addEventListener(events[_i3], assignIframeEvents);
+					}
 
-						for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
-							fbIframe.addEventListener(events[_i3], assignEvents, false);
-						}
+					fb.eventHandler = {};
 
-						var fbEvents = ['startedPlaying', 'paused', 'finishedPlaying', 'startedBuffering', 'finishedBuffering'];
-						for (var _i4 = 0, _total4 = fbEvents.length; _i4 < _total4; _i4++) {
-							var event = fbEvents[_i4],
-							    handler = eventHandler[event];
-							if (handler !== undefined && handler !== null && !mejs.Utils.isObjectEmpty(handler) && typeof handler.removeListener === 'function') {
-								handler.removeListener(event);
-							}
+					var fbEvents = ['startedPlaying', 'paused', 'finishedPlaying', 'startedBuffering', 'finishedBuffering'];
+					for (var _i4 = 0, _total4 = fbEvents.length; _i4 < _total4; _i4++) {
+						var event = fbEvents[_i4],
+						    handler = fb.eventHandler[event];
+						if (handler !== undefined && handler !== null && !mejs.Utils.isObjectEmpty(handler) && typeof handler.removeListener === 'function') {
+							handler.removeListener(event);
 						}
+					}
 
-						if (apiStack.length) {
-							for (var _i5 = 0, _total5 = apiStack.length; _i5 < _total5; _i5++) {
-
-								var stackItem = apiStack[_i5];
+					if (apiStack.length) {
+						for (var _i5 = 0, _total5 = apiStack.length; _i5 < _total5; _i5++) {
+							var stackItem = apiStack[_i5];
 
-								if (stackItem.type === 'set') {
-									var propName = stackItem.propName,
-									    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+							if (stackItem.type === 'set') {
+								var propName = stackItem.propName,
+								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-									fbWrapper['set' + capName](stackItem.value);
-								} else if (stackItem.type === 'call') {
-									fbWrapper[stackItem.methodName]();
-								}
+								fb['set' + capName](stackItem.value);
+							} else if (stackItem.type === 'call') {
+								fb[stackItem.methodName]();
 							}
 						}
-
-						sendEvents(['rendererready', 'loadeddata', 'canplay', 'progress', 'loadedmetadata', 'timeupdate']);
-
-						var timer = void 0;
-
-						eventHandler.startedPlaying = fbApi.subscribe('startedPlaying', function () {
-							if (!hasStartedPlaying) {
-								hasStartedPlaying = true;
-							}
-							paused = false;
-							ended = false;
-							sendEvents(['play', 'playing', 'timeupdate']);
-
-							timer = setInterval(function () {
-								fbApi.getCurrentPosition();
-								sendEvents(['timeupdate']);
-							}, 250);
-						});
-						eventHandler.paused = fbApi.subscribe('paused', function () {
-							paused = true;
-							ended = false;
-							sendEvents(['pause']);
-						});
-						eventHandler.finishedPlaying = fbApi.subscribe('finishedPlaying', function () {
-							paused = true;
-							ended = true;
-
-							sendEvents(['ended']);
-							clearInterval(timer);
-							timer = null;
-						});
-						eventHandler.startedBuffering = fbApi.subscribe('startedBuffering', function () {
-							sendEvents(['progress', 'timeupdate']);
-						});
-						eventHandler.finishedBuffering = fbApi.subscribe('finishedBuffering', function () {
-							sendEvents(['progress', 'timeupdate']);
-						});
 					}
-				});
-			};
 
-			mejs.Utils.loadScript('https://connect.facebook.net/en_US/sdk.js');
-		}
+					assignEvents(['rendererready', 'loadeddata', 'canplay', 'progress', 'loadedmetadata', 'timeupdate']);
 
-		if (mediaFiles.length > 0) {
-			createFacebookEmbed(mediaFiles[0].src, fbWrapper.options.facebook);
-		}
+					var timer = void 0;
 
-		fbWrapper.hide = function () {
-			fbWrapper.stopInterval();
-			fbWrapper.pause();
-			if (fbDiv) {
-				fbDiv.style.display = 'none';
-			}
+					fb.eventHandler.startedPlaying = fbPlayer.subscribe('startedPlaying', function () {
+						if (!hasStartedPlaying) {
+							hasStartedPlaying = true;
+						}
+						paused = false;
+						ended = false;
+						assignEvents(['play', 'playing', 'timeupdate']);
+
+						timer = setInterval(function () {
+							fbPlayer.getCurrentPosition();
+							assignEvents(['timeupdate']);
+						}, 250);
+					});
+					fb.eventHandler.paused = fbPlayer.subscribe('paused', function () {
+						paused = true;
+						ended = false;
+						assignEvents(['pause']);
+					});
+					fb.eventHandler.finishedPlaying = fbPlayer.subscribe('finishedPlaying', function () {
+						paused = true;
+						ended = true;
+
+						assignEvents(['ended']);
+						clearInterval(timer);
+						timer = null;
+					});
+					fb.eventHandler.startedBuffering = fbPlayer.subscribe('startedBuffering', function () {
+						assignEvents(['progress', 'timeupdate']);
+					});
+					fb.eventHandler.finishedBuffering = fbPlayer.subscribe('finishedBuffering', function () {
+						assignEvents(['progress', 'timeupdate']);
+					});
+				}
+			});
 		};
-		fbWrapper.show = function () {
-			if (fbDiv) {
-				fbDiv.style.display = '';
+
+		src = mediaFiles[0].src;
+		var fbContainer = document.createElement('div');
+		fbContainer.id = fb.id;
+		fbContainer.className = 'fb-video';
+		fbContainer.setAttribute('data-href', src);
+		fbContainer.setAttribute('data-allowfullscreen', true);
+		fbContainer.setAttribute('data-controls', !!mediaElement.originalNode.controls);
+		mediaElement.originalNode.parentNode.insertBefore(fbContainer, mediaElement.originalNode);
+		mediaElement.originalNode.style.display = 'none';
+
+		FacebookApi.load({
+			options: fb.options.facebook,
+			id: fb.id
+		});
+
+		fb.hide = function () {
+			fb.pause();
+			if (fbPlayer) {
+				fbContainer.style.display = 'none';
 			}
 		};
-		fbWrapper.setSize = function (width) {
-			if (fbApi !== null && !isNaN(width)) {
-				fbDiv.style.width = width;
+		fb.setSize = function (width) {
+			if (fbPlayer !== null && !isNaN(width)) {
+				fbContainer.style.width = width;
 			}
 		};
-		fbWrapper.destroy = function () {
-			if (poster) {
-				mediaElement.originalNode.setAttribute('poster', poster);
+		fb.show = function () {
+			if (fbPlayer) {
+				fbContainer.style.display = '';
 			}
 		};
 
-		fbWrapper.interval = null;
-
-		fbWrapper.startInterval = function () {
-			fbWrapper.interval = setInterval(function () {
-				var event = mejs.Utils.createEvent('timeupdate', fbWrapper);
-				mediaElement.dispatchEvent(event);
-			}, 250);
-		};
-		fbWrapper.stopInterval = function () {
-			if (fbWrapper.interval) {
-				clearInterval(fbWrapper.interval);
+		fb.destroy = function () {
+			if (poster) {
+				mediaElement.originalNode.setAttribute('poster', poster);
 			}
 		};
 
-		return fbWrapper;
+		return fb;
 	}
 };
 

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/renderers/facebook.min.js


+ 5 - 4
app/Resources/public/assets/mediaelement/build/renderers/soundcloud.js

@@ -47,7 +47,8 @@ var SoundCloudIframeRenderer = {
 		var sc = {},
 		    apiStack = [],
 		    readyState = 4,
-		    autoplay = mediaElement.originalNode.autoplay;
+		    autoplay = mediaElement.originalNode.autoplay,
+		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video';
 
 		var duration = 0,
 		    currentTime = 0,
@@ -259,10 +260,10 @@ var SoundCloudIframeRenderer = {
 
 		scIframe = document.createElement('iframe');
 		scIframe.id = sc.id;
-		scIframe.width = 10;
-		scIframe.height = 10;
+		scIframe.width = isVideo ? '100%' : 1;
+		scIframe.height = isVideo ? '100%' : 1;
 		scIframe.frameBorder = 0;
-		scIframe.style.visibility = 'hidden';
+		scIframe.style.visibility = isVideo ? 'visible' : 'hidden';
 		scIframe.src = mediaFiles[0].src;
 		scIframe.scrolling = 'no';
 

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/renderers/soundcloud.min.js


+ 9 - 9
app/Resources/public/assets/mediaelement/build/renderers/twitch.js

@@ -62,10 +62,10 @@ var TwitchApi = {
 
 		for (var i = 0, total = parameters.length; i < total; i++) {
 			var paramParts = parameters[i].split('=');
-			if (~paramParts[0].indexOf('channel=')) {
+			if (~paramParts[0].indexOf('channel')) {
 				twitchId = paramParts[1];
 				break;
-			} else if (~paramParts[0].indexOf('video=')) {
+			} else if (~paramParts[0].indexOf('video')) {
 				twitchId = 'v' + paramParts[1];
 				break;
 			}
@@ -82,12 +82,12 @@ var TwitchApi = {
 		var parts = url.split('?');
 		url = parts[0];
 		var id = url.substring(url.lastIndexOf('/') + 1);
-		return (/^\d+$/i.test(id) !== null ? 'v' + id : id
+		return (/^\d+$/i.test(id) ? 'v' + id : id
 		);
 	},
 
 	getTwitchType: function getTwitchType(id) {
-		return (/^v\d+/i.test(id) !== null ? 'video' : 'channel'
+		return (/^v\d+/i.test(id) ? 'video' : 'channel'
 		);
 	}
 };
@@ -276,7 +276,7 @@ var TwitchIframeRenderer = {
 
 			var events = ['mouseover', 'mouseout'],
 			    assignEvents = function assignEvents(e) {
-				var event = createEvent(e.type, twitch);
+				var event = mejs.Utils.createEvent(e.type, twitch);
 				mediaElement.dispatchEvent(event);
 			};
 
@@ -286,12 +286,12 @@ var TwitchIframeRenderer = {
 
 			var timer = void 0;
 
-			twitchPlayer.addEventListener('ready', function () {
+			twitchPlayer.addEventListener(Twitch.Player.READY, function () {
 				paused = false;
 				ended = false;
 				sendEvents(['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']);
 			});
-			twitchPlayer.addEventListener('play', function () {
+			twitchPlayer.addEventListener(Twitch.Player.PLAY, function () {
 				if (!hasStartedPlaying) {
 					hasStartedPlaying = true;
 				}
@@ -304,14 +304,14 @@ var TwitchIframeRenderer = {
 					sendEvents(['timeupdate']);
 				}, 250);
 			});
-			twitchPlayer.addEventListener('pause', function () {
+			twitchPlayer.addEventListener(Twitch.Player.PAUSE, function () {
 				paused = true;
 				ended = false;
 				if (!twitchPlayer.getEnded()) {
 					sendEvents(['pause']);
 				}
 			});
-			twitchPlayer.addEventListener('ended', function () {
+			twitchPlayer.addEventListener(Twitch.Player.ENDED, function () {
 				paused = true;
 				ended = true;
 				sendEvents(['ended']);

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/renderers/twitch.min.js


+ 24 - 18
app/Resources/public/assets/mediaelement/build/renderers/vimeo.js

@@ -39,7 +39,7 @@ var VimeoApi = {
 
 		var parts = url.split('?');
 		url = parts[0];
-		return parseInt(url.substring(url.lastIndexOf('/') + 1));
+		return parseInt(url.substring(url.lastIndexOf('/') + 1), 10);
 	}
 };
 
@@ -73,10 +73,8 @@ var vimeoIframeRenderer = {
 		vimeo.id = mediaElement.id + '_' + options.prefix;
 		vimeo.mediaElement = mediaElement;
 
-		var errorHandler = function errorHandler(error, target) {
-			var event = mejs.Utils.createEvent('error', target);
-			event.message = error.name + ': ' + error.message;
-			mediaElement.dispatchEvent(event);
+		var errorHandler = function errorHandler(error) {
+			mediaElement.generateError('Code ' + error.name + ': ' + error.message, mediaFiles);
 		};
 
 		var props = mejs.html5media.properties,
@@ -91,10 +89,8 @@ var vimeoIframeRenderer = {
 					switch (propName) {
 						case 'currentTime':
 							return currentTime;
-
 						case 'duration':
 							return duration;
-
 						case 'volume':
 							return volume;
 						case 'muted':
@@ -103,12 +99,12 @@ var vimeoIframeRenderer = {
 							return paused;
 						case 'ended':
 							return ended;
-
 						case 'src':
 							vimeoPlayer.getVideoUrl().then(function (_url) {
 								url = _url;
+							}).catch(function (error) {
+								return errorHandler(error);
 							});
-
 							return url;
 						case 'buffered':
 							return {
@@ -141,7 +137,7 @@ var vimeoIframeRenderer = {
 									vimeoPlayer.play();
 								}
 							}).catch(function (error) {
-								errorHandler(error, vimeo);
+								return errorHandler(error);
 							});
 							break;
 						case 'currentTime':
@@ -152,7 +148,7 @@ var vimeoIframeRenderer = {
 									mediaElement.dispatchEvent(event);
 								}, 50);
 							}).catch(function (error) {
-								errorHandler(error, vimeo);
+								return errorHandler(error);
 							});
 							break;
 						case 'volume':
@@ -164,12 +160,12 @@ var vimeoIframeRenderer = {
 									mediaElement.dispatchEvent(event);
 								}, 50);
 							}).catch(function (error) {
-								errorHandler(error, vimeo);
+								return errorHandler(error);
 							});
 							break;
 						case 'loop':
 							vimeoPlayer.setLoop(value).catch(function (error) {
-								errorHandler(error, vimeo);
+								return errorHandler(error);
 							});
 							break;
 						case 'muted':
@@ -181,7 +177,7 @@ var vimeoIframeRenderer = {
 										mediaElement.dispatchEvent(event);
 									}, 50);
 								}).catch(function (error) {
-									errorHandler(error, vimeo);
+									return errorHandler(error);
 								});
 							} else {
 								vimeoPlayer.setVolume(oldVolume).then(function () {
@@ -191,7 +187,7 @@ var vimeoIframeRenderer = {
 										mediaElement.dispatchEvent(event);
 									}, 50);
 								}).catch(function (error) {
-									errorHandler(error, vimeo);
+									return errorHandler(error);
 								});
 							}
 							break;
@@ -256,6 +252,11 @@ var vimeoIframeRenderer = {
 				}
 			}
 
+			if (mediaElement.originalNode.muted) {
+				vimeoPlayer.setVolume(0);
+				volume = 0;
+			}
+
 			var vimeoIframe = document.getElementById(vimeo.id);
 			var events = void 0;
 
@@ -295,23 +296,25 @@ var vimeoIframeRenderer = {
 						if (mediaElement.originalNode.autoplay) {
 							var initEvent = mejs.Utils.createEvent('play', vimeo);
 							mediaElement.dispatchEvent(initEvent);
+
+							var playingEvent = mejs.Utils.createEvent('playing', vimeo);
+							mediaElement.dispatchEvent(playingEvent);
 						}
 					}
 
 					var event = mejs.Utils.createEvent('progress', vimeo);
 					mediaElement.dispatchEvent(event);
 				}).catch(function (error) {
-					errorHandler(error, vimeo);
+					return errorHandler(error);
 				});
 			});
 			vimeoPlayer.on('timeupdate', function () {
 				vimeoPlayer.getCurrentTime().then(function (seconds) {
 					currentTime = seconds;
-
 					var event = mejs.Utils.createEvent('timeupdate', vimeo);
 					mediaElement.dispatchEvent(event);
 				}).catch(function (error) {
-					errorHandler(error, vimeo);
+					return errorHandler(error);
 				});
 			});
 			vimeoPlayer.on('play', function () {
@@ -319,6 +322,9 @@ var vimeoIframeRenderer = {
 				ended = false;
 				var event = mejs.Utils.createEvent('play', vimeo);
 				mediaElement.dispatchEvent(event);
+
+				var playingEvent = mejs.Utils.createEvent('playing', vimeo);
+				mediaElement.dispatchEvent(playingEvent);
 			});
 			vimeoPlayer.on('pause', function () {
 				paused = true;

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
app/Resources/public/assets/mediaelement/build/renderers/vimeo.min.js


+ 68 - 0
app/Resources/public/assets/mediaelement/changelog.md

@@ -1,5 +1,72 @@
 ### Version History
 
+*4.2.8 (2018/01/16)*
+
+* Clarify effect of setting `toggleCaptionsButtonWhenOnlyOne` (https://github.com/mediaelement/mediaelement/pull/2471) @cjcolvar
+* Remember `startVolume` value even if video is muted (https://github.com/mediaelement/mediaelement/pull/2470) @D3nnisH
+* Fix @see links for hls.js renderer (https://github.com/mediaelement/mediaelement/pull/2478) @cjcolvar
+* UID filter for Flash files @johndyer
+
+*4.2.7 (2017/11/17)*
+
+* Fixed issue with `setFillMode` when using cross-domain URLs in iframe @rafa8626
+* Added new `proxyType` and `streamDelimiter` variables to Flash video to support RTMPS compatibility @rafa8626
+* Fixed issues with renderers when trying to use `muted` property while using `MediaElement` shim @rafa8626
+* Fixed typo with `Twitch` renderer related to trigger mouse events @rafa8626
+* Fixed typo when assigning options to `Dailymotion` renderer @rafa8626
+* Added missing workflow to set controls on YouTube, Facebook and Dailymotion renderers via `controls` property @rafa8626 
+* Added missing `playing` event on `Vimeo` and `Dailymotion` renderer @rafa8626
+* Expanded regexp to accept 3-letter country codes and underscore for 4-letter country codes @rafa8626
+* Added `init`, `getElement` and `buildfeatures` methods for WP compatibility @rafa8626
+* Make `setPoster` method to work on mobile devices with native controls (https://github.com/mediaelement/mediaelement/pull/2419) @lucash
+* Added missing conditional in native HLS and HTML5 renderer to test media files correctly to trigger error after testing all of them @rafa8626
+* Added jsDelivr badge (https://github.com/mediaelement/mediaelement/pull/2421) @LukasDrgon
+* Fixed issue with `visible` method when `getClientRects` is not a function @rafa8626
+* Fixed issues with `parseInt` method not setting radix in some calls @rafa8626
+* Added missing argument in `secondsToTimeCode` method to check the time format given and display accordingly @rafa8626 
+* Fixed issues related to duplicated calls when triggering error and fixed style for poster when error is displayed @rafa8626
+* Fixed issue with captions not being rendered inside video frame on any state @rafa8626
+* Integrated `destroy` method in `MediaElement` class @rafa8626
+* Added validation to modify `SoundCloud` iframe atributes when using `video` tag @rafa8626
+* Fixed issue when checking for native dimensions of `video` element to set responsive dimensions correctly @rafa8626
+* Added missing workflow to make `loop` work correctly in YouTube according to documentation @rafa8626
+* Changed paths for `hls.js` and `flv.js` renderers to always be up-to-date @rafa8626
+* Fixed issue with timecode displaying 60 seconds @rafa8626
+* Fixed JSDocs for some features @rafa8626
+
+*4.2.6 (2017/09/19)*
+
+* Fixed positioning of progress bar tooltip @rafa8626
+* Added style to avoid flickering when using volume on Chrome @rafa8626
+* Fixed broken UUT @rafa8626
+* Added `configs` parameter for native FLV according to documentation for flv.js (https://github.com/mediaelement/mediaelement/pull/2344) @xiaosongxiaosong
+* Added missing call to avoid further calls to attempt set the player's dimensions once removed @rafa8626
+* Fixed typo when checking error event and fixed workflow to loop multiple sources until valid one is found for `html5` and `native_hls` renderers @rafa8626
+* Fixed workflow to enable/disable controls once error occurs and once user recovers from error @rafa8626
+* Fixed issue when no `height` attribute but style is set to create proper player dimensions @rafa8626
+* Use local variable for `getComputedStyle` polyfill to avoid recursion on Firefox (https://github.com/mediaelement/mediaelement/pull/2351) @synthecypher
+* Fixed accessibility issues when using keyboard on focused progress bar and moved `keyActions` to their individual components @rafa8626
+* Fixed issues with progress bar tooltip when media duration is too long @rafa8626
+* Added new `mejs` variables needed for WordPress @rafa8626
+* Fixed issues with events fired in incorrect time for `flash_video` renderer @milax
+* Set specific settings for embedding flash object in Edge browser (https://github.com/mediaelement/mediaelement/pull/2364) @milax 
+* Added new constant to detect `passive events` and added conditional for `touchstart` events @rafa8626
+* Removed width and height from `embed` object to ensure Flash audio will play on Chrome (https://github.com/mediaelement/mediaelement/pull/2367) @milax
+* Fixed issue with Caption/Chapters menus not selecting options properly when using mouse @rafa8626 and @Instagit
+* Removed black area when Flash player is used in audio player (https://github.com/mediaelement/mediaelement/pull/2370) @milax
+* Fixed issue with `poster` option not being set if `poster` attribute is absent @rafa8626
+* Moved code inside `player.js` to corresponding features to restore original order or operations when creating layers @rafa8626
+* Added `unmute` command for Facebook renderer @rafa8626
+* Fixed events emitting and run handlers of active renderer only for Flash and HTML5 renderer (https://github.com/mediaelement/mediaelement/pull/2368) @milax
+* Fixed issues when setting sources for Flash HLS renderer and added missing events @rafa8626
+* Upgraded `hls.js` to 0.8.2 version and `flv.js` to 1.3.3 version @rafa8626
+* Refactor `Facebook` renderer to solve issues when instantiating multiple videos and added new `lang` parameter to load language on SDK @rafa8626
+* Fixed typos in `Twitch` renderer that caused channels not to play properly @rafa8626
+* Fixed typos in `Flash` renderer to avoid issues with `embed` dimensions @rafa8626
+* Reintegrated old workflow to deal only with `dash.js` play errors @rafa8626 
+* Updated documentation @rafa8626
+* Added documentation about MEJS installation through Bower (https://github.com/mediaelement/mediaelement/pull/2399) @thompsonemerson
+
 *4.2.5 (2017/08/09)*
 
 * Removed workflow that ignored MIME type to get a better media match @rafa8626
@@ -41,6 +108,7 @@
 * Added missing code to explain how to use `MediaElement` with `RequireJS` @rafa8626
 * Integrated Flashls events to be processed by the player @rafa8626
 * Fixed test file when using JSDom and Mocha Chai @rafa8626
+* Changed arguments in `M(PEG)-DASH` native renderer to trigger correctly events @rafa8626
 
 *4.2.1/4.2.2 (2017/06/28)*
 

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä