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), 10);
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
) {
77 mediaElement
.generateError('Code ' + error
.name
+ ': ' + error
.message
, mediaFiles
);
80 var props
= mejs
.html5media
.properties
,
81 assignGettersSetters
= function assignGettersSetters(propName
) {
83 var capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
85 vimeo
['get' + capName
] = function () {
86 if (vimeoPlayer
!== null) {
103 vimeoPlayer
.getVideoUrl().then(function (_url
) {
105 }).catch(function (error
) {
106 return errorHandler(error
);
111 start
: function start() {
114 end
: function end() {
115 return bufferedTime
* duration
;
128 vimeo
['set' + capName
] = function (value
) {
129 if (vimeoPlayer
!== null) {
132 var _url2
= typeof value
=== 'string' ? value
: value
[0].src
,
133 videoId
= VimeoApi
.getVimeoId(_url2
);
135 vimeoPlayer
.loadVideo(videoId
).then(function () {
136 if (mediaElement
.originalNode
.autoplay
) {
139 }).catch(function (error
) {
140 return errorHandler(error
);
144 vimeoPlayer
.setCurrentTime(value
).then(function () {
146 setTimeout(function () {
147 var event
= mejs
.Utils
.createEvent('timeupdate', vimeo
);
148 mediaElement
.dispatchEvent(event
);
150 }).catch(function (error
) {
151 return errorHandler(error
);
155 vimeoPlayer
.setVolume(value
).then(function () {
158 setTimeout(function () {
159 var event
= mejs
.Utils
.createEvent('volumechange', vimeo
);
160 mediaElement
.dispatchEvent(event
);
162 }).catch(function (error
) {
163 return errorHandler(error
);
167 vimeoPlayer
.setLoop(value
).catch(function (error
) {
168 return errorHandler(error
);
173 vimeoPlayer
.setVolume(0).then(function () {
175 setTimeout(function () {
176 var event
= mejs
.Utils
.createEvent('volumechange', vimeo
);
177 mediaElement
.dispatchEvent(event
);
179 }).catch(function (error
) {
180 return errorHandler(error
);
183 vimeoPlayer
.setVolume(oldVolume
).then(function () {
185 setTimeout(function () {
186 var event
= mejs
.Utils
.createEvent('volumechange', vimeo
);
187 mediaElement
.dispatchEvent(event
);
189 }).catch(function (error
) {
190 return errorHandler(error
);
195 var event
= mejs
.Utils
.createEvent('canplay', vimeo
);
196 mediaElement
.dispatchEvent(event
);
203 apiStack
.push({ type
: 'set', propName
: propName
, value
: value
});
208 for (var i
= 0, total
= props
.length
; i
< total
; i
++) {
209 assignGettersSetters(props
[i
]);
212 var methods
= mejs
.html5media
.methods
,
213 assignMethods
= function assignMethods(methodName
) {
214 vimeo
[methodName
] = function () {
215 if (vimeoPlayer
!== null) {
216 switch (methodName
) {
219 return vimeoPlayer
.play();
222 return vimeoPlayer
.pause();
227 apiStack
.push({ type
: 'call', methodName
: methodName
});
232 for (var _i
= 0, _total
= methods
.length
; _i
< _total
; _i
++) {
233 assignMethods(methods
[_i
]);
236 window
['__ready__' + vimeo
.id
] = function (_vimeoPlayer
) {
238 mediaElement
.vimeoPlayer
= vimeoPlayer
= _vimeoPlayer
;
240 if (apiStack
.length
) {
241 for (var _i2
= 0, _total2
= apiStack
.length
; _i2
< _total2
; _i2
++) {
242 var stackItem
= apiStack
[_i2
];
244 if (stackItem
.type
=== 'set') {
245 var propName
= stackItem
.propName
,
246 capName
= '' + propName
.substring(0, 1).toUpperCase() + propName
.substring(1);
248 vimeo
['set' + capName
](stackItem
.value
);
249 } else if (stackItem
.type
=== 'call') {
250 vimeo
[stackItem
.methodName
]();
255 if (mediaElement
.originalNode
.muted
) {
256 vimeoPlayer
.setVolume(0);
260 var vimeoIframe
= document
.getElementById(vimeo
.id
);
263 events
= ['mouseover', 'mouseout'];
265 var assignEvents
= function assignEvents(e
) {
266 var event
= mejs
.Utils
.createEvent(e
.type
, vimeo
);
267 mediaElement
.dispatchEvent(event
);
270 for (var _i3
= 0, _total3
= events
.length
; _i3
< _total3
; _i3
++) {
271 vimeoIframe
.addEventListener(events
[_i3
], assignEvents
, false);
274 vimeoPlayer
.on('loaded', function () {
275 vimeoPlayer
.getDuration().then(function (loadProgress
) {
276 duration
= loadProgress
;
278 bufferedTime
= duration
* loadProgress
;
279 if (mediaElement
.originalNode
.autoplay
) {
282 var event
= mejs
.Utils
.createEvent('play', vimeo
);
283 mediaElement
.dispatchEvent(event
);
286 }).catch(function (error
) {
287 errorHandler(error
, vimeo
);
290 vimeoPlayer
.on('progress', function () {
291 vimeoPlayer
.getDuration().then(function (loadProgress
) {
292 duration
= loadProgress
;
295 bufferedTime
= duration
* loadProgress
;
296 if (mediaElement
.originalNode
.autoplay
) {
297 var initEvent
= mejs
.Utils
.createEvent('play', vimeo
);
298 mediaElement
.dispatchEvent(initEvent
);
300 var playingEvent
= mejs
.Utils
.createEvent('playing', vimeo
);
301 mediaElement
.dispatchEvent(playingEvent
);
305 var event
= mejs
.Utils
.createEvent('progress', vimeo
);
306 mediaElement
.dispatchEvent(event
);
307 }).catch(function (error
) {
308 return errorHandler(error
);
311 vimeoPlayer
.on('timeupdate', function () {
312 vimeoPlayer
.getCurrentTime().then(function (seconds
) {
313 currentTime
= seconds
;
314 var event
= mejs
.Utils
.createEvent('timeupdate', vimeo
);
315 mediaElement
.dispatchEvent(event
);
316 }).catch(function (error
) {
317 return errorHandler(error
);
320 vimeoPlayer
.on('play', function () {
323 var event
= mejs
.Utils
.createEvent('play', vimeo
);
324 mediaElement
.dispatchEvent(event
);
326 var playingEvent
= mejs
.Utils
.createEvent('playing', vimeo
);
327 mediaElement
.dispatchEvent(playingEvent
);
329 vimeoPlayer
.on('pause', function () {
333 var event
= mejs
.Utils
.createEvent('pause', vimeo
);
334 mediaElement
.dispatchEvent(event
);
336 vimeoPlayer
.on('ended', function () {
340 var event
= mejs
.Utils
.createEvent('ended', vimeo
);
341 mediaElement
.dispatchEvent(event
);
344 events
= ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
346 for (var _i4
= 0, _total4
= events
.length
; _i4
< _total4
; _i4
++) {
347 var event
= mejs
.Utils
.createEvent(events
[_i4
], vimeo
);
348 mediaElement
.dispatchEvent(event
);
352 var height
= mediaElement
.originalNode
.height
,
353 width
= mediaElement
.originalNode
.width
,
354 vimeoContainer
= document
.createElement('iframe'),
355 standardUrl
= 'https://player.vimeo.com/video/' + VimeoApi
.getVimeoId(mediaFiles
[0].src
);
357 var queryArgs
= ~mediaFiles
[0].src
.indexOf('?') ? '?' + mediaFiles
[0].src
.slice(mediaFiles
[0].src
.indexOf('?') + 1) : '';
358 if (queryArgs
&& mediaElement
.originalNode
.autoplay
&& queryArgs
.indexOf('autoplay') === -1) {
359 queryArgs
+= '&autoplay=1';
361 if (queryArgs
&& mediaElement
.originalNode
.loop
&& queryArgs
.indexOf('loop') === -1) {
362 queryArgs
+= '&loop=1';
365 vimeoContainer
.setAttribute('id', vimeo
.id
);
366 vimeoContainer
.setAttribute('width', width
);
367 vimeoContainer
.setAttribute('height', height
);
368 vimeoContainer
.setAttribute('frameBorder', '0');
369 vimeoContainer
.setAttribute('src', '' + standardUrl
+ queryArgs
);
370 vimeoContainer
.setAttribute('webkitallowfullscreen', '');
371 vimeoContainer
.setAttribute('mozallowfullscreen', '');
372 vimeoContainer
.setAttribute('allowfullscreen', '');
374 mediaElement
.originalNode
.parentNode
.insertBefore(vimeoContainer
, mediaElement
.originalNode
);
375 mediaElement
.originalNode
.style
.display
= 'none';
378 iframe
: vimeoContainer
,
382 vimeo
.hide = function () {
385 vimeoContainer
.style
.display
= 'none';
388 vimeo
.setSize = function (width
, height
) {
389 vimeoContainer
.setAttribute('width', width
);
390 vimeoContainer
.setAttribute('height', height
);
392 vimeo
.show = function () {
394 vimeoContainer
.style
.display
= '';
398 vimeo
.destroy = function () {};
404 mejs
.Utils
.typeChecks
.push(function (url
) {
405 return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url
) ? 'video/x-vimeo' : null
409 mejs
.Renderers
.add(vimeoIframeRenderer
);