<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Emscripten-Generated Code</title>
    <style>
      body {
        font-family: sans-serif;
        margin: 0;
        padding: 0;
        overflow: hidden;
      }

      canvas {
        width: 100vw;
        height: 100vh;
        image-rendering: crisp-edges;
        image-rendering: pixelated;
      }
    </style>
  </head>
  <body>
    <canvas id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
    <script type='text/javascript'>
      var Module = {
        print: function(text) {
          if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
          console.log(text);
        },
        printErr: function(text) {
          if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ');
          console.error(text);
        },
        canvas: document.getElementById('canvas')
      };

      // add main js
      const appName = new URLSearchParams(document.location.search.substring(1)).get("app");
      const scriptEl = document.createElement("script");
      scriptEl.src = appName + ".js";

      document.body.appendChild(scriptEl);
    </script>
  </body>
</html>


