import * as React from "react"; import { memo, useCallback, useState } from "react"; import { Viewer, ViewerPlatform, ViewerType } from "../../../../../api/explorer.ts"; import { useTranslation } from "react-i18next"; import { IconButton, TableRow, ListItemText } from "@mui/material"; import { DenseFilledTextField, NoWrapCell, StyledCheckbox, DenseSelect } from "../../../../Common/StyledComponents.tsx"; import { SquareMenuItem } from "../../../../FileManager/ContextMenu/ContextMenu.tsx"; import { ViewerIcon } from "../../../../FileManager/Dialogs/OpenWith.tsx"; import Dismiss from "../../../../Icons/Dismiss.tsx"; import Edit from "../../../../Icons/Edit.tsx"; import FileViewerEditDialog from "./FileViewerEditDialog.tsx"; import ArrowDown from "../../../../Icons/ArrowDown.tsx"; export interface FileViewerRowProps { viewer: Viewer; onChange: (viewer: Viewer) => void; onDelete: (e: React.MouseEvent) => void; onMoveUp?: () => void; onMoveDown?: () => void; isFirst?: boolean; isLast?: boolean; style?: React.CSSProperties; } const FileViewerRow = React.memo( React.forwardRef( ({ viewer, onChange, onDelete, onMoveUp, onMoveDown, isFirst, isLast, style }, ref) => { const { t } = useTranslation("dashboard"); const [extCached, setExtCached] = useState(""); const [editOpen, setEditOpen] = useState(false); const onClose = useCallback(() => { setEditOpen(false); }, [setEditOpen]); return ( {t(`settings.${viewer.type}ViewerType`)} {t(viewer.display_name, { ns: "application", })} { onChange({ ...viewer, exts: extCached == "" ? viewer.exts : extCached?.split(",")?.map((ext) => ext.trim()), }); setExtCached(""); }} onChange={(e) => setExtCached(e.target.value)} /> onChange({ ...viewer, platform: e.target.value as ViewerPlatform, }) } > {t("settings.viewerPlatformPC")} {t("settings.viewerPlatformMobile")} {t("settings.viewerPlatformAll")} {viewer.templates?.length ? t("settings.nMapping", { num: viewer.templates?.length }) : t("share.none")} onChange({ ...viewer, disabled: !e.target.checked, }) } /> setEditOpen(true)}> {viewer.type != ViewerType.builtin && ( )} ); }, ), ); export default FileViewerRow;