wp/wp-includes/js/mediaelement/renderers/vimeo.js
changeset 16 a86126ab1dd4
parent 7 cf61fcea0001
child 18 be944660c56a
equal deleted inserted replaced
15:3d4e9c994f10 16:a86126ab1dd4
     6  * using a variety of technologies (pure JavaScript, Flash, iframe)
     6  * using a variety of technologies (pure JavaScript, Flash, iframe)
     7  *
     7  *
     8  * Copyright 2010-2017, John Dyer (http://j.hn/)
     8  * Copyright 2010-2017, John Dyer (http://j.hn/)
     9  * License: MIT
     9  * License: MIT
    10  *
    10  *
    11  */(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){
    11  */(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){
    12 'use strict';
    12 'use strict';
    13 
    13 
    14 var VimeoApi = {
    14 var VimeoApi = {
    15 
    15 
    16 	promise: null,
    16 	promise: null,
    71 
    71 
    72 		vimeo.options = options;
    72 		vimeo.options = options;
    73 		vimeo.id = mediaElement.id + '_' + options.prefix;
    73 		vimeo.id = mediaElement.id + '_' + options.prefix;
    74 		vimeo.mediaElement = mediaElement;
    74 		vimeo.mediaElement = mediaElement;
    75 
    75 
    76 		var errorHandler = function errorHandler(error, target) {
    76 		var errorHandler = function errorHandler(error) {
    77 			var event = mejs.Utils.createEvent('error', target);
    77 			mediaElement.generateError('Code ' + error.name + ': ' + error.message, mediaFiles);
    78 			event.message = error.name + ': ' + error.message;
       
    79 			mediaElement.dispatchEvent(event);
       
    80 		};
    78 		};
    81 
    79 
    82 		var props = mejs.html5media.properties,
    80 		var props = mejs.html5media.properties,
    83 		    assignGettersSetters = function assignGettersSetters(propName) {
    81 		    assignGettersSetters = function assignGettersSetters(propName) {
    84 
    82 
    89 					var value = null;
    87 					var value = null;
    90 
    88 
    91 					switch (propName) {
    89 					switch (propName) {
    92 						case 'currentTime':
    90 						case 'currentTime':
    93 							return currentTime;
    91 							return currentTime;
    94 
       
    95 						case 'duration':
    92 						case 'duration':
    96 							return duration;
    93 							return duration;
    97 
       
    98 						case 'volume':
    94 						case 'volume':
    99 							return volume;
    95 							return volume;
   100 						case 'muted':
    96 						case 'muted':
   101 							return volume === 0;
    97 							return volume === 0;
   102 						case 'paused':
    98 						case 'paused':
   103 							return paused;
    99 							return paused;
   104 						case 'ended':
   100 						case 'ended':
   105 							return ended;
   101 							return ended;
   106 
       
   107 						case 'src':
   102 						case 'src':
   108 							vimeoPlayer.getVideoUrl().then(function (_url) {
   103 							vimeoPlayer.getVideoUrl().then(function (_url) {
   109 								url = _url;
   104 								url = _url;
       
   105 							}).catch(function (error) {
       
   106 								return errorHandler(error);
   110 							});
   107 							});
   111 
       
   112 							return url;
   108 							return url;
   113 						case 'buffered':
   109 						case 'buffered':
   114 							return {
   110 							return {
   115 								start: function start() {
   111 								start: function start() {
   116 									return 0;
   112 									return 0;
   139 							vimeoPlayer.loadVideo(videoId).then(function () {
   135 							vimeoPlayer.loadVideo(videoId).then(function () {
   140 								if (mediaElement.originalNode.autoplay) {
   136 								if (mediaElement.originalNode.autoplay) {
   141 									vimeoPlayer.play();
   137 									vimeoPlayer.play();
   142 								}
   138 								}
   143 							}).catch(function (error) {
   139 							}).catch(function (error) {
   144 								errorHandler(error, vimeo);
   140 								return errorHandler(error);
   145 							});
   141 							});
   146 							break;
   142 							break;
   147 						case 'currentTime':
   143 						case 'currentTime':
   148 							vimeoPlayer.setCurrentTime(value).then(function () {
   144 							vimeoPlayer.setCurrentTime(value).then(function () {
   149 								currentTime = value;
   145 								currentTime = value;
   150 								setTimeout(function () {
   146 								setTimeout(function () {
   151 									var event = mejs.Utils.createEvent('timeupdate', vimeo);
   147 									var event = mejs.Utils.createEvent('timeupdate', vimeo);
   152 									mediaElement.dispatchEvent(event);
   148 									mediaElement.dispatchEvent(event);
   153 								}, 50);
   149 								}, 50);
   154 							}).catch(function (error) {
   150 							}).catch(function (error) {
   155 								errorHandler(error, vimeo);
   151 								return errorHandler(error);
   156 							});
   152 							});
   157 							break;
   153 							break;
   158 						case 'volume':
   154 						case 'volume':
   159 							vimeoPlayer.setVolume(value).then(function () {
   155 							vimeoPlayer.setVolume(value).then(function () {
   160 								volume = value;
   156 								volume = value;
   162 								setTimeout(function () {
   158 								setTimeout(function () {
   163 									var event = mejs.Utils.createEvent('volumechange', vimeo);
   159 									var event = mejs.Utils.createEvent('volumechange', vimeo);
   164 									mediaElement.dispatchEvent(event);
   160 									mediaElement.dispatchEvent(event);
   165 								}, 50);
   161 								}, 50);
   166 							}).catch(function (error) {
   162 							}).catch(function (error) {
   167 								errorHandler(error, vimeo);
   163 								return errorHandler(error);
   168 							});
   164 							});
   169 							break;
   165 							break;
   170 						case 'loop':
   166 						case 'loop':
   171 							vimeoPlayer.setLoop(value).catch(function (error) {
   167 							vimeoPlayer.setLoop(value).catch(function (error) {
   172 								errorHandler(error, vimeo);
   168 								return errorHandler(error);
   173 							});
   169 							});
   174 							break;
   170 							break;
   175 						case 'muted':
   171 						case 'muted':
   176 							if (value) {
   172 							if (value) {
   177 								vimeoPlayer.setVolume(0).then(function () {
   173 								vimeoPlayer.setVolume(0).then(function () {
   179 									setTimeout(function () {
   175 									setTimeout(function () {
   180 										var event = mejs.Utils.createEvent('volumechange', vimeo);
   176 										var event = mejs.Utils.createEvent('volumechange', vimeo);
   181 										mediaElement.dispatchEvent(event);
   177 										mediaElement.dispatchEvent(event);
   182 									}, 50);
   178 									}, 50);
   183 								}).catch(function (error) {
   179 								}).catch(function (error) {
   184 									errorHandler(error, vimeo);
   180 									return errorHandler(error);
   185 								});
   181 								});
   186 							} else {
   182 							} else {
   187 								vimeoPlayer.setVolume(oldVolume).then(function () {
   183 								vimeoPlayer.setVolume(oldVolume).then(function () {
   188 									volume = oldVolume;
   184 									volume = oldVolume;
   189 									setTimeout(function () {
   185 									setTimeout(function () {
   190 										var event = mejs.Utils.createEvent('volumechange', vimeo);
   186 										var event = mejs.Utils.createEvent('volumechange', vimeo);
   191 										mediaElement.dispatchEvent(event);
   187 										mediaElement.dispatchEvent(event);
   192 									}, 50);
   188 									}, 50);
   193 								}).catch(function (error) {
   189 								}).catch(function (error) {
   194 									errorHandler(error, vimeo);
   190 									return errorHandler(error);
   195 								});
   191 								});
   196 							}
   192 							}
   197 							break;
   193 							break;
   198 						case 'readyState':
   194 						case 'readyState':
   199 							var event = mejs.Utils.createEvent('canplay', vimeo);
   195 							var event = mejs.Utils.createEvent('canplay', vimeo);
   307 					}
   303 					}
   308 
   304 
   309 					var event = mejs.Utils.createEvent('progress', vimeo);
   305 					var event = mejs.Utils.createEvent('progress', vimeo);
   310 					mediaElement.dispatchEvent(event);
   306 					mediaElement.dispatchEvent(event);
   311 				}).catch(function (error) {
   307 				}).catch(function (error) {
   312 					errorHandler(error, vimeo);
   308 					return errorHandler(error);
   313 				});
   309 				});
   314 			});
   310 			});
   315 			vimeoPlayer.on('timeupdate', function () {
   311 			vimeoPlayer.on('timeupdate', function () {
   316 				vimeoPlayer.getCurrentTime().then(function (seconds) {
   312 				vimeoPlayer.getCurrentTime().then(function (seconds) {
   317 					currentTime = seconds;
   313 					currentTime = seconds;
   318 
       
   319 					var event = mejs.Utils.createEvent('timeupdate', vimeo);
   314 					var event = mejs.Utils.createEvent('timeupdate', vimeo);
   320 					mediaElement.dispatchEvent(event);
   315 					mediaElement.dispatchEvent(event);
   321 				}).catch(function (error) {
   316 				}).catch(function (error) {
   322 					errorHandler(error, vimeo);
   317 					return errorHandler(error);
   323 				});
   318 				});
   324 			});
   319 			});
   325 			vimeoPlayer.on('play', function () {
   320 			vimeoPlayer.on('play', function () {
   326 				paused = false;
   321 				paused = false;
   327 				ended = false;
   322 				ended = false;
   358 		    width = mediaElement.originalNode.width,
   353 		    width = mediaElement.originalNode.width,
   359 		    vimeoContainer = document.createElement('iframe'),
   354 		    vimeoContainer = document.createElement('iframe'),
   360 		    standardUrl = 'https://player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src);
   355 		    standardUrl = 'https://player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src);
   361 
   356 
   362 		var queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : '';
   357 		var queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : '';
   363 		if (queryArgs && mediaElement.originalNode.autoplay && queryArgs.indexOf('autoplay') === -1) {
   358 		var args = [];
   364 			queryArgs += '&autoplay=1';
   359 
   365 		}
   360 		if (mediaElement.originalNode.autoplay && queryArgs.indexOf('autoplay') === -1) {
   366 		if (queryArgs && mediaElement.originalNode.loop && queryArgs.indexOf('loop') === -1) {
   361 			args.push('autoplay=1');
   367 			queryArgs += '&loop=1';
   362 		}
   368 		}
   363 		if (mediaElement.originalNode.loop && queryArgs.indexOf('loop') === -1) {
       
   364 			args.push('loop=1');
       
   365 		}
       
   366 
       
   367 		queryArgs = '' + queryArgs + (queryArgs ? '&' : '?') + args.join('&');
   369 
   368 
   370 		vimeoContainer.setAttribute('id', vimeo.id);
   369 		vimeoContainer.setAttribute('id', vimeo.id);
   371 		vimeoContainer.setAttribute('width', width);
   370 		vimeoContainer.setAttribute('width', width);
   372 		vimeoContainer.setAttribute('height', height);
   371 		vimeoContainer.setAttribute('height', height);
   373 		vimeoContainer.setAttribute('frameBorder', '0');
   372 		vimeoContainer.setAttribute('frameBorder', '0');
   374 		vimeoContainer.setAttribute('src', '' + standardUrl + queryArgs);
   373 		vimeoContainer.setAttribute('src', '' + standardUrl + queryArgs);
   375 		vimeoContainer.setAttribute('webkitallowfullscreen', '');
   374 		vimeoContainer.setAttribute('webkitallowfullscreen', 'true');
   376 		vimeoContainer.setAttribute('mozallowfullscreen', '');
   375 		vimeoContainer.setAttribute('mozallowfullscreen', 'true');
   377 		vimeoContainer.setAttribute('allowfullscreen', '');
   376 		vimeoContainer.setAttribute('allowfullscreen', 'true');
       
   377 		vimeoContainer.setAttribute('allow', 'autoplay');
   378 
   378 
   379 		mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode);
   379 		mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode);
   380 		mediaElement.originalNode.style.display = 'none';
   380 		mediaElement.originalNode.style.display = 'none';
   381 
   381 
   382 		VimeoApi.load({
   382 		VimeoApi.load({