import { javascript } from "@codemirror/lang-javascript"; import CodeMirror from "@uiw/react-codemirror"; import { Button, Modal } from "antd"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { getPluginReturn, getPluginTemplates, getPluginVariables } from "@/services/api/model-plugin"; import type { ModelCapability } from "@/stores/use-config-store"; function isDarkMode() { return typeof document !== "undefined" && document.documentElement.classList.contains("dark"); } export function ModelScriptEditor({ open, capability, modelName, value, onSave, onClose }: { open: boolean; capability: ModelCapability; modelName: string; value: string; onSave: (script: string) => void; onClose: () => void }) { const { t } = useTranslation(); const [draft, setDraft] = useState(value); useEffect(() => { if (open) setDraft(value); }, [open, value]); const variables = getPluginVariables().filter((variable) => !variable.capabilities || variable.capabilities.includes(capability)); const templates = getPluginTemplates()[capability]; return (
{t(`config.channelEditor.capabilities.${capability}`)} {modelName ? ` - ${modelName}` : ""}
{t("config.scriptEditor.description")}
} width={1080} centered onCancel={onClose} styles={{ body: { padding: 0 } }} footer={
{templates.map((template) => ( ))}
} >
); }