//@flow import * as React from "react"; import injectSheet from "react-jss"; import { DateFromNow } from "@scm-manager/ui-components"; import FileSize from "./FileSize"; import FileIcon from "./FileIcon"; import { Link } from "react-router-dom"; import type { File } from "@scm-manager/ui-types"; import classNames from "classnames"; import { binder, ExtensionPoint } from "@scm-manager/ui-extensions"; const styles = { iconColumn: { width: "16px" }, wordBreakMinWidth: { minWidth: "10em" } }; type Props = { file: File, baseUrl: string, // context props classes: any }; export function createLink(base: string, file: File) { let link = base; if (file.path) { let path = file.path; if (path.startsWith("/")) { path = path.substring(1); } link += "/" + path; } if (!link.endsWith("/")) { link += "/"; } return link; } class FileTreeLeaf extends React.Component { createLink = (file: File) => { return createLink(this.props.baseUrl, file); }; createFileIcon = (file: File) => { if (file.directory) { return ( ); } return ( ); }; createFileName = (file: File) => { if (file.directory) { return {file.name}; } return {file.name}; }; render() { const { file, classes } = this.props; const fileSize = file.directory ? "" : ; return ( {this.createFileIcon(file)} {this.createFileName(file)} {fileSize} {file.description} {binder.hasExtension("sourceView.right") && !file.directory && ( )} ); } } export default injectSheet(styles)(FileTreeLeaf);