fore.st/player/vimeo.coffee
2022-07-10 22:03:03 +00:00

134 lines
3.4 KiB
CoffeeScript

window.VimeoPlayer = class VimeoPlayer extends Player
constructor: (data) ->
if not (this instanceof VimeoPlayer)
return new VimeoPlayer(data)
@load(data)
@resx = 0
@resy = 0
load: (data) ->
@setMediaProperties(data)
@latched = true
waitUntilDefined(window, 'Vimeo', =>
video = $('<iframe/>')
removeOld(video)
video.attr(
src: "https://player.vimeo.com/video/#{data.id}"
webkitallowfullscreen: true
mozallowfullscreen: true
allowfullscreen: true
)
if USEROPTS.wmode_transparent
video.attr('wmode', 'transparent')
@vimeo = new Vimeo.Player(video[0])
@vimeo.on('ended', =>
if CLIENT.leader
socket.emit('playNext')
)
@vimeo.on('pause', =>
@paused = true
setMini();
if CLIENT.leader
sendVideoUpdate()
else
@unlatch()
)
@vimeo.on('play', =>
@paused = false
setMini();
handleWindowResize()
if CLIENT.leader
sendVideoUpdate()
)
@vimeo.on('seeked', =>
if not CLIENT.leader
@unlatch()
)
@vimeo.on('timeupdate', =>
setDur();
)
@vimeo.on('volumechange', =>
setMini();
)
@play()
@setVolume(VOLUME)
@vimeo.getVideoWidth().then((wid) ->
window.PLAYER.resx = wid
).catch((error) ->
console.error('vimeo::getVideoWidth():', error)
)
@vimeo.getVideoHeight().then((hgt) ->
window.PLAYER.resy = hgt
).catch((error) ->
console.error('vimeo::getVideoHeight():', error)
)
)
play: ->
@paused = false
if @vimeo
@vimeo.play().catch((error) ->
console.error('vimeo::play():', error)
)
pause: ->
@paused = true
if @vimeo
@vimeo.pause().catch((error) ->
console.error('vimeo::pause():', error)
)
seekTo: (time) ->
if @vimeo
@vimeo.setCurrentTime(time).catch((error) ->
console.error('vimeo::setCurrentTime():', error)
)
setVolume: (volume) ->
if @vimeo
@vimeo.setVolume(volume).catch((error) ->
console.error('vimeo::setVolume():', error)
)
getTime: (cb) ->
if @vimeo
@vimeo.getCurrentTime().then((time) ->
cb(parseFloat(time))
).catch((error) ->
console.error('vimeo::getCurrentTime():', error)
)
else
cb(0)
getVolume: (cb) ->
if @vimeo
@vimeo.getVolume().then((volume) ->
cb(parseFloat(volume))
).catch((error) ->
console.error('vimeo::getVolume():', error)
)
else
cb(VOLUME)
getRes: (cb) ->
if @vimeo
cb([@resx,@resy])
else
cb()