@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 3.67 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","names":["iconMap.fileNames","iconMap.fileExtensions","iconMap.folderNames"],"sources":["../../src/MaterialFileTypeIcon/utils.ts"],"sourcesContent":["import iconMap from './icon-map.json';\nimport type { FileExtensionsKey, FileNamesKey, FolderNamesKey } from './type';\n\nfunction getFileExtension(fileName: string): string {\n return fileName.slice(Math.max(0, fileName.lastIndexOf('.') + 1));\n}\n\nfunction getFileSuffix(fileName: string): FileExtensionsKey {\n return fileName.slice(fileName.indexOf('.') + 1) as FileExtensionsKey;\n}\n\nexport function filenameFromPath(path: string): string {\n const segments = path.split('/');\n return segments.at(-1) ?? path;\n}\n\nexport function getIconNameForFileName(fileName: string) {\n return (\n iconMap.fileNames[fileName as FileNamesKey] ??\n iconMap.fileNames[fileName.toLowerCase() as FileNamesKey] ??\n iconMap.fileExtensions[getFileSuffix(fileName)] ??\n iconMap.fileExtensions[getFileExtension(fileName) as FileExtensionsKey] ??\n (fileName.endsWith('.html') ? 'html' : null) ??\n (fileName.endsWith('.ts') ? 'typescript' : null) ??\n (fileName.endsWith('.js') ? 'javascript' : null) ??\n 'file'\n );\n}\n\nexport function getIconNameForDirectoryName(dirName: string) {\n return (\n iconMap.folderNames[dirName as FolderNamesKey] ??\n iconMap.folderNames[dirName.toLowerCase() as FolderNamesKey] ??\n 'folder'\n );\n}\n\nexport function getIconForFilePath(path: string) {\n const fileName = filenameFromPath(path);\n return getIconNameForFileName(fileName);\n}\n\nexport function getIconForDirectoryPath(path: string) {\n const dirName = filenameFromPath(path);\n return getIconNameForDirectoryName(dirName);\n}\n\nexport function getIconUrlByName(iconName: string, iconsUrl: string, open?: boolean): string {\n return `${iconsUrl}/${iconName.toString()}${open ? '-open' : ''}.svg`;\n}\n\nexport function getIconUrlForFilePath({\n path,\n iconsUrl,\n fallbackUnknownType,\n}: {\n fallbackUnknownType: boolean;\n iconsUrl: string;\n path: string;\n}): string {\n const iconName = getIconForFilePath(path);\n if (fallbackUnknownType && iconName === 'file') return '';\n return getIconUrlByName(iconName, iconsUrl);\n}\n\nexport function getIconUrlForDirectoryPath({\n path,\n iconsUrl,\n open,\n fallbackUnknownType,\n}: {\n fallbackUnknownType: boolean;\n iconsUrl: string;\n open?: boolean;\n path: string;\n}): string {\n const iconName = getIconForDirectoryPath(path);\n if (fallbackUnknownType && iconName === 'folder') return '';\n return getIconUrlByName(iconName, iconsUrl, open);\n}\n"],"mappings":";;;AAGA,SAAS,iBAAiB,UAA0B;AAClD,QAAO,SAAS,MAAM,KAAK,IAAI,GAAG,SAAS,YAAY,IAAI,GAAG,EAAE,CAAC;;AAGnE,SAAS,cAAc,UAAqC;AAC1D,QAAO,SAAS,MAAM,SAAS,QAAQ,IAAI,GAAG,EAAE;;AAGlD,SAAgB,iBAAiB,MAAsB;AAErD,QADiB,KAAK,MAAM,IAAI,CAChB,GAAG,GAAG,IAAI;;AAG5B,SAAgB,uBAAuB,UAAkB;AACvD,QACEA,UAAkB,aAClBA,UAAkB,SAAS,aAAa,KACxCC,eAAuB,cAAc,SAAS,KAC9CA,eAAuB,iBAAiB,SAAS,MAChD,SAAS,SAAS,QAAQ,GAAG,SAAS,UACtC,SAAS,SAAS,MAAM,GAAG,eAAe,UAC1C,SAAS,SAAS,MAAM,GAAG,eAAe,SAC3C;;AAIJ,SAAgB,4BAA4B,SAAiB;AAC3D,QACEC,YAAoB,YACpBA,YAAoB,QAAQ,aAAa,KACzC;;AAIJ,SAAgB,mBAAmB,MAAc;AAE/C,QAAO,uBADU,iBAAiB,KAAK,CACA;;AAGzC,SAAgB,wBAAwB,MAAc;AAEpD,QAAO,4BADS,iBAAiB,KAAK,CACK;;AAG7C,SAAgB,iBAAiB,UAAkB,UAAkB,MAAwB;AAC3F,QAAO,GAAG,SAAS,GAAG,SAAS,UAAU,GAAG,OAAO,UAAU,GAAG;;AAGlE,SAAgB,sBAAsB,EACpC,MACA,UACA,uBAKS;CACT,MAAM,WAAW,mBAAmB,KAAK;AACzC,KAAI,uBAAuB,aAAa,OAAQ,QAAO;AACvD,QAAO,iBAAiB,UAAU,SAAS;;AAG7C,SAAgB,2BAA2B,EACzC,MACA,UACA,MACA,uBAMS;CACT,MAAM,WAAW,wBAAwB,KAAK;AAC9C,KAAI,uBAAuB,aAAa,SAAU,QAAO;AACzD,QAAO,iBAAiB,UAAU,UAAU,KAAK"}