1/*! 2 * MediaElement.js 3 * http://www.mediaelementjs.com/ 4 * 5 * Wrapper that mimics native HTML5 MediaElement (audio and video) 6 * using a variety of technologies (pure JavaScript, Flash, iframe) 7 * 8 * Copyright 2010-2017, John Dyer (http://j.hn/) 9 * License: MIT 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){ 12'use strict'; 13 14var VimeoApi = { 15 16 promise: null, 17 18 load: function load(settings) { 19 20 if (typeof Vimeo !== 'undefined') { 21 VimeoApi._createPlayer(settings); 22 } else { 23 VimeoApi.promise = VimeoApi.promise || mejs.Utils.loadScript('https://player.vimeo.com/api/player.js'); 24 VimeoApi.promise.then(function () { 25 VimeoApi._createPlayer(settings); 26 }); 27 } 28 }, 29 30 _createPlayer: function _createPlayer(settings) { 31 var player = new Vimeo.Player(settings.iframe); 32 window['__ready__' + settings.id](player); 33 }, 34 35 getVimeoId: function getVimeoId(url) { 36 if (url === undefined || url === null) { 37 return null; 38 } 39 40 var parts = url.split('?'); 41 url = parts[0]; 42 return parseInt(url.substring(url.lastIndexOf('/') + 1)); 43 } 44}; 45 46var vimeoIframeRenderer = { 47 48 name: 'vimeo_iframe', 49 options: { 50 prefix: 'vimeo_iframe' 51 }, 52 53 canPlayType: function canPlayType(type) { 54 return ~['video/vimeo', 'video/x-vimeo'].indexOf(type.toLowerCase()); 55 }, 56 57 create: function create(mediaElement, options, mediaFiles) { 58 var apiStack = [], 59 vimeo = {}, 60 readyState = 4; 61 62 var paused = true, 63 volume = 1, 64 oldVolume = volume, 65 currentTime = 0, 66 bufferedTime = 0, 67 ended = false, 68 duration = 0, 69 vimeoPlayer = null, 70 url = ''; 71 72 vimeo.options = options; 73 vimeo.id = mediaElement.id + '_' + options.prefix; 74 vimeo.mediaElement = mediaElement; 75 76 var errorHandler = function errorHandler(error, target) { 77 var event = mejs.Utils.createEvent('error', target); 78 event.message = error.name + ': ' + error.message; 79 mediaElement.dispatchEvent(event); 80 }; 81 82 var props = mejs.html5media.properties, 83 assignGettersSetters = function assignGettersSetters(propName) { 84 85 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 86 87 vimeo['get' + capName] = function () { 88 if (vimeoPlayer !== null) { 89 var value = null; 90 91 switch (propName) { 92 case 'currentTime': 93 return currentTime; 94 95 case 'duration': 96 return duration; 97 98 case 'volume': 99 return volume; 100 case 'muted': 101 return volume === 0; 102 case 'paused': 103 return paused; 104 case 'ended': 105 return ended; 106 107 case 'src': 108 vimeoPlayer.getVideoUrl().then(function (_url) { 109 url = _url; 110 }); 111 112 return url; 113 case 'buffered': 114 return { 115 start: function start() { 116 return 0; 117 }, 118 end: function end() { 119 return bufferedTime * duration; 120 }, 121 length: 1 122 }; 123 case 'readyState': 124 return readyState; 125 } 126 return value; 127 } else { 128 return null; 129 } 130 }; 131 132 vimeo['set' + capName] = function (value) { 133 if (vimeoPlayer !== null) { 134 switch (propName) { 135 case 'src': 136 var _url2 = typeof value === 'string' ? value : value[0].src, 137 videoId = VimeoApi.getVimeoId(_url2); 138 139 vimeoPlayer.loadVideo(videoId).then(function () { 140 if (mediaElement.originalNode.autoplay) { 141 vimeoPlayer.play(); 142 } 143 }).catch(function (error) { 144 errorHandler(error, vimeo); 145 }); 146 break; 147 case 'currentTime': 148 vimeoPlayer.setCurrentTime(value).then(function () { 149 currentTime = value; 150 setTimeout(function () { 151 var event = mejs.Utils.createEvent('timeupdate', vimeo); 152 mediaElement.dispatchEvent(event); 153 }, 50); 154 }).catch(function (error) { 155 errorHandler(error, vimeo); 156 }); 157 break; 158 case 'volume': 159 vimeoPlayer.setVolume(value).then(function () { 160 volume = value; 161 oldVolume = volume; 162 setTimeout(function () { 163 var event = mejs.Utils.createEvent('volumechange', vimeo); 164 mediaElement.dispatchEvent(event); 165 }, 50); 166 }).catch(function (error) { 167 errorHandler(error, vimeo); 168 }); 169 break; 170 case 'loop':
vendor: 4,251 bytes, lines 171-318
171 vimeoPlayer.setLoop(value).catch(function (error) { 172 errorHandler(error, vimeo); 173 }); 174 break; 175 case 'muted': 176 if (value) { 177 vimeoPlayer.setVolume(0).then(function () { 178 volume = 0; 179 setTimeout(function () { 180 var event = mejs.Utils.createEvent('volumechange', vimeo); 181 mediaElement.dispatchEvent(event); 182 }, 50); 183 }).catch(function (error) { 184 errorHandler(error, vimeo); 185 }); 186 } else { 187 vimeoPlayer.setVolume(oldVolume).then(function () { 188 volume = oldVolume; 189 setTimeout(function () { 190 var event = mejs.Utils.createEvent('volumechange', vimeo); 191 mediaElement.dispatchEvent(event); 192 }, 50); 193 }).catch(function (error) { 194 errorHandler(error, vimeo); 195 }); 196 } 197 break; 198 case 'readyState': 199 var event = mejs.Utils.createEvent('canplay', vimeo); 200 mediaElement.dispatchEvent(event); 201 break; 202 default: 203 204 break; 205 } 206 } else { 207 apiStack.push({ type: 'set', propName: propName, value: value }); 208 } 209 }; 210 }; 211 212 for (var i = 0, total = props.length; i < total; i++) { 213 assignGettersSetters(props[i]); 214 } 215 216 var methods = mejs.html5media.methods, 217 assignMethods = function assignMethods(methodName) { 218 vimeo[methodName] = function () { 219 if (vimeoPlayer !== null) { 220 switch (methodName) { 221 case 'play': 222 paused = false; 223 return vimeoPlayer.play(); 224 case 'pause': 225 paused = true; 226 return vimeoPlayer.pause(); 227 case 'load': 228 return null; 229 } 230 } else { 231 apiStack.push({ type: 'call', methodName: methodName }); 232 } 233 }; 234 }; 235 236 for (var _i = 0, _total = methods.length; _i < _total; _i++) { 237 assignMethods(methods[_i]); 238 } 239 240 window['__ready__' + vimeo.id] = function (_vimeoPlayer) { 241 242 mediaElement.vimeoPlayer = vimeoPlayer = _vimeoPlayer; 243 244 if (apiStack.length) { 245 for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { 246 var stackItem = apiStack[_i2]; 247 248 if (stackItem.type === 'set') { 249 var propName = stackItem.propName, 250 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 251 252 vimeo['set' + capName](stackItem.value); 253 } else if (stackItem.type === 'call') { 254 vimeo[stackItem.methodName](); 255 } 256 } 257 } 258 259 var vimeoIframe = document.getElementById(vimeo.id); 260 var events = void 0; 261 262 events = ['mouseover', 'mouseout']; 263 264 var assignEvents = function assignEvents(e) { 265 var event = mejs.Utils.createEvent(e.type, vimeo); 266 mediaElement.dispatchEvent(event); 267 }; 268 269 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { 270 vimeoIframe.addEventListener(events[_i3], assignEvents, false); 271 } 272 273 vimeoPlayer.on('loaded', function () { 274 vimeoPlayer.getDuration().then(function (loadProgress) { 275 duration = loadProgress; 276 if (duration > 0) { 277 bufferedTime = duration * loadProgress; 278 if (mediaElement.originalNode.autoplay) { 279 paused = false; 280 ended = false; 281 var event = mejs.Utils.createEvent('play', vimeo); 282 mediaElement.dispatchEvent(event); 283 } 284 } 285 }).catch(function (error) { 286 errorHandler(error, vimeo); 287 }); 288 }); 289 vimeoPlayer.on('progress', function () { 290 vimeoPlayer.getDuration().then(function (loadProgress) { 291 duration = loadProgress; 292 293 if (duration > 0) { 294 bufferedTime = duration * loadProgress; 295 if (mediaElement.originalNode.autoplay) { 296 var initEvent = mejs.Utils.createEvent('play', vimeo); 297 mediaElement.dispatchEvent(initEvent); 298 } 299 } 300 301 var event = mejs.Utils.createEvent('progress', vimeo); 302 mediaElement.dispatchEvent(event); 303 }).catch(function (error) { 304 errorHandler(error, vimeo); 305 }); 306 }); 307 vimeoPlayer.on('timeupdate', function () { 308 vimeoPlayer.getCurrentTime().then(function (seconds) { 309 currentTime = seconds; 310 311 var event = mejs.Utils.createEvent('timeupdate', vimeo); 312 mediaElement.dispatchEvent(event); 313 }).catch(function (error) { 314 errorHandler(error, vimeo); 315 }); 316 }); 317 vimeoPlayer.on('play', function () { 318 paused = false;
319 ended = false; 320 var event = mejs.Utils.createEvent('play', vimeo); 321 mediaElement.dispatchEvent(event); 322 }); 323 vimeoPlayer.on('pause', function () { 324 paused = true; 325 ended = false; 326 327 var event = mejs.Utils.createEvent('pause', vimeo); 328 mediaElement.dispatchEvent(event); 329 }); 330 vimeoPlayer.on('ended', function () { 331 paused = false; 332 ended = true; 333 334 var event = mejs.Utils.createEvent('ended', vimeo); 335 mediaElement.dispatchEvent(event); 336 }); 337 338 events = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; 339 340 for (var _i4 = 0, _total4 = events.length; _i4 < _total4; _i4++) { 341 var event = mejs.Utils.createEvent(events[_i4], vimeo); 342 mediaElement.dispatchEvent(event); 343 } 344 }; 345 346 var height = mediaElement.originalNode.height, 347 width = mediaElement.originalNode.width, 348 vimeoContainer = document.createElement('iframe'), 349 standardUrl = '//player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src); 350 351 var queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : ''; 352 if (queryArgs && mediaElement.originalNode.autoplay && queryArgs.indexOf('autoplay') === -1) { 353 queryArgs += '&autoplay=1'; 354 } 355 if (queryArgs && mediaElement.originalNode.loop && queryArgs.indexOf('loop') === -1) { 356 queryArgs += '&loop=1'; 357 } 358 359 vimeoContainer.setAttribute('id', vimeo.id); 360 vimeoContainer.setAttribute('width', width); 361 vimeoContainer.setAttribute('height', height); 362 vimeoContainer.setAttribute('frameBorder', '0'); 363 vimeoContainer.setAttribute('src', '' + standardUrl + queryArgs); 364 vimeoContainer.setAttribute('webkitallowfullscreen', ''); 365 vimeoContainer.setAttribute('mozallowfullscreen', ''); 366 vimeoContainer.setAttribute('allowfullscreen', ''); 367 368 mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode); 369 mediaElement.originalNode.style.display = 'none'; 370 371 VimeoApi.load({ 372 iframe: vimeoContainer, 373 id: vimeo.id 374 }); 375 376 vimeo.hide = function () { 377 vimeo.pause(); 378 if (vimeoPlayer) { 379 vimeoContainer.style.display = 'none'; 380 } 381 }; 382 vimeo.setSize = function (width, height) { 383 vimeoContainer.setAttribute('width', width); 384 vimeoContainer.setAttribute('height', height); 385 }; 386 vimeo.show = function () { 387 if (vimeoPlayer) { 388 vimeoContainer.style.display = ''; 389 } 390 }; 391 392 return vimeo; 393 } 394}; 395 396mejs.Utils.typeChecks.push(function (url) { 397 return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url) ? 'video/x-vimeo' : null 398 ); 399}); 400 401mejs.Renderers.add(vimeoIframeRenderer); 402 403},{}]},{},[1]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.