import { SettingProvider } from "../../hooks/Setting"; import ThemeProvider from "../../hooks/Theme"; import DraggableResizable from "./DraggableResizable"; 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 DragIndicatorIcon from "@mui/icons-material/DragIndicator"; import UnfoldLessIcon from "@mui/icons-material/UnfoldLess"; import UnfoldMoreIcon from "@mui/icons-material/UnfoldMore"; import PushPinIcon from "@mui/icons-material/PushPin"; import PushPinOutlinedIcon from "@mui/icons-material/PushPinOutlined"; import CloseIcon from "@mui/icons-material/Close"; 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 DictCont from "./DictCont"; import SugCont from "./SugCont"; import CopyBtn from "./CopyBtn"; import { isValidWord } from "../../libs/utils"; function Header({ setShowPopup, simpleStyle, setSimpleStyle, hideClickAway, setHideClickAway, }) { return ( { setHideClickAway((pre) => !pre); }} > {hideClickAway ? ( ) : ( )} { setSimpleStyle((pre) => !pre); }} > {simpleStyle ? ( ) : ( )} { setShowPopup(false); }} > ); } function TranForm({ text, setText, tranboxSetting, transApis, simpleStyle }) { 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 inputRef = useRef(null); return ( {!simpleStyle && ( <> { 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); }} onFocus={() => { setEditMode(true); setEditText(text); }} onBlur={() => { setEditMode(false); setText(editText.trim()); }} InputProps={{ endAdornment: ( {editMode ? ( { e.stopPropagation(); }} > ) : ( )} ), }} /> )} {(!simpleStyle || !isValidWord(text) || !toLang.startsWith("zh")) && ( )} ); } export default function TranBox({ text, setText, setShowBox, tranboxSetting, transApis, boxSize, setBoxSize, boxPosition, setBoxPosition, simpleStyle, setSimpleStyle, hideClickAway, setHideClickAway, }) { return ( } onChangeSize={setBoxSize} onChangePosition={setBoxPosition} onClick={(e) => e.stopPropagation()} > ); }