import Stack from "@mui/material/Stack"; import { useState } from "react"; import Typography from "@mui/material/Typography"; import Accordion from "@mui/material/Accordion"; import AccordionSummary from "@mui/material/AccordionSummary"; import AccordionDetails from "@mui/material/AccordionDetails"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; // import CircularProgress from "@mui/material/CircularProgress"; import { useI18n } from "../../hooks/I18n"; import Box from "@mui/material/Box"; import { useFavWords } from "../../hooks/FavWords"; import DictCont from "../Selection/DictCont"; import SugCont from "../Selection/SugCont"; import DownloadButton from "./DownloadButton"; import UploadButton from "./UploadButton"; import Button from "@mui/material/Button"; import ClearAllIcon from "@mui/icons-material/ClearAll"; import Alert from "@mui/material/Alert"; import { isValidWord } from "../../libs/utils"; import { kissLog } from "../../libs/log"; import { apiTranslate } from "../../apis"; import { OPT_TRANS_BAIDU, PHONIC_MAP } from "../../config"; function FavAccordion({ word, index }) { const [expanded, setExpanded] = useState(false); const handleChange = (e) => { setExpanded((pre) => !pre); }; return ( }> {/* {`[${new Date( createdAt ).toLocaleString()}] ${word}`} */} {`${index + 1}. ${word}`} {expanded && ( )} ); } export default function FavWords() { const i18n = useI18n(); const { favList, wordList, mergeWords, clearWords } = useFavWords(); const handleImport = (data) => { try { const newWords = data .split("\n") .map((line) => line.split(",")[0].trim()) .filter(isValidWord); mergeWords(newWords); } catch (err) { kissLog("import rules", err); } }; const handleTranslation = async () => { const tranList = []; for (const text of wordList) { try { // todo: 修复 const dictRes = await apiTranslate({ text, translator: OPT_TRANS_BAIDU, fromLang: "en", toLang: "zh-CN", }); if (dictRes[2]?.type === 1) { tranList.push(JSON.parse(dictRes[2].result)); } } catch (err) { // skip } } return tranList .map((dictResult) => [ `## ${dictResult.src}`, dictResult.voice ?.map(Object.entries) .map((item) => item[0]) .map(([key, val]) => `${PHONIC_MAP[key]?.[0] || key} ${val}`) .join(" "), dictResult.content[0].mean .map(({ pre, cont }) => { return ` - ${pre ? `[${pre}] ` : ""}${Object.keys(cont).join("; ")}`; }) .join("\n"), ].join("\n\n") ) .join("\n\n"); }; return ( {i18n("favorite_words_helper")} wordList.join("\n")} text={i18n("export")} fileName={`kiss-words_${Date.now()}.txt`} /> {favList.map(([word, { createdAt }], index) => ( ))} ); }