image preview as gallery

This commit is contained in:
spencerwooo
2021-06-23 23:51:23 +01:00
parent 40ac051d33
commit d437402577
7 changed files with 232 additions and 40 deletions
+10 -4
View File
@@ -1,4 +1,6 @@
const icons = {
import { IconPrefix, IconName } from '@fortawesome/fontawesome-common-types'
const icons: { [key: string]: [IconPrefix, IconName] } = {
image: ['far', 'file-image'],
pdf: ['far', 'file-pdf'],
word: ['far', 'file-word'],
@@ -67,11 +69,15 @@ const extensions = {
* @param key The index key
* @returns Whether or not the key exists inside the object
*/
const hasKey = <O>(obj: O, key: PropertyKey): key is keyof O => {
export const hasKey = <O>(obj: O, key: PropertyKey): key is keyof O => {
return key in obj
}
export default function getFileIcon(fileName: string) {
const extension = fileName.slice(((fileName.lastIndexOf('.') - 1) >>> 0) + 2).toLowerCase()
export const getExtension = (fileName: string) => {
return fileName.slice(((fileName.lastIndexOf('.') - 1) >>> 0) + 2).toLowerCase()
}
export const getFileIcon = (fileName: string) => {
const extension = getExtension(fileName)
return hasKey(extensions, extension) ? extensions[extension] : icons.file
}
+57
View File
@@ -0,0 +1,57 @@
const preview = {
markdown: 'markdown',
image: 'image',
text: 'text',
pdf: 'pdf',
code: 'code',
video: 'video',
audio: 'audio',
}
const extensions = {
gif: preview.image,
jpeg: preview.image,
jpg: preview.image,
png: preview.image,
webp: preview.image,
md: preview.markdown,
markdown: preview.markdown,
mdown: preview.markdown,
pdf: preview.pdf,
c: preview.code,
cpp: preview.code,
js: preview.code,
java: preview.code,
sh: preview.code,
cs: preview.code,
py: preview.code,
css: preview.code,
html: preview.code,
ts: preview.code,
vue: preview.code,
json: preview.code,
yaml: preview.code,
toml: preview.code,
txt: preview.text,
mp4: preview.video,
flv: preview.video,
webm: preview.video,
m3u8: preview.video,
mkv: preview.video,
mp3: preview.audio,
m4a: preview.audio,
aac: preview.audio,
wav: preview.audio,
ogg: preview.audio,
oga: preview.audio,
opus: preview.audio,
flac: preview.audio,
}
export { extensions, preview }