11/* eslint-disable no-undef */
22function isHTML ( str ) {
3+ if ( typeof str !== 'string' ) return false ;
34 var doc = new DOMParser ( ) . parseFromString ( str , "text/html" ) ;
45 return Array . from ( doc . body . childNodes ) . some ( node => node . nodeType === 1 ) ;
56}
67
7- const diffAOA = JSON . parse ( document . querySelector ( "#spread-diff-patch-data" ) . dataset . rawDiffaoa )
8+ const diffAOA = JSON . parse ( document . querySelector ( "#spread-diff-patch-data" ) . dataset . rawDiffaoa ) ;
89
910const app = document . querySelector ( '#spread-diff-patch' ) ;
1011const gridElement = document . createElement ( 'div' ) ;
11- gridElement . id = "diff-grid"
12- const grid = canvasDatagrid ( {
13- parentNode : gridElement ,
14- editable : false ,
15- } ) ;
16-
12+ gridElement . id = "diff-grid" ;
13+ gridElement . style . height = '100vh' ;
14+ gridElement . style . width = '100%' ;
15+ gridElement . className = 'ag-theme-alpine' ; // or other theme
1716app . append ( gridElement ) ;
1817
19- grid . style . height = '100%' ;
20- grid . style . width = '100%' ;
21- grid . data = diffAOA
18+ // Generate column definitions
19+ const columnDefs = diffAOA [ 0 ] ? diffAOA [ 0 ] . map ( ( _ , index ) => ( {
20+ headerName : String . fromCharCode ( 65 + index ) , // A, B, C...
21+ field : String ( index ) ,
22+ cellRenderer : params => {
23+ if ( isHTML ( params . value ) ) {
24+ const e = document . createElement ( "div" )
25+ e . innerHTML = params . value
26+ return e
27+ }
28+ return params . value
29+ }
30+ } ) ) : [ ] ;
31+
32+ // Convert array of arrays to array of objects
33+ const rowData = diffAOA . map ( row => {
34+ const rowObject = { } ;
35+ row . forEach ( ( cell , index ) => {
36+ rowObject [ String ( index ) ] = cell ;
37+ } ) ;
38+ return rowObject ;
39+ } ) ;
40+
41+ const gridOptions = {
42+ columnDefs : columnDefs ,
43+ rowData : rowData ,
44+ defaultColDef : {
45+ editable : false ,
46+ sortable : true ,
47+ filter : true ,
48+ resizable : true
49+ }
50+ } ;
2251
23- grid . addEventListener ( 'afterrendercell' , function ( e ) {
24- if ( isHTML ( e . cell . value ) )
25- e . cell . innerHTML = e . cell . value
26- } ) ;
52+ agGrid . createGrid ( gridElement , gridOptions ) ;
0 commit comments