UNPKG

soundcloud-audio

Version:

Play SoundCloud tracks and playslists in modern browsers with HTML5 Audio API

2 lines (1 loc) 4.69 kB
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).SoundCloudAudio=t()}}(function(){return function o(s,a,l){function u(e,t){if(!a[e]){if(!s[e]){var i="function"==typeof require&&require;if(!t&&i)return i(e,!0);if(p)return p(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var n=a[e]={exports:{}};s[e][0].call(n.exports,function(t){return u(s[e][1][t]||t)},n,n.exports,o,s,a,l)}return a[e].exports}for(var p="function"==typeof require&&require,t=0;t<l.length;t++)u(l[t]);return u}({1:[function(t,e,i){"use strict";var o,r="https://api.soundcloud.com",s="protocol hostname host pathname port search hash href".split(" ");function a(t){o||(o=document.createElement("a"));var e={};o.href=t||"";for(var i=0,r=s.length;i<r;i++){var n=s[i];e[n]=o[n]}return e}function l(t,e,i){var r=a(t),n=/\?(?:.*)$/.test(r.search)?"&":"?";return r.protocol+"//"+r.host+r.port+r.pathname+r.search+n+e+"="+i+r.hash}function n(t,e){if(!(this instanceof n))return new n(t,e);t||e||console.info("SoundCloud API requires clientId or custom apiUrl"),this._events={},this._clientId=t,this._baseUrl=e||r,this.playing=!1,this.duration=0,this.audio=document.createElement("audio")}n.prototype.resolve=function(i,r){var t=this._baseUrl+"/resolve.json?url="+encodeURIComponent(i);this._clientId&&(t=l(t,"client_id",this._clientId)),this._json(t,function(t){if(this.cleanData(),Array.isArray(t)&&(t={tracks:t}),t.tracks)t.tracks=t.tracks.map(this._transformTrack.bind(this)),this._playlist=t;else{this._track=this._transformTrack(t);var e=a(i);this._track.stream_url+=e.hash}this.duration=t.duration&&!isNaN(t.duration)?t.duration/1e3:0,r(t)}.bind(this))},n.prototype._jsonp=function(t,e){var i=document.getElementsByTagName("script")[0]||document.head,r=document.createElement("script"),n="jsonp_callback_"+(new Date).valueOf()+Math.floor(1e3*Math.random());window[n]=function(t){r.parentNode&&r.parentNode.removeChild(r),window[n]=function(){},e(t)},r.src=l(t,"callback",n),i.parentNode.insertBefore(r,i)},n.prototype._json=function(t,e){var i=new XMLHttpRequest;i.open("GET",t),i.onreadystatechange=function(){if(4===i.readyState&&200===i.status){var t={};try{t=JSON.parse(i.responseText)}catch(t){}e(t)}},i.send(null)},n.prototype._transformTrack=function(t){return this._baseUrl!==r&&(t.original_stream_url=t.stream_url,t.stream_url=t.stream_url.replace(r,this._baseUrl)),t},n.prototype.on=function(t,e){this._events[t]=e,this.audio.addEventListener(t,e,!1)},n.prototype.off=function(t,e){this._events[t]=null,this.audio.removeEventListener(t,e)},n.prototype.unbindAll=function(){for(var t in this._events){var e=this._events[t];e&&this.off(t,e)}},n.prototype.preload=function(t,e){this._track={stream_url:t},e&&(this.audio.preload=e),this.audio.src=this._clientId?l(t,"client_id",this._clientId):t},n.prototype.play=function(t){var e;if((t=t||{}).streamUrl)e=t.streamUrl;else if(this._playlist){var i=this._playlist.tracks.length;if(i){if(void 0===t.playlistIndex?this._playlistIndex=this._playlistIndex||0:this._playlistIndex=t.playlistIndex,this._playlistIndex>=i||this._playlistIndex<0)return void(this._playlistIndex=0);e=this._playlist.tracks[this._playlistIndex].stream_url}}else this._track&&(e=this._track.stream_url);if(!e)throw new Error("There is no tracks to play, use `streamUrl` option or `load` method");return this._clientId&&(e=l(e,"client_id",this._clientId)),e!==this.audio.src&&(this.audio.src=e),this.playing=e,this.audio.play()},n.prototype.pause=function(){this.audio.pause(),this.playing=!1},n.prototype.stop=function(){this.audio.pause(),this.audio.currentTime=0,this.playing=!1},n.prototype.next=function(t){t=t||{};var e=this._playlist.tracks.length;if(this._playlistIndex>=e-1){if(!t.loop)return;this._playlistIndex=-1}if(this._playlist&&e)return this.play({playlistIndex:++this._playlistIndex})},n.prototype.previous=function(){if(!(this._playlistIndex<=0))return this._playlist&&this._playlist.tracks.length?this.play({playlistIndex:--this._playlistIndex}):void 0},n.prototype.seek=function(t){if(!this.audio.readyState)return!1;var e=t.offsetX/t.target.offsetWidth||(t.layerX-t.target.offsetLeft)/t.target.offsetWidth;this.audio.currentTime=e*(this.audio.duration||0)},n.prototype.cleanData=function(){this._track=void 0,this._playlist=void 0},n.prototype.setVolume=function(t){this.audio.readyState&&(this.audio.volume=t)},n.prototype.setTime=function(t){this.audio.readyState&&(this.audio.currentTime=t)},e.exports=n},{}]},{},[1])(1)});