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
}