a28524d33d6ef333e6db2168c78119d2854fbafa
3 * http://www.mediaelementjs.com/
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
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
){
18 load
: function load(settings
) {
20 if (typeof Vimeo
!== 'undefined') {
21 VimeoApi
._createPlayer(settings
);
23 VimeoApi
.promise
= VimeoApi
.promise
|| mejs
.Utils
.loadScript('https://player.vimeo.com/api/player.js');
24 VimeoApi
.promise
.then(function () {
25 VimeoApi
._createPlayer(settings
);
30 _createPlayer
: function _createPlayer(settings
) {
31 var player
= new Vimeo
.Player(settings
.iframe
);
32 window
['__ready__' + settings
.id
](player
);
35 getVimeoId
: function getVimeoId(url
) {
36 if (url
=== undefined || url
=== null) {
40 var parts
= url
.split('?');
42 return parseInt(url
.substring(url
.lastIndexOf('/') + 1));
46 var vimeoIframeRenderer
= {
50 prefix
: 'vimeo_iframe'
53 canPlayType
: function canPlayType(type
) {
54 return ~['video/vimeo', 'video/x-vimeo'].indexOf(type
.toLowerCase());
57 create
: function create(mediaElement
, options
, mediaFiles
) {
72 vimeo
.options
= options
;
73 vimeo
.id
= mediaElement
.id
+ '_' + options
.prefix
;
74 vimeo
.mediaElement
= mediaElement
;
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
);
82 var props
= mejs
.html5media
.properties
,
83 assignGettersSetters
= function assignGettersSetters(propName
) {
85 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
87 vimeo
['get' + capName
] = function () {
88 if (vimeoPlayer
!== null) {
108 vimeoPlayer
.getVideoUrl().then(function (_url
) {
115 start
: function start() {
118 end
: function end() {
119 return bufferedTime
* duration
;
132 vimeo
['set' + capName
] = function (value
) {
133 if (vimeoPlayer
!== null) {
136 var _url2
= typeof value
=== 'string' ? value
: value
[0].src
,
137 videoId
= VimeoApi
.getVimeoId(_url2
);
139 vimeoPlayer
.loadVideo(videoId
).then(function () {
140 if (mediaElement
.originalNode
.autoplay
) {
143 }).catch(function (error
) {
144 errorHandler(error
, vimeo
);
148 vimeoPlayer
.setCurrentTime(value
).then(function () {
150 setTimeout(function () {
151 var event
= mejs
.Utils
.createEvent('timeupdate', vimeo
);
152 mediaElement
.dispatchEvent(event
);
154 }).catch(function (error
) {
155 errorHandler(error
, vimeo
);
159 vimeoPlayer
.setVolume(value
).then(function () {
162 setTimeout(function () {
163 var event
= mejs
.Utils
.createEvent('volumechange', vimeo
);
164 mediaElement
.dispatchEvent(event
);
166 }).catch(function (error
) {
167 errorHandler(error
, vimeo
);
171 vimeoPlayer
.setLoop(value
).catch(function (error
) {
172 errorHandler(error
, vimeo
);
177 vimeoPlayer
.setVolume(0).then(function () {
179 setTimeout(function () {
180 var event
= mejs
.Utils
.createEvent('volumechange', vimeo
);
181 mediaElement
.dispatchEvent(event
);
183 }).catch(function (error
) {
184 errorHandler(error
, vimeo
);
187 vimeoPlayer
.setVolume(oldVolume
).then(function () {
189 setTimeout(function () {
190 var event
= mejs
.Utils
.createEvent('volumechange', vimeo
);
191 mediaElement
.dispatchEvent(event
);
193 }).catch(function (error
) {
194 errorHandler(error
, vimeo
);
199 var event
= mejs
.Utils
.createEvent('canplay', vimeo
);
200 mediaElement
.dispatchEvent(event
);
207 apiStack
.push({ type
: 'set', propName
: propName
, value
: value
});
212 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
213 assignGettersSetters(props
[i
]);
216 var methods
= mejs
.html5media
.methods
,
217 assignMethods
= function assignMethods(methodName
) {
218 vimeo
[methodName
] = function () {
219 if (vimeoPlayer
!== null) {
220 switch (methodName
) {
223 return vimeoPlayer
.play();
226 return vimeoPlayer
.pause();
231 apiStack
.push({ type
: 'call', methodName
: methodName
});
236 for (var _i
= 0, _total
= methods
.length
; _i
< _total
; _i
++) {
237 assignMethods(methods
[_i
]);
240 window
['__ready__' + vimeo
.id
] = function (_vimeoPlayer
) {
242 mediaElement
.vimeoPlayer
= vimeoPlayer
= _vimeoPlayer
;
244 if (apiStack
.length
) {
245 for (var _i2
= 0, _total2
= apiStack
.length
; _i2
< _total2
; _i2
++) {
246 var stackItem
= apiStack
[_i2
];
248 if (stackItem
.type
=== 'set') {
249 var propName
= stackItem
.propName
,
250 capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
252 vimeo
['set' + capName
](stackItem
.value
);
253 } else if (stackItem
.type
=== 'call') {
254 vimeo
[stackItem
.methodName
]();
259 var vimeoIframe
= document
.getElementById(vimeo
.id
);
262 events
= ['mouseover', 'mouseout'];
264 var assignEvents
= function assignEvents(e
) {
265 var event
= mejs
.Utils
.createEvent(e
.type
, vimeo
);
266 mediaElement
.dispatchEvent(event
);
269 for (var _i3
= 0, _total3
= events
.length
; _i3
< _total3
; _i3
++) {
270 vimeoIframe
.addEventListener(events
[_i3
], assignEvents
, false);
273 vimeoPlayer
.on('loaded', function () {
274 vimeoPlayer
.getDuration().then(function (loadProgress
) {
275 duration
= loadProgress
;
277 bufferedTime
= duration
* loadProgress
;
278 if (mediaElement
.originalNode
.autoplay
) {
281 var event
= mejs
.Utils
.createEvent('play', vimeo
);
282 mediaElement
.dispatchEvent(event
);
285 }).catch(function (error
) {
286 errorHandler(error
, vimeo
);
289 vimeoPlayer
.on('progress', function () {
290 vimeoPlayer
.getDuration().then(function (loadProgress
) {
291 duration
= loadProgress
;
294 bufferedTime
= duration
* loadProgress
;
295 if (mediaElement
.originalNode
.autoplay
) {
296 var initEvent
= mejs
.Utils
.createEvent('play', vimeo
);
297 mediaElement
.dispatchEvent(initEvent
);
301 var event
= mejs
.Utils
.createEvent('progress', vimeo
);
302 mediaElement
.dispatchEvent(event
);
303 }).catch(function (error
) {
304 errorHandler(error
, vimeo
);
307 vimeoPlayer
.on('timeupdate', function () {
308 vimeoPlayer
.getCurrentTime().then(function (seconds
) {
309 currentTime
= seconds
;
311 var event
= mejs
.Utils
.createEvent('timeupdate', vimeo
);
312 mediaElement
.dispatchEvent(event
);
313 }).catch(function (error
) {
314 errorHandler(error
, vimeo
);
317 vimeoPlayer
.on('play', function () {
320 var event
= mejs
.Utils
.createEvent('play', vimeo
);
321 mediaElement
.dispatchEvent(event
);
323 vimeoPlayer
.on('pause', function () {
327 var event
= mejs
.Utils
.createEvent('pause', vimeo
);
328 mediaElement
.dispatchEvent(event
);
330 vimeoPlayer
.on('ended', function () {
334 var event
= mejs
.Utils
.createEvent('ended', vimeo
);
335 mediaElement
.dispatchEvent(event
);
338 events
= ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
340 for (var _i4
= 0, _total4
= events
.length
; _i4
< _total4
; _i4
++) {
341 var event
= mejs
.Utils
.createEvent(events
[_i4
], vimeo
);
342 mediaElement
.dispatchEvent(event
);
346 var height
= mediaElement
.originalNode
.height
,
347 width
= mediaElement
.originalNode
.width
,
348 vimeoContainer
= document
.createElement('iframe'),
349 standardUrl
= 'https://player.vimeo.com/video/' + VimeoApi
.getVimeoId(mediaFiles
[0].src
);
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';
355 if (queryArgs
&& mediaElement
.originalNode
.loop
&& queryArgs
.indexOf('loop') === -1) {
356 queryArgs
+= '&loop=1';
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', '');
368 mediaElement
.originalNode
.parentNode
.insertBefore(vimeoContainer
, mediaElement
.originalNode
);
369 mediaElement
.originalNode
.style
.display
= 'none';
372 iframe
: vimeoContainer
,
376 vimeo
.hide = function () {
379 vimeoContainer
.style
.display
= 'none';
382 vimeo
.setSize = function (width
, height
) {
383 vimeoContainer
.setAttribute('width', width
);
384 vimeoContainer
.setAttribute('height', height
);
386 vimeo
.show = function () {
388 vimeoContainer
.style
.display
= '';
392 vimeo
.destroy = function () {};
398 mejs
.Utils
.typeChecks
.push(function (url
) {
399 return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url
) ? 'video/x-vimeo' : null
403 mejs
.Renderers
.add(vimeoIframeRenderer
);