import marimo

__generated_with = "0.15.2"
app = marimo.App(width="medium")


@app.cell
def _():
    import marimo as mo
    return (mo,)


@app.cell
def _():
    return


@app.cell
def _():
    # Importar los utiles desde la carpeta de snippets

    import os

    RUTA_CARPETA_SNIPPETS = os.environ["SNIPPETS_ROUTE"]


    import sys
    # Añadir la carpeta base que contiene 'utils'
    sys.path.insert(0, RUTA_CARPETA_SNIPPETS)

    # Importar los módulos
    from utils.ProcesoMonitor import ProcesoMonitor
    return ProcesoMonitor, RUTA_CARPETA_SNIPPETS, os


@app.cell
def _(RUTA_CARPETA_SNIPPETS, os):
    import zipfile
    # import os

    def descomprimir_zip(ruta_zip, carpeta_destino):
        # Crear carpeta de destino si no existe
        os.makedirs(carpeta_destino, exist_ok=True)

        # Abrir y extraer el contenido
        with zipfile.ZipFile(ruta_zip, 'r') as archivo_zip:
            archivo_zip.extractall(carpeta_destino)
            print(f"Archivo descomprimido en: {carpeta_destino}")

    # Ejemplo de uso
    ruta_zip = os.path.join( RUTA_CARPETA_SNIPPETS, "boilerplates/boilerplate_mantine.zip" )   # Ruta del zip
    carpeta_destino = "frontend"  # Carpeta donde se extraerá
    descomprimir_zip(ruta_zip, carpeta_destino)
    return


@app.cell
def _(ProcesoMonitor):
    PUERTO_MANTINE = 5176

    pm = ProcesoMonitor(
        ["npm", "run", "dev", "--", "--port", str(PUERTO_MANTINE)],
        cwd="frontend",   # se ejecuta dentro de ./frontend
        sink="console"
    )
    pm.start()
    return PUERTO_MANTINE, pm


@app.cell
def _(pm):
    # # Si quieres detenerlo después, puedes usar:
    pm.stop()
    return


@app.cell
def _(PUERTO_MANTINE, mo):
    html = f'<iframe src="http://localhost:{PUERTO_MANTINE}" width="100%" height="400" style="border:0;"></iframe>'
    mo.iframe(html, width="100%", height="500px")
    return


@app.cell
def _():
    return


if __name__ == "__main__":
    app.run()
