mirror of
https://github.com/langgenius/dify.git
synced 2026-02-25 14:01:53 -05:00
- Extract useFileOperations hook to hooks/use-file-operations.ts - Move tree utilities to utils/tree-utils.ts - Move file utilities to utils/file-utils.ts (renamed from utils.ts) - Remove unnecessary JSDoc comments throughout components - Simplify type.ts to only contain local type definitions - Clean up store/index.ts by removing verbose comments
76 lines
2.2 KiB
TypeScript
76 lines
2.2 KiB
TypeScript
import { FileAppearanceTypeEnum } from '@/app/components/base/file-uploader/types'
|
|
|
|
const MARKDOWN_EXTENSIONS = ['md', 'markdown', 'mdx']
|
|
const CODE_EXTENSIONS = ['json', 'yaml', 'yml', 'toml', 'js', 'jsx', 'ts', 'tsx', 'py', 'schema']
|
|
const TEXT_EXTENSIONS = ['txt', 'log', 'ini', 'env']
|
|
const IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp', 'ico']
|
|
const VIDEO_EXTENSIONS = ['mp4', 'mov', 'webm', 'mpeg', 'mpg', 'm4v', 'avi']
|
|
const OFFICE_EXTENSIONS = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx']
|
|
|
|
export function getFileExtension(name?: string, extension?: string): string {
|
|
if (extension)
|
|
return extension.toLowerCase()
|
|
if (!name)
|
|
return ''
|
|
return name.split('.').pop()?.toLowerCase() ?? ''
|
|
}
|
|
|
|
export function getFileIconType(name: string): FileAppearanceTypeEnum {
|
|
const extension = name.split('.').pop()?.toLowerCase() ?? ''
|
|
|
|
if (MARKDOWN_EXTENSIONS.includes(extension))
|
|
return FileAppearanceTypeEnum.markdown
|
|
|
|
if (CODE_EXTENSIONS.includes(extension))
|
|
return FileAppearanceTypeEnum.code
|
|
|
|
return FileAppearanceTypeEnum.document
|
|
}
|
|
|
|
export function isMarkdownFile(extension: string): boolean {
|
|
return MARKDOWN_EXTENSIONS.includes(extension)
|
|
}
|
|
|
|
export function isCodeOrTextFile(extension: string): boolean {
|
|
return CODE_EXTENSIONS.includes(extension) || TEXT_EXTENSIONS.includes(extension)
|
|
}
|
|
|
|
export function isImageFile(extension: string): boolean {
|
|
return IMAGE_EXTENSIONS.includes(extension)
|
|
}
|
|
|
|
export function isVideoFile(extension: string): boolean {
|
|
return VIDEO_EXTENSIONS.includes(extension)
|
|
}
|
|
|
|
export function isOfficeFile(extension: string): boolean {
|
|
return OFFICE_EXTENSIONS.includes(extension)
|
|
}
|
|
|
|
export function getFileLanguage(name: string): string {
|
|
const extension = name.split('.').pop()?.toLowerCase() ?? ''
|
|
|
|
const languageMap: Record<string, string> = {
|
|
md: 'markdown',
|
|
markdown: 'markdown',
|
|
mdx: 'markdown',
|
|
json: 'json',
|
|
jsonl: 'json',
|
|
yaml: 'yaml',
|
|
yml: 'yaml',
|
|
js: 'javascript',
|
|
jsx: 'javascript',
|
|
ts: 'typescript',
|
|
tsx: 'typescript',
|
|
py: 'python',
|
|
html: 'html',
|
|
css: 'css',
|
|
xml: 'xml',
|
|
sql: 'sql',
|
|
sh: 'shell',
|
|
bash: 'shell',
|
|
}
|
|
|
|
return languageMap[extension] ?? 'plaintext'
|
|
}
|