import { Link } from "react-router-dom";

import { BaseSyntheticEvent } from "react";
import { Operator } from "@stirling-pdf/shared-operations/src/functions";
import i18next from "i18next";

function Dynamic() {
    const operators = ["impose"]; // TODO: Make this dynamic
    
    function selectionChanged(s: BaseSyntheticEvent) {
        const selectedValue = s.target.value;
        if(selectedValue == "none") return;

        i18next.loadNamespaces("impose", (err, t) => { 
            if (err) throw err;

            const LoadingModule = import(`@stirling-pdf/shared-operations/src/functions/${selectedValue}`) as Promise<{ [key: string]: typeof Operator }>;
            LoadingModule.then((Module) => {
                const Operator = Module[capitalizeFirstLetter(selectedValue)];
                const description = Operator.schema.describe();

                console.log("abc", description);
                // TODO: use description to generate fields
            }); 
        });
    }

    function capitalizeFirstLetter(string: String) {
        return string.charAt(0).toUpperCase() + string.slice(1);
    }

    return (
        <div>
            <h2>Dynamic test page for operators</h2>

            <input type="file" id="pdfFile" accept=".pdf" multiple />
            <br />
            
            <br />
            <textarea name="workflow" id="workflow"></textarea>
            <br />
            <select id="pdfOptions" onChange={selectionChanged}>
                <option value="none">none</option>
                { operators.map((operator, i) => { 
                    return (<option value={operator}>{operator}</option>) 
                }) }
            </select>
            <button id="loadButton">Load</button>
            <br />
            
            <br />
            <button id="doneButton">Done</button>

            <p>
                <Link to="/">Go back home...</Link>
            </p>
        </div>
    );
}


export default Dynamic;