API Docs for:
Show:

File: src/video_element.coffee

Stream = require('./stream').Stream
Peer = require('./peer').Peer


###*
# @module rtc
###
###*
# @class rtc.MediaDomElement
###
class exports.MediaDomElement

  constructor: (@dom, data) ->
    if @dom.jquery?
      # TODO: warn if less/more than one element
      @dom = @dom[0]

    @attach(data)


  attach: (data) ->
    # TODO: handle conflict between multiple calls
    if not data?
      delete @stream

      @dom.pause()
      @dom.src = null

    else if data instanceof Stream
      @stream = data

      if mozGetUserMedia?
        @dom.mozSrcObject = data.stream
      else
        @dom.src = URL.createObjectURL(data.stream)

      @dom.play()

    else if data instanceof Peer
      if data.isLocal()
        @mute()

      @attach(data.stream())

    else if data?.then?
      data.then (res) =>
        @attach(res)
      .catch (err) =>
        @error(err)

    else
      @error("Tried to attach invalid data")


  error: (err) ->
    # TODO: do more with dom
    console.log(err)


  clear: () ->
    @attach()


  mute: (muted=true) ->
    @dom.muted = muted


  toggleMute: () ->
    @dom.muted = !@dom.muted