diff --git a/index.ts b/index.ts index 47e3c4d..123b853 100644 --- a/index.ts +++ b/index.ts @@ -1,16 +1,20 @@ -import Invoker from "./src/components/Invoker"; +import Invoker, { InvokerModName } from "./src/components/Invoker"; import { hh } from './src/components/DemiHelper'; import { InvokerItem } from "./src/components/InvokerItem"; import { InvokerContext } from "./src/types/InvokerContext"; import { Vue2Instance } from "./src/types/Vue2Instance"; import { ModContext } from "./src/types/ModContext"; import Receiver from "./src/components/Receiver"; +import { ConfigureModPage, modPageConfig } from "./src/modPageConfig"; export { + modPageConfig, + ConfigureModPage, Invoker, Receiver, type InvokerItem, type InvokerContext, + type InvokerModName, type Vue2Instance, type ModContext, hh, diff --git a/src/components/Invoker.tsx b/src/components/Invoker.tsx index 79ad11b..c911b8a 100644 --- a/src/components/Invoker.tsx +++ b/src/components/Invoker.tsx @@ -3,12 +3,13 @@ import { onBeforeUpdate, onUnmounted, watch, + type PropType } from "vue-demi"; import { ModContext } from "../types/ModContext"; import { InvokerItem } from "./InvokerItem"; let idCount = 0; -export const UrlFunc = null as ((name: string) => string) | null; +export type InvokerModName = string; export default defineComponent({ props: { @@ -21,12 +22,13 @@ export default defineComponent({ default: () => false, }, items: { - type: Array , + type: Array, default: () => undefined as InvokerItem[] | undefined, }, - url: { - type: String, - default: () => null, + name: { + type: String as PropType | undefined, + default: () => undefined, + required: false, } }, emits: ["destroyed"], diff --git a/src/modPageConfig.ts b/src/modPageConfig.ts new file mode 100644 index 0000000..b49c31c --- /dev/null +++ b/src/modPageConfig.ts @@ -0,0 +1,19 @@ +import { DeepReadonly } from "vue"; +import { InvokerModName } from "./components/Invoker"; + +let _modPageConfig = { + Invoker: { + /** Invoker中计算ModUrl的方法 */ + GetModUrl: undefined as ((modName: InvokerModName) => string | Promise) | undefined, + } +} + +export function ConfigureModPage(config: typeof _modPageConfig) { + Object.assign(_modPageConfig, { + Invoker: { + ...config.Invoker, + } + }); +} + +export const modPageConfig: DeepReadonly = _modPageConfig;