@@ -119,6 +119,71 @@ function processFile(file) {
119119
120120 showMessage ( 'Opening file...' , - 1 ) ;
121121
122+
123+ cd . style . display = 'none' ;
124+
125+ if ( liveToggle . classList . contains ( 'visible' ) ) {
126+
127+ liveToggle . classList . remove ( 'visible' ) ;
128+
129+ }
130+
131+ if ( liveView . classList . contains ( 'file-open' ) ) {
132+
133+ liveView . classList . add ( 'notransition' ) ;
134+ liveView . classList . remove ( 'file-open' ) ;
135+
136+ onNextFrame ( ( ) => {
137+ liveView . classList . remove ( 'notransition' ) ;
138+ } ) ;
139+
140+ }
141+
142+ // clear existing selections in HTML
143+ if ( fileWrapper . querySelector ( '.selected' ) ) {
144+ fileWrapper . querySelector ( '.selected' ) . classList . remove ( 'selected' ) ;
145+ }
146+
147+ // if adding a new file, remove it
148+ if ( fileWrapper . querySelector ( '.focused' ) ) {
149+
150+ fileWrapper . querySelector ( '.focused' ) . classList . add ( 'hidden' ) ;
151+
152+ window . setTimeout ( ( ) => {
153+ fileWrapper . querySelector ( '.focused' ) . remove ( ) ;
154+ } , 180 ) ;
155+
156+ }
157+
158+
159+ // show all files in HTML
160+ let files = fileWrapper . querySelectorAll ( '.item[style="display: none;"]' ) ;
161+ files . forEach ( file => {
162+ file . style . display = ''
163+ } ) ;
164+
165+ header . classList . remove ( 'searching' ) ;
166+
167+
168+ // if previous file selection exists
169+ if ( selectedFile . sha ) {
170+
171+ // get previous selection in modifiedFiles array
172+ let selectedItem = modifiedFiles [ selectedFile . sha ] ;
173+
174+ // if previous selection was modified
175+ if ( selectedItem ) {
176+
177+ // save previous selection in localStorage
178+ updateModFileContent ( selectedFile . sha , selectedFile . content ) ;
179+ updateModFileCaretPos ( selectedFile . sha , selectedFile . caretPos ) ;
180+ updateModFileScrollPos ( selectedFile . sha , selectedFile . scrollPos ) ;
181+
182+ }
183+
184+ }
185+
186+
122187 const reader = new FileReader ( ) ;
123188
124189 reader . addEventListener ( 'load' , ( event ) => {
@@ -188,11 +253,11 @@ function processFile(file) {
188253 updateLineNumbersHTML ( ) ;
189254
190255 if ( liveToggle . classList . contains ( 'visible' ) ) {
191-
256+
192257 liveToggle . classList . remove ( 'visible' ) ;
193-
258+
194259 }
195-
260+
196261 if ( liveView . classList . contains ( 'file-open' ) ) {
197262
198263 liveView . classList . add ( 'notransition' ) ;
@@ -201,9 +266,11 @@ function processFile(file) {
201266 onNextFrame ( ( ) => {
202267 liveView . classList . remove ( 'notransition' ) ;
203268 } ) ;
204-
269+
205270 }
206271
272+ cd . style . display = '' ;
273+
207274
208275 hideMessage ( ) ;
209276
@@ -233,28 +300,31 @@ body.addEventListener('drop', (ev) => {
233300
234301
235302 if ( ev . dataTransfer . items ) {
303+
304+ // if dropped item isn't a file, reject it
305+ if ( ev . dataTransfer . items [ 0 ] &&
306+ ev . dataTransfer . items [ 0 ] . kind === 'file' ) {
236307
237- // use DataTransferItemList interface to access the file(s)
238- for ( var i = 0 ; i < ev . dataTransfer . items . length ; i ++ ) {
239-
240- // if dropped items aren't files, reject them
241- if ( ev . dataTransfer . items [ i ] . kind === 'file' ) {
242-
243- var file = ev . dataTransfer . items [ i ] . getAsFile ( ) ;
244- processFile ( file ) ;
245-
246- }
308+ // process file
309+ const file = ev . dataTransfer . items [ 0 ] . getAsFile ( ) ;
310+ processFile ( file ) ;
247311
248312 }
313+
314+ /*
315+ // run on all files
316+ for (let i = 0; i < ev.dataTransfer.items.length; i++) {
317+ */
249318
250319 } else {
251-
252- // use DataTransfer interface to access the file(s)
253- for ( var i = 0 ; i < ev . dataTransfer . files . length ; i ++ ) {
254-
255- processFile ( ev . dataTransfer . files [ i ] ) ;
256-
257- }
320+
321+ // process file
322+ processFile ( ev . dataTransfer . files [ 0 ] ) ;
323+
324+ /*
325+ // run on all files
326+ for (let i = 0; i < ev.dataTransfer.files.length; i++) {
327+ */
258328
259329 }
260330
@@ -264,19 +334,25 @@ body.addEventListener('dragover', (ev) => {
264334
265335 // prevent default behavior (prevent file from being opened)
266336 ev . preventDefault ( ) ;
337+
338+ // if dropping a file
339+ if ( ev . dataTransfer . items [ 0 ] &&
340+ ev . dataTransfer . items [ 0 ] . kind === 'file' ) {
267341
268- // show drop indication
342+ // show drop indication
269343
270- if ( ! liveView . classList . contains ( 'file-open' ) ) {
271-
272- cd . classList . add ( 'focus' ) ;
273-
274- } else {
275-
276- liveView . classList . add ( 'focus' ) ;
344+ if ( ! liveView . classList . contains ( 'file-open' ) ) {
345+
346+ cd . classList . add ( 'focus' ) ;
347+
348+ } else {
349+
350+ liveView . classList . add ( 'focus' ) ;
351+
352+ }
277353
278354 }
279-
355+
280356} )
281357
282358body . addEventListener ( 'dragleave' , ( ev ) => {
0 commit comments