mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
Merge branch 'main' into main
This commit is contained in:
@@ -7,6 +7,7 @@ import type {
|
||||
StringSetting,
|
||||
ButtonSetting,
|
||||
HotkeySetting,
|
||||
ComponentSetting,
|
||||
} from "./types";
|
||||
import { createPluginAPI } from "./createAPI";
|
||||
import browser from "webextension-polyfill";
|
||||
@@ -299,7 +300,8 @@ export class PluginManager {
|
||||
options: Array<{ value: string; label: string }>;
|
||||
})
|
||||
| (Omit<ButtonSetting, "type"> & { type: "button"; id: string; trigger?: () => void | Promise<void> })
|
||||
| (Omit<HotkeySetting, "type"> & { type: "hotkey"; id: string });
|
||||
| (Omit<HotkeySetting, "type"> & { type: "hotkey"; id: string })
|
||||
| (Omit<ComponentSetting, "type"> & { type: "component"; id: string; component: any });
|
||||
};
|
||||
// Actual type is more complex, see original code, but this gives the gist for the JSDoc.
|
||||
// Array<{ pluginId: string; name: string; description: string; beta?: boolean; settings: Record<string, ProcessedSetting>; disableToggle?: boolean; }>
|
||||
@@ -309,8 +311,8 @@ export class PluginManager {
|
||||
([key, setting]) => {
|
||||
const settingObj = setting as any;
|
||||
let result: any;
|
||||
if (settingObj.type === "button") {
|
||||
// For button, keep the trigger function
|
||||
if (settingObj.type === "button" || settingObj.type === "component") {
|
||||
// For button or component, keep the functions
|
||||
result = { ...settingObj };
|
||||
} else {
|
||||
// For others, strip functions
|
||||
|
||||
@@ -6,6 +6,7 @@ import type {
|
||||
StringSetting,
|
||||
HotkeySetting,
|
||||
PluginSettings,
|
||||
ComponentSetting,
|
||||
} from "./types";
|
||||
|
||||
/**
|
||||
@@ -114,6 +115,16 @@ export function buttonSetting(
|
||||
* excluding the `type` property (e.g., `title`, `default` hotkey string).
|
||||
* @returns {HotkeySetting} A complete hotkey setting object with `type: "hotkey"`.
|
||||
*/
|
||||
|
||||
export function componentSetting(
|
||||
options: Omit<ComponentSetting, "type">,
|
||||
): ComponentSetting {
|
||||
return {
|
||||
type: "component",
|
||||
...options,
|
||||
};
|
||||
}
|
||||
|
||||
export function hotkeySetting(
|
||||
options: Omit<HotkeySetting, "type">,
|
||||
): HotkeySetting {
|
||||
|
||||
@@ -48,13 +48,21 @@ export interface HotkeySetting {
|
||||
description?: string;
|
||||
}
|
||||
|
||||
export interface ComponentSetting {
|
||||
type: "component";
|
||||
title: string;
|
||||
description?: string;
|
||||
component: any;
|
||||
}
|
||||
|
||||
export type PluginSetting =
|
||||
| BooleanSetting
|
||||
| StringSetting
|
||||
| NumberSetting
|
||||
| SelectSetting<string>
|
||||
| ButtonSetting
|
||||
| HotkeySetting;
|
||||
| HotkeySetting
|
||||
| ComponentSetting;
|
||||
|
||||
export type PluginSettings = {
|
||||
[key: string]: PluginSetting;
|
||||
@@ -71,7 +79,9 @@ export type SettingValue<T extends PluginSetting> = T extends BooleanSetting
|
||||
? O
|
||||
: T extends HotkeySetting
|
||||
? string
|
||||
: never;
|
||||
: T extends ComponentSetting
|
||||
? never
|
||||
: never;
|
||||
|
||||
export type SettingsAPI<T extends PluginSettings> = {
|
||||
[K in keyof T]: SettingValue<T[K]>;
|
||||
|
||||
Reference in New Issue
Block a user