| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
                        - import { useEffect, useState } from 'react'
 - 
 - type DSLDragDropHookProps = {
 -   onDSLFileDropped: (file: File) => void
 -   containerRef: React.RefObject<HTMLDivElement | null>
 -   enabled?: boolean
 - }
 - 
 - export const useDSLDragDrop = ({ onDSLFileDropped, containerRef, enabled = true }: DSLDragDropHookProps) => {
 -   const [dragging, setDragging] = useState(false)
 - 
 -   const handleDragEnter = (e: DragEvent) => {
 -     e.preventDefault()
 -     e.stopPropagation()
 -     if (e.dataTransfer?.types.includes('Files'))
 -       setDragging(true)
 -   }
 - 
 -   const handleDragOver = (e: DragEvent) => {
 -     e.preventDefault()
 -     e.stopPropagation()
 -   }
 - 
 -   const handleDragLeave = (e: DragEvent) => {
 -     e.preventDefault()
 -     e.stopPropagation()
 -     if (e.relatedTarget === null || !containerRef.current?.contains(e.relatedTarget as Node))
 -       setDragging(false)
 -   }
 - 
 -   const handleDrop = (e: DragEvent) => {
 -     e.preventDefault()
 -     e.stopPropagation()
 -     setDragging(false)
 - 
 -     if (!e.dataTransfer)
 -       return
 - 
 -     const files = [...e.dataTransfer.files]
 -     if (files.length === 0)
 -       return
 - 
 -     const file = files[0]
 -     if (file.name.toLowerCase().endsWith('.yaml') || file.name.toLowerCase().endsWith('.yml'))
 -       onDSLFileDropped(file)
 -   }
 - 
 -   useEffect(() => {
 -     if (!enabled)
 -       return
 - 
 -     const current = containerRef.current
 -     if (current) {
 -       current.addEventListener('dragenter', handleDragEnter)
 -       current.addEventListener('dragover', handleDragOver)
 -       current.addEventListener('dragleave', handleDragLeave)
 -       current.addEventListener('drop', handleDrop)
 -     }
 -     return () => {
 -       if (current) {
 -         current.removeEventListener('dragenter', handleDragEnter)
 -         current.removeEventListener('dragover', handleDragOver)
 -         current.removeEventListener('dragleave', handleDragLeave)
 -         current.removeEventListener('drop', handleDrop)
 -       }
 -     }
 -   }, [containerRef, enabled])
 - 
 -   return {
 -     dragging: enabled ? dragging : false,
 -   }
 - }
 
 
  |