diff --git a/src/modules/stream/stream-ui.ts b/src/modules/stream/stream-ui.ts index 03371f1..4aaec73 100644 --- a/src/modules/stream/stream-ui.ts +++ b/src/modules/stream/stream-ui.ts @@ -215,7 +215,6 @@ export class StreamUiHandler { return; } - console.log('StreamUI', 'observing'); const observer = new MutationObserver(mutationList => { mutationList.forEach(item => { if (item.type !== 'childList') { diff --git a/src/types/setting-definition.d.ts b/src/types/setting-definition.d.ts index ed2fc5c..724f391 100644 --- a/src/types/setting-definition.d.ts +++ b/src/types/setting-definition.d.ts @@ -1,19 +1,42 @@ export type SettingDefinition = { default: any; - optionsGroup?: string; - options?: {[index: string]: string}; - multipleOptions?: {[index: string]: string}; - unsupported?: string | boolean; - note?: string | HTMLElement; - type?: SettingElementType; - ready?: (setting: SettingDefinition) => void; +} & Partial<{ + label: string; + note: string | HTMLElement; + experimental: boolean; + unsupported: string | boolean; + ready: (setting: SettingDefinition) => void; // migrate?: (this: Preferences, savedPrefs: any, value: any) => void; - min?: number; - max?: number; - steps?: number; - experimental?: boolean; - params?: any; - label?: string; -}; +}> & ( + {} | { + options: {[index: string]: string}; + optionsGroup?: string; + } | { + multipleOptions: {[index: string]: string}; + params: MultipleOptionsParams; + } | { + type: SettingElementType.NUMBER_STEPPER; + min: number; + max: number; + params: NumberStepperParams; + + steps?: number; + } +); export type SettingDefinitions = {[index in PrefKey]: SettingDefinition}; + +export type MultipleOptionsParams = Partial<{ + size?: number; +}> + +export type NumberStepperParams = Partial<{ + suffix: string; + disabled: boolean; + hideSlider: boolean; + + ticks: number; + exactTicks: number; + + customTextValue: (value: any) => string | null; +}> diff --git a/src/utils/setting-element.ts b/src/utils/setting-element.ts index aeead36..73c0cf4 100644 --- a/src/utils/setting-element.ts +++ b/src/utils/setting-element.ts @@ -3,21 +3,7 @@ import { CE } from "@utils/html"; import { setNearby } from "./navigation-utils"; import type { PrefKey } from "@/enums/pref-keys"; import type { BaseSettingsStore } from "./settings-storages/base-settings-storage"; - -type MultipleOptionsParams = { - size?: number; -} - -type NumberStepperParams = { - suffix?: string; - disabled?: boolean; - hideSlider?: boolean; - - ticks?: number; - exactTicks?: number; - - customTextValue?: (value: any) => string | null; -} +import { type MultipleOptionsParams, type NumberStepperParams } from "@/types/setting-definition"; export enum SettingElementType { OPTIONS = 'options', @@ -381,7 +367,11 @@ export class SettingElement { type = SettingElementType.CHECKBOX; } - const params = Object.assign(overrideParams, definition.params || {}); + let params: any = {}; + if ('params' in definition) { + params = Object.assign(overrideParams, definition.params || {}); + } + if (params.disabled) { currentValue = definition.default; } diff --git a/src/utils/settings-storages/global-settings-storage.ts b/src/utils/settings-storages/global-settings-storage.ts index 4896c6b..c322f81 100644 --- a/src/utils/settings-storages/global-settings-storage.ts +++ b/src/utils/settings-storages/global-settings-storage.ts @@ -5,14 +5,14 @@ import { UiSection } from "@/enums/ui-sections"; import { UserAgentProfile } from "@/enums/user-agent"; import { StreamStat } from "@/modules/stream/stream-stats"; import type { PreferenceSetting } from "@/types/preferences"; -import type { SettingDefinitions } from "@/types/setting-definition"; +import { type SettingDefinitions } from "@/types/setting-definition"; import { BX_FLAGS } from "../bx-flags"; import { STATES, AppInterface, STORAGE } from "../global"; import { CE } from "../html"; -import { SettingElementType } from "../setting-element"; import { t, SUPPORTED_LANGUAGES } from "../translation"; import { UserAgent } from "../user-agent"; import { BaseSettingsStore as BaseSettingsStorage } from "./base-settings-storage"; +import { SettingElementType } from "../setting-element"; function getSupportedCodecProfiles() {