@@ -117,12 +117,56 @@ function getFileLang(src) {
117117
118118function processFile ( file ) {
119119
120- if ( liveView . classList . contains ( 'file-open' ) ) return ;
121-
122120 const reader = new FileReader ( ) ;
123121
124122 reader . addEventListener ( 'load' , ( event ) => {
125123
124+ // clear existing selections in HTML
125+ if ( fileWrapper . querySelector ( '.selected' ) ) {
126+ fileWrapper . querySelector ( '.selected' ) . classList . remove ( 'selected' ) ;
127+ }
128+
129+ // if adding a new file, remove it
130+ if ( fileWrapper . querySelector ( '.focused' ) ) {
131+
132+ fileWrapper . querySelector ( '.focused' ) . classList . add ( 'hidden' ) ;
133+
134+ window . setTimeout ( ( ) => {
135+ fileWrapper . querySelector ( '.focused' ) . remove ( ) ;
136+ } , 180 ) ;
137+
138+ }
139+
140+
141+ // show all files in HTML
142+ let files = fileWrapper . querySelectorAll ( '.item[style="display: none;"]' ) ;
143+ files . forEach ( file => { file . style . display = '' } ) ;
144+
145+ header . classList . remove ( 'searching' ) ;
146+
147+
148+ // if previous file selection exists
149+ if ( selectedFile . sha ) {
150+
151+ // get previous selection in modifiedFiles array
152+ let selectedItem = modifiedFiles [ selectedFile . sha ] ;
153+
154+ // if previous selection was modified
155+ if ( selectedItem ) {
156+
157+ // save previous selection in localStorage
158+ updateModFileContent ( selectedFile . sha , selectedFile . content ) ;
159+ updateModFileCaretPos ( selectedFile . sha , selectedFile . caretPos ) ;
160+ updateModFileScrollPos ( selectedFile . sha , selectedFile . scrollPos ) ;
161+
162+ }
163+
164+ }
165+
166+
167+ changeSelectedFile ( '' , '' , file . name , encodeUnicode ( event . target . result ) , getFileLang ( file . name ) , [ 0 , 0 ] , [ 0 , 0 ] , false ) ;
168+
169+
126170 if ( hashCode ( event . target . result ) !== hashCode ( cd . textContent ) ) {
127171
128172 cd . textContent = event . target . result ;
@@ -141,9 +185,22 @@ function processFile(file) {
141185 cd . history . records = [ { html : cd . innerHTML , pos : cd . getSelection ( ) } ] ;
142186 cd . history . pos = 0 ;
143187
144- changeSelectedFile ( '' , '' , file . name , encodeUnicode ( event . target . result ) , cd . lang , [ 0 , 0 ] , [ 0 , 0 ] , false ) ;
145-
146- showMessage ( 'Loaded ' + file . name + '!' , 5000 ) ;
188+ // update line numbers
189+ updateLineNumbersHTML ( ) ;
190+
191+ if ( liveView . classList . contains ( 'file-open' ) ) {
192+
193+ liveView . classList . add ( 'notransition' ) ;
194+ liveView . classList . remove ( 'file-open' ) ;
195+
196+ onNextFrame ( ( ) => {
197+ liveView . classList . remove ( 'notransition' ) ;
198+ } ) ;
199+
200+ }
201+
202+
203+ showMessage ( 'Loaded ' + file . name + '!' ) ;
147204
148205 } ) ;
149206
0 commit comments