CodeMirrorEditorReadOnly.tsx 989 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { useEffect } from 'react';
  2. import { type Extension, EditorState } from '@codemirror/state';
  3. import { GlobalCodeMirrorEditorKey } from '../consts';
  4. import { setDataLine } from '../services/extensions/setDataLine';
  5. import { useCodeMirrorEditorIsolated } from '../stores';
  6. import { CodeMirrorEditor } from '.';
  7. const additionalExtensions: Extension[] = [
  8. [
  9. setDataLine,
  10. EditorState.readOnly.of(true),
  11. ],
  12. ];
  13. type Props = {
  14. markdown?: string,
  15. onScroll?: () => void,
  16. }
  17. export const CodeMirrorEditorReadOnly = ({ markdown, onScroll }: Props): JSX.Element => {
  18. const { data: codeMirrorEditor } = useCodeMirrorEditorIsolated(GlobalCodeMirrorEditorKey.READONLY);
  19. codeMirrorEditor?.initDoc(markdown);
  20. useEffect(() => {
  21. return codeMirrorEditor?.appendExtensions?.(additionalExtensions);
  22. }, [codeMirrorEditor]);
  23. return (
  24. <CodeMirrorEditor
  25. hideToolbar
  26. editorKey={GlobalCodeMirrorEditorKey.READONLY}
  27. onScroll={onScroll}
  28. />
  29. );
  30. };