/
value.ts
96 lines (76 loc) · 2.57 KB
/
value.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import type {HardwareActionBindable, AbsoluteHardwareControlBindable} from "./hardware"
export type BooleanValueChangedCallback = (value: boolean) => void
export type StringValueChangedCallback = (value: string) => void
/**
The common interface that is shared by all value objects in the controller
API.
*/
export interface Value<ObserverType> {
markInterested(): void
addValueObserver(callback: ObserverType): void
/**
* this is actually only for Integer, but i couldn't figure out how to
* model that in ts
*/
addValueObserver(callback: ObserverType, valueWhenUnassigned: number): void
}
export interface BooleanValue extends Value<BooleanValueChangedCallback> {
get(): boolean
}
export interface StringValue extends Value<StringValueChangedCallback> {
get(): string
getLimited(maxLength: number): string
}
/**
Instances of this interface represent boolean values.
*/
export interface SettableBooleanValue extends BooleanValue, HardwareActionBindable {
/** Sets the internal value. */
set(value: boolean): void
/**
Toggles the current state. In case the current value is false, the new
value will be true and the other way round.
*/
toggle(): void
toggleAction(): HardwareActionBindable
setToTrueAction(): HardwareActionBindable
setToFalseAction(): HardwareActionBindable
}
export interface EnumValue extends Value<EnumValue> {
get(): string
}
export interface SettableEnumValue extends EnumValue {
/** Sets the internal value. */
set(value: string): void
}
export type IntegerValueChangedCallback = (value: number) => void
export interface IntegerValue extends Value<IntegerValueChangedCallback> {
get(): number
/** ???? */
getAsInt(): number
}
export interface SettableIntegerValue extends IntegerValue {
/** Sets the internal value. */
set(value: number): void
}
export interface SettableStringValue extends StringValue {
/** Sets the internal value. */
set(value: string): void
}
export type StringArrayValueChangedCallback = (value: string[]) => void
export interface StringArrayValue extends Value<StringArrayValueChangedCallback> {
get(): string[]
}
export interface SettableStringArrayValue extends StringArrayValue {
/** Sets the internal value. */
set(value: string[]): void
}
export type RangedValueChangedCallback = (value: string[]) => void
export interface RangedValue extends Value<RangedValueChangedCallback> {
get(): string[]
}
export interface SettableRangedValue extends RangedValue, AbsoluteHardwareControlBindable {
/** Sets the internal value. */
set(value: string[]): void
}
export interface SoloValue extends SettableBooleanValue {}