Rendering p5.js in Obsidian/javascript not running in Obsidian extension

I (14) am working on my first Obsidian extension. It is the first time using TypeScript, and I don’t have a lot of experience with JavaScript. I’m wanting to build an extension, that changes a p5.js code block, into a HTML element with the p5 code rendered in it. I figured out how to replace the codeblock for an HTML element, but i can’t get the js code to run. Not only when it contains p5, also when trying to console.log(). I’m probably missing something very obvious, but with this as my first non-python/html project, i really can’t find what I’m doing wrong.

The HTML part itself did work when i opened it in my browser, but when adding this code as an HTML element in Obsidian, the JavaScript didn’t run.

The working HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>p5.js Sketch</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
  </head>
  <body>
    <h1>p5.js Sketch</h1>
    <div id="sketch-container"></div>
    <script>
      function setup() {
        createCanvas(400, 400);
      }

      function draw(){
        background(220);
        ellipse(mouseX, mouseY, 50, 50);
      }

      new p5(function(sketch) {
        sketch.setup = setup;
        sketch.draw = draw;
      }, 'sketch-container');
    </script>
  </body>
</html>

The code block marked p5js with ```p5js in Obsidian:

function setup() {
  createCanvas(400, 400);
}

function draw() {
  if (mouseIsPressed) {
    fill(0);
  } else {
    fill(255);
  }
  ellipse(mouseX, mouseY, 80, 80);
}

The entire main.ts file:

import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian';
import p5 from "p5";

export default class MyPlugin extends Plugin {
    async onload() {
        this.registerMarkdownCodeBlockProcessor('p5js', (source, el) => {
            const code = source.trim();
            // Replace the code block with a basic HTML structure
            el.innerHTML = `
                <!DOCTYPE html>
                <html>
                <head>
                    <meta charset="UTF-8" />
                    <title>p5.js Sketch</title>
                    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
                </head>
                <body>
                    <h1>p5.js Sketch</h1>
                    <div id="sketch-container"></div>
                    <script>
                    ${code}

                    new p5(function(sketch) {
                        sketch.setup = setup;
                        sketch.draw = draw;
                    }, 'sketch-container');
                    </script>
                </body>
                </html>
            `;
          });
    }
}

The codeblock when in reading mode:
Only showing the text: p5.js Sketch