export type SettingContent = string | HTMLElement | number export type SettingRange = [value?: number, min?: number, max?: number, step?: number] export type SettingCallback = (this: Host, item: SettingItem, element: HTMLDivElement, event: Event) => unknown export interface SettingItem { name?: string html?: SettingContent icon?: SettingContent tooltip?: SettingContent width?: number value?: string | number default?: boolean switch?: boolean range?: SettingRange selector?: SettingItem[] mounted?: (this: Host, element: HTMLDivElement, item: SettingItem) => unknown onClick?: SettingCallback onSwitch?: SettingCallback onRange?: SettingCallback onChange?: SettingCallback onSelect?: SettingCallback readonly $parent?: SettingItem readonly $parents?: SettingItem[] readonly $option?: SettingItem[] readonly $events?: (() => void)[] readonly $formatted?: boolean readonly $item?: HTMLDivElement readonly $icon?: HTMLDivElement readonly $html?: HTMLDivElement readonly $tooltip?: HTMLDivElement readonly $switch?: HTMLDivElement readonly $range?: HTMLInputElement } export interface Setting { id: number art: Host name: string $parent: HTMLElement cache: Map[], HTMLDivElement> active: SettingItem[] | null option: SettingItem[] readonly builtin: SettingItem[] show: boolean toggle: () => void traverse: (callback: (item: SettingItem) => void, option?: SettingItem[]) => void check: (target?: SettingItem | null) => void format: (option?: SettingItem[], parent?: SettingItem, parents?: SettingItem[], names?: string[]) => void find: (name?: string) => SettingItem | null resize: () => void inactivate: (item: SettingItem) => void remove: (name: string) => void update: (item: SettingItem) => SettingItem add: >(item: Item, option?: SettingItem[]) => Item createHeader: (item: SettingItem) => void createItem: (item: SettingItem, isUpdate?: boolean) => void render: (option?: SettingItem[]) => void }