diff --git a/app/src/components/CodeDiff.tsx b/app/src/components/CodeDiff.tsx index c4331a7..f8ab506 100644 --- a/app/src/components/CodeDiff.tsx +++ b/app/src/components/CodeDiff.tsx @@ -8,26 +8,25 @@ import 'prismjs/themes/prism-tomorrow.css' interface Props { previous: string current: string + language?: 'json' classes: any } -interface State { -} - -class CodeDiff extends React.Component { +class CodeDiff extends React.Component { constructor(props: Props) { super(props) } public render() { const changes = diff.diffLines(this.props.previous, this.props.current) + const styledLines = Prism.highlight(this.props.current, Prism.languages.json).split('\n') let lineNumber = 0 const code = changes.map((change, key) => { const hasStyledCode = change.removed !== true const changedLines = change.count || 0 - if (hasStyledCode) { + if (hasStyledCode && this.props.language === 'json') { const html = styledLines.slice(lineNumber, lineNumber + changedLines).join('\n') lineNumber += changedLines @@ -37,7 +36,11 @@ class CodeDiff extends React.Component { return
{change.value}
}) - return
{code}
+ return ( +
+        {code}
+      
+ ) } private cssClassForChange(change: diff.Change) { @@ -49,7 +52,7 @@ class CodeDiff extends React.Component { return this.props.classes.deletion } - return this.props.classes.code + return this.props.classes.noChange } } @@ -58,10 +61,12 @@ const style = (theme: Theme) => { width: '100%', } return { - code: { + codeBlock: { + fontSize: '12px', + maxHeight: '200px', + }, + noChange: { ...baseStyle, - // backgroundColor: theme.palette.background.paper, - // color: theme.palette.text.primary, }, deletion: { ...baseStyle, diff --git a/app/src/components/Sidebar/ValueRenderer.tsx b/app/src/components/Sidebar/ValueRenderer.tsx index b4bf9ba..1d26154 100644 --- a/app/src/components/Sidebar/ValueRenderer.tsx +++ b/app/src/components/Sidebar/ValueRenderer.tsx @@ -1,11 +1,8 @@ -import * as diff from 'diff' import * as q from '../../../../backend/src/Model' import * as React from 'react' +import CodeDiff from '../CodeDiff' import { default as ReactResizeDetector } from 'react-resize-detector' import { Theme, withTheme } from '@material-ui/core/styles' -import CodeDiff from '../CodeDiff'; - -const sha1 = require('sha1') interface Props { node?: q.TreeNode, @@ -15,14 +12,12 @@ interface Props { interface State { width: number - node?: q.TreeNode - currentMessage?: q.Message } class ValueRenderer extends React.Component { constructor(props: Props) { super(props) - this.state = { width: 0, node: props.node } + this.state = { width: 0 } } public render() { @@ -71,21 +66,12 @@ class ValueRenderer extends React.Component { } } - public static getDerivedStateFromProps(props: Props, state: State) { - const discardEdit = props.node !== state.node || (props.node && props.node.message !== state.currentMessage) - return { - ...state, - node: props.node, - currentMessage: props.node && props.node.message, - } - } - - private renderDiff(current: string = '', previous: string = '') { + private renderDiff(current: string = '', previous: string = '', language?: 'json') { return ( ) }