RocketChat/Rocket.Chat

View on GitHub
packages/uikit-playground/src/Components/CodeEditor/PreviewEditor.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { Extension } from '@codemirror/state';
import { Box } from '@rocket.chat/fuselage';
import { useEffect, useContext } from 'react';

import { context } from '../../Context';
import useCodeMirror from '../../hooks/useCodeMirror';
import intendCode from '../../utils/intendCode';

type CodeMirrorProps = {
  extensions?: Extension[];
};

const PreviewEditor = ({ extensions }: CodeMirrorProps) => {
  const {
    state: { screens, activeScreen },
  } = useContext(context);
  const { editor, setValue } = useCodeMirror(
    extensions,
    intendCode(screens[activeScreen]?.actionPreview)
  );

  useEffect(() => {
    setValue(intendCode(screens[activeScreen]?.actionPreview), {});
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [screens[activeScreen]?.actionPreview]);

  return (
    <>
      <Box display="grid" height="100%" width={'100%'} ref={editor} />
    </>
  );
};

export default PreviewEditor;