import {fetchPost} from "../util/fetch"; export const ai = { element: undefined as Element, genHTML: () => { let responsiveHTML = ""; /// #if MOBILE responsiveHTML = `
${window.siyuan.languages.apiProvider}
${window.siyuan.languages.apiProviderTip}
${window.siyuan.languages.apiTimeout}
s
${window.siyuan.languages.apiTimeoutTip}
${window.siyuan.languages.apiMaxTokens}
${window.siyuan.languages.apiMaxTokensTip}
${window.siyuan.languages.apiTemperature}
${window.siyuan.languages.apiTemperatureTip}
${window.siyuan.languages.apiMaxContexts}
${window.siyuan.languages.apiMaxContextsTip}
${window.siyuan.languages.apiModel}
${window.siyuan.languages.apiModelTip}
${window.siyuan.languages.apiKey}
${window.siyuan.languages.apiKeyTip}
${window.siyuan.languages.apiProxy}
${window.siyuan.languages.apiProxyTip}
${window.siyuan.languages.apiBaseURL}
${window.siyuan.languages.apiBaseURLTip}
${window.siyuan.languages.apiVersion}
${window.siyuan.languages.apiVersionTip}
User-Agent
${window.siyuan.languages.apiUserAgentTip}
`; /// #else responsiveHTML = `
${window.siyuan.languages.apiProvider}
${window.siyuan.languages.apiProviderTip}
${window.siyuan.languages.apiTimeout}
${window.siyuan.languages.apiTimeoutTip}
s
${window.siyuan.languages.apiMaxTokens}
${window.siyuan.languages.apiMaxTokensTip}
${window.siyuan.languages.apiTemperature}
${window.siyuan.languages.apiTemperatureTip}
${window.siyuan.languages.apiMaxContexts}
${window.siyuan.languages.apiMaxContextsTip}
${window.siyuan.languages.apiModel}
${window.siyuan.languages.apiModelTip}
${window.siyuan.languages.apiKey}
${window.siyuan.languages.apiKeyTip}
${window.siyuan.languages.apiProxy}
${window.siyuan.languages.apiProxyTip}
${window.siyuan.languages.apiBaseURL}
${window.siyuan.languages.apiBaseURLTip}
${window.siyuan.languages.apiVersion}
${window.siyuan.languages.apiVersionTip}
User-Agent
${window.siyuan.languages.apiUserAgentTip}
`; /// #endif return `
OpenAI
${responsiveHTML}
`; }, bindEvent: () => { const togglePassword = ai.element.querySelector('.b3-form__icona-icon[data-action="togglePassword"]'); togglePassword.addEventListener("click", () => { const isEye = togglePassword.firstElementChild.getAttribute("xlink:href") === "#iconEye"; togglePassword.firstElementChild.setAttribute("xlink:href", isEye ? "#iconEyeoff" : "#iconEye"); togglePassword.previousElementSibling.setAttribute("type", isEye ? "text" : "password"); }); ai.element.querySelectorAll("input, select").forEach((item) => { item.addEventListener("change", () => { fetchPost("/api/setting/setAI", { openAI: { apiUserAgent: (ai.element.querySelector("#apiUserAgent") as HTMLInputElement).value, apiBaseURL: (ai.element.querySelector("#apiBaseURL") as HTMLInputElement).value, apiVersion: (ai.element.querySelector("#apiVersion") as HTMLInputElement).value, apiKey: (ai.element.querySelector("#apiKey") as HTMLInputElement).value, apiModel: (ai.element.querySelector("#apiModel") as HTMLSelectElement).value, apiMaxTokens: parseInt((ai.element.querySelector("#apiMaxTokens") as HTMLInputElement).value), apiTemperature: parseFloat((ai.element.querySelector("#apiTemperature") as HTMLInputElement).value), apiMaxContexts: parseInt((ai.element.querySelector("#apiMaxContexts") as HTMLInputElement).value), apiProxy: (ai.element.querySelector("#apiProxy") as HTMLInputElement).value, apiTimeout: parseInt((ai.element.querySelector("#apiTimeout") as HTMLInputElement).value), apiProvider: (ai.element.querySelector("#apiProvider") as HTMLSelectElement).value, } }, response => { window.siyuan.config.ai = response.data; }); }); }); }, };