1
1
import React from 'react' ;
2
- import { Renderer } from '/core/renderers' ;
2
+ import { Array1DRenderer , Renderer } from '/core/renderers' ;
3
3
import styles from './stylesheet.scss' ;
4
4
import { classes } from '/common/util' ;
5
5
@@ -14,13 +14,35 @@ class Array2DRenderer extends Renderer {
14
14
renderData ( ) {
15
15
const { data } = this . props . data ;
16
16
17
+ const isArray1D = this instanceof Array1DRenderer ;
18
+ let longestRow = data . reduce ( ( longestRow , row ) => longestRow . length < row . length ? row : longestRow , [ ] ) ;
19
+
17
20
return (
18
21
< table className = { styles . array_2d }
19
22
style = { { marginLeft : - this . centerX * 2 , marginTop : - this . centerY * 2 , fontSize : this . zoom } } >
20
23
< tbody >
24
+ < tr className = { styles . row } >
25
+ {
26
+ ! isArray1D &&
27
+ < td className = { classes ( styles . col , styles . index ) } />
28
+ }
29
+ {
30
+ longestRow . map ( ( _ , i ) => (
31
+ < td className = { classes ( styles . col , styles . index ) } >
32
+ < span className = { styles . value } > { i } </ span >
33
+ </ td >
34
+ ) )
35
+ }
36
+ </ tr >
21
37
{
22
38
data . map ( ( row , i ) => (
23
39
< tr className = { styles . row } key = { i } >
40
+ {
41
+ ! isArray1D &&
42
+ < td className = { classes ( styles . col , styles . index ) } >
43
+ < span className = { styles . value } > { i } </ span >
44
+ </ td >
45
+ }
24
46
{
25
47
row . map ( ( col , j ) => (
26
48
< td className = { classes ( styles . col , col . selected && styles . selected , col . patched && styles . patched ) }
0 commit comments