UNPKG

ngx-soundmanager2

Version:
1 lines 21.4 kB
!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-soundmanager2",["exports","@angular/core"],factory):factory(global["ngx-soundmanager2"]={},global.ng.core)}(this,function(exports,core){"use strict";var MusicPlayerEventConstants={ANGULAR_PLAYER_READY:"angularPlayer:ready",MUSIC_IS_PLAYING:"music:isPlaying",MUSIC_MUTE:"music:mute",MUSIC_REPEAT:"music:repeat",MUSIC_VOLUME:"music:volume",PLAYER_PLAYLIST:"player:playlist",SOUND_MANAGER_READY:"Sound manager ready!",TRACK_ID:"track:id",TRACK_LOADED:"track:loaded",TRACK_STOP:"track:stop"},MusicPlayerUtils=function(){function MusicPlayerUtils(){}return MusicPlayerUtils.IsTrackValid=function(track){if(void 0===track)return console.warn("invalid track data"),!1;if(-1<track.url.indexOf("soundcloud")){if(void 0===track.url)return console.warn("invalid soundcloud track url"),!1}else if(!0!==soundManager.canPlayURL(track.url))return console.warn("invalid song url"),!1;return!0},MusicPlayerUtils.GetIndexByValue=function(array,value){for(var i=0;i<array.length;i++)if(array[i]===value)return i;return-1},MusicPlayerUtils.IsInArray=function(array,value){for(var i=0;i<array.length;i++)if(array[i].id===value)return i;return-1},MusicPlayerUtils.AsyncLoop=function(o){var i=-1,loop=function(){++i!==o.length?o.functionToLoop(loop,i):o.callback()};loop()},MusicPlayerUtils}(),MusicPlayerService=function(){function MusicPlayerService(setupOptions){this.setupOptions=setupOptions,this.currentTrack=null,this.repeat=!1,this.autoPlay=!0,this.isPlaying=!1,this.trackProgress=0,this.volume=90,this.playlist=[],this.musicPlayerEventEmitter=new core.EventEmitter,this.musicPlayerMuteEventEmitter=new core.EventEmitter,this.musicPlayerRepeatEventEmitter=new core.EventEmitter,this.musicPlayerStopEventEmitter=new core.EventEmitter,this.musicPlayerTrackEventEmitter=new core.EventEmitter,this.musicPlayerVolumeEventEmitter=new core.EventEmitter,this.init(setupOptions)}return MusicPlayerService.prototype.init=function(setupOptions){var _this=this;"undefined"==typeof soundManager&&alert("Please include SoundManager2 Library!"),Object.assign(soundManager.setupOptions,setupOptions),soundManager.setupOptions.ignoreMobileRestrictions=!0,this._soundObject=soundManager.setup({preferFlash:!1,debugMode:!1,useHTML5Audio:!0,onready:function(){soundManager.parent=_this;var isSupported=soundManager.ok();_this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.ANGULAR_PLAYER_READY,data:isSupported})},ontimeout:function(){alert("SM2 failed to start. Flash missing, blocked or security error?"),alert("The status is "+_this._soundObject.status.success+", the error type is "+_this._soundObject.status.error.type)},defaultOptions:{autoLoad:!1,autoPlay:!1,from:null,loops:1,multiShot:!1,multiShotEvents:!1,onid3:null,onload:null,onstop:null,onfailure:"nextTrack",onpause:null,onplay:null,onresume:null,position:null,pan:0,stream:!0,to:null,type:"audio/mp3",usePolicyFile:!1,volume:this.volume,whileloading:function(){soundManager._writeDebug("sound "+this.id+" loading, "+this.bytesLoaded+" of "+this.bytesTotal);var trackLoaded=this.bytesLoaded/this.bytesTotal*100,musicPlayerService=soundManager.parent;musicPlayerService&&musicPlayerService.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.TRACK_LOADED,data:trackLoaded})},whileplaying:function(){soundManager._writeDebug("sound "+this.id+" playing, "+this.position+" of "+this.duration);var musicPlayerService=soundManager.parent;if(musicPlayerService){musicPlayerService.currentTrack=this.id;try{musicPlayerService.trackProgress=this.position/this.duration*100,musicPlayerService.position=this.position,musicPlayerService.duration=this.duration}catch(error){musicPlayerService.trackProgress=0,musicPlayerService.position=0,musicPlayerService.duration=0}var trackEventData={trackId:musicPlayerService.currentTrack,trackProgress:musicPlayerService.trackProgress,trackPosition:this.position,trackDuration:this.duration};musicPlayerService.musicPlayerTrackEventEmitter.emit({event:MusicPlayerEventConstants.TRACK_ID,data:trackEventData})}},onfinish:function(){if(!0===_this.autoPlay){_this.nextTrack();var trackEventData={trackId:_this.currentTrack,trackProgress:_this.trackProgress,trackDuration:0,trackPosition:0};_this.musicPlayerTrackEventEmitter.emit({event:MusicPlayerEventConstants.TRACK_ID,data:trackEventData})}}}})},MusicPlayerService.prototype.setCurrentTrack=function(key){this.currentTrack=key},MusicPlayerService.prototype.getCurrentTrack=function(){return this.currentTrack},MusicPlayerService.prototype.currentTrackData=function(){var trackId=this.getCurrentTrack(),currentKey=MusicPlayerUtils.IsInArray(this.playlist,trackId);return this.playlist[currentKey]},MusicPlayerService.prototype.getPlaylist=function(key){return void 0===key?this.playlist:this.playlist[key]},MusicPlayerService.prototype.addToPlaylist=function(track){this.playlist.push(track),this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.PLAYER_PLAYLIST,data:this.playlist})},MusicPlayerService.prototype.addTrack=function(track){return MusicPlayerUtils.IsTrackValid?(MusicPlayerUtils.IsInArray(this.getPlaylist(void 0),track.id)<0&&(soundManager.createSound({id:track.id,url:track.url}),this.addToPlaylist(track)),track.id):null},MusicPlayerService.prototype.removeSong=function(song,index){song===this.currentTrack&&this.stop(),soundManager.destroySound(song),this.playlist.splice(index,1),this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.PLAYER_PLAYLIST,data:this.playlist})},MusicPlayerService.prototype.initPlayTrack=function(trackId,isResume){!0!==isResume&&(this.stop(),this.setCurrentTrack(trackId)),soundManager.play(trackId);var trackEventData={trackId:this.currentTrack,trackProgress:this.trackProgress,trackDuration:this.duration,trackPosition:0};this.musicPlayerTrackEventEmitter.emit({event:MusicPlayerEventConstants.TRACK_ID,data:trackEventData}),this.isPlaying=!0,this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_IS_PLAYING,data:this.isPlaying})},MusicPlayerService.prototype.play=function(){if(!this.isPlaying){var trackToPlay=null;if(null===this.getCurrentTrack()){if(0===soundManager.soundIDs.length)return;trackToPlay=soundManager.soundIDs[0],this.initPlayTrack(trackToPlay,!1)}else trackToPlay=this.getCurrentTrack(),this.initPlayTrack(trackToPlay,!0)}},MusicPlayerService.prototype.pause=function(){this.isPlaying=!this.isPlaying,this.isPlaying?soundManager.play(this.currentTrack):soundManager.pause(this.getCurrentTrack()),this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_IS_PLAYING,data:this.isPlaying})},MusicPlayerService.prototype.stop=function(){soundManager.pause(this.getCurrentTrack()),this.isPlaying=!1,this.resetProgress();var trackEventData={trackId:this.currentTrack,trackProgress:this.trackProgress,trackDuration:0,trackPosition:0};this.musicPlayerStopEventEmitter.emit({event:MusicPlayerEventConstants.TRACK_STOP,data:trackEventData}),soundManager.stopAll(),soundManager.unload(this.getCurrentTrack())},MusicPlayerService.prototype.playTrack=function(trackId){this.initPlayTrack(trackId,!1)},MusicPlayerService.prototype.nextTrack=function(){if(null===this.getCurrentTrack())return console.log("Please click on Play before this action"),null;var nextTrackKey=+MusicPlayerUtils.GetIndexByValue(soundManager.soundIDs,this.getCurrentTrack())+1,nextTrack=soundManager.soundIDs[nextTrackKey];void 0!==nextTrack?this.playTrack(nextTrack):!0===this.repeat?this.playTrack(soundManager.soundIDs[0]):(this.isPlaying=!1,this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_IS_PLAYING,data:this.isPlaying}))},MusicPlayerService.prototype.prevTrack=function(){if(null===this.getCurrentTrack())return console.log("Please click on Play before this action"),null;var prevTrackKey=+MusicPlayerUtils.GetIndexByValue(soundManager.soundIDs,this.getCurrentTrack())-1,prevTrack=soundManager.soundIDs[prevTrackKey];void 0!==prevTrack?this.playTrack(prevTrack):console.warn("no prev track found!")},MusicPlayerService.prototype.mute=function(){!0===soundManager.muted?soundManager.unmute():soundManager.mute(),this.musicPlayerMuteEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_MUTE,data:soundManager.muted})},MusicPlayerService.prototype.getMuteStatus=function(){return soundManager.muted},MusicPlayerService.prototype.repeatToggle=function(){return!0===this.repeat?this.repeat=!1:this.repeat=!0,this.musicPlayerRepeatEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_REPEAT,data:this.repeat}),!1},MusicPlayerService.prototype.getRepeatStatus=function(){return this.repeat},MusicPlayerService.prototype.getVolume=function(){return this.volume},MusicPlayerService.prototype.adjustVolume=function(increase){var _this=this,changeVolume=function(volume){for(var i=0;i<soundManager.soundIDs.length;i++){soundManager.getSoundById(soundManager.soundIDs[i]).setVolume(volume)}_this.musicPlayerVolumeEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_VOLUME,data:volume})};!0===increase?this.volume<100&&(this.volume=this.volume+10,changeVolume(this.volume)):0<this.volume&&(this.volume=this.volume-10,changeVolume(this.volume))},MusicPlayerService.prototype.adjustVolumeSlider=function(value){var _this=this;!function(volume){for(var i=0;i<soundManager.soundIDs.length;i++)soundManager.getSoundById(soundManager.soundIDs[i]).setVolume(volume);_this.musicPlayerVolumeEventEmitter.emit({event:MusicPlayerEventConstants.MUSIC_VOLUME,data:volume})}(value)},MusicPlayerService.prototype.clearPlaylist=function(callback){var _this=this;this.isPlaying=!1,this.currentTrack=null,this.resetProgress();var smIdsLength=soundManager.soundIDs.length;MusicPlayerUtils.AsyncLoop({length:smIdsLength,functionToLoop:function(loop){setTimeout(function(){soundManager.destroySound(soundManager.soundIDs[0]),loop()},0)},callback:function(){_this.playlist=[],_this.musicPlayerEventEmitter.emit({event:MusicPlayerEventConstants.PLAYER_PLAYLIST,data:_this.playlist}),callback&&callback(!0)}})},MusicPlayerService.prototype.resetProgress=function(){this.trackProgress=0},MusicPlayerService.prototype.isPlayingStatus=function(){return this.isPlaying},MusicPlayerService.decorators=[{type:core.Injectable}],MusicPlayerService.ctorParameters=function(){return[{type:Object,decorators:[{type:core.Inject,args:["setupOptions"]},{type:core.Optional}]}]},MusicPlayerService}(),ClearPlaylistDirective=function(){function ClearPlaylistDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return ClearPlaylistDirective.prototype.onClick=function(){this._musicPlayerService.stop(),this._musicPlayerService.setCurrentTrack(null),this._musicPlayerService.clearPlaylist()},ClearPlaylistDirective.decorators=[{type:core.Directive,args:[{selector:"[clearPlaylist]"}]}],ClearPlaylistDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},ClearPlaylistDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},ClearPlaylistDirective}(),DecreaseVolumeDirective=function(){function DecreaseVolumeDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return DecreaseVolumeDirective.prototype.onClick=function(){this._musicPlayerService.adjustVolume(!1)},DecreaseVolumeDirective.decorators=[{type:core.Directive,args:[{selector:"[decreaseVolume]"}]}],DecreaseVolumeDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},DecreaseVolumeDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},DecreaseVolumeDirective}(),IncreaseVolumeDirective=function(){function IncreaseVolumeDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return IncreaseVolumeDirective.prototype.onClick=function(){this._musicPlayerService.adjustVolume(!0)},IncreaseVolumeDirective.decorators=[{type:core.Directive,args:[{selector:"[increaseVolume]"}]}],IncreaseVolumeDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},IncreaseVolumeDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},IncreaseVolumeDirective}(),MusicPlayerDirective=function(){function MusicPlayerDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return MusicPlayerDirective.prototype.onClick=function(){var trackId;this.song&&(trackId=this._musicPlayerService.addTrack(this.song),"play"===this.musicPlayer&&this._musicPlayerService.playTrack(trackId))},MusicPlayerDirective.decorators=[{type:core.Directive,args:[{selector:"[musicPlayer]"}]}],MusicPlayerDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},MusicPlayerDirective.propDecorators={musicPlayer:[{type:core.Input}],song:[{type:core.Input}],onClick:[{type:core.HostListener,args:["click",["$event"]]}]},MusicPlayerDirective}(),MuteMusicDirective=function(){function MuteMusicDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return MuteMusicDirective.prototype.onClick=function(){this._musicPlayerService.mute()},MuteMusicDirective.decorators=[{type:core.Directive,args:[{selector:"[muteMusic]"}]}],MuteMusicDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},MuteMusicDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},MuteMusicDirective}(),NextTrackDirective=function(){function NextTrackDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return NextTrackDirective.prototype.onClick=function(){this._musicPlayerService.nextTrack()},NextTrackDirective.decorators=[{type:core.Directive,args:[{selector:"[nextTrack]"}]}],NextTrackDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},NextTrackDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},NextTrackDirective}(),PauseMusicDirective=function(){function PauseMusicDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return PauseMusicDirective.prototype.onClick=function(){this._musicPlayerService.pause()},PauseMusicDirective.decorators=[{type:core.Directive,args:[{selector:"[pauseMusic]"}]}],PauseMusicDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},PauseMusicDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},PauseMusicDirective}(),PlayAllDirective=function(){function PlayAllDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService,this.play=!0}return PlayAllDirective.prototype.onClick=function(){var _this=this;this._musicPlayerService.clearPlaylist(function(){for(var i=0;i<_this.songs.length;i++)_this._musicPlayerService.addTrack(_this.songs[i]);_this.play&&_this._musicPlayerService.play()})},PlayAllDirective.decorators=[{type:core.Directive,args:[{selector:"[playAll]"}]}],PlayAllDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},PlayAllDirective.propDecorators={songs:[{type:core.Input}],play:[{type:core.Input}],onClick:[{type:core.HostListener,args:["click",["$event"]]}]},PlayAllDirective}(),PlayFromPlaylistDirective=function(){function PlayFromPlaylistDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return PlayFromPlaylistDirective.prototype.onClick=function(){this._musicPlayerService.playTrack(this.song.id)},PlayFromPlaylistDirective.decorators=[{type:core.Directive,args:[{selector:"[playFromPlaylist]"}]}],PlayFromPlaylistDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},PlayFromPlaylistDirective.propDecorators={song:[{type:core.Input}],onClick:[{type:core.HostListener,args:["click",["$event"]]}]},PlayFromPlaylistDirective}(),PlayMusicDirective=function(){function PlayMusicDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return PlayMusicDirective.prototype.onClick=function(){this._musicPlayerService.play()},PlayMusicDirective.decorators=[{type:core.Directive,args:[{selector:"[playMusic]"}]}],PlayMusicDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},PlayMusicDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},PlayMusicDirective}(),PreviousTrackDirective=function(){function PreviousTrackDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return PreviousTrackDirective.prototype.onClick=function(){this._musicPlayerService.prevTrack()},PreviousTrackDirective.decorators=[{type:core.Directive,args:[{selector:"[previousTrack]"}]}],PreviousTrackDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},PreviousTrackDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},PreviousTrackDirective}(),RemoveFromPlaylistDirective=function(){function RemoveFromPlaylistDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return RemoveFromPlaylistDirective.prototype.onClick=function(){console.log("remove:",this.index),this._musicPlayerService.removeSong(this.song.id,this.index)},RemoveFromPlaylistDirective.decorators=[{type:core.Directive,args:[{selector:"[removeFromPlaylist]"}]}],RemoveFromPlaylistDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},RemoveFromPlaylistDirective.propDecorators={song:[{type:core.Input}],index:[{type:core.Input}],onClick:[{type:core.HostListener,args:["click",["$event"]]}]},RemoveFromPlaylistDirective}(),RepeatMusicDirective=function(){function RepeatMusicDirective(_musicPlayerService,_element){this._musicPlayerService=_musicPlayerService,this._element=_element}return RepeatMusicDirective.prototype.ngOnInit=function(){var _this=this;this.repeat=this._musicPlayerService.getRepeatStatus(),this.highlight(),this._musicPlayerRepeatSubscription=this._musicPlayerService.musicPlayerRepeatEventEmitter.subscribe(function(event){_this.repeat=event.data,_this.highlight()})},RepeatMusicDirective.prototype.ngOnDestroy=function(){this._musicPlayerRepeatSubscription.unsubscribe()},RepeatMusicDirective.prototype.onClick=function(){this._musicPlayerService.repeatToggle()},RepeatMusicDirective.prototype.highlight=function(){this._element.nativeElement.style.backgroundColor=this.repeat?"green":"red"},RepeatMusicDirective.decorators=[{type:core.Directive,args:[{selector:"[repeatMusic]"}]}],RepeatMusicDirective.ctorParameters=function(){return[{type:MusicPlayerService},{type:core.ElementRef}]},RepeatMusicDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},RepeatMusicDirective}(),StopMusicDirective=function(){function StopMusicDirective(_musicPlayerService){this._musicPlayerService=_musicPlayerService}return StopMusicDirective.prototype.onClick=function(){this._musicPlayerService.stop()},StopMusicDirective.decorators=[{type:core.Directive,args:[{selector:"[stopMusic]"}]}],StopMusicDirective.ctorParameters=function(){return[{type:MusicPlayerService}]},StopMusicDirective.propDecorators={onClick:[{type:core.HostListener,args:["click",["$event"]]}]},StopMusicDirective}(),HumanTimePipe=function(){function HumanTimePipe(){}return HumanTimePipe.prototype.transform=function(value){var min=value/1e3/60<<0,sec=Math.round(value/1e3%60);return this.pad(min)+":"+this.pad(sec)},HumanTimePipe.prototype.pad=function(d){return d<10?"0"+d.toString():d.toString()},HumanTimePipe.decorators=[{type:core.Pipe,args:[{name:"humanTime"}]}],HumanTimePipe}(),NgxSoundmanager2Module=function(){function NgxSoundmanager2Module(){}return NgxSoundmanager2Module.forRoot=function(setupOptions){return{ngModule:NgxSoundmanager2Module,providers:[MusicPlayerService,{provide:"setupOptions",useValue:setupOptions}]}},NgxSoundmanager2Module.decorators=[{type:core.NgModule,args:[{declarations:[ClearPlaylistDirective,DecreaseVolumeDirective,IncreaseVolumeDirective,MusicPlayerDirective,MuteMusicDirective,NextTrackDirective,PauseMusicDirective,PlayAllDirective,PlayFromPlaylistDirective,PlayMusicDirective,PreviousTrackDirective,RemoveFromPlaylistDirective,RepeatMusicDirective,StopMusicDirective,HumanTimePipe],exports:[ClearPlaylistDirective,DecreaseVolumeDirective,IncreaseVolumeDirective,MusicPlayerDirective,MuteMusicDirective,NextTrackDirective,PauseMusicDirective,PlayAllDirective,PlayFromPlaylistDirective,PlayMusicDirective,PreviousTrackDirective,RemoveFromPlaylistDirective,RepeatMusicDirective,StopMusicDirective,HumanTimePipe]}]}],NgxSoundmanager2Module.ctorParameters=function(){return[]},NgxSoundmanager2Module}();exports.MusicPlayerEventConstants=MusicPlayerEventConstants,exports.ClearPlaylistDirective=ClearPlaylistDirective,exports.DecreaseVolumeDirective=DecreaseVolumeDirective,exports.IncreaseVolumeDirective=IncreaseVolumeDirective,exports.MusicPlayerDirective=MusicPlayerDirective,exports.MuteMusicDirective=MuteMusicDirective,exports.NextTrackDirective=NextTrackDirective,exports.PauseMusicDirective=PauseMusicDirective,exports.PlayAllDirective=PlayAllDirective,exports.PlayFromPlaylistDirective=PlayFromPlaylistDirective,exports.PlayMusicDirective=PlayMusicDirective,exports.PreviousTrackDirective=PreviousTrackDirective,exports.RemoveFromPlaylistDirective=RemoveFromPlaylistDirective,exports.RepeatMusicDirective=RepeatMusicDirective,exports.StopMusicDirective=StopMusicDirective,exports.NgxSoundmanager2Module=NgxSoundmanager2Module,exports.HumanTimePipe=HumanTimePipe,exports.MusicPlayerService=MusicPlayerService,Object.defineProperty(exports,"__esModule",{value:!0})});