2026-03-26 05:14:50 +08:00
|
|
|
const MARKDOWN_EXTENSIONS = new Set(['.md', '.markdown', '.mdx'])
|
2026-03-26 05:25:43 +08:00
|
|
|
const IMAGE_EXTENSIONS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp', '.svg'])
|
|
|
|
|
const PDF_EXTENSIONS = new Set(['.pdf'])
|
2026-03-26 05:14:50 +08:00
|
|
|
|
|
|
|
|
export const getPreviewFileExtension = (path) => {
|
|
|
|
|
const normalizedPath = String(path || '')
|
|
|
|
|
.trim()
|
|
|
|
|
.toLowerCase()
|
|
|
|
|
if (!normalizedPath) return ''
|
|
|
|
|
|
|
|
|
|
const fileName = normalizedPath.split('/').pop() || ''
|
|
|
|
|
const dotIndex = fileName.lastIndexOf('.')
|
|
|
|
|
if (dotIndex <= 0) return ''
|
|
|
|
|
return fileName.slice(dotIndex)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const isMarkdownPreview = (path, previewType) => {
|
|
|
|
|
if (previewType === 'markdown') return true
|
|
|
|
|
return MARKDOWN_EXTENSIONS.has(getPreviewFileExtension(path))
|
|
|
|
|
}
|
2026-03-26 05:25:43 +08:00
|
|
|
|
|
|
|
|
export const getPreviewTypeByPath = (path) => {
|
|
|
|
|
const extension = getPreviewFileExtension(path)
|
|
|
|
|
if (IMAGE_EXTENSIONS.has(extension)) return 'image'
|
|
|
|
|
if (PDF_EXTENSIONS.has(extension)) return 'pdf'
|
|
|
|
|
if (MARKDOWN_EXTENSIONS.has(extension)) return 'markdown'
|
|
|
|
|
return 'text'
|
|
|
|
|
}
|