import panel as pn
import param
from panel.custom import JSComponent
pn.extension()
class WaveSurfer(JSComponent):
value = param.Integer()
_esm = '''
import WaveSurfer from 'https://cdn.jsdelivr.net/npm/wavesurfer.js@7/dist/wavesurfer.esm.js'
export function render({ model, el }) {
function callback(){
const wavesurfer = WaveSurfer.create({
container: el,
waveColor: 'rgb(200, 0, 200)',
progressColor: 'rgb(100, 0, 100)',
url: 'https://assets.holoviz.org/panel/samples/beatboxing.mp3',
fetchParams: {
mode: 'no-cors',
},
})
wavesurfer.on('interaction', () => {
wavesurfer.play()
})
}
model.on('after_render', callback)
}
'''
WaveSurfer(height=200, width=500, styles={"border": "1px solid black"}).servable()