2022-02-14 13:27:51 +01:00
|
|
|
<script lang="ts">
|
2022-02-14 14:57:35 +01:00
|
|
|
import { onMount } from "svelte";
|
|
|
|
import type WaveSurfer from "wavesurfer.js";
|
2022-02-14 13:27:51 +01:00
|
|
|
import Spinner from "../../utils/Spinner.svelte";
|
|
|
|
|
|
|
|
export let address: string;
|
2022-02-14 14:57:35 +01:00
|
|
|
export let detail: boolean;
|
2022-02-14 13:27:51 +01:00
|
|
|
|
2022-02-14 14:57:35 +01:00
|
|
|
let containerEl: HTMLDivElement;
|
|
|
|
let loaded = false;
|
|
|
|
|
|
|
|
let wavesurfer: WaveSurfer;
|
|
|
|
$: if (wavesurfer) wavesurfer.drawBuffer() && detail;
|
|
|
|
|
|
|
|
onMount(async () => {
|
|
|
|
const WaveSurfer = await import("wavesurfer.js");
|
|
|
|
wavesurfer = WaveSurfer.default.create({
|
|
|
|
container: containerEl,
|
|
|
|
waveColor: "#dc322f",
|
|
|
|
progressColor: "#991c1a",
|
|
|
|
responsive: true,
|
|
|
|
backend: "MediaElement",
|
|
|
|
mediaControls: true,
|
|
|
|
});
|
|
|
|
wavesurfer.on("ready", () => {
|
|
|
|
loaded = true;
|
|
|
|
});
|
|
|
|
wavesurfer.load(`api/raw/${address}`);
|
|
|
|
});
|
2022-02-14 13:27:51 +01:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="audio">
|
2022-02-14 14:57:35 +01:00
|
|
|
{#if !loaded}
|
|
|
|
<Spinner centered />
|
2022-02-14 13:27:51 +01:00
|
|
|
{/if}
|
2022-02-14 14:57:35 +01:00
|
|
|
<div class="wavesurfer" bind:this={containerEl} />
|
2022-02-14 13:27:51 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
.audio {
|
2022-02-14 14:57:35 +01:00
|
|
|
width: 100%;
|
2022-02-14 13:27:51 +01:00
|
|
|
}
|
|
|
|
</style>
|