import { SettingProvider } from "../../hooks/Setting"; import ThemeProvider from "../../hooks/Theme"; import DraggableResizable from "./DraggableResizable"; import Header from "../Popup/Header"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import MenuItem from "@mui/material/MenuItem"; import Grid from "@mui/material/Grid"; import Box from "@mui/material/Box"; import Divider from "@mui/material/Divider"; import IconButton from "@mui/material/IconButton"; import DoneIcon from "@mui/icons-material/Done"; import { useI18n } from "../../hooks/I18n"; import { OPT_TRANS_ALL, OPT_LANGS_FROM, OPT_LANGS_TO } from "../../config"; import { useState, useRef } from "react"; import TranCont from "./TranCont"; import CopyBtn from "./CopyBtn"; function TranForm({ text, setText, tranboxSetting, transApis }) { const i18n = useI18n(); const [editMode, setEditMode] = useState(false); const [editText, setEditText] = useState(""); const [translator, setTranslator] = useState(tranboxSetting.translator); const [fromLang, setFromLang] = useState(tranboxSetting.fromLang); const [toLang, setToLang] = useState(tranboxSetting.toLang); const [toLang2, setToLang2] = useState(tranboxSetting.toLang2); const inputRef = useRef(null); return ( { setFromLang(e.target.value); }} > {OPT_LANGS_FROM.map(([lang, name]) => ( {name} ))} { setToLang(e.target.value); }} > {OPT_LANGS_TO.map(([lang, name]) => ( {name} ))} { setTranslator(e.target.value); }} > {OPT_TRANS_ALL.map((item) => ( {item} ))} { setEditText(e.target.value); }} onClick={() => { setEditMode(true); setEditText(text); const timer = setTimeout(() => { clearTimeout(timer); inputRef.current?.focus(); }, 100); }} onBlur={() => { setEditMode(false); setText(editText.trim()); }} InputProps={{ endAdornment: ( {editMode ? ( { e.stopPropagation(); }} > ) : ( )} ), }} /> ); } export default function TranBox({ text, setText, setShowBox, tranboxSetting, transApis, boxSize, setBoxSize, boxPosition, setBoxPosition, }) { return ( } onChangeSize={setBoxSize} onChangePosition={setBoxPosition} > ); }