');
htmlStream.write(
@@ -103,6 +104,9 @@ void generateHtmlForAssets(String assetsDir, String outputFilePath) {
fileName.endsWith('.webp')) {
htmlStream
.write('

\n');
+ } else if (fileName.endsWith('.mp3') || fileName.endsWith('.wav')) {
+ htmlStream.write(
+ '
\n');
} else {
htmlStream.write('
File
\n');
}
@@ -208,6 +212,14 @@ void generateHtmlForAssets(String assetsDir, String outputFilePath) {
htmlStream.write(' });');
htmlStream.write(' });');
+ htmlStream
+ .write(' const audioElements = document.querySelectorAll("audio");');
+ htmlStream.write(' audioElements.forEach(audio => {');
+ htmlStream.write(' audio.addEventListener("play", () => {');
+ htmlStream.write(' pauseOtherAudios(audio);');
+ htmlStream.write(' });');
+ htmlStream.write(' });');
+
htmlStream
.write(' const fileInfos = document.querySelectorAll(".file-info");');
htmlStream.write(' fileInfos.forEach(fileInfo => {');
@@ -219,6 +231,16 @@ void generateHtmlForAssets(String assetsDir, String outputFilePath) {
htmlStream.write(' });');
htmlStream.write('}');
+ htmlStream.write('function pauseOtherAudios(currentAudio) {');
+ htmlStream
+ .write(' const audioElements = document.querySelectorAll("audio");');
+ htmlStream.write(' audioElements.forEach(audio => {');
+ htmlStream.write(' if (audio !== currentAudio) {');
+ htmlStream.write(' audio.pause();');
+ htmlStream.write(' }');
+ htmlStream.write(' });');
+ htmlStream.write('}');
+
htmlStream.write('attachEventListeners();');
htmlStream.write('function showToast(message) {');