@flighthq/gui 0.4.1-edge.28.7f8e221
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +9 -0
- package/README.md +17 -0
- package/dist/buttonController.d.ts +7 -0
- package/dist/buttonController.d.ts.map +1 -0
- package/dist/buttonController.js +83 -0
- package/dist/buttonController.js.map +1 -0
- package/dist/comboBoxController.d.ts +7 -0
- package/dist/comboBoxController.d.ts.map +1 -0
- package/dist/comboBoxController.js +46 -0
- package/dist/comboBoxController.js.map +1 -0
- package/dist/contract.d.ts +16 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +16 -0
- package/dist/contract.js.map +1 -0
- package/dist/guiController.d.ts +24 -0
- package/dist/guiController.d.ts.map +1 -0
- package/dist/guiController.js +101 -0
- package/dist/guiController.js.map +1 -0
- package/dist/guiTestHelper.d.ts +5 -0
- package/dist/guiTestHelper.d.ts.map +1 -0
- package/dist/guiTestHelper.js +57 -0
- package/dist/guiTestHelper.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/listController.d.ts +8 -0
- package/dist/listController.d.ts.map +1 -0
- package/dist/listController.js +82 -0
- package/dist/listController.js.map +1 -0
- package/dist/progressBarController.d.ts +6 -0
- package/dist/progressBarController.d.ts.map +1 -0
- package/dist/progressBarController.js +42 -0
- package/dist/progressBarController.js.map +1 -0
- package/dist/radioGroupController.d.ts +7 -0
- package/dist/radioGroupController.d.ts.map +1 -0
- package/dist/radioGroupController.js +50 -0
- package/dist/radioGroupController.js.map +1 -0
- package/dist/scrollBarController.d.ts +7 -0
- package/dist/scrollBarController.d.ts.map +1 -0
- package/dist/scrollBarController.js +124 -0
- package/dist/scrollBarController.js.map +1 -0
- package/dist/scrollViewController.d.ts +8 -0
- package/dist/scrollViewController.d.ts.map +1 -0
- package/dist/scrollViewController.js +99 -0
- package/dist/scrollViewController.js.map +1 -0
- package/dist/sliderController.d.ts +7 -0
- package/dist/sliderController.d.ts.map +1 -0
- package/dist/sliderController.js +105 -0
- package/dist/sliderController.js.map +1 -0
- package/dist/splitPaneController.d.ts +7 -0
- package/dist/splitPaneController.d.ts.map +1 -0
- package/dist/splitPaneController.js +87 -0
- package/dist/splitPaneController.js.map +1 -0
- package/dist/tabBarController.d.ts +7 -0
- package/dist/tabBarController.d.ts.map +1 -0
- package/dist/tabBarController.js +43 -0
- package/dist/tabBarController.js.map +1 -0
- package/dist/textInputController.d.ts +9 -0
- package/dist/textInputController.d.ts.map +1 -0
- package/dist/textInputController.js +132 -0
- package/dist/textInputController.js.map +1 -0
- package/dist/toggleController.d.ts +7 -0
- package/dist/toggleController.d.ts.map +1 -0
- package/dist/toggleController.js +57 -0
- package/dist/toggleController.js.map +1 -0
- package/dist/tooltipController.d.ts +6 -0
- package/dist/tooltipController.d.ts.map +1 -0
- package/dist/tooltipController.js +62 -0
- package/dist/tooltipController.js.map +1 -0
- package/dist/treeViewController.d.ts +10 -0
- package/dist/treeViewController.d.ts.map +1 -0
- package/dist/treeViewController.js +128 -0
- package/dist/treeViewController.js.map +1 -0
- package/dist/windowController.d.ts +7 -0
- package/dist/windowController.d.ts.map +1 -0
- package/dist/windowController.js +119 -0
- package/dist/windowController.js.map +1 -0
- package/package.json +53 -0
- package/src/buttonController.test.ts +90 -0
- package/src/comboBoxController.test.ts +71 -0
- package/src/guiController.test.ts +162 -0
- package/src/guiTreeShaking.test.ts +35 -0
- package/src/listController.test.ts +96 -0
- package/src/progressBarController.test.ts +49 -0
- package/src/radioGroupController.test.ts +61 -0
- package/src/scrollBarController.test.ts +86 -0
- package/src/scrollViewController.test.ts +80 -0
- package/src/sliderController.test.ts +74 -0
- package/src/splitPaneController.test.ts +85 -0
- package/src/tabBarController.test.ts +50 -0
- package/src/textInputController.test.ts +93 -0
- package/src/toggleController.test.ts +72 -0
- package/src/tooltipController.test.ts +56 -0
- package/src/treeViewController.test.ts +105 -0
- package/src/windowController.test.ts +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splitPaneController.js","sourceRoot":"","sources":["../src/splitPaneController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TabBarController, TabBarControllerOptions, TabBarControllerSignals } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createTabBarController(options: Readonly<TabBarControllerOptions>): TabBarController;
|
|
3
|
+
export declare function disposeTabBarController(controller: TabBarController): void;
|
|
4
|
+
export declare function getTabBarControllerSelectedIndex(controller: TabBarController): number;
|
|
5
|
+
export declare function getTabBarControllerSignals(controller: TabBarController): Readonly<TabBarControllerSignals>;
|
|
6
|
+
export declare function setTabBarControllerSelectedIndex(controller: TabBarController, index: number): void;
|
|
7
|
+
//# sourceMappingURL=tabBarController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabBarController.d.ts","sourceRoot":"","sources":["../src/tabBarController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAEhB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,gBAAgB,CAoBnG;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAK1E;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAErF;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,gBAAgB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAE1G;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
2
|
+
import { connectGuiInteraction, createGuiController, createGuiControllerRuntime, disposeGuiController, getGuiControllerRuntime, setGuiVisible, } from './guiController';
|
|
3
|
+
export function createTabBarController(options) {
|
|
4
|
+
const runtime = createGuiControllerRuntime({
|
|
5
|
+
selectedIndex: -1,
|
|
6
|
+
signals: { onChange: createSignal() },
|
|
7
|
+
tabs: options.tabs.slice(),
|
|
8
|
+
}, options.transition);
|
|
9
|
+
const controller = createGuiController(runtime);
|
|
10
|
+
runtime.tabs.forEach((tab, index) => {
|
|
11
|
+
const targets = [tab.selectedState, tab.unselectedState].filter((target, i, all) => all.indexOf(target) === i);
|
|
12
|
+
for (const target of targets) {
|
|
13
|
+
connectGuiInteraction(runtime, target, 'onClick', () => setTabBarControllerSelectedIndex(controller, index));
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
setTabBarControllerSelectedIndex(controller, options.selectedIndex ?? (runtime.tabs.length === 0 ? -1 : 0));
|
|
17
|
+
return controller;
|
|
18
|
+
}
|
|
19
|
+
export function disposeTabBarController(controller) {
|
|
20
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
21
|
+
disposeGuiController(controller, () => {
|
|
22
|
+
runtime.tabs.length = 0;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function getTabBarControllerSelectedIndex(controller) {
|
|
26
|
+
return getGuiControllerRuntime(controller).selectedIndex;
|
|
27
|
+
}
|
|
28
|
+
export function getTabBarControllerSignals(controller) {
|
|
29
|
+
return getGuiControllerRuntime(controller).signals;
|
|
30
|
+
}
|
|
31
|
+
export function setTabBarControllerSelectedIndex(controller, index) {
|
|
32
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
33
|
+
const next = index >= 0 && index < runtime.tabs.length ? index : -1;
|
|
34
|
+
const changed = runtime.selectedIndex !== next;
|
|
35
|
+
runtime.selectedIndex = next;
|
|
36
|
+
runtime.tabs.forEach((tab, i) => {
|
|
37
|
+
setGuiVisible(runtime, tab.selectedState, i === next);
|
|
38
|
+
setGuiVisible(runtime, tab.unselectedState, i !== next);
|
|
39
|
+
});
|
|
40
|
+
if (changed)
|
|
41
|
+
emitSignal(runtime.signals.onChange, next);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=tabBarController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabBarController.js","sourceRoot":"","sources":["../src/tabBarController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InputKeyboardData, TextInputController, TextInputControllerOptions, TextInputControllerSignals } from '@flighthq/types/contract';
|
|
2
|
+
export declare function blurTextInputController(controller: TextInputController): void;
|
|
3
|
+
export declare function createTextInputController(options: Readonly<TextInputControllerOptions>): TextInputController;
|
|
4
|
+
export declare function dispatchTextInputControllerKeyDown(controller: TextInputController, data: Readonly<InputKeyboardData>): boolean;
|
|
5
|
+
export declare function dispatchTextInputControllerText(controller: TextInputController, text: string): boolean;
|
|
6
|
+
export declare function disposeTextInputController(controller: TextInputController): void;
|
|
7
|
+
export declare function focusTextInputController(controller: TextInputController): void;
|
|
8
|
+
export declare function getTextInputControllerSignals(controller: TextInputController): Readonly<TextInputControllerSignals>;
|
|
9
|
+
//# sourceMappingURL=textInputController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textInputController.d.ts","sourceRoot":"","sources":["../src/textInputController.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,iBAAiB,EAMjB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAsBlC,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAK7E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAAG,mBAAmB,CA+C5G;AAED,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,OAAO,CAST;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQtG;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAWhF;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAM9E;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,mBAAmB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,CAEnH"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
2
|
+
import { enableTextFieldSignals, getRichTextRuntime } from '@flighthq/text/contract';
|
|
3
|
+
import { blurTextInput, createTextInputManager, disableTextInput, dispatchTextInput, dispatchTextInputKeyDown, dispatchTextInputPointerDown, dispatchTextInputPointerMove, dispatchTextInputWheel, enableTextInput, focusTextInput, getTextInputCaretRectangle, hasTextInput, } from '@flighthq/textinput/contract';
|
|
4
|
+
import { connectGuiInteraction, connectGuiSignal, createGuiController, createGuiControllerRuntime, disposeGuiController, getGuiControllerRuntime, setGuiVisible, setGuiVisualProperty, } from './guiController';
|
|
5
|
+
export function blurTextInputController(controller) {
|
|
6
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
7
|
+
if (runtime.textField === null)
|
|
8
|
+
return;
|
|
9
|
+
blurTextInput(runtime.manager);
|
|
10
|
+
setGuiVisible(runtime, runtime.caret, false);
|
|
11
|
+
}
|
|
12
|
+
export function createTextInputController(options) {
|
|
13
|
+
const ownsInput = !hasTextInput(options.textField);
|
|
14
|
+
enableTextInput(options.textField);
|
|
15
|
+
const runtime = createGuiControllerRuntime({
|
|
16
|
+
background: options.background ?? null,
|
|
17
|
+
caret: options.caret ?? null,
|
|
18
|
+
manager: options.manager ?? createTextInputManager(),
|
|
19
|
+
ownsInput,
|
|
20
|
+
signals: { onChange: createSignal(), onSubmit: createSignal() },
|
|
21
|
+
textField: options.textField,
|
|
22
|
+
}, options.transition);
|
|
23
|
+
const controller = createGuiController(runtime);
|
|
24
|
+
connectGuiSignal(runtime, enableTextFieldSignals(options.textField).onTextFieldChange, (event) => {
|
|
25
|
+
updateTextInputControllerCaret(runtime);
|
|
26
|
+
emitSignal(runtime.signals.onChange, event.text);
|
|
27
|
+
});
|
|
28
|
+
connectGuiInteraction(runtime, options.textField, 'onPointerDown', (data) => {
|
|
29
|
+
dispatchTextInputPointerDown(runtime.manager, options.textField, data.localX, data.localY, data.shiftKey);
|
|
30
|
+
updateTextInputControllerCaret(runtime);
|
|
31
|
+
});
|
|
32
|
+
connectGuiInteraction(runtime, options.textField, 'onPointerMove', (data) => {
|
|
33
|
+
if (data.buttons !== 0) {
|
|
34
|
+
dispatchTextInputPointerMove(runtime.manager, data.localX, data.localY);
|
|
35
|
+
updateTextInputControllerCaret(runtime);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
connectGuiInteraction(runtime, options.textField, 'onWheel', (data) => {
|
|
39
|
+
dispatchTextInputWheel(runtime.manager, data.deltaY);
|
|
40
|
+
});
|
|
41
|
+
connectGuiInteraction(runtime, options.textField, 'onFocusIn', () => focusTextInputController(controller));
|
|
42
|
+
connectGuiInteraction(runtime, options.textField, 'onFocusOut', () => blurTextInputController(controller));
|
|
43
|
+
connectGuiInteraction(runtime, options.textField, 'onKeyDown', (data) => {
|
|
44
|
+
dispatchTextInputControllerKeyDown(controller, keyboardEventToInput(data));
|
|
45
|
+
});
|
|
46
|
+
if (options.input !== undefined) {
|
|
47
|
+
connectGuiSignal(runtime, options.input.onKeyDown, (data) => {
|
|
48
|
+
dispatchTextInputControllerKeyDown(controller, data);
|
|
49
|
+
});
|
|
50
|
+
connectGuiSignal(runtime, options.input.onTextInput, (data) => dispatchTextInputControllerText(controller, data.text));
|
|
51
|
+
}
|
|
52
|
+
setGuiVisible(runtime, runtime.caret, false);
|
|
53
|
+
return controller;
|
|
54
|
+
}
|
|
55
|
+
export function dispatchTextInputControllerKeyDown(controller, data) {
|
|
56
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
57
|
+
if (runtime.textField === null)
|
|
58
|
+
return false;
|
|
59
|
+
if (data.key === 'Enter')
|
|
60
|
+
emitSignal(runtime.signals.onSubmit, runtime.textField.data.text);
|
|
61
|
+
const previousText = runtime.textField.data.text;
|
|
62
|
+
const handled = dispatchTextInputKeyDown(runtime.manager, data);
|
|
63
|
+
if (runtime.textField.data.text !== previousText)
|
|
64
|
+
emitSignal(runtime.signals.onChange, runtime.textField.data.text);
|
|
65
|
+
updateTextInputControllerCaret(runtime);
|
|
66
|
+
return handled;
|
|
67
|
+
}
|
|
68
|
+
export function dispatchTextInputControllerText(controller, text) {
|
|
69
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
70
|
+
if (runtime.textField === null)
|
|
71
|
+
return false;
|
|
72
|
+
const previousText = runtime.textField.data.text;
|
|
73
|
+
const handled = dispatchTextInput(runtime.manager, text);
|
|
74
|
+
if (runtime.textField.data.text !== previousText)
|
|
75
|
+
emitSignal(runtime.signals.onChange, runtime.textField.data.text);
|
|
76
|
+
updateTextInputControllerCaret(runtime);
|
|
77
|
+
return handled;
|
|
78
|
+
}
|
|
79
|
+
export function disposeTextInputController(controller) {
|
|
80
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
81
|
+
disposeGuiController(controller, () => {
|
|
82
|
+
if (runtime.textField !== null) {
|
|
83
|
+
if (runtime.manager.focused === runtime.textField)
|
|
84
|
+
blurTextInput(runtime.manager);
|
|
85
|
+
if (runtime.ownsInput)
|
|
86
|
+
disableTextInput(runtime.textField);
|
|
87
|
+
}
|
|
88
|
+
runtime.background = null;
|
|
89
|
+
runtime.caret = null;
|
|
90
|
+
runtime.textField = null;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export function focusTextInputController(controller) {
|
|
94
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
95
|
+
if (runtime.textField === null)
|
|
96
|
+
return;
|
|
97
|
+
focusTextInput(runtime.manager, runtime.textField);
|
|
98
|
+
setGuiVisible(runtime, runtime.caret, true);
|
|
99
|
+
updateTextInputControllerCaret(runtime);
|
|
100
|
+
}
|
|
101
|
+
export function getTextInputControllerSignals(controller) {
|
|
102
|
+
return getGuiControllerRuntime(controller).signals;
|
|
103
|
+
}
|
|
104
|
+
function keyboardEventToInput(data) {
|
|
105
|
+
return {
|
|
106
|
+
altKey: data.altKey,
|
|
107
|
+
capsLock: false,
|
|
108
|
+
code: data.key,
|
|
109
|
+
ctrlKey: data.ctrlKey,
|
|
110
|
+
key: data.key,
|
|
111
|
+
keyCode: data.keyCode,
|
|
112
|
+
location: 0,
|
|
113
|
+
metaKey: data.metaKey,
|
|
114
|
+
modifier: 0,
|
|
115
|
+
numLock: false,
|
|
116
|
+
repeat: false,
|
|
117
|
+
shiftKey: data.shiftKey,
|
|
118
|
+
timeStamp: 0,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function updateTextInputControllerCaret(runtime) {
|
|
122
|
+
if (runtime.textField === null || runtime.caret === null || runtime.manager.focused !== runtime.textField)
|
|
123
|
+
return;
|
|
124
|
+
const layout = getRichTextRuntime(runtime.textField).textLayout;
|
|
125
|
+
if (layout === null)
|
|
126
|
+
return;
|
|
127
|
+
const rectangle = { height: 0, lineIndex: 0, width: 0, x: 0, y: 0 };
|
|
128
|
+
getTextInputCaretRectangle(rectangle, runtime.textField, layout);
|
|
129
|
+
setGuiVisualProperty(runtime, runtime.caret, 'x', rectangle.x);
|
|
130
|
+
setGuiVisualProperty(runtime, runtime.caret, 'y', rectangle.y);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=textInputController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textInputController.js","sourceRoot":"","sources":["../src/textInputController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToggleController, ToggleControllerOptions, ToggleControllerSignals } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createToggleController(options: Readonly<ToggleControllerOptions>): ToggleController;
|
|
3
|
+
export declare function disposeToggleController(controller: ToggleController): void;
|
|
4
|
+
export declare function getToggleControllerSignals(controller: ToggleController): Readonly<ToggleControllerSignals>;
|
|
5
|
+
export declare function isToggleControllerChecked(controller: ToggleController): boolean;
|
|
6
|
+
export declare function setToggleControllerChecked(controller: ToggleController, checked: boolean): void;
|
|
7
|
+
//# sourceMappingURL=toggleController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggleController.d.ts","sourceRoot":"","sources":["../src/toggleController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAqBlC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,gBAAgB,CA8BnG;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAQ1E;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,gBAAgB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAE1G;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAE/E;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAM/F"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
2
|
+
import { connectGuiInteraction, createGuiController, createGuiControllerRuntime, disposeGuiController, getGuiControllerRuntime, setGuiVisible, } from './guiController';
|
|
3
|
+
export function createToggleController(options) {
|
|
4
|
+
const runtime = createGuiControllerRuntime({
|
|
5
|
+
checked: options.checked ?? false,
|
|
6
|
+
checkedState: options.checkedState,
|
|
7
|
+
label: options.label ?? null,
|
|
8
|
+
over: false,
|
|
9
|
+
overState: options.overState ?? null,
|
|
10
|
+
signals: { onChange: createSignal() },
|
|
11
|
+
uncheckedState: options.uncheckedState,
|
|
12
|
+
}, options.transition);
|
|
13
|
+
const controller = createGuiController(runtime);
|
|
14
|
+
const targets = [options.uncheckedState, options.checkedState, options.label].filter((target, index, all) => target !== undefined && all.indexOf(target) === index);
|
|
15
|
+
for (const target of targets) {
|
|
16
|
+
connectGuiInteraction(runtime, target, 'onClick', () => setToggleControllerChecked(controller, !runtime.checked));
|
|
17
|
+
connectGuiInteraction(runtime, target, 'onPointerOver', () => {
|
|
18
|
+
runtime.over = true;
|
|
19
|
+
updateToggleControllerVisuals(runtime);
|
|
20
|
+
});
|
|
21
|
+
connectGuiInteraction(runtime, target, 'onPointerOut', () => {
|
|
22
|
+
runtime.over = false;
|
|
23
|
+
updateToggleControllerVisuals(runtime);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
updateToggleControllerVisuals(runtime);
|
|
27
|
+
return controller;
|
|
28
|
+
}
|
|
29
|
+
export function disposeToggleController(controller) {
|
|
30
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
31
|
+
disposeGuiController(controller, () => {
|
|
32
|
+
runtime.checkedState = null;
|
|
33
|
+
runtime.label = null;
|
|
34
|
+
runtime.overState = null;
|
|
35
|
+
runtime.uncheckedState = null;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export function getToggleControllerSignals(controller) {
|
|
39
|
+
return getGuiControllerRuntime(controller).signals;
|
|
40
|
+
}
|
|
41
|
+
export function isToggleControllerChecked(controller) {
|
|
42
|
+
return getGuiControllerRuntime(controller).checked;
|
|
43
|
+
}
|
|
44
|
+
export function setToggleControllerChecked(controller, checked) {
|
|
45
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
46
|
+
if (runtime.checked === checked || runtime.disposed)
|
|
47
|
+
return;
|
|
48
|
+
runtime.checked = checked;
|
|
49
|
+
updateToggleControllerVisuals(runtime);
|
|
50
|
+
emitSignal(runtime.signals.onChange, checked);
|
|
51
|
+
}
|
|
52
|
+
function updateToggleControllerVisuals(runtime) {
|
|
53
|
+
setGuiVisible(runtime, runtime.uncheckedState, !runtime.checked);
|
|
54
|
+
setGuiVisible(runtime, runtime.checkedState, runtime.checked);
|
|
55
|
+
setGuiVisible(runtime, runtime.overState, runtime.over);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=toggleController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggleController.js","sourceRoot":"","sources":["../src/toggleController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TooltipController, TooltipControllerOptions } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createTooltipController(options: Readonly<TooltipControllerOptions>): TooltipController;
|
|
3
|
+
export declare function disposeTooltipController(controller: TooltipController): void;
|
|
4
|
+
export declare function hideTooltipController(controller: TooltipController): void;
|
|
5
|
+
export declare function showTooltipController(controller: TooltipController): void;
|
|
6
|
+
//# sourceMappingURL=tooltipController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltipController.d.ts","sourceRoot":"","sources":["../src/tooltipController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAuBtH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,GAAG,iBAAiB,CA+BtG;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAM5E;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAIzE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAKzE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { connectGuiInteraction, createGuiController, createGuiControllerRuntime, disposeGuiController, getGuiControllerRuntime, setGuiVisible, setGuiVisualProperty, } from './guiController';
|
|
2
|
+
export function createTooltipController(options) {
|
|
3
|
+
const runtime = createGuiControllerRuntime({
|
|
4
|
+
content: options.content,
|
|
5
|
+
delay: Math.max(0, options.delay ?? 500),
|
|
6
|
+
offsetX: options.offset?.x ?? 0,
|
|
7
|
+
offsetY: options.offset?.y ?? 20,
|
|
8
|
+
target: options.target,
|
|
9
|
+
timer: null,
|
|
10
|
+
worldX: 0,
|
|
11
|
+
worldY: 0,
|
|
12
|
+
}, options.transition);
|
|
13
|
+
const controller = createGuiController(runtime);
|
|
14
|
+
runtime.cleanups.push(() => clearTooltipControllerTimer(runtime));
|
|
15
|
+
connectGuiInteraction(runtime, options.target, 'onPointerOver', (data) => {
|
|
16
|
+
runtime.worldX = data.worldX;
|
|
17
|
+
runtime.worldY = data.worldY;
|
|
18
|
+
clearTooltipControllerTimer(runtime);
|
|
19
|
+
if (runtime.delay === 0)
|
|
20
|
+
showTooltipController(controller);
|
|
21
|
+
else
|
|
22
|
+
runtime.timer = setTimeout(() => showTooltipController(controller), runtime.delay);
|
|
23
|
+
});
|
|
24
|
+
connectGuiInteraction(runtime, options.target, 'onPointerMove', (data) => {
|
|
25
|
+
runtime.worldX = data.worldX;
|
|
26
|
+
runtime.worldY = data.worldY;
|
|
27
|
+
if (runtime.content?.visible === true)
|
|
28
|
+
positionTooltipController(runtime);
|
|
29
|
+
});
|
|
30
|
+
connectGuiInteraction(runtime, options.target, 'onPointerOut', () => hideTooltipController(controller));
|
|
31
|
+
setGuiVisible(runtime, options.content, false);
|
|
32
|
+
return controller;
|
|
33
|
+
}
|
|
34
|
+
export function disposeTooltipController(controller) {
|
|
35
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
36
|
+
disposeGuiController(controller, () => {
|
|
37
|
+
runtime.content = null;
|
|
38
|
+
runtime.target = null;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export function hideTooltipController(controller) {
|
|
42
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
43
|
+
clearTooltipControllerTimer(runtime);
|
|
44
|
+
setGuiVisible(runtime, runtime.content, false);
|
|
45
|
+
}
|
|
46
|
+
export function showTooltipController(controller) {
|
|
47
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
48
|
+
clearTooltipControllerTimer(runtime);
|
|
49
|
+
positionTooltipController(runtime);
|
|
50
|
+
setGuiVisible(runtime, runtime.content, true);
|
|
51
|
+
}
|
|
52
|
+
function clearTooltipControllerTimer(runtime) {
|
|
53
|
+
if (runtime.timer === null)
|
|
54
|
+
return;
|
|
55
|
+
clearTimeout(runtime.timer);
|
|
56
|
+
runtime.timer = null;
|
|
57
|
+
}
|
|
58
|
+
function positionTooltipController(runtime) {
|
|
59
|
+
setGuiVisualProperty(runtime, runtime.content, 'x', runtime.worldX + runtime.offsetX);
|
|
60
|
+
setGuiVisualProperty(runtime, runtime.content, 'y', runtime.worldY + runtime.offsetY);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=tooltipController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltipController.js","sourceRoot":"","sources":["../src/tooltipController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TreeViewController, TreeViewControllerItem, TreeViewControllerOptions, TreeViewControllerSignals } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createTreeViewController(options: Readonly<TreeViewControllerOptions>): TreeViewController;
|
|
3
|
+
export declare function disposeTreeViewController(controller: TreeViewController): void;
|
|
4
|
+
export declare function getTreeViewControllerSelectedItem(controller: TreeViewController): Readonly<TreeViewControllerItem> | null;
|
|
5
|
+
export declare function getTreeViewControllerSignals(controller: TreeViewController): Readonly<TreeViewControllerSignals>;
|
|
6
|
+
export declare function isTreeViewControllerItemExpanded(controller: TreeViewController, item: Readonly<TreeViewControllerItem>): boolean;
|
|
7
|
+
export declare function setTreeViewControllerItemExpanded(controller: TreeViewController, item: Readonly<TreeViewControllerItem>, expanded: boolean): void;
|
|
8
|
+
export declare function setTreeViewControllerSelectedItem(controller: TreeViewController, item: Readonly<TreeViewControllerItem> | null): void;
|
|
9
|
+
export declare function toggleTreeViewControllerItem(controller: TreeViewController, item: Readonly<TreeViewControllerItem>): void;
|
|
10
|
+
//# sourceMappingURL=treeViewController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeViewController.d.ts","sourceRoot":"","sources":["../src/treeViewController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAoBlC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,kBAAkB,CAiCzG;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAS9E;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,kBAAkB,GAC7B,QAAQ,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAEzC;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,kBAAkB,GAAG,QAAQ,CAAC,yBAAyB,CAAC,CAEhH;AAED,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GACrC,OAAO,CAET;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EACtC,QAAQ,EAAE,OAAO,GAChB,IAAI,CASN;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,IAAI,GAC5C,IAAI,CAMN;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GACrC,IAAI,CAEN"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
2
|
+
import { connectGuiInteraction, createGuiController, createGuiControllerRuntime, disposeGuiController, getGuiControllerRuntime, setGuiVisible, } from './guiController';
|
|
3
|
+
export function createTreeViewController(options) {
|
|
4
|
+
const items = [];
|
|
5
|
+
const parents = new Map();
|
|
6
|
+
const expanded = new Set();
|
|
7
|
+
collectTreeViewItems(options.items, null, items, parents, expanded);
|
|
8
|
+
const runtime = createGuiControllerRuntime({
|
|
9
|
+
expanded,
|
|
10
|
+
items,
|
|
11
|
+
parents,
|
|
12
|
+
roots: options.items.slice(),
|
|
13
|
+
selectedItem: options.selectedItem ?? null,
|
|
14
|
+
signals: {
|
|
15
|
+
onActivate: createSignal(),
|
|
16
|
+
onExpandChange: createSignal(),
|
|
17
|
+
onSelect: createSignal(),
|
|
18
|
+
},
|
|
19
|
+
}, options.transition);
|
|
20
|
+
const controller = createGuiController(runtime);
|
|
21
|
+
runtime.items.forEach((item) => {
|
|
22
|
+
connectGuiInteraction(runtime, item.visual, 'onClick', () => setTreeViewControllerSelectedItem(controller, item));
|
|
23
|
+
connectGuiInteraction(runtime, item.visual, 'onDoubleClick', () => {
|
|
24
|
+
emitSignal(runtime.signals.onActivate, item);
|
|
25
|
+
if ((item.children?.length ?? 0) > 0)
|
|
26
|
+
toggleTreeViewControllerItem(controller, item);
|
|
27
|
+
});
|
|
28
|
+
connectGuiInteraction(runtime, item.visual, 'onKeyDown', (data) => {
|
|
29
|
+
handleTreeViewControllerKeyDown(controller, data);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
updateTreeViewControllerVisibility(runtime);
|
|
33
|
+
return controller;
|
|
34
|
+
}
|
|
35
|
+
export function disposeTreeViewController(controller) {
|
|
36
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
37
|
+
disposeGuiController(controller, () => {
|
|
38
|
+
runtime.expanded.clear();
|
|
39
|
+
runtime.items.length = 0;
|
|
40
|
+
runtime.parents.clear();
|
|
41
|
+
runtime.roots.length = 0;
|
|
42
|
+
runtime.selectedItem = null;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function getTreeViewControllerSelectedItem(controller) {
|
|
46
|
+
return getGuiControllerRuntime(controller).selectedItem;
|
|
47
|
+
}
|
|
48
|
+
export function getTreeViewControllerSignals(controller) {
|
|
49
|
+
return getGuiControllerRuntime(controller).signals;
|
|
50
|
+
}
|
|
51
|
+
export function isTreeViewControllerItemExpanded(controller, item) {
|
|
52
|
+
return getGuiControllerRuntime(controller).expanded.has(item);
|
|
53
|
+
}
|
|
54
|
+
export function setTreeViewControllerItemExpanded(controller, item, expanded) {
|
|
55
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
56
|
+
if (!runtime.parents.has(item) || (item.children?.length ?? 0) === 0 || runtime.disposed)
|
|
57
|
+
return;
|
|
58
|
+
const previous = runtime.expanded.has(item);
|
|
59
|
+
if (previous === expanded)
|
|
60
|
+
return;
|
|
61
|
+
if (expanded)
|
|
62
|
+
runtime.expanded.add(item);
|
|
63
|
+
else
|
|
64
|
+
runtime.expanded.delete(item);
|
|
65
|
+
updateTreeViewControllerVisibility(runtime);
|
|
66
|
+
emitSignal(runtime.signals.onExpandChange, item, expanded);
|
|
67
|
+
}
|
|
68
|
+
export function setTreeViewControllerSelectedItem(controller, item) {
|
|
69
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
70
|
+
const next = item !== null && runtime.parents.has(item) ? item : null;
|
|
71
|
+
if (runtime.selectedItem === next || runtime.disposed)
|
|
72
|
+
return;
|
|
73
|
+
runtime.selectedItem = next;
|
|
74
|
+
emitSignal(runtime.signals.onSelect, next);
|
|
75
|
+
}
|
|
76
|
+
export function toggleTreeViewControllerItem(controller, item) {
|
|
77
|
+
setTreeViewControllerItemExpanded(controller, item, !isTreeViewControllerItemExpanded(controller, item));
|
|
78
|
+
}
|
|
79
|
+
function collectTreeViewItems(source, parent, items, parents, expanded) {
|
|
80
|
+
for (const item of source) {
|
|
81
|
+
items.push(item);
|
|
82
|
+
parents.set(item, parent);
|
|
83
|
+
if (item.expanded === true)
|
|
84
|
+
expanded.add(item);
|
|
85
|
+
if (item.children !== undefined)
|
|
86
|
+
collectTreeViewItems(item.children, item, items, parents, expanded);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function getVisibleTreeViewItems(runtime) {
|
|
90
|
+
return runtime.items.filter((item) => isTreeViewItemVisible(runtime, item));
|
|
91
|
+
}
|
|
92
|
+
function handleTreeViewControllerKeyDown(controller, data) {
|
|
93
|
+
const runtime = getGuiControllerRuntime(controller);
|
|
94
|
+
const selected = runtime.selectedItem;
|
|
95
|
+
const visible = getVisibleTreeViewItems(runtime);
|
|
96
|
+
const index = selected === null ? -1 : visible.indexOf(selected);
|
|
97
|
+
if (data.key === 'ArrowDown' && visible.length > 0)
|
|
98
|
+
setTreeViewControllerSelectedItem(controller, visible[Math.min(visible.length - 1, index + 1)]);
|
|
99
|
+
else if (data.key === 'ArrowUp' && visible.length > 0)
|
|
100
|
+
setTreeViewControllerSelectedItem(controller, visible[Math.max(0, index - 1)]);
|
|
101
|
+
else if (data.key === 'ArrowRight' && selected !== null) {
|
|
102
|
+
if ((selected.children?.length ?? 0) > 0 && !runtime.expanded.has(selected))
|
|
103
|
+
setTreeViewControllerItemExpanded(controller, selected, true);
|
|
104
|
+
else if ((selected.children?.length ?? 0) > 0)
|
|
105
|
+
setTreeViewControllerSelectedItem(controller, selected.children[0]);
|
|
106
|
+
}
|
|
107
|
+
else if (data.key === 'ArrowLeft' && selected !== null) {
|
|
108
|
+
if (runtime.expanded.has(selected))
|
|
109
|
+
setTreeViewControllerItemExpanded(controller, selected, false);
|
|
110
|
+
else
|
|
111
|
+
setTreeViewControllerSelectedItem(controller, runtime.parents.get(selected) ?? null);
|
|
112
|
+
}
|
|
113
|
+
else if (data.key === 'Enter' && selected !== null)
|
|
114
|
+
emitSignal(runtime.signals.onActivate, selected);
|
|
115
|
+
}
|
|
116
|
+
function isTreeViewItemVisible(runtime, item) {
|
|
117
|
+
let parent = runtime.parents.get(item) ?? null;
|
|
118
|
+
while (parent !== null) {
|
|
119
|
+
if (!runtime.expanded.has(parent))
|
|
120
|
+
return false;
|
|
121
|
+
parent = runtime.parents.get(parent) ?? null;
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
function updateTreeViewControllerVisibility(runtime) {
|
|
126
|
+
runtime.items.forEach((item) => setGuiVisible(runtime, item.visual, isTreeViewItemVisible(runtime, item)));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=treeViewController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treeViewController.js","sourceRoot":"","sources":["../src/treeViewController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WindowController, WindowControllerOptions, WindowControllerSignals } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createWindowController(options: Readonly<WindowControllerOptions>): WindowController;
|
|
3
|
+
export declare function disposeWindowController(controller: WindowController): void;
|
|
4
|
+
export declare function getWindowControllerSignals(controller: WindowController): Readonly<WindowControllerSignals>;
|
|
5
|
+
export declare function setWindowControllerPosition(controller: WindowController, x: number, y: number): void;
|
|
6
|
+
export declare function setWindowControllerSize(controller: WindowController, width: number, height: number): void;
|
|
7
|
+
//# sourceMappingURL=windowController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windowController.d.ts","sourceRoot":"","sources":["../src/windowController.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAIV,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAwClC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,gBAAgB,CAuFnG;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAS1E;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,gBAAgB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAE1G;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAMpG;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAoBzG"}
|