class AudioSpinnerElement extends HTMLElement { #audio!: HTMLAudioElement; #canvas!: HTMLCanvasElement; #ctx2d!: CanvasRenderingContext2D; #analyzer!: AnalyserNode; #dataArray!: Float32Array; #smoother!: Smoother; constructor() { super(); this.attachShadow({ mode: "open" }); this.shadowRoot!.innerHTML = ` `; } connectedCallback() { // Create