1- import  {  
2-   ICellFooterTracker , 
3- }  from  'jupyterlab-cell-input-footer' ; 
1+ import  {  ICellFooterTracker  }  from  'jupyterlab-cell-input-footer' ; 
42import  {  IDiffEntry  }  from  'nbdime/lib/diff/diffentries' ; 
53import  {  createPatchStringDiffModel  }  from  'nbdime/lib/diff/model' ; 
64import  {  MergeView  }  from  'nbdime/lib/common/mergeview' ; 
7- import  { 
8-   ToolbarButton , 
9- }  from  '@jupyterlab/ui-components' ; 
10- import  { 
11-   requestAPI 
12- }  from  './handler' ; 
5+ import  {  ToolbarButton  }  from  '@jupyterlab/ui-components' ; 
6+ import  {  requestAPI  }  from  './handler' ; 
137
148export  namespace  ShowDiff  { 
15- 
169  export  interface  ICommandArgs  { 
17-     cell_id ?: string , 
18-     original_source : string , 
19-     diff : IDiffEntry [ ] 
10+     cell_id ?: string ; 
11+     original_source : string ; 
12+     diff : IDiffEntry [ ] ; 
2013  } 
2114
2215  export  interface  IFetchDiff  { 
23-     original_source : string , 
24-     new_source : string 
16+     original_source : string ; 
17+     new_source : string ; 
2518  } 
2619} 
2720
28- 
2921/** 
3022 * Adds a Diff UX underneath a JupyterLab cell. 
31-  *   
32-  * @param  data   
33-  * @param  cellFooterTracker   
23+  * 
24+  * @param  data 
25+  * @param  cellFooterTracker 
3426 */ 
35- export  function  showCellDiff ( data : ShowDiff . ICommandArgs ,  cellFooterTracker : ICellFooterTracker )  { 
36-   let  diff  =  createPatchStringDiffModel ( 
37-     data [ "original_source" ] , 
38-     data [ "diff" ] 
39-   ) 
40-   
41-   let  mergeView : MergeView ; 
42-   mergeView  =  new  MergeView ( {  remote : diff  } ) ; 
43-   mergeView . addClass ( "nbdime-root" ) ; 
44-   mergeView . addClass ( "jp-Notebook-diff" ) ; 
27+ export  function  showCellDiff ( 
28+   data : ShowDiff . ICommandArgs , 
29+   cellFooterTracker : ICellFooterTracker 
30+ )  { 
31+   const  diff  =  createPatchStringDiffModel ( 
32+     data [ 'original_source' ] , 
33+     data [ 'diff' ] 
34+   ) ; 
35+ 
36+   const  mergeView  =  new  MergeView ( {  remote : diff  } ) ; 
37+   // 
38+   mergeView . addClass ( 'jp-cell-diff' ) ; 
39+   // Add the classes below to pick up the styling from nbdime. 
40+   mergeView . addClass ( 'nbdime-root' ) ; 
41+   mergeView . addClass ( 'jp-Notebook-diff' ) ; 
4542  mergeView . hide ( ) ; 
4643
47-   let  footer  =  cellFooterTracker . getFooter ( data . cell_id ) ; 
44+   const  footer  =  cellFooterTracker . getFooter ( data . cell_id ) ; 
45+   // Try removing any old widget that exists. 
46+   try  { 
47+     footer ?. removeWidget ( 'jp-cell-diff' ) ; 
48+   }  finally  { 
49+     // Do Nothing 
50+   } 
51+ 
4852  footer ?. addWidget ( mergeView ) ; 
4953
5054  if  ( footer ?. isHidden )  { 
5155    footer . show ( ) ; 
5256    footer . update ( ) ; 
5357  } 
54-   footer ?. addItemOnLeft ( 
58+   footer ?. addToolbarItemOnLeft ( 
5559    'compare' , 
5660    new  ToolbarButton ( { 
5761      // icon: wandIcon, 
58-       label : " Compare changes" , 
62+       label : ' Compare changes' , 
5963      enabled : true , 
60-       onClick : ( )  =>  {   
64+       onClick : ( )  =>  { 
6165        if  ( mergeView . isHidden )  { 
62-           mergeView . show ( ) 
66+           mergeView . show ( ) ; 
6367          return ; 
6468        } 
65-         mergeView . hide ( ) 
69+         mergeView . hide ( ) ; 
6670      } 
6771    } ) 
6872  ) ; 
6973} 
7074
71- 
72- export  async  function  fetchDiff ( data : ShowDiff . IFetchDiff ) : Promise < ShowDiff . ICommandArgs >  { 
75+ export  async  function  fetchDiff ( 
76+   data : ShowDiff . IFetchDiff 
77+ ) : Promise < ShowDiff . ICommandArgs >  { 
7378  return  await  requestAPI ( 'api/celldiff' ) ; 
7479} 
7580
76- 
7781/** 
7882 * Adds a diff to the Cell Footer 
79-  *   
83+  * 
8084 */ 
8185export  function  showCellDiffCommand ( cellFooterTracker : ICellFooterTracker )  { 
8286  return  ( args : any )  =>  { 
83-     let  data : ShowDiff . ICommandArgs  =  ( args  as  any ) ; 
84-     let  cellId  =  data [ " cell_id" ] ; 
87+     const  data : ShowDiff . ICommandArgs  =  args  as  any ; 
88+     const  cellId  =  data [ ' cell_id' ] ; 
8589    if  ( cellId )  { 
86- 
87-       if  ( data  &&  data [ "original_source" ]  &&  data [ "diff" ] )  { 
88-         
89-         showCellDiff ( data ,  cellFooterTracker ) 
90+       if  ( data  &&  data [ 'original_source' ]  &&  data [ 'diff' ] )  { 
91+         showCellDiff ( data ,  cellFooterTracker ) ; 
9092      } 
9193    } 
92-   } 
94+   } ; 
9395} 
94-   
0 commit comments