@@ -153,37 +153,51 @@ function switchToTool(toolName) {
153153// DRAG & DROP
154154// ============================================================================
155155
156+ let dragCounter = 0 ;
157+
156158function initDropZone ( ) {
157- const appContainer = document . querySelector ( '.app-container' ) ;
158159 const dropZone = DOM . dropZone ( ) ;
159160
160- // Show drop zone on drag over
161- appContainer . addEventListener ( 'dragover' , ( e ) => {
161+ // Ensure drop zone is hidden on init
162+ dropZone . hidden = true ;
163+ dragCounter = 0 ;
164+
165+ // Listen on document level for drag events
166+ document . addEventListener ( 'dragenter' , ( e ) => {
162167 e . preventDefault ( ) ;
163- e . stopPropagation ( ) ;
164- dropZone . hidden = false ;
168+ dragCounter ++ ;
169+ if ( dragCounter === 1 ) {
170+ dropZone . hidden = false ;
171+ }
165172 } ) ;
166173
167- appContainer . addEventListener ( 'dragleave' , ( e ) => {
174+ document . addEventListener ( 'dragleave' , ( e ) => {
168175 e . preventDefault ( ) ;
169- if ( e . target === appContainer ) {
176+ dragCounter -- ;
177+ if ( dragCounter === 0 ) {
170178 dropZone . hidden = true ;
171179 }
172180 } ) ;
173181
182+ document . addEventListener ( 'dragover' , ( e ) => {
183+ e . preventDefault ( ) ;
184+ e . stopPropagation ( ) ;
185+ } ) ;
186+
174187 // Handle file drop
175- dropZone . addEventListener ( 'drop' , handleFileDrop ) ;
176- appContainer . addEventListener ( 'drop' , handleFileDrop ) ;
188+ document . addEventListener ( 'drop' , handleFileDrop ) ;
177189}
178190
179191function handleFileDrop ( e ) {
180192 e . preventDefault ( ) ;
181193 e . stopPropagation ( ) ;
182194
195+ // Reset drag counter and hide drop zone
196+ dragCounter = 0 ;
183197 DOM . dropZone ( ) . hidden = true ;
184198
185- const files = e . dataTransfer . files ;
186- if ( files . length === 0 ) return ;
199+ const files = e . dataTransfer ? .files ;
200+ if ( ! files || files . length === 0 ) return ;
187201
188202 // Switch to vault tool
189203 switchToTool ( 'vault' ) ;
0 commit comments