@@ -141,6 +141,9 @@ const parseRowId = (rowId: string): { kind: 'file' | 'folder'; id: string } => {
141141 return { kind : 'file' , id : rowId }
142142}
143143
144+ const hasExternalFiles = ( dataTransfer : DataTransfer ) : boolean =>
145+ dataTransfer . types . includes ( 'Files' )
146+
144147function formatFileType ( mimeType : string | null , filename : string ) : string {
145148 if ( mimeType && MIME_TYPE_LABELS [ mimeType ] ) {
146149 return MIME_TYPE_LABELS [ mimeType ]
@@ -672,12 +675,12 @@ export function Files() {
672675 } ,
673676 onDragOver : ( e : DragEvent < HTMLTableRowElement > , rowId ) => {
674677 const sourceRowIds = draggedRowIdsRef . current
675- const hasExternalFiles = e . dataTransfer . types . includes ( 'Files' )
676- if ( ! hasExternalFiles && isInvalidDropTarget ( rowId , sourceRowIds ) ) return
678+ const isExternalFileDrag = hasExternalFiles ( e . dataTransfer )
679+ if ( ! isExternalFileDrag && isInvalidDropTarget ( rowId , sourceRowIds ) ) return
677680
678681 e . preventDefault ( )
679682 e . stopPropagation ( )
680- e . dataTransfer . dropEffect = hasExternalFiles ? 'copy' : 'move'
683+ e . dataTransfer . dropEffect = isExternalFileDrag ? 'copy' : 'move'
681684 setActiveDropTargetId ( rowId )
682685 } ,
683686 onDragLeave : ( e : DragEvent < HTMLTableRowElement > , rowId ) => {
@@ -771,22 +774,26 @@ export function Files() {
771774 }
772775
773776 const handleDragEnter = ( e : React . DragEvent ) => {
777+ if ( ! hasExternalFiles ( e . dataTransfer ) ) return
774778 e . preventDefault ( )
775779 dragCounterRef . current ++
776- if ( e . dataTransfer . types . includes ( 'Files' ) ) setIsDraggingOver ( true )
780+ setIsDraggingOver ( true )
777781 }
778782
779- const handleDragLeave = ( ) => {
783+ const handleDragLeave = ( e : React . DragEvent ) => {
784+ if ( ! hasExternalFiles ( e . dataTransfer ) ) return
780785 dragCounterRef . current --
781786 if ( dragCounterRef . current === 0 ) setIsDraggingOver ( false )
782787 }
783788
784789 const handleDragOver = ( e : React . DragEvent ) => {
790+ if ( ! hasExternalFiles ( e . dataTransfer ) ) return
785791 e . preventDefault ( )
786792 e . dataTransfer . dropEffect = 'copy'
787793 }
788794
789795 const handleDrop = async ( e : React . DragEvent ) => {
796+ if ( ! hasExternalFiles ( e . dataTransfer ) ) return
790797 e . preventDefault ( )
791798 dragCounterRef . current = 0
792799 setIsDraggingOver ( false )
0 commit comments