RevisionDiff.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React from 'react';
  2. import { createPatch } from 'diff';
  3. import { Diff2Html } from 'diff2html';
  4. export default class RevisionDiff extends React.Component {
  5. render() {
  6. const currentRevision = this.props.currentRevision,
  7. previousRevision = this.props.previousRevision,
  8. revisionDiffOpened = this.props.revisionDiffOpened;
  9. let diffViewHTML = '';
  10. if (currentRevision.body
  11. && previousRevision.body
  12. && revisionDiffOpened) {
  13. let previousText = previousRevision.body;
  14. if (currentRevision._id == previousRevision._id) {
  15. previousText = '';
  16. }
  17. const patch = createPatch(
  18. currentRevision.path,
  19. previousText,
  20. currentRevision.body
  21. );
  22. diffViewHTML = Diff2Html.getPrettyHtml(patch);
  23. }
  24. const diffView = {__html: diffViewHTML};
  25. return <div className="revision-history-diff" dangerouslySetInnerHTML={diffView} />;
  26. }
  27. }
  28. RevisionDiff.propTypes = {
  29. currentRevision: React.PropTypes.object.isRequired,
  30. previousRevision: React.PropTypes.object.isRequired,
  31. revisionDiffOpened: React.PropTypes.bool.isRequired,
  32. }