ConflictDiffModal.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React, { useState, useEffect, FC } from 'react';
  2. import { Modal, ModalHeader, ModalBody } from 'reactstrap';
  3. import CodeMirror from 'codemirror/lib/codemirror';
  4. require('codemirror/lib/codemirror.css');
  5. require('codemirror/addon/merge/merge');
  6. require('codemirror/addon/merge/merge.css');
  7. const DMP = require('diff_match_patch');
  8. Object.keys(DMP).forEach((key) => { window[key] = DMP[key] });
  9. export const ConflictDiffModal: FC = () => {
  10. const [val, setVal] = useState('value 1'));
  11. const [orig, setOrig] = useState('value 2');
  12. const [codeMirrorRef, setCodeMirrorRef] = useState<HTMLDivElement | null>(null);
  13. useEffect(() => {
  14. if (codeMirrorRef) {
  15. CodeMirror.MergeView(codeMirrorRef, {
  16. value: val,
  17. origLeft: orig,
  18. origRight: null,
  19. connect: 'align',
  20. lineNumbers: true,
  21. collapseIdentical: true,
  22. highlightDifferences: true,
  23. allowEditingOriginals: false,
  24. });
  25. // mvInstance.on('change', (editor) => {
  26. // console.log(editor.getValue());
  27. // });
  28. }
  29. }, [codeMirrorRef, orig, val]);
  30. return (
  31. <Modal isOpen className="modal-gfm-cheatsheet">
  32. <ModalHeader tag="h4" className="bg-primary text-light">
  33. <i className="icon-fw icon-question" />Resolve Conflict
  34. </ModalHeader>
  35. <ModalBody>
  36. <div ref={(el) => { setCodeMirrorRef(el) }}></div>
  37. </ModalBody>
  38. </Modal>
  39. );
  40. };