ente/packages/shared/components/CodeBlock/index.tsx

38 lines
1 KiB
TypeScript
Raw Normal View History

2023-11-02 16:53:14 +00:00
import { FreeFlowText } from '@ente/shared/components/Container';
2023-11-02 14:20:20 +00:00
import React from 'react';
2023-11-02 16:53:14 +00:00
import EnteSpinner from '@ente/shared/components/EnteSpinner';
2023-11-02 14:20:20 +00:00
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>
);
}