index.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { FreeFlowText } from '@ente/shared/components/Container';
  2. import React from 'react';
  3. import EnteSpinner from '@ente/shared/components/EnteSpinner';
  4. import { Wrapper, CodeWrapper, CopyButtonWrapper } from './styledComponents';
  5. import CopyButton from './CopyButton';
  6. import { BoxProps } from '@mui/material';
  7. type Iprops = React.PropsWithChildren<{
  8. code: string;
  9. wordBreak?: 'normal' | 'break-all' | 'keep-all' | 'break-word';
  10. }>;
  11. export default function CodeBlock({
  12. code,
  13. wordBreak,
  14. ...props
  15. }: BoxProps<'div', Iprops>) {
  16. if (!code) {
  17. return (
  18. <Wrapper>
  19. <EnteSpinner />
  20. </Wrapper>
  21. );
  22. }
  23. return (
  24. <Wrapper {...props}>
  25. <CodeWrapper>
  26. <FreeFlowText style={{ wordBreak: wordBreak }}>
  27. {code}
  28. </FreeFlowText>
  29. </CodeWrapper>
  30. <CopyButtonWrapper>
  31. <CopyButton code={code} />
  32. </CopyButtonWrapper>
  33. </Wrapper>
  34. );
  35. }