diff --git a/packages/client/package.json b/packages/client/package.json
index d57733db2..d9a994d4a 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -52,7 +52,8 @@
"vite": "3.1.0",
"vue": "3.2.45",
"vue-prism-editor": "2.0.0-alpha.2",
- "vuedraggable": "4.0.1"
+ "vuedraggable": "4.0.1",
+ "wavesurfer.js": "6.0.1"
},
"devDependencies": {
"@types/katex": "0.14.0",
diff --git a/packages/client/src/components/media-banner.vue b/packages/client/src/components/media-banner.vue
index 6a327360a..ed4f70189 100644
--- a/packages/client/src/components/media-banner.vue
+++ b/packages/client/src/components/media-banner.vue
@@ -6,15 +6,7 @@
{{ i18n.ts.clickToShow }}
import { onMounted } from 'vue';
import * as foundkey from 'foundkey-js';
+import XWaveSurfer from './wavesurfer.vue';
import { ColdDeviceStorage } from '@/store';
import { i18n } from '@/i18n';
diff --git a/packages/client/src/components/wavesurfer.vue b/packages/client/src/components/wavesurfer.vue
new file mode 100644
index 000000000..452e43ddc
--- /dev/null
+++ b/packages/client/src/components/wavesurfer.vue
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+ {{ formatTime(duration) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yarn.lock b/yarn.lock
index ae981623b..e89c0fbed 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4755,6 +4755,7 @@ __metadata:
vue: 3.2.45
vue-prism-editor: 2.0.0-alpha.2
vuedraggable: 4.0.1
+ wavesurfer.js: 6.0.1
languageName: unknown
linkType: soft
@@ -17538,6 +17539,13 @@ __metadata:
languageName: node
linkType: hard
+"wavesurfer.js@npm:6.0.1":
+ version: 6.0.1
+ resolution: "wavesurfer.js@npm:6.0.1"
+ checksum: 0760adb48e60418de223fe4b2bfe31a049168d3ad8ac53f66029e96df6dfdb109ab59d2f81ab568940c1a6573aab8bf1686314fb55a4d616a65367a08f7f7666
+ languageName: node
+ linkType: hard
+
"web-push@npm:3.5.0":
version: 3.5.0
resolution: "web-push@npm:3.5.0"