diff --git a/src/components/settings-panel/index.ts b/src/components/settings-panel/index.ts index bf3ac9594..bf806f9bb 100644 --- a/src/components/settings-panel/index.ts +++ b/src/components/settings-panel/index.ts @@ -4,7 +4,8 @@ import { TextColor } from '@/core/text-color' import { CdnTypes } from '@/core/cdn-types' import { addComponentListener } from '@/core/settings' import { DownloadPackageEmitMode } from '@/core/download-mode' -import { ComponentEntry, ComponentMetadata, componentsTags } from '../types' +import { ComponentEntry, componentsTags } from '../types' +import { defineOptionsMetadata, defineComponentMetadata } from '../define' import { provideActions } from './external-actions' import description from './desc.md' @@ -14,7 +15,57 @@ export enum SettingsPanelDockSide { Right = '右侧', } -const entry: ComponentEntry = async ({ metadata }) => { +const options = defineOptionsMetadata({ + themeColor: { + defaultValue: '#00A0D8', + displayName: '主题颜色', + color: true, + }, + scriptLoadingMode: { + defaultValue: LoadingMode.Delay, + displayName: '功能加载模式', + dropdownEnum: LoadingMode, + }, + styleLoadingMode: { + defaultValue: LoadingMode.Race, + displayName: '样式加载模式', + dropdownEnum: LoadingMode, + }, + textColor: { + defaultValue: TextColor.Auto, + displayName: '文本颜色', + dropdownEnum: TextColor, + }, + cdnRoot: { + defaultValue: CdnTypes.jsDelivr, + displayName: '更新源', + dropdownEnum: CdnTypes, + }, + dockSide: { + defaultValue: SettingsPanelDockSide.Left, + displayName: '设置面板停靠', + dropdownEnum: SettingsPanelDockSide, + }, + filenameFormat: { + defaultValue: '[title][ - ep]', + displayName: '文件命名格式', + }, + batchFilenameFormat: { + defaultValue: '[n - ][ep]', + displayName: '批量命名格式', + }, + downloadPackageEmitMode: { + defaultValue: DownloadPackageEmitMode.Packed, + displayName: '文件下载模式', + dropdownEnum: DownloadPackageEmitMode, + }, + devMode: { + defaultValue: false, + displayName: '开发者模式', + }, +}) + +const entry: ComponentEntry = async ({ metadata }) => { const { isIframe } = await import('@/core/utils') if (isIframe()) { return @@ -28,61 +79,14 @@ const entry: ComponentEntry = async ({ metadata }) => { document.body.insertAdjacentElement('beforeend', instance.$el) }) } -export const component: ComponentMetadata = { + +export const component = defineComponentMetadata({ name: 'settingsPanel', displayName: '通用设置', configurable: false, description, entry, - options: { - themeColor: { - defaultValue: '#00A0D8', - displayName: '主题颜色', - color: true, - }, - scriptLoadingMode: { - defaultValue: LoadingMode.Delay, - displayName: '功能加载模式', - dropdownEnum: LoadingMode, - }, - styleLoadingMode: { - defaultValue: LoadingMode.Race, - displayName: '样式加载模式', - dropdownEnum: LoadingMode, - }, - textColor: { - defaultValue: TextColor.Auto, - displayName: '文本颜色', - dropdownEnum: TextColor, - }, - cdnRoot: { - defaultValue: CdnTypes.jsDelivr, - displayName: '更新源', - dropdownEnum: CdnTypes, - }, - dockSide: { - defaultValue: SettingsPanelDockSide.Left, - displayName: '设置面板停靠', - dropdownEnum: SettingsPanelDockSide, - }, - filenameFormat: { - defaultValue: '[title][ - ep]', - displayName: '文件命名格式', - }, - batchFilenameFormat: { - defaultValue: '[n - ][ep]', - displayName: '批量命名格式', - }, - downloadPackageEmitMode: { - defaultValue: DownloadPackageEmitMode.Packed, - displayName: '文件下载模式', - dropdownEnum: DownloadPackageEmitMode, - }, - devMode: { - defaultValue: false, - displayName: '开发者模式', - }, - }, + options, tags: [componentsTags.general], i18n: { 'en-US': { @@ -103,4 +107,4 @@ export const component: ComponentMetadata = { provideActions() }, }, -} +})