EditorViewer.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react';
  2. import Editor from 'components/common/Editor/Editor';
  3. import { SchemaType } from 'generated-sources';
  4. import { StyledWrapper } from './StyledWrapper.styled';
  5. export interface FullMessageProps {
  6. data: string;
  7. schemaType?: string;
  8. maxLines?: number;
  9. }
  10. const getSchemaValue = (data: string, schemaType?: string) => {
  11. if (schemaType === SchemaType.JSON || schemaType === SchemaType.AVRO) {
  12. return JSON.stringify(JSON.parse(data), null, '\t');
  13. }
  14. return data;
  15. };
  16. const EditorViewer: React.FC<FullMessageProps> = ({
  17. data,
  18. schemaType,
  19. maxLines,
  20. }) => {
  21. try {
  22. return (
  23. <StyledWrapper data-testid="json-viewer">
  24. <Editor
  25. isFixedHeight
  26. schemaType={schemaType}
  27. name="schema"
  28. value={getSchemaValue(data, schemaType)}
  29. setOptions={{
  30. showLineNumbers: false,
  31. maxLines,
  32. showGutter: false,
  33. }}
  34. readOnly
  35. />
  36. </StyledWrapper>
  37. );
  38. } catch (e) {
  39. return (
  40. <StyledWrapper data-testid="json-viewer">
  41. <p>{data}</p>
  42. </StyledWrapper>
  43. );
  44. }
  45. };
  46. export default EditorViewer;