<style>
    #installSearchPluginContainer {
        margin: 10px;
    }

    #installSearchPluginContainer button {
        padding: 3px 20px;
    }

    #newPluginPath {
        width: 100%;
    }

</style>

<div id="installSearchPluginContainer">
    <label for="newPluginPath">QBT_TR(Plugin path:)QBT_TR[CONTEXT=PluginSourceDlg]</label>

    <div>
        <input type="text" id="newPluginPath" placeholder="QBT_TR(URL or local directory)QBT_TR[CONTEXT=PluginSourceDlg]" autocorrect="off" autocapitalize="none">
        <div style="margin-top: 10px; text-align: center;">
            <button type="button" id="newPluginCancel" onclick="qBittorrent.SearchPlugins.closeSearchWindow('installSearchPlugin');">QBT_TR(Cancel)QBT_TR[CONTEXT=PluginSourceDlg]</button>
            <button type="button" id="newPluginOk" onclick="qBittorrent.InstallSearchPlugin.newPluginOk();">QBT_TR(Ok)QBT_TR[CONTEXT=PluginSourceDlg]</button>
        </div>
    </div>
</div>

<script>
    "use strict";

    window.qBittorrent ??= {};
    window.qBittorrent.InstallSearchPlugin ??= (() => {
        const exports = () => {
            return {
                setup: setup,
                newPluginOk: newPluginOk
            };
        };

        const setup = () => {
            new Keyboard({
                defaultEventType: "keydown",
                events: {
                    "Enter": function(e) {
                        // accept enter key as a click
                        e.preventDefault();
                        e.stopPropagation();

                        const elem = e.event.srcElement;
                        if ((elem.id === "newPluginPath") || (elem.id === "newPluginOk"))
                            newPluginOk();
                        else if (elem.id === "newPluginCancel")
                            window.qBittorrent.SearchPlugins.closeSearchWindow("installSearchPlugin");
                    }
                }
            }).activate();

            $("newPluginPath").select();
        };

        const newPluginOk = () => {
            const path = $("newPluginPath").value.trim();
            if (path) {
                new Request({
                    url: "api/v2/search/installPlugin",
                    method: "post",
                    data: {
                        sources: path,
                    },
                    onRequest: () => {
                        window.qBittorrent.SearchPlugins.closeSearchWindow("installSearchPlugin");
                    }
                }).send();
            }
        };

        return exports();
    })();
    Object.freeze(window.qBittorrent.InstallSearchPlugin);

    window.qBittorrent.InstallSearchPlugin.setup();
</script>
