@@ -2,24 +2,19 @@ require('./style.scss');
2
2
import * as React from 'react' ;
3
3
import * as ReactDOM from 'react-dom' ;
4
4
5
- import ReactDiff from '../../lib/index' ;
5
+ import ReactDiff , { DiffMethod } from '../../lib/index' ;
6
6
7
- const oldJson = require ( './diff/json/old.json' ) ;
8
- const newJson = require ( './diff/json/new.json' ) ;
9
- const oldXml = require ( './diff/xml/old.xml' ) . default ;
10
- const newXml = require ( './diff/xml/new.xml' ) . default ;
11
7
const oldJs = require ( './diff/javascript/old.rjs' ) . default ;
12
8
const newJs = require ( './diff/javascript/new.rjs' ) . default ;
13
9
14
10
const logo = require ( '../../logo.png' ) ;
15
- const logoStandalone = require ( '../../logo-standalone.png' ) ;
16
11
17
12
interface ExampleState {
18
13
splitView ?: boolean ;
19
14
highlightLine ?: string [ ] ;
20
15
language ?: string ;
21
16
enableSyntaxHighlighting ?: boolean ;
22
- compareMethod ?: string ;
17
+ compareMethod ?: DiffMethod ;
23
18
}
24
19
25
20
const P = ( window as any ) . Prism ;
@@ -28,28 +23,11 @@ class Example extends React.Component<{}, ExampleState> {
28
23
public constructor ( props : any ) {
29
24
super ( props ) ;
30
25
this . state = {
31
- splitView : true ,
32
26
highlightLine : [ ] ,
33
- language : 'javascript' ,
34
27
enableSyntaxHighlighting : true ,
35
- compareMethod : 'diffChars'
36
28
} ;
37
29
}
38
30
39
- private toggleSyntaxHighlighting = ( ) : void =>
40
- this . setState ( {
41
- enableSyntaxHighlighting : ! this . state . enableSyntaxHighlighting ,
42
- } ) ;
43
-
44
- private onChange = ( ) : void =>
45
- this . setState ( { splitView : ! this . state . splitView } ) ;
46
-
47
- private onLanguageChange = ( e : any ) : void =>
48
- this . setState ( { language : e . target . value , highlightLine : [ ] } ) ;
49
-
50
- private onCompareMethodChange = ( e : any ) : void =>
51
- this . setState ( { compareMethod : e . target . value } ) ;
52
-
53
31
private onLineNumberClick = (
54
32
id : string ,
55
33
e : React . MouseEvent < HTMLTableCellElement > ,
@@ -74,66 +52,18 @@ class Example extends React.Component<{}, ExampleState> {
74
52
75
53
private syntaxHighlight = ( str : string ) : any => {
76
54
if ( ! str ) return ;
77
- let language ;
78
- switch ( this . state . language ) {
79
- case 'xml' :
80
- language = P . highlight ( str , P . languages . markup ) ;
81
- break ;
82
- case 'json' :
83
- language = P . highlight ( str , P . languages . json ) ;
84
- break ;
85
- case 'javascript' :
86
- language = P . highlight ( str , P . languages . javascript ) ;
87
- break ;
88
- default :
89
- break ;
90
- }
55
+ const language = P . highlight ( str , P . languages . javascript ) ;
91
56
return < span dangerouslySetInnerHTML = { { __html : language } } /> ;
92
57
} ;
93
58
94
59
public render ( ) : JSX . Element {
95
- let oldValue ;
96
- let newValue ;
97
60
98
- switch ( this . state . language ) {
99
- case 'xml' :
100
- oldValue = oldXml ;
101
- newValue = newXml ;
102
- break ;
103
- case 'json' :
104
- oldValue = JSON . stringify ( oldJson , null , 4 ) ;
105
- newValue = JSON . stringify ( newJson , null , 4 ) ;
106
- break ;
107
- case 'javascript' :
108
- oldValue = oldJs ;
109
- newValue = newJs ;
110
- break ;
111
- default :
112
- break ;
113
- }
114
-
115
- switch ( this . state . language ) {
116
- case 'xml' :
117
- oldValue = oldXml ;
118
- newValue = newXml ;
119
- break ;
120
- case 'json' :
121
- oldValue = JSON . stringify ( oldJson , null , 4 ) ;
122
- newValue = JSON . stringify ( newJson , null , 4 ) ;
123
- break ;
124
- case 'javascript' :
125
- oldValue = oldJs ;
126
- newValue = newJs ;
127
- break ;
128
- default :
129
- break ;
130
- }
131
61
return (
132
62
< div className = "react-diff-viewer-example" >
63
+ < div className = "radial" > </ div >
133
64
< div className = "banner" >
134
65
< div className = "img-container" >
135
66
< img src = { logo } alt = "React Diff Viewer Logo" />
136
- < img src = { logoStandalone } alt = "React Diff Viewer Logo" className = "mobile" />
137
67
</ div >
138
68
< p >
139
69
A simple and beautiful text diff viewer made with{ ' ' }
@@ -152,84 +82,19 @@ class Example extends React.Component<{}, ExampleState> {
152
82
Documentation
153
83
</ button >
154
84
</ a >
155
- < a href = "https://github.com/praneshr/react-diff-viewer" >
156
- < button type = "button" className = "btn btn-primary btn-lg" >
157
- Github
158
- </ button >
159
- </ a >
160
85
</ div >
161
86
</ div >
162
- < div className = "controls" >
163
- < span >
164
- < label htmlFor = "js_diff_compare_method" > JsDiff Compare Method</ label >
165
- { ' ' }
166
- (< a href = "https://github.com/kpdecker/jsdiff/tree/v4.0.1#api" > Learn More</ a > )
167
- { ' ' }
168
- < select
169
- name = "js_diff_compare_method"
170
- id = "js_diff_compare_method"
171
- onChange = { this . onCompareMethodChange }
172
- value = { this . state . compareMethod }
173
- >
174
- < option value = "disabled" > DISABLE</ option >
175
- < option value = "diffChars" > diffChars</ option >
176
- < option value = "diffWords" > diffWords</ option >
177
- < option value = "diffWordsWithSpace" > diffWordsWithSpace</ option >
178
- < option value = "diffLines" > diffLines</ option >
179
- < option value = "diffTrimmedLines" > diffTrimmedLines</ option >
180
- < option value = "diffCss" > diffCss</ option >
181
- < option value = "diffSentences" > diffSentences</ option >
182
- </ select >
183
- </ span >
184
- < span >
185
- < label htmlFor = "language" > Language</ label >
186
- { ' ' }
187
- < select
188
- name = "language"
189
- id = "language"
190
- onChange = { this . onLanguageChange }
191
- value = { this . state . language }
192
- >
193
- < option value = "json" > JSON</ option >
194
- < option value = "xml" > XML</ option >
195
- < option value = "javascript" > Javascript</ option >
196
- </ select >
197
- </ span >
198
- < span >
199
- < label >
200
- < input
201
- type = "checkbox"
202
- name = "toggle-2"
203
- id = "toggle-2"
204
- onChange = { this . toggleSyntaxHighlighting }
205
- checked = { this . state . enableSyntaxHighlighting }
206
- /> { ' ' }
207
- Syntax Highlighting
208
- </ label >
209
- < label >
210
- < input
211
- type = "checkbox"
212
- name = "toggle-1"
213
- id = "toggle-1"
214
- onChange = { this . onChange }
215
- checked = { this . state . splitView }
216
- /> { ' ' }
217
- Split View
218
- </ label >
219
- </ span >
220
- </ div >
221
87
< div className = "diff-viewer" >
222
88
< ReactDiff
223
- disableWordDiff = { this . state . compareMethod === 'disabled' }
224
- compareMethod = { this . state . compareMethod }
225
89
highlightLines = { this . state . highlightLine }
226
90
onLineNumberClick = { this . onLineNumberClick }
227
- oldValue = { oldValue }
228
- splitView = { this . state . splitView }
229
- newValue = { newValue }
230
- renderContent = {
231
- this . state . enableSyntaxHighlighting && this . syntaxHighlight
232
- }
91
+ oldValue = { oldJs }
92
+ splitView
93
+ newValue = { newJs }
94
+ renderContent = { this . syntaxHighlight }
95
+ useDarkTheme
96
+ leftTitle = "webpack.config.js master@2178133 - pushed 2 hours ago."
97
+ rightTitle = "webpack.config.js master@64207ee - pushed 13 hours ago."
233
98
/>
234
99
</ div >
235
100
< footer >
0 commit comments