0.0.0-beta.2 • Published 8 years ago

mock-audio-element v0.0.0-beta.2

Weekly downloads
52
License
MIT
Repository
github
Last release
8 years ago

MockAudioElement NPM version Build Status Coverage Status Climate Status

minimum implementation of HTML5 Audio events

Installation

$ npm install mock-audio-element --save

class Audio

(WIP) an unreal audio elements. dispatch few events and change the limited properties.

import Audio from 'mock-audio-element'

let audio= new Audio
console.log(audio)
// {
//   src: '',
//   loop: false,
//   autoplay: false,
//   paused: true,
//   ended: false,
//   error: null,
//   currentTime: 0,
//   duration: NaN
// }

If audio.src is true, to fetch the src.duration via http.

let audio= new Audio('http://static.edgy.black/fixture.mp3')
// or ...
let audio= new Audio
audio.src= 'http://static.edgy.black/fixture.mp3'
audio.addEventListener('canplaythrough',()=>{
  console.log(audio.duration) // 120.63985
})

If audio.autoplay is true(or .play()), to playback(simulation) until src.duration.

let audio= new Audio
audio.src= 'http://static.edgy.black/fixture.mp3'
audio.autoplay= true
audio.currentTime= 120

audio.addEventListener('timeupdate',()=>{
  console.log(audio.currentTime,audio.paused)
})
audio.addEventListener('ended',()=>{
  console.log(audio.currentTime,audio.paused)
})
// 120.104 false
// 120.205 false
// 120.308 false
// 120.412 false
// 120.514 false
// 120.616 false
// 120.63985 false
// 120.63985 true

But, if the src.loop is true, do repeat the playback.

let audio= new Audio
audio.src= fixtureURL
audio.autoplay= true
audio.currentTime= 120
audio.loop= true

audio.addEventListener('timeupdate',()=>{
  console.log(audio.currentTime,audio.paused)
})
// 120.1 false
// 120.203 false
// 120.304 false
// 120.404 false
// 120.507 false
// 120.611 false
// 120.64 false
// 0.104 false
// 0.209 false
// ...

There is a possibility to dispatch an following events only.

  • error
  • canplaythrough
  • play
  • pause
  • timeupdate
  • ended

In addition, only dispatch the event. nothing sends data.

audio.addEventListener('timeupdate',(data)=>{
  console.log(data)// undefined
})

License

MIT