index.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { FreeFlowText } from "@ente/shared/components/Container";
  2. import EnteSpinner from "@ente/shared/components/EnteSpinner";
  3. import type { BoxProps } from "@mui/material";
  4. import React from "react";
  5. import CopyButton from "./CopyButton";
  6. import { CodeWrapper, CopyButtonWrapper, Wrapper } from "./styledComponents";
  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. }