import js
from pyscript import document

from backtick import Backtick
bt = Backtick()

import asyncio
import time
from pyodide.ffi.wrappers import add_event_listener
import builtins

def newinput(prompt=""):
    time.sleep(1)
    return js.prompt("INPUT " + str(prompt))

builtins.input = newinput
    
async def runcode(event):
    submitbtnthing = js.document.getElementById("submitbtn")
    submitbtnthing.disabled = True
    inputcode = document.getElementById("input")
    
    tokens_obj = bt.tokenize(str(inputcode.value))
    if tokens_obj[2] == False:
        print(f"ERROR: {tokens_obj[0]}")
        
    try:  
        result = bt.run(tokens_obj[0])
    except Exception as e:
        print(f"ERROR: Runtime error: {e}")
    
    if result[1] == False:
        print(f"ERROR: {result[0]}")

    print()
    submitbtnthing.disabled = False

def clearoutputthing(event):
    __terminal__.clear()
    
clearoutput = js.document.getElementById("clearoutput")
add_event_listener(clearoutput, "click", clearoutputthing)

submit = js.document.getElementById("submitbtn")
add_event_listener(submit, "click", runcode)