import React, { useMemo } from 'react' import { Button, ButtonVariation, Color, Container, FlexExpander, Heading, Layout, useToggle, Utils } from '@harness/uicore' import { Else, Match, Render, Truthy } from 'react-jsx-match' import { useHistory } from 'react-router-dom' import { SourceCodeViewer } from 'components/SourceCodeViewer/SourceCodeViewer' import type { OpenapiContentInfo, RepoFileContent } from 'services/code' import { CodeIcon, decodeGitContent, findMarkdownInfo, GitCommitAction, GitInfoProps, isRefATag, makeDiffRefs } from 'utils/GitUtils' import { filenameToLanguage } from 'utils/Utils' import { useAppContext } from 'AppContext' import { LatestCommitForFile } from 'components/LatestCommit/LatestCommit' import { PipeSeparator } from 'components/PipeSeparator/PipeSeparator' import { CommitModalButton } from 'components/CommitModalButton/CommitModalButton' import { useStrings } from 'framework/strings' import { Readme } from '../FolderContent/Readme' import { GitBlame } from './GitBlame' import css from './FileContent.module.scss' export function FileContent({ repoMetadata, gitRef, resourcePath, resourceContent }: Pick) { const { routes } = useAppContext() const { getString } = useStrings() const history = useHistory() const [showGitBlame, toggleGitBlame] = useToggle(false) const content = useMemo( () => decodeGitContent((resourceContent?.content as RepoFileContent)?.data), [resourceContent?.content] ) const markdownInfo = useMemo(() => findMarkdownInfo(resourceContent), [resourceContent]) return ( {resourceContent.name}