sclass WaveSurfer { S containerSelector; S varName; // name of variable for wavesurfer instance new MapSO options; S headStuff() { ret hscript("https://unpkg.com/wavesurfer.js"); } S js_init() { options.put(container := containerSelector); ret jsDollarVars([[ var $waveSurfer = WaveSurfer.create($options); ]], +options, waveSurfer := JS(varName)); } S js_loadAudio(S url) { ret jsDollarVars([[ $waveSurfer.load(url); ]], +url, waveSurfer := JS(varName)); } }