From 630eb03ef524321acc6454bdc60e4535db16a6fe Mon Sep 17 00:00:00 2001 From: Kuingsmile Date: Wed, 31 Jul 2024 14:14:41 +0800 Subject: [PATCH] :sparkles: Feature(custom): support avif picture preview --- .../manage/pages/assets/icons/avif.webp | Bin 0 -> 5440 bytes src/renderer/manage/utils/icon.ts | 1 + src/universal/utils/common.ts | 15 +-- supported_format.md | 107 +++++++++--------- 4 files changed, 63 insertions(+), 60 deletions(-) create mode 100644 src/renderer/manage/pages/assets/icons/avif.webp diff --git a/src/renderer/manage/pages/assets/icons/avif.webp b/src/renderer/manage/pages/assets/icons/avif.webp new file mode 100644 index 0000000000000000000000000000000000000000..357472f52f0f1335dd0828f427afc0f67b6e4e77 GIT binary patch literal 5440 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 literal 0 HcmV?d00001 diff --git a/src/renderer/manage/utils/icon.ts b/src/renderer/manage/utils/icon.ts index cd47e91..880fc62 100644 --- a/src/renderer/manage/utils/icon.ts +++ b/src/renderer/manage/utils/icon.ts @@ -21,6 +21,7 @@ export const availableIconList = [ 'au', 'avc', 'avi', + 'avif', 'avs', 'bak', 'bas', diff --git a/src/universal/utils/common.ts b/src/universal/utils/common.ts index 7559dbc..fe96ebf 100644 --- a/src/universal/utils/common.ts +++ b/src/universal/utils/common.ts @@ -66,14 +66,15 @@ export function encodeFilePath(filePath: string) { export const getExtension = (fileName: string) => path.extname(fileName).slice(1) export const isImage = (fileName: string) => - ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'ico', 'svg'].includes(getExtension(fileName)) + ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'ico', 'svg', 'avif'].includes(getExtension(fileName)) -export const formatEndpoint = (endpoint: string, sslEnabled: boolean): string => - !/^https?:\/\//.test(endpoint) - ? `${sslEnabled ? 'https' : 'http'}://${endpoint}` - : sslEnabled - ? endpoint.replace('http://', 'https://') - : endpoint.replace('https://', 'http://') +export const formatEndpoint = (endpoint: string, sslEnabled: boolean): string => { + const hasProtocol = /^https?:\/\//.test(endpoint) + if (!hasProtocol) { + return `${sslEnabled ? 'https' : 'http'}://${endpoint}` + } + return sslEnabled ? endpoint.replace(/^http:\/\//, 'https://') : endpoint.replace(/^https:\/\//, 'http://') +} export const trimPath = (path: string) => path.replace(/^\/+|\/+$/g, '').replace(/\/+/g, '/') diff --git a/supported_format.md b/supported_format.md index 0672d10..a95e301 100644 --- a/supported_format.md +++ b/supported_format.md @@ -1,53 +1,54 @@ -# 支持预览的文件格式列表 - -### 图片 - -| 格式 | 描述 | 格式 | 描述 | -| :-----------------------------------------------------: | :----------: | :-------------------------------------------------------------: | :----------------: | -| [.bmp](https://en.wikipedia.org/wiki/BMP_file_format) | 位图文件格式 | [.jpeg/.jpg](https://en.wikipedia.org/wiki/JPEG) | 联合照片专家组格式 | -| [.gif](https://en.wikipedia.org/wiki/GIF) | 图形交换格式 | [.png](https://en.wikipedia.org/wiki/Portable_Network_Graphics) | 可移植网络图形格式 | -| [.ico](https://en.wikipedia.org/wiki/ICO_(file_format)) | 图标文件格式 | [.webp](https://developers.google.com/speed/webp/) | WebP格式 | - -### 文本 - -| 格式 | 描述 | 格式 | 描述 | -| :------------: | :-----------------: | :---------------: | :----------------: | -| .bat | 批处理文件 | .java | Java源代码文件 | -| .c | C语言源代码文件 | .js | JavaScript文件 | -| .cmd | Windows命令脚本文件 | .json | JSON文件 | -| .conf | 配置文件 | .log | 日志文件 | -| .config | 配置文件 | .php | PHP源代码文件 | -| .cpp | C++源代码文件 | .prop/.properties | 属性文件 | -| .css | 层叠样式表文件 | .py | Python源代码文件 | -| .csv | 逗号分隔值文件 | .rc | Windows资源文件 | -| .dart | Dart源代码文件 | .sh | Shell脚本文件 | -| .gitattributes | Git属性文件 | .tsv | 制表符分隔值文件 | -| .gitconfig | Git配置文件 | .txt | 纯文本文件 | -| .gitignore | Git忽略文件 | .xml | XML文件 | -| .gitkeep | Git保留文件 | .yaml/.yml | YAML文件 | -| .gitmodules | Git子模块文件 | .yarnrc | Yarn配置文件 | -| .go | Go源代码文件 | LICENSE | 许可证文件 | -| .h | 头文件 | .condarc | Conda配置文件 | -| .hpp | C++头文件 | .md | Markdown文件 | -| .htm/.html | HTML文件 | .jsx/.tsx/.vue | JSX文件等 | -| .applescript | AppleScript脚本文件 | .eslintignore | ESLint忽略文件 | -| .lock | 锁文件 | .ps1 | PowerShell脚本文件 | - -### 视频 - -| 格式 | 描述 | 格式 | 描述 | -| :---: | :-------------------: | :---: | :-----------------------------: | -| .aac | AAC音频文件 | .mpeg | MPEG视频文件 | -| .amv | AMV视频文件 | .mpg | MPEG视频文件 | -| .avi | AVI视频文件 | .mts | AVCHD视频文件 | -| .flac | FLAC音频文件 | .ogg | Ogg Vorbis音频文件 | -| .flv | Flash视频文件 | .ogv | Ogg Theora视频文件 | -| .m2ts | M2TS视频文件 | .vob | DVD视频文件 | -| .m4a | MPEG-4音频文件 | .wav | WAV音频文件 | -| .m4v | MPEG-4视频文件 | .webm | WebM视频文件 | -| .mp3 | MP3音频文件 | .mp4 | MPEG-4视频文件 | -| .mov | QuickTime视频文件 | .3g2 | 3GPP2视频文件 | -| .mp4 | MPEG-4视频文件 | .3gp | 3GPP视频文件 | -| .mxf | MXF视频文件 | .asf | Advanced Systems Format视频文件 | -| .rm | RealMedia视频文件 | .rmvb | RealMedia可变比特率视频文件 | -| .wmv | Windows Media视频文件 | .mkv | Matroska视频文件 | +# 支持预览的文件格式列表 + +### 图片 + +| 格式 | 描述 | 格式 | 描述 | +| :---: | :----------: | :--------: | :----------------: | +| .bmp | 位图文件格式 | .jpeg/.jpg | 联合照片专家组格式 | +| .gif | 图形交换格式 | .png | 可移植网络图形格式 | +| .ico | 图标文件格式 | .webp | WebP格式 | +| .svg | 可缩放矢量图 | .avif | AVIF格式 | + +### 文本 + +| 格式 | 描述 | 格式 | 描述 | +| :------------: | :-----------------: | :---------------: | :----------------: | +| .bat | 批处理文件 | .java | Java源代码文件 | +| .c | C语言源代码文件 | .js | JavaScript文件 | +| .cmd | Windows命令脚本文件 | .json | JSON文件 | +| .conf | 配置文件 | .log | 日志文件 | +| .config | 配置文件 | .php | PHP源代码文件 | +| .cpp | C++源代码文件 | .prop/.properties | 属性文件 | +| .css | 层叠样式表文件 | .py | Python源代码文件 | +| .csv | 逗号分隔值文件 | .rc | Windows资源文件 | +| .dart | Dart源代码文件 | .sh | Shell脚本文件 | +| .gitattributes | Git属性文件 | .tsv | 制表符分隔值文件 | +| .gitconfig | Git配置文件 | .txt | 纯文本文件 | +| .gitignore | Git忽略文件 | .xml | XML文件 | +| .gitkeep | Git保留文件 | .yaml/.yml | YAML文件 | +| .gitmodules | Git子模块文件 | .yarnrc | Yarn配置文件 | +| .go | Go源代码文件 | LICENSE | 许可证文件 | +| .h | 头文件 | .condarc | Conda配置文件 | +| .hpp | C++头文件 | .md | Markdown文件 | +| .htm/.html | HTML文件 | .jsx/.tsx/.vue | JSX文件等 | +| .applescript | AppleScript脚本文件 | .eslintignore | ESLint忽略文件 | +| .lock | 锁文件 | .ps1 | PowerShell脚本文件 | + +### 视频 + +| 格式 | 描述 | 格式 | 描述 | +| :---: | :-------------------: | :---: | :-----------------------------: | +| .aac | AAC音频文件 | .mpeg | MPEG视频文件 | +| .amv | AMV视频文件 | .mpg | MPEG视频文件 | +| .avi | AVI视频文件 | .mts | AVCHD视频文件 | +| .flac | FLAC音频文件 | .ogg | Ogg Vorbis音频文件 | +| .flv | Flash视频文件 | .ogv | Ogg Theora视频文件 | +| .m2ts | M2TS视频文件 | .vob | DVD视频文件 | +| .m4a | MPEG-4音频文件 | .wav | WAV音频文件 | +| .m4v | MPEG-4视频文件 | .webm | WebM视频文件 | +| .mp3 | MP3音频文件 | .mp4 | MPEG-4视频文件 | +| .mov | QuickTime视频文件 | .3g2 | 3GPP2视频文件 | +| .mp4 | MPEG-4视频文件 | .3gp | 3GPP视频文件 | +| .mxf | MXF视频文件 | .asf | Advanced Systems Format视频文件 | +| .rm | RealMedia视频文件 | .rmvb | RealMedia可变比特率视频文件 | +| .wmv | Windows Media视频文件 | .mkv | Matroska视频文件 |