ente/packages/shared/components/CodeBlock/index.tsx
2023-11-02 22:23:14 +05:30

38 lines
1 KiB
TypeScript

import { FreeFlowText } from '@ente/shared/components/Container';
import React from 'react';
import EnteSpinner from '@ente/shared/components/EnteSpinner';
import { Wrapper, CodeWrapper, CopyButtonWrapper } from './styledComponents';
import CopyButton from './CopyButton';
import { BoxProps } from '@mui/material';
type Iprops = React.PropsWithChildren<{
code: string;
wordBreak?: 'normal' | 'break-all' | 'keep-all' | 'break-word';
}>;
export default function CodeBlock({
code,
wordBreak,
...props
}: BoxProps<'div', Iprops>) {
if (!code) {
return (
<Wrapper>
<EnteSpinner />
</Wrapper>
);
}
return (
<Wrapper {...props}>
<CodeWrapper>
<FreeFlowText style={{ wordBreak: wordBreak }}>
{code}
</FreeFlowText>
</CodeWrapper>
<CopyButtonWrapper>
<CopyButton code={code} />
</CopyButtonWrapper>
</Wrapper>
);
}