diff --git a/src/hooks/init/initPlugin.ts b/src/hooks/init/initPlugin.ts index 14e79d9..f409c4b 100644 --- a/src/hooks/init/initPlugin.ts +++ b/src/hooks/init/initPlugin.ts @@ -14,7 +14,7 @@ const initPlugin = async (globalAlertTip: alertTipType) => { type: PluginExportType key?: string } - const { type, key } = _config + const { type, key = `${Math.random()}` } = _config if (type === PluginExportType.component) { pluginCenter.registerComponent( _config.default as registerComponentOption diff --git a/src/plugins/copyFileUrl2Clipboard/export.ts b/src/plugins/copyFileUrl2Clipboard/export.ts index 5fc6b5e..c2b1cd9 100644 --- a/src/plugins/copyFileUrl2Clipboard/export.ts +++ b/src/plugins/copyFileUrl2Clipboard/export.ts @@ -19,11 +19,9 @@ const pluginConfig: Plugin = { disable: false, group: [PluginGroup.default], func: Copy, - priority: -1 + priority: -100 } export default pluginConfig export const type = PluginExportType.default - -export const key = 'miaoCopy' diff --git a/src/utils/component2plugin.ts b/src/utils/component2plugin.ts new file mode 100644 index 0000000..dfd5ec2 --- /dev/null +++ b/src/utils/component2plugin.ts @@ -0,0 +1,66 @@ +import { PluginGroup, registerComponentOption } from "@/class/PluginCenter" +import VirtualDirectory, { VirtualFile } from "@/class/VirtualDirectory" +import VirtualPage from "@/class/VirtualPage" +import usePluginCenter from "@/hooks/usePluginCenter" +import useVirtualPages from "@/hooks/useVirtualPages" + +export const componentOption2pluginOption = (option: registerComponentOption) => { + const { + key, + name, + getComponent, + icon, + filter, + group = [PluginGroup.default], + disable = false, + exitConfirm = false, + single = false, + priority = 0 + } = option + let _component: any + const views = useVirtualPages() + const pluginCenter = usePluginCenter() + return { + name, + filter, + icon: shallowRef(icon), + group, + disable, + priority, + func: async ( + VDirectories: VirtualDirectory[], + VFiles: VirtualFile[] + ) => { + if (filter(VDirectories, VFiles) === false) { + return + } + + if (_component === undefined) { + const setAlertTip = pluginCenter.globalAlertTip(`加载 ${name} 插件中`) + _component = await getComponent() + setAlertTip && + setAlertTip(`加载 ${name} 插件完成`, { + type: 'success', + timeout: 2000 + }) + } + const _findRes = views.find(_component) as VirtualPage[] + if (single && _findRes.length !== 0) { + const view = _findRes[0] + view.currentFiles = [...view.currentFiles, ...VFiles] + view.currentDirectories = [ + ...view.currentDirectories, + ...VDirectories + ] + } else { + views.push(_component, key, VDirectories, VFiles, { + VirtualPageOption: { + exitConfirm, + allowCopy: single === false + } + }) + } + } + } +} +