<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>TIC-80 tiny computer</title>
        <style>
            body {
                margin:0; padding:0; background: #000; display: flex; justify-content: center; align-items: center; height: 100vh;
            }

            .tic80-container {
                width: 100%; padding-top: 50%; position: relative;
            }

            .tic80-canvas {
                position: absolute; top: 0; left:0; width: 100%; height: 100%;
            }

            .tic80-play {
                position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; background: #1a1c2c; color: #fff; display: flex; justify-content: center; align-items: center; image-rendering: pixelated; cursor: pointer;
            }
        </style>
    </head>
    <body>
        <div class="tic80-container">
            <canvas class="tic80-canvas" id="canvas" oncontextmenu="event.preventDefault()" tabindex="1"></canvas>
            <div class="tic80-play" id="tic80-play">
                <img
                    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAF9JREFUOE+d0jsOACAIA1B6/0NjHDB+UFtcnPpC0sLd3cwMAPqvPgQQQRU6ABW6Aiz0BX4QDdwgGdihMjCgvUZlB73y0gXzViQgGxkFvNb5BJhZpwATTFtQggtQCQbQAJ4FQA3PbK2EAAAAAElFTkSuQmCC"
                    alt="Play"
                    width="64" height="64"
                >
            </div>
        </div>

        <script type="module">
        import startTic80 from './tic80.js'

        const initialize = () => {
            const canvasSelector = '#canvas'
            const canvasElement = document.querySelector(canvasSelector)
            const playElement = document.getElementById('tic80-play')

            const options = {
                canvas: canvasElement,

                arguments: ['cart.tic'],

                saveAs (blob, filename) {
                    const url = URL.createObjectURL(blob)

                    const link = document.createElement('a')
                    link.href = url
                    link.download = filename

                    link.click()
                },

                showAddPopup (callback) {
                    callback(null, null)
                    var input = document.createElement('input')
                    input.type = 'file'
                    input.click()
                    input.addEventListener('change', (event) => {
                        const file = event.target.files[0]
                        if (file) {
                            var reader = new FileReader
                            reader.onload = function(event) {
                                var rom = new Uint8Array(event.target.result)
                                callback(file.name, rom)
                            }
                            reader.readAsArrayBuffer(file)
                        }
                    })
                },

                preRun: [
                    function (module) {
                        module.ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT = canvasSelector
                    }
                ]
            }

            playElement.addEventListener('click', () => {
                playElement.style.display = 'none'
                canvasElement.focus()
                startTic80(options)
            })
        }

        window.addEventListener('DOMContentLoaded', initialize)
        </script>
    </body>
</html>