{"version":3,"file":"index.cjs","sources":["../../../../src/components/FileUpload/FileUpload.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { FileUploadArea } from './FileUploadArea';\nimport { FileUploadItem } from './FileUploadItem';\nimport { useDragAndDrop } from './useDragAndDrop';\nimport type { FileUploadProps } from './FileUpload.types';\n\ninterface FileInfo {\n  name: string;\n  size: number;\n}\n\nexport const FileUpload = ({\n  title,\n  supportedFileTypes = ['.txt', '.sql'],\n  size = 'sm',\n  onFileSelect,\n  onRetry,\n  progress = 0,\n  failureMessage = 'Upload failed',\n  showProgress = false,\n  showSuccess = false,\n  onFileFailure,\n  onFileClose,\n}: FileUploadProps) => {\n  const [file, setFile] = useState<FileInfo | null>(null);\n\n  const handleFilesProcessed = useCallback(\n    (files: File[]) => {\n      const selectedFile = files[0];\n      const newFile: FileInfo = {\n        name: selectedFile.name,\n        size: selectedFile.size,\n      };\n\n      setFile(newFile);\n\n      if (onFileSelect) {\n        onFileSelect(selectedFile);\n      }\n    },\n    [onFileSelect]\n  );\n\n  const {\n    isDragging,\n    isNotSupported,\n    fileInputRef,\n    handleDragEnter,\n    handleDragLeave,\n    handleDragOver,\n    handleDrop,\n    handleFileSelect,\n    handleBrowseClick,\n  } = useDragAndDrop({\n    onFilesProcessed: handleFilesProcessed,\n    supportedFileTypes,\n    onFileFailure,\n    multiple: false,\n  });\n\n  const handleRemoveFile = useCallback(() => {\n    setFile(null);\n    if (fileInputRef.current) {\n      fileInputRef.current.value = '';\n    }\n\n    if (onFileClose) {\n      onFileClose();\n    }\n  }, [onFileClose, fileInputRef]);\n\n  const handleRetryUpload = useCallback(() => {\n    if (onRetry) {\n      onRetry();\n    }\n  }, [onRetry]);\n\n  const acceptedFileTypes = supportedFileTypes.join(',');\n\n  return (\n    <>\n      <FileUploadArea\n        title={title}\n        supportedFileTypes={supportedFileTypes}\n        size={size}\n        isDragging={isDragging}\n        isNotSupported={isNotSupported}\n        hasFile={!!file}\n        isError={!!file && !showSuccess && !showProgress}\n        multiple={false}\n        onDragEnter={handleDragEnter}\n        onDragLeave={handleDragLeave}\n        onDragOver={handleDragOver}\n        onDrop={handleDrop}\n        onClick={handleBrowseClick}\n      >\n        {file && (\n          <FileUploadItem\n            fileName={file.name}\n            fileSize={file.size}\n            progress={progress}\n            showSuccess={showSuccess}\n            showProgress={showProgress}\n            failureMessage={failureMessage}\n            onRetry={handleRetryUpload}\n            onRemove={handleRemoveFile}\n            size={size}\n            inline={true}\n          />\n        )}\n      </FileUploadArea>\n\n      <input\n        type=\"file\"\n        ref={fileInputRef}\n        accept={acceptedFileTypes}\n        onChange={handleFileSelect}\n        style={{ display: 'none' }}\n      />\n    </>\n  );\n};\n"],"names":["useState","useCallback","useDragAndDrop","jsxs","Fragment","jsx","FileUploadArea","FileUploadItem"],"mappings":"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"}