JavaScript API
JavaScript API
Section titled “JavaScript API”Every method returns the singleton (unless noted), so calls chain. Highlights:
Playback & navigation
Section titled “Playback & navigation”WaveformBar.play('audio/track.mp3'); // play now (url string or track object)WaveformBar.play({ url: 'x.mp3', title: 'X' }); // already-current → toggles play/pauseWaveformBar.togglePlay();WaveformBar.pause();WaveformBar.next(); // wraps to 0 when repeat === 'all'WaveformBar.previous(); // > 3s into the track → restart; else go backWaveformBar.skipTo(2); // jump to queue index (toggles play if already current)play() dedupes by URL: if the track is already queued it merges new data into that entry (empty values never overwrite queued ones), otherwise it inserts right after the current index. play() does not fire onQueueChange. When the browser refuses playback (autoplay policy), togglePlay() and seekToMarker() catch the rejection and restore the paused state (1.12.0+).
WaveformBar.addToQueue({ url: 'next.mp3', title: 'Next Up' }); // append; starts if queue was empty; emits queuechange (1.12.0+)WaveformBar.removeFromQueue(3); // cannot remove the current trackWaveformBar.clearQueue(); // clears all except the current trackWaveformBar.getQueue(); // shallow copyWaveformBar.getCurrentTrack(); // object | nullWaveformBar.getCurrentIndex(); // number, -1 if noneWaveformBar.isCurrentTrack(url); // current (playing or paused)?WaveformBar.isCurrentlyPlaying(url);Repeat, shuffle & volume
Section titled “Repeat, shuffle & volume”WaveformBar.cycleRepeat(); // off → all → one → offWaveformBar.setRepeat('all'); // 'off' | 'all' | 'one' (invalid ignored)WaveformBar.toggleShuffle(); // emits shufflechange + onShuffleChangeWaveformBar.setShuffle(true); // turning it on starts a fresh shuffle pass
WaveformBar.setVolume(0.5); // 0..1, persists (if persist), emits volumechange + onVolumeChangeWaveformBar.getVolume();WaveformBar.toggleMute(); // remembers prior volumeFavorites & cart
Section titled “Favorites & cart”WaveformBar.toggleFavorite(); // current track; syncs page classes + fires actions.favoriteWaveformBar.addToCart(); // current track; flashes the button; fires actions.cartWaveformBar.isFavorited(id?); // defaults to current track id/urlWaveformBar.isInCart(id?);There is no removeFromCart — the cart is an in-memory Set and is never persisted (your server is the source of truth; seed via data-wb-in-cart).
DJ markers
Section titled “DJ markers”WaveformBar.seekToMarker(2); // by index — seeks and playsWaveformBar.seekToMarkerByLabel('Drop'); // first label/title match, case-insensitiveUI & lifecycle
Section titled “UI & lifecycle”WaveformBar.show(); WaveformBar.hide();WaveformBar.toggleQueuePanel(); WaveformBar.openQueuePanel(); WaveformBar.closeQueuePanel();WaveformBar.toggleVolumePopup(); WaveformBar.openVolumePopup(); WaveformBar.closeVolumePopup();WaveformBar.collapse(); WaveformBar.expand(); WaveformBar.toggleCollapse();WaveformBar.getPlayer(); // the underlying WaveformPlayer instanceWaveformBar.destroy(); // tear everything down, strip .wb-current/.wb-playing from the pagedestroy() also sets every synced inline player to paused and (1.12.0+) resets in-memory session state — mute, favorites, cart, resume position, active markers, the collapsed flag — so a following init() with different config starts clean. Persisted storage is left alone.
Events
Section titled “Events”DOM events bubble from the bar element (#waveform-bar), prefixed waveformbar:. Listen on document.
| Event | Detail | Notes |
|---|---|---|
waveformbar:play |
{ track } |
Has onPlay callback. |
waveformbar:pause |
{ track } |
Has onPause callback. |
waveformbar:trackchange |
{ track, index } |
Has onTrackChange callback. |
waveformbar:queuechange |
{ queue, currentIndex } |
Has onQueueChange callback. |
waveformbar:volumechange |
{ volume } |
Has onVolumeChange callback. |
waveformbar:favorite |
{ track, favorited } |
Has onFavorite callback. |
waveformbar:cart |
{ track } |
Has onCart callback. |
waveformbar:repeatchange |
{ mode } |
mode is 'off'/'all'/'one'. DOM-only. |
waveformbar:shufflechange |
{ shuffle } |
Has onShuffleChange callback. |
waveformbar:markerchange |
{ marker, index, track } |
DJ-mode boundary crossed. DOM-only. |
waveformbar:error |
{ track } |
Track failed to load/decode; auto-skips when continuous. DOM-only. |
waveformbar:share |
{ url, time, track } |
Share button copied a link. DOM-only. |
waveformbar:collapse |
{ collapsed } |
Emitted by collapse()/expand(). DOM-only. |
document.addEventListener('waveformbar:trackchange', (e) => { console.log('now playing', e.detail.track.title, 'at', e.detail.index);});document.addEventListener('waveformbar:error', (e) => { console.warn('failed', e.detail.track.url);});