119 lines
3.2 KiB
TypeScript
119 lines
3.2 KiB
TypeScript
import MiaoDirectory from '@/views/miaoDirectory.vue'
|
|
import usePluginCenter from './usePluginCenter'
|
|
|
|
export default function init() {
|
|
const pluginCenter = usePluginCenter()
|
|
pluginCenter.registerComponent(
|
|
'miaoDirectory',
|
|
'文件夹',
|
|
async () => MiaoDirectory,
|
|
(vDirs, vFiles) => {
|
|
if (vFiles.length) {
|
|
return false
|
|
}
|
|
return vDirs.length === 1
|
|
}
|
|
)
|
|
pluginCenter.registerComponent(
|
|
'miaoVideoPlayer',
|
|
'视频',
|
|
async () => (await import('@/views/miaoVideoPlayer.vue')).default,
|
|
(vDirs, vFiles) => {
|
|
if (vDirs.length !== 0) {
|
|
return false
|
|
}
|
|
if (vFiles.length === 0) {
|
|
return false
|
|
}
|
|
for (let i of vFiles) {
|
|
for (let s of ['mp4', 'm3u8', 'hls']) {
|
|
if (i.name.endsWith(s)) {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
)
|
|
pluginCenter.registerComponent(
|
|
'miaoIframe',
|
|
'框架',
|
|
async () => (await import('@/views/miaoIframe.vue')).default,
|
|
(vDirs, vFiles) => {
|
|
if (vDirs.length !== 0) {
|
|
return false
|
|
}
|
|
if (vFiles.length !== 1) {
|
|
return false
|
|
}
|
|
return vFiles[0].name.endsWith('html')
|
|
}
|
|
)
|
|
pluginCenter.registerComponent(
|
|
'miaoPDF',
|
|
'PDF浏览',
|
|
async () => (await import('@/views/miaoPDF.vue')).default,
|
|
(vDirs, vFiles) => {
|
|
if (vDirs.length !== 0) {
|
|
return false
|
|
}
|
|
if (vFiles.length !== 1) {
|
|
return false
|
|
}
|
|
return vFiles[0].name.endsWith('pdf')
|
|
}
|
|
)
|
|
pluginCenter.registerComponent(
|
|
'miaoCodeMirror',
|
|
'代码编辑',
|
|
async () => (await import('@/views/miaoCodeMirror.vue')).default,
|
|
(vDirs, vFiles) => {
|
|
if (vDirs.length !== 0) {
|
|
return false
|
|
}
|
|
if (vFiles.length !== 1) {
|
|
return false
|
|
}
|
|
for (let end of [
|
|
'js',
|
|
'ts',
|
|
'jsx',
|
|
'tsx',
|
|
'py',
|
|
'html',
|
|
'css',
|
|
'scss',
|
|
'go',
|
|
'json',
|
|
'md',
|
|
'yaml',
|
|
'txt',
|
|
'xml',
|
|
'vue',
|
|
]) {
|
|
if (vFiles[0].name.endsWith(end)) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
)
|
|
pluginCenter.registerComponent(
|
|
"miaoImages",
|
|
"图片浏览",
|
|
async () => (await import("@/views/miaoImages.vue")).default,
|
|
(vDirs, vFiles) => {
|
|
if (vDirs.length === 0 && vFiles.length === 0) {
|
|
return false;
|
|
}
|
|
miao: for (let vf of vFiles)
|
|
for (let end of [".xbm", ".tif", "pjp", ".svgz", "jpg", "jpeg", "ico", "tiff", ".gif", "svg", ".jfif", ".webp", ".png", ".bmp", "pjpeg", ".avif"]) {
|
|
if (vf.name.endsWith(end)) {
|
|
continue miao;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
);
|
|
}
|