import { alpha, Box, ListItemText, ListItemButton, Typography, styled, } from "@mui/material"; import { ExpandLessRounded, ExpandMoreRounded, InboxRounded, } from "@mui/icons-material"; import { HeadState } from "./use-head-state"; import { ProxyHead } from "./proxy-head"; import { ProxyItem } from "./proxy-item"; import { ProxyItemMini } from "./proxy-item-mini"; import type { IRenderItem } from "./use-render-list"; import { useVerge } from "@/hooks/use-verge"; import { useRecoilState } from "recoil"; import { atomThemeMode } from "@/services/states"; interface RenderProps { item: IRenderItem; indent: boolean; onLocation: (group: IProxyGroupItem) => void; onCheckAll: (groupName: string) => void; onHeadState: (groupName: string, patch: Partial) => void; onChangeProxy: (group: IProxyGroupItem, proxy: IProxyItem) => void; } export const ProxyRender = (props: RenderProps) => { const { indent, item, onLocation, onCheckAll, onHeadState, onChangeProxy } = props; const { type, group, headState, proxy, proxyCol } = item; const { verge } = useVerge(); const enable_group_icon = verge?.enable_group_icon ?? true; const [mode] = useRecoilState(atomThemeMode); console.log(mode); const isDark = mode === "light" ? false : true; const itembackgroundcolor = isDark ? "#282A36" : "#ffffff"; if (type === 0 && !group.hidden) { return ( onHeadState(group.name, { open: !headState?.open })} > {enable_group_icon && group.icon && group.icon.trim().startsWith("http") && ( )} {enable_group_icon && group.icon && group.icon.trim().startsWith("data") && ( )} {enable_group_icon && group.icon && group.icon.trim().startsWith(" )} {group.name}} secondary={ {group.type} {group.now} } secondaryTypographyProps={{ sx: { display: "flex", alignItems: "center", color: "#ccc" }, }} /> {headState?.open ? : } ); } if (type === 1 && !group.hidden) { return ( onLocation(group)} onCheckDelay={() => onCheckAll(group.name)} onHeadState={(p) => onHeadState(group.name, p)} /> ); } if (type === 2 && !group.hidden) { return ( onChangeProxy(group, proxy!)} /> ); } if (type === 3 && !group.hidden) { return ( No Proxies ); } if (type === 4 && !group.hidden) { return ( {proxyCol?.map((proxy) => ( onChangeProxy(group, proxy!)} /> ))} ); } return null; }; const StyledPrimary = styled("span")` font-size: 14px; font-weight: 700; line-height: 1.5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; `; const StyledSubtitle = styled("span")` font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; `; const ListItemTextChild = styled("span")` display: block; `; const StyledTypeBox = styled(ListItemTextChild)(({ theme }) => ({ display: "inline-block", border: "1px solid #ccc", borderColor: alpha(theme.palette.primary.main, 0.5), color: alpha(theme.palette.primary.main, 0.8), borderRadius: 4, fontSize: 10, padding: "0 4px", lineHeight: 1.5, marginRight: "8px", }));