import { useEffect, useState } from "react"; import { Badge, Space, Tabs, Typography } from "antd"; import { TranslationOutlined, CloseOutlined, BlockOutlined, } from "@ant-design/icons"; import SentTabButton from "./SentTabButton"; import SentCanRead from "./SentCanRead"; import SentSim from "./SentSim"; import { useIntl } from "react-intl"; import TocPath, { ITocPathNode } from "../../corpus/TocPath"; import { IWbw } from "../Wbw/WbwWord"; import RelaGraphic from "../Wbw/RelaGraphic"; import SentMenu from "./SentMenu"; import { ArticleMode } from "../../article/Article"; import { IResNumber } from "../SentEdit"; const { Text } = Typography; interface IWidget { id: string; book: number; para: number; wordStart: number; wordEnd: number; channelsId?: string[]; path?: ITocPathNode[]; layout?: "row" | "column"; tranNum?: number; nissayaNum?: number; commNum?: number; originNum: number; simNum?: number; wbwData?: IWbw[]; magicDictLoading?: boolean; compact?: boolean; mode?: ArticleMode; loadedRes?: IResNumber; onMagicDict?: Function; onCompact?: Function; onModeChange?: Function; } const SentTabWidget = ({ id, book, para, wordStart, wordEnd, channelsId, path, tranNum = 0, nissayaNum = 0, commNum = 0, originNum, simNum = 0, wbwData, magicDictLoading = false, compact = false, mode, loadedRes, onMagicDict, onCompact, onModeChange, }: IWidget) => { const intl = useIntl(); const [isCompact, setIsCompact] = useState(compact); const [hover, setHover] = useState(false); const [currKey, setCurrKey] = useState("close"); const [currTranNum, setCurrTranNum] = useState(tranNum); const [currNissayaNum, setCurrNissayaNum] = useState(nissayaNum); const [currCommNum, setCurrCommNum] = useState(commNum); console.log("SentTabWidget render"); useEffect(() => setIsCompact(compact), [compact]); const mPath = path ? [ ...path, { book: book, paragraph: para, title: para.toString(), level: 100 }, ] : []; if (typeof id === "undefined") { return <>; } const sentId = id.split("_"); const sId = sentId[0].split("-"); const tabButtonStyle: React.CSSProperties | undefined = compact ? { visibility: hover || currKey !== "close" ? "visible" : "hidden" } : undefined; return ( setHover(true)} onMouseLeave={() => setHover(false)} activeKey={currKey} onChange={(activeKey: string) => { setCurrKey(activeKey); }} style={ isCompact ? { position: currKey === "close" ? "absolute" : "unset", marginTop: -32, width: "100%", marginRight: 10, backgroundColor: hover || currKey !== "close" ? "#80808030" : "unset", } : { padding: "0 8px", backgroundColor: "#80808030", } } tabBarStyle={{ marginBottom: 0 }} size="small" tabBarGutter={0} tabBarExtraContent={ 0 ? path[0].title : <> : <>} /> {sentId[0]} { if (typeof onMagicDict !== "undefined") { onMagicDict(type); } }} onMenuClick={(key: string) => { switch (key) { case "compact" || "normal": if (typeof onCompact !== "undefined") { setIsCompact(true); onCompact(true); } break; case "normal": if (typeof onCompact !== "undefined") { setIsCompact(false); onCompact(false); } break; case "origin-edit": if (typeof onModeChange !== "undefined") { onModeChange("edit"); } break; case "origin-wbw": if (typeof onModeChange !== "undefined") { onModeChange("wbw"); } break; default: break; } }} /> } items={[ { label: ( ), key: "close", children: <>, }, { label: ( } type="translation" sentId={id} count={ currTranNum ? currTranNum - (loadedRes?.translation ? loadedRes.translation : 0) : undefined } title={intl.formatMessage({ id: "channel.type.translation.label", })} /> ), key: "translation", children: ( setCurrTranNum((origin) => origin + 1)} /> ), }, { label: ( } type="nissaya" sentId={id} count={ currNissayaNum ? currNissayaNum - (loadedRes?.nissaya ? loadedRes.nissaya : 0) : undefined } title={intl.formatMessage({ id: "channel.type.nissaya.label", })} /> ), key: "nissaya", children: ( setCurrNissayaNum((origin) => origin + 1)} /> ), }, { label: ( } type="commentary" sentId={id} count={ currCommNum ? currCommNum - (loadedRes?.commentary ? loadedRes.commentary : 0) : undefined } title={intl.formatMessage({ id: "channel.type.commentary.label", })} /> ), key: "commentary", children: ( setCurrCommNum((origin) => origin + 1)} /> ), }, /*{ label: ( } type="original" sentId={id} count={originNum} title={intl.formatMessage({ id: "channel.type.original.label", })} /> ), key: "original", children: ( ), },*/ { label: ( } type="original" sentId={id} count={simNum} title={intl.formatMessage({ id: "buttons.sim", })} /> ), key: "sim", children: ( ), }, { label: {"关系图"}, key: "relation-graphic", children: , }, ]} /> ); }; export default SentTabWidget;