Merge branch 'master' of dev.sys.reslate.xyz:ydeng/AudioShowKit
This commit is contained in:
commit
3ba9868751
17086
package-lock.json
generated
17086
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
78
src/player/SongPlaylist.js
Normal file
78
src/player/SongPlaylist.js
Normal file
@ -0,0 +1,78 @@
|
||||
import PlaylistSong from "./PlaylistSong";
|
||||
|
||||
/**
|
||||
* A playlist that holds a multitude of songs.
|
||||
*/
|
||||
export default class SongPlaylist {
|
||||
|
||||
/**
|
||||
* Instantiates a playlist for songs.
|
||||
*
|
||||
* @param {string} name The name of the playlist.
|
||||
*/
|
||||
constructor(name) {
|
||||
this._list = [];
|
||||
this._name = name;
|
||||
this._current = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {string} the name of the string.
|
||||
*/
|
||||
getName() {
|
||||
return this._name;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {number} index the index of the song to retrieve.
|
||||
* @returns {PlaylistSong} the song at the given index.
|
||||
*/
|
||||
songAtIndex(index) {
|
||||
if (index >= this._list.length) {
|
||||
return null;
|
||||
}
|
||||
return this.list[index];
|
||||
}
|
||||
|
||||
songsWithName(name) {
|
||||
return this._list.filter((item) => item.getDisplayName() == name);
|
||||
}
|
||||
|
||||
add(url, name, author) {
|
||||
this._list.push(new PlaylistSong(url, name, author, this, this._list.length));
|
||||
}
|
||||
|
||||
remove(index) {
|
||||
if (index >= this._list.length) {
|
||||
return null;
|
||||
}
|
||||
let removed = this._list.splice(index, 1);
|
||||
if (removed.length > 0) {
|
||||
return removed[0];
|
||||
}
|
||||
}
|
||||
|
||||
findSongIndex(name) {
|
||||
// TODO: Could probably be optimized.
|
||||
return this._list.findIndex((item) => item.getDisplayName() == name);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {number} total number of songs in this playlist.
|
||||
*/
|
||||
total() {
|
||||
return this._list.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unloads the audio data of all songs in this playlist.
|
||||
*/
|
||||
unloadAllAudio() {
|
||||
this._list.forEach(playlistSong => {
|
||||
playlistSong.unloadAudio();
|
||||
});
|
||||
}
|
||||
}
|
21
webpack.common.js
Normal file
21
webpack.common.js
Normal file
@ -0,0 +1,21 @@
|
||||
export default {
|
||||
entry: {
|
||||
audioshowkit: "./src/audioshowkit.js"
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.html$/i,
|
||||
loader: "html-loader",
|
||||
},
|
||||
{
|
||||
test: /\.css$/i,
|
||||
use: ['style-loader', 'css-loader'],
|
||||
}
|
||||
]
|
||||
},
|
||||
output: {
|
||||
filename: "[name].js",
|
||||
path: "./dist"
|
||||
}
|
||||
};
|
13
webpack.dev.js
Normal file
13
webpack.dev.js
Normal file
@ -0,0 +1,13 @@
|
||||
import merge from "webpack-merge";
|
||||
import webpackCommon from "./webpack.common";
|
||||
|
||||
devConfig = {
|
||||
mode: "development",
|
||||
devtools: "inline-source-map",
|
||||
|
||||
devServer: {
|
||||
static: "./dist"
|
||||
}
|
||||
}
|
||||
|
||||
export default merge(webpackCommon, devConfig);
|
12
webpack.prod.js
Normal file
12
webpack.prod.js
Normal file
@ -0,0 +1,12 @@
|
||||
import merge from "webpack-merge"
|
||||
import webpackCommon from "./webpack.common"
|
||||
|
||||
prodConfig = {
|
||||
mode: "production",
|
||||
output: {
|
||||
filename: "[name].js",
|
||||
path: "./public"
|
||||
}
|
||||
}
|
||||
|
||||
export default merge(webpackCommon, prodConfig);
|
Loading…
Reference in New Issue
Block a user