@flyingrobots/bijou-tui 2.1.0 → 3.0.0
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/README.md +64 -21
- package/dist/animate.d.ts +0 -2
- package/dist/animate.d.ts.map +1 -1
- package/dist/animate.js +17 -26
- package/dist/animate.js.map +1 -1
- package/dist/app-frame-actions.d.ts.map +1 -1
- package/dist/app-frame-actions.js +2 -2
- package/dist/app-frame-actions.js.map +1 -1
- package/dist/app-frame-render.d.ts +2 -0
- package/dist/app-frame-render.d.ts.map +1 -1
- package/dist/app-frame-render.js +49 -7
- package/dist/app-frame-render.js.map +1 -1
- package/dist/app-frame-types.js +4 -4
- package/dist/app-frame-types.js.map +1 -1
- package/dist/app-frame.d.ts +3 -1
- package/dist/app-frame.d.ts.map +1 -1
- package/dist/app-frame.js +61 -13
- package/dist/app-frame.js.map +1 -1
- package/dist/canvas.d.ts +37 -25
- package/dist/canvas.d.ts.map +1 -1
- package/dist/canvas.js +116 -30
- package/dist/canvas.js.map +1 -1
- package/dist/commands.js +2 -2
- package/dist/commands.js.map +1 -1
- package/dist/css/install.d.ts +4 -0
- package/dist/css/install.d.ts.map +1 -0
- package/dist/css/install.js +24 -0
- package/dist/css/install.js.map +1 -0
- package/dist/css/parser.d.ts +14 -0
- package/dist/css/parser.d.ts.map +1 -0
- package/dist/css/parser.js +92 -0
- package/dist/css/parser.js.map +1 -0
- package/dist/css/resolver.d.ts +36 -0
- package/dist/css/resolver.d.ts.map +1 -0
- package/dist/css/resolver.js +130 -0
- package/dist/css/resolver.js.map +1 -0
- package/dist/css/text-style.d.ts +17 -0
- package/dist/css/text-style.d.ts.map +1 -0
- package/dist/css/text-style.js +59 -0
- package/dist/css/text-style.js.map +1 -0
- package/dist/css/types.d.ts +27 -0
- package/dist/css/types.d.ts.map +1 -0
- package/dist/css/types.js +5 -0
- package/dist/css/types.js.map +1 -0
- package/dist/driver.d.ts +10 -2
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +25 -2
- package/dist/driver.js.map +1 -1
- package/dist/eventbus.d.ts +37 -3
- package/dist/eventbus.d.ts.map +1 -1
- package/dist/eventbus.js +91 -4
- package/dist/eventbus.js.map +1 -1
- package/dist/focus-area.d.ts +4 -0
- package/dist/focus-area.d.ts.map +1 -1
- package/dist/focus-area.js +11 -1
- package/dist/focus-area.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/layout-v3.d.ts +10 -0
- package/dist/layout-v3.d.ts.map +1 -0
- package/dist/layout-v3.js +35 -0
- package/dist/layout-v3.js.map +1 -0
- package/dist/motion/motion.d.ts +14 -0
- package/dist/motion/motion.d.ts.map +1 -0
- package/dist/motion/motion.js +31 -0
- package/dist/motion/motion.js.map +1 -0
- package/dist/motion/reconciler.d.ts +15 -0
- package/dist/motion/reconciler.d.ts.map +1 -0
- package/dist/motion/reconciler.js +109 -0
- package/dist/motion/reconciler.js.map +1 -0
- package/dist/motion/types.d.ts +52 -0
- package/dist/motion/types.d.ts.map +1 -0
- package/dist/motion/types.js +2 -0
- package/dist/motion/types.js.map +1 -0
- package/dist/pipeline/middleware/css.d.ts +20 -0
- package/dist/pipeline/middleware/css.d.ts.map +1 -0
- package/dist/pipeline/middleware/css.js +41 -0
- package/dist/pipeline/middleware/css.js.map +1 -0
- package/dist/pipeline/middleware/grayscale.d.ts +9 -0
- package/dist/pipeline/middleware/grayscale.d.ts.map +1 -0
- package/dist/pipeline/middleware/grayscale.js +39 -0
- package/dist/pipeline/middleware/grayscale.js.map +1 -0
- package/dist/pipeline/middleware/motion.d.ts +6 -0
- package/dist/pipeline/middleware/motion.d.ts.map +1 -0
- package/dist/pipeline/middleware/motion.js +19 -0
- package/dist/pipeline/middleware/motion.js.map +1 -0
- package/dist/pipeline/middleware/paint.d.ts +6 -0
- package/dist/pipeline/middleware/paint.d.ts.map +1 -0
- package/dist/pipeline/middleware/paint.js +21 -0
- package/dist/pipeline/middleware/paint.js.map +1 -0
- package/dist/pipeline/pipeline.d.ts +56 -0
- package/dist/pipeline/pipeline.d.ts.map +1 -0
- package/dist/pipeline/pipeline.js +45 -0
- package/dist/pipeline/pipeline.js.map +1 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +153 -8
- package/dist/runtime.js.map +1 -1
- package/dist/screen.d.ts +12 -1
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +14 -1
- package/dist/screen.js.map +1 -1
- package/dist/subapp/mount.d.ts +67 -0
- package/dist/subapp/mount.d.ts.map +1 -0
- package/dist/subapp/mount.js +60 -0
- package/dist/subapp/mount.js.map +1 -0
- package/dist/types.d.ts +45 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -1
- package/dist/view-output.d.ts +15 -0
- package/dist/view-output.d.ts.map +1 -0
- package/dist/view-output.js +53 -0
- package/dist/view-output.js.map +1 -0
- package/package.json +2 -2
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/screen.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module screen
|
|
8
8
|
*/
|
|
9
|
-
import { HIDE_CURSOR, SHOW_CURSOR, type IOPort } from '@flyingrobots/bijou';
|
|
9
|
+
import { HIDE_CURSOR, SHOW_CURSOR, type IOPort, type Surface, type StylePort } from '@flyingrobots/bijou';
|
|
10
10
|
/** ANSI escape: enter alternate screen buffer (DEC Private Mode 1049). */
|
|
11
11
|
export declare const ENTER_ALT_SCREEN = "\u001B[?1049h";
|
|
12
12
|
/** ANSI escape: exit alternate screen buffer (DEC Private Mode 1049). */
|
|
@@ -76,8 +76,19 @@ export declare function exitScreen(io: IOPort): void;
|
|
|
76
76
|
* @param io - The I/O port to write escape sequences to.
|
|
77
77
|
*/
|
|
78
78
|
export declare function clearAndHome(io: IOPort): void;
|
|
79
|
+
/**
|
|
80
|
+
* Optimized double-buffered render: diff two surfaces and write the minimal
|
|
81
|
+
* set of CUP/SGR escape codes to the terminal.
|
|
82
|
+
*
|
|
83
|
+
* @param io - The I/O port to write the composed frame to.
|
|
84
|
+
* @param current - The surface currently on screen.
|
|
85
|
+
* @param target - The new surface to render.
|
|
86
|
+
* @param style - Style port for color resolution.
|
|
87
|
+
*/
|
|
88
|
+
export declare function renderSurfaceFrame(io: IOPort, current: Surface, target: Surface, style: StylePort): void;
|
|
79
89
|
/**
|
|
80
90
|
* Flicker-free render: move cursor home, write content line-by-line,
|
|
91
|
+
...
|
|
81
92
|
* clearing from the end of each line to the terminal edge.
|
|
82
93
|
*
|
|
83
94
|
* Disabling wrap in enterScreen() ensures the terminal won't scroll
|
package/dist/screen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAc,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEtH,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,kBAAgB,CAAC;AAC9C,yEAAyE;AACzE,eAAO,MAAM,eAAe,kBAAgB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACpC,+DAA+D;AAC/D,eAAO,MAAM,YAAY,eAAa,CAAC;AACvC,8DAA8D;AAC9D,eAAO,MAAM,WAAW,eAAa,CAAC;AACtC,+CAA+C;AAC/C,eAAO,MAAM,YAAY,cAAY,CAAC;AACtC,8DAA8D;AAC9D,eAAO,MAAM,YAAY,aAAW,CAAC;AACrC,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,aAAW,CAAC;AAC1C,yDAAyD;AACzD,eAAO,MAAM,IAAI,aAAW,CAAC;AAC7B,qDAAqD;AACrD,eAAO,MAAM,UAAU,cAAY,CAAC;AAIpC,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC;AAExD,qDAAqD;AACrD,eAAO,MAAM,YAAY,eAAa,CAAC;AACvC,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,eAAa,CAAC;AAC3C,mDAAmD;AACnD,eAAO,MAAM,UAAU,eAAa,CAAC;AACrC,wFAAwF;AACxF,eAAO,MAAM,YAAY,eAAa,CAAC;AASvC;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAGlG;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE7C;AACD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,SAAS,GACf,IAAI,CAEN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI7D"}
|
package/dist/screen.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module screen
|
|
8
8
|
*/
|
|
9
|
-
import { HIDE_CURSOR, SHOW_CURSOR } from '@flyingrobots/bijou';
|
|
9
|
+
import { HIDE_CURSOR, SHOW_CURSOR, renderDiff } from '@flyingrobots/bijou';
|
|
10
10
|
/** ANSI escape: enter alternate screen buffer (DEC Private Mode 1049). */
|
|
11
11
|
export const ENTER_ALT_SCREEN = '\x1b[?1049h';
|
|
12
12
|
/** ANSI escape: exit alternate screen buffer (DEC Private Mode 1049). */
|
|
@@ -89,8 +89,21 @@ export function exitScreen(io) {
|
|
|
89
89
|
export function clearAndHome(io) {
|
|
90
90
|
io.write(CLEAR_SCREEN + HOME);
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Optimized double-buffered render: diff two surfaces and write the minimal
|
|
94
|
+
* set of CUP/SGR escape codes to the terminal.
|
|
95
|
+
*
|
|
96
|
+
* @param io - The I/O port to write the composed frame to.
|
|
97
|
+
* @param current - The surface currently on screen.
|
|
98
|
+
* @param target - The new surface to render.
|
|
99
|
+
* @param style - Style port for color resolution.
|
|
100
|
+
*/
|
|
101
|
+
export function renderSurfaceFrame(io, current, target, style) {
|
|
102
|
+
renderDiff(current, target, io, style);
|
|
103
|
+
}
|
|
92
104
|
/**
|
|
93
105
|
* Flicker-free render: move cursor home, write content line-by-line,
|
|
106
|
+
...
|
|
94
107
|
* clearing from the end of each line to the terminal edge.
|
|
95
108
|
*
|
|
96
109
|
* Disabling wrap in enterScreen() ensures the terminal won't scroll
|
package/dist/screen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { App, Cmd } from '../types.js';
|
|
2
|
+
import type { ViewOutput } from '../view-output.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for mounting a sub-app.
|
|
5
|
+
*
|
|
6
|
+
* @template SubModel - The sub-app's model type.
|
|
7
|
+
* @template SubMsg - The sub-app's message type.
|
|
8
|
+
* @template ParentMsg - The parent app's message type.
|
|
9
|
+
*/
|
|
10
|
+
export interface MountOptions<SubModel, SubMsg, ParentMsg> {
|
|
11
|
+
/** The current state of the sub-app. */
|
|
12
|
+
model: SubModel;
|
|
13
|
+
/** Function to map a sub-app message into a parent message. */
|
|
14
|
+
onMsg: (msg: SubMsg) => ParentMsg;
|
|
15
|
+
/**
|
|
16
|
+
* Optional function to intercept and handle `Cmd`s emitted by the sub-app.
|
|
17
|
+
* If not provided, commands are automatically mapped using `onMsg`.
|
|
18
|
+
*/
|
|
19
|
+
mapCmd?: (cmd: Cmd<SubMsg>) => Cmd<ParentMsg>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A mounted sub-app instance ready to be rendered.
|
|
23
|
+
*
|
|
24
|
+
* This is typically returned by the parent's `view` function
|
|
25
|
+
* and blitted onto the parent's surface.
|
|
26
|
+
*/
|
|
27
|
+
export interface MountedApp<SubMsg> {
|
|
28
|
+
/** The rendered surface or layout tree of the sub-app. */
|
|
29
|
+
surfaceOrNode: ViewOutput;
|
|
30
|
+
/**
|
|
31
|
+
* Any TEA commands the sub-app needs to execute.
|
|
32
|
+
* These should be dispatched by the parent during its update cycle.
|
|
33
|
+
*/
|
|
34
|
+
cmds: Cmd<SubMsg>[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Mount a sub-app, returning its rendered surface and any pending commands.
|
|
38
|
+
*
|
|
39
|
+
* @template SubModel - The sub-app's model type.
|
|
40
|
+
* @template SubMsg - The sub-app's message type.
|
|
41
|
+
* @template ParentMsg - The parent app's message type.
|
|
42
|
+
*
|
|
43
|
+
* @param app - The TEA application to mount.
|
|
44
|
+
* @param options - Configuration for the mounted instance.
|
|
45
|
+
* @returns A tuple of `[Surface | LayoutNode, mapped Cmds]`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function mount<SubModel, SubMsg, ParentMsg>(app: App<SubModel, SubMsg>, options: MountOptions<SubModel, SubMsg, ParentMsg>): [ViewOutput, Cmd<ParentMsg>[]];
|
|
48
|
+
export interface SubAppOptions<SubMsg, ParentMsg> {
|
|
49
|
+
/** Function to map a sub-app message into a parent message. */
|
|
50
|
+
onMsg: (msg: SubMsg) => ParentMsg;
|
|
51
|
+
/**
|
|
52
|
+
* Optional function to intercept and handle `Cmd`s emitted by the sub-app.
|
|
53
|
+
* If not provided, commands are automatically mapped using `onMsg`.
|
|
54
|
+
*/
|
|
55
|
+
mapCmd?: (cmd: Cmd<SubMsg>) => Cmd<ParentMsg>;
|
|
56
|
+
}
|
|
57
|
+
export declare function initSubApp<SubModel, SubMsg, ParentMsg>(app: App<SubModel, SubMsg>, options: SubAppOptions<SubMsg, ParentMsg>): [SubModel, Cmd<ParentMsg>[]];
|
|
58
|
+
export declare function updateSubApp<SubModel, SubMsg, ParentMsg>(app: App<SubModel, SubMsg>, msg: SubMsg, model: SubModel, options: SubAppOptions<SubMsg, ParentMsg>): [SubModel, Cmd<ParentMsg>[]];
|
|
59
|
+
/**
|
|
60
|
+
* Helper to map an array of sub-app commands into parent commands.
|
|
61
|
+
*
|
|
62
|
+
* @param cmds - The sub-app commands to map.
|
|
63
|
+
* @param mapper - The message mapping function.
|
|
64
|
+
* @returns An array of commands that emit parent messages.
|
|
65
|
+
*/
|
|
66
|
+
export declare function mapCmds<SubMsg, ParentMsg>(cmds: Cmd<SubMsg>[], mapper: (msg: SubMsg) => ParentMsg): Cmd<ParentMsg>[];
|
|
67
|
+
//# sourceMappingURL=mount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/subapp/mount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAc,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS;IACvD,wCAAwC;IACxC,KAAK,EAAE,QAAQ,CAAC;IAChB,+DAA+D;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM;IAChC,0DAA0D;IAC1D,aAAa,EAAE,UAAU,CAAC;IAC1B;;;OAGG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAC/C,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC1B,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,GACjD,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAMhC;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,SAAS;IAC9C,+DAA+D;IAC/D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;CAC/C;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EACpD,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC1B,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,GACxC,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAG9B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EACtD,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,GACxC,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAG9B;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,EACvC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EACnB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,GACjC,GAAG,CAAC,SAAS,CAAC,EAAE,CAElB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mount a sub-app, returning its rendered surface and any pending commands.
|
|
3
|
+
*
|
|
4
|
+
* @template SubModel - The sub-app's model type.
|
|
5
|
+
* @template SubMsg - The sub-app's message type.
|
|
6
|
+
* @template ParentMsg - The parent app's message type.
|
|
7
|
+
*
|
|
8
|
+
* @param app - The TEA application to mount.
|
|
9
|
+
* @param options - Configuration for the mounted instance.
|
|
10
|
+
* @returns A tuple of `[Surface | LayoutNode, mapped Cmds]`.
|
|
11
|
+
*/
|
|
12
|
+
export function mount(app, options) {
|
|
13
|
+
const { model } = options;
|
|
14
|
+
const surfaceOrNode = app.view(model);
|
|
15
|
+
return [surfaceOrNode, []];
|
|
16
|
+
}
|
|
17
|
+
export function initSubApp(app, options) {
|
|
18
|
+
const [model, cmds] = app.init();
|
|
19
|
+
return [model, mapSubAppCmds(cmds, options)];
|
|
20
|
+
}
|
|
21
|
+
export function updateSubApp(app, msg, model, options) {
|
|
22
|
+
const [nextModel, cmds] = app.update(msg, model);
|
|
23
|
+
return [nextModel, mapSubAppCmds(cmds, options)];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Helper to map an array of sub-app commands into parent commands.
|
|
27
|
+
*
|
|
28
|
+
* @param cmds - The sub-app commands to map.
|
|
29
|
+
* @param mapper - The message mapping function.
|
|
30
|
+
* @returns An array of commands that emit parent messages.
|
|
31
|
+
*/
|
|
32
|
+
export function mapCmds(cmds, mapper) {
|
|
33
|
+
return cmds.map((cmd) => mapSingleCmd(cmd, mapper));
|
|
34
|
+
}
|
|
35
|
+
function mapSubAppCmds(cmds, options) {
|
|
36
|
+
if (options.mapCmd != null) {
|
|
37
|
+
return cmds.map((cmd) => options.mapCmd(cmd));
|
|
38
|
+
}
|
|
39
|
+
return mapCmds(cmds, options.onMsg);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Map a single sub-app command to a parent command.
|
|
43
|
+
*/
|
|
44
|
+
function mapSingleCmd(cmd, mapper) {
|
|
45
|
+
return async (emit, caps) => {
|
|
46
|
+
// We intercept the sub-app's `emit` call to wrap its messages
|
|
47
|
+
const mappedEmit = (subMsg) => {
|
|
48
|
+
emit(mapper(subMsg));
|
|
49
|
+
};
|
|
50
|
+
const result = await cmd(mappedEmit, caps);
|
|
51
|
+
// If the command resolves to a final message, map it.
|
|
52
|
+
// Quit signals are passed through unaltered.
|
|
53
|
+
if (result === undefined)
|
|
54
|
+
return undefined;
|
|
55
|
+
if (typeof result === 'symbol')
|
|
56
|
+
return result; // QUIT
|
|
57
|
+
return mapper(result);
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=mount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/subapp/mount.ts"],"names":[],"mappings":"AAsCA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CACnB,GAA0B,EAC1B,OAAkD;IAElD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1B,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAYD,MAAM,UAAU,UAAU,CACxB,GAA0B,EAC1B,OAAyC;IAEzC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAA0B,EAC1B,GAAW,EACX,KAAe,EACf,OAAyC;IAEzC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CACrB,IAAmB,EACnB,MAAkC;IAElC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CACpB,IAAmB,EACnB,OAAyC;IAEzC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,GAAgB,EAChB,MAAkC;IAElC,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC1B,8DAA8D;QAC9D,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE3C,sDAAsD;QACtD,6CAA6C;QAC7C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAoB,CAAC,CAAC,OAAO;QACpE,OAAO,MAAM,CAAC,MAAgB,CAAC,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
import type { BijouContext } from '@flyingrobots/bijou';
|
|
10
|
+
import type { Middleware } from './eventbus.js';
|
|
11
|
+
import type { RenderPipeline } from './pipeline/pipeline.js';
|
|
12
|
+
import type { ViewOutput } from './view-output.js';
|
|
10
13
|
/** Represent a keyboard input event with key name and modifier flags. */
|
|
11
14
|
export interface KeyMsg {
|
|
12
15
|
/** Discriminant tag identifying this as a keyboard message. */
|
|
@@ -29,6 +32,13 @@ export interface ResizeMsg {
|
|
|
29
32
|
/** New terminal height in rows. */
|
|
30
33
|
readonly rows: number;
|
|
31
34
|
}
|
|
35
|
+
/** Represent a system animation pulse event. */
|
|
36
|
+
export interface PulseMsg {
|
|
37
|
+
/** Discriminant tag identifying this as a pulse message. */
|
|
38
|
+
readonly type: 'pulse';
|
|
39
|
+
/** Time delta in seconds since the last pulse. */
|
|
40
|
+
readonly dt: number;
|
|
41
|
+
}
|
|
32
42
|
/** Mouse button identifier. `"none"` is used for scroll and motion events without a button. */
|
|
33
43
|
export type MouseButton = 'left' | 'middle' | 'right' | 'none';
|
|
34
44
|
/** Mouse action type including press, release, move, and scroll directions. */
|
|
@@ -66,6 +76,13 @@ export declare function isKeyMsg(msg: unknown): msg is KeyMsg;
|
|
|
66
76
|
* @returns `true` if `msg` is a `ResizeMsg`.
|
|
67
77
|
*/
|
|
68
78
|
export declare function isResizeMsg(msg: unknown): msg is ResizeMsg;
|
|
79
|
+
/**
|
|
80
|
+
* Narrow an unknown message to {@link PulseMsg}.
|
|
81
|
+
*
|
|
82
|
+
* @param msg - Value to test.
|
|
83
|
+
* @returns `true` if `msg` is a `PulseMsg`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isPulseMsg(msg: unknown): msg is PulseMsg;
|
|
69
86
|
/**
|
|
70
87
|
* Narrow an unknown message to {@link MouseMsg}.
|
|
71
88
|
*
|
|
@@ -85,7 +102,17 @@ export type QuitSignal = typeof QUIT;
|
|
|
85
102
|
*
|
|
86
103
|
* @template M - Application message type.
|
|
87
104
|
*/
|
|
88
|
-
export type Cmd<M> = (emit: (msg: M) => void) => Promise<M | QuitSignal | void>;
|
|
105
|
+
export type Cmd<M> = (emit: (msg: M) => void, capabilities: CmdCapabilities) => Promise<M | QuitSignal | void>;
|
|
106
|
+
/** Capabilities provided to commands by the runtime. */
|
|
107
|
+
export interface CmdCapabilities {
|
|
108
|
+
/**
|
|
109
|
+
* Subscribe to the system animation pulse.
|
|
110
|
+
* Returns a dispose function.
|
|
111
|
+
*/
|
|
112
|
+
onPulse(handler: (dt: number) => void): {
|
|
113
|
+
dispose(): void;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
89
116
|
/**
|
|
90
117
|
* TEA (The Elm Architecture) application interface.
|
|
91
118
|
*
|
|
@@ -105,21 +132,25 @@ export interface App<Model, M = never> {
|
|
|
105
132
|
/**
|
|
106
133
|
* Handle a message and return the updated model with commands.
|
|
107
134
|
*
|
|
108
|
-
* @param msg - Incoming message (key, resize, mouse, or custom).
|
|
135
|
+
* @param msg - Incoming message (key, resize, mouse, pulse, or custom).
|
|
109
136
|
* @param model - Current application state.
|
|
110
137
|
* @returns A tuple of `[updatedModel, commands]`.
|
|
111
138
|
*/
|
|
112
|
-
update(msg: KeyMsg | ResizeMsg | MouseMsg | M, model: Model): [Model, Cmd<M>[]];
|
|
139
|
+
update(msg: KeyMsg | ResizeMsg | MouseMsg | PulseMsg | M, model: Model): [Model, Cmd<M>[]];
|
|
113
140
|
/**
|
|
114
|
-
* Render the current model as a
|
|
141
|
+
* Render the current model as a Surface, LayoutNode, or legacy string view.
|
|
115
142
|
*
|
|
116
143
|
* @param model - Current application state.
|
|
117
|
-
* @returns Rendered string output.
|
|
144
|
+
* @returns Rendered Surface, Layout tree, or legacy string output.
|
|
118
145
|
*/
|
|
119
|
-
view(model: Model):
|
|
146
|
+
view(model: Model): ViewOutput;
|
|
120
147
|
}
|
|
121
|
-
/**
|
|
122
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Configuration options for the TEA runtime.
|
|
150
|
+
*
|
|
151
|
+
* @template M - Custom application message type.
|
|
152
|
+
*/
|
|
153
|
+
export interface RunOptions<M = any> {
|
|
123
154
|
/** Enter the alternate screen buffer on startup. */
|
|
124
155
|
altScreen?: boolean;
|
|
125
156
|
/** Hide the cursor on startup. */
|
|
@@ -128,5 +159,11 @@ export interface RunOptions {
|
|
|
128
159
|
mouse?: boolean;
|
|
129
160
|
/** Bijou context providing I/O and runtime ports. */
|
|
130
161
|
ctx?: BijouContext;
|
|
162
|
+
/** Optional middleware to intercept or modify messages. */
|
|
163
|
+
middlewares?: Middleware<M>[];
|
|
164
|
+
/** Optional hook to extend the render pipeline with custom middleware. */
|
|
165
|
+
configurePipeline?: (pipeline: RenderPipeline) => void;
|
|
166
|
+
/** Optional BCSS stylesheet string. */
|
|
167
|
+
css?: string;
|
|
131
168
|
}
|
|
132
169
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -25,6 +25,15 @@ export function isKeyMsg(msg) {
|
|
|
25
25
|
export function isResizeMsg(msg) {
|
|
26
26
|
return typeof msg === 'object' && msg !== null && 'type' in msg && msg.type === 'resize';
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Narrow an unknown message to {@link PulseMsg}.
|
|
30
|
+
*
|
|
31
|
+
* @param msg - Value to test.
|
|
32
|
+
* @returns `true` if `msg` is a `PulseMsg`.
|
|
33
|
+
*/
|
|
34
|
+
export function isPulseMsg(msg) {
|
|
35
|
+
return typeof msg === 'object' && msg !== null && 'type' in msg && msg.type === 'pulse';
|
|
36
|
+
}
|
|
28
37
|
/**
|
|
29
38
|
* Narrow an unknown message to {@link MouseMsg}.
|
|
30
39
|
*
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqEH,sBAAsB;AAEtB;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAK,GAAc,CAAC,IAAI,KAAK,KAAK,CAAC;AACpG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAK,GAAiB,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAK,GAAgB,CAAC,IAAI,KAAK,OAAO,CAAC;AACxG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAK,GAAgB,CAAC,IAAI,KAAK,OAAO,CAAC;AACxG,CAAC;AAED,mBAAmB;AAEnB,kEAAkE;AAClE,MAAM,CAAC,MAAM,IAAI,GAAkB,MAAM,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type LayoutNode, type Surface } from '@flyingrobots/bijou';
|
|
2
|
+
export type ViewOutput = Surface | LayoutNode | string;
|
|
3
|
+
export interface ViewportSize {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
export interface NormalizedViewOutput {
|
|
8
|
+
kind: 'surface' | 'layout' | 'string';
|
|
9
|
+
legacyString: boolean;
|
|
10
|
+
surface: Surface;
|
|
11
|
+
}
|
|
12
|
+
export declare function isSurfaceView(value: unknown): value is Surface;
|
|
13
|
+
export declare function normalizeViewOutput(output: ViewOutput, size: ViewportSize): NormalizedViewOutput;
|
|
14
|
+
export declare function wrapViewOutputAsLayoutRoot(output: ViewOutput, size: ViewportSize): LayoutNode;
|
|
15
|
+
//# sourceMappingURL=view-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-output.d.ts","sourceRoot":"","sources":["../src/view-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,OAAO,EACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE9D;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,GACjB,oBAAoB,CAsBtB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,GACjB,UAAU,CAqBZ"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { createSurface, paintLayoutNode, parseAnsiToSurface, } from '@flyingrobots/bijou';
|
|
2
|
+
export function isSurfaceView(value) {
|
|
3
|
+
return typeof value === 'object' && value !== null && 'cells' in value;
|
|
4
|
+
}
|
|
5
|
+
export function normalizeViewOutput(output, size) {
|
|
6
|
+
if (typeof output === 'string') {
|
|
7
|
+
return {
|
|
8
|
+
kind: 'string',
|
|
9
|
+
legacyString: true,
|
|
10
|
+
surface: parseAnsiToSurface(output, size.width, size.height),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
if (isSurfaceView(output)) {
|
|
14
|
+
return {
|
|
15
|
+
kind: 'surface',
|
|
16
|
+
legacyString: false,
|
|
17
|
+
surface: output,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
kind: 'layout',
|
|
22
|
+
legacyString: false,
|
|
23
|
+
surface: paintViewLayout(output, size),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function wrapViewOutputAsLayoutRoot(output, size) {
|
|
27
|
+
if (typeof output === 'string') {
|
|
28
|
+
return {
|
|
29
|
+
type: 'LegacyTextView',
|
|
30
|
+
classes: ['legacy-view'],
|
|
31
|
+
rect: { x: 0, y: 0, width: size.width, height: size.height },
|
|
32
|
+
children: [],
|
|
33
|
+
surface: parseAnsiToSurface(output, size.width, size.height),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (isSurfaceView(output)) {
|
|
37
|
+
return {
|
|
38
|
+
type: 'SurfaceView',
|
|
39
|
+
rect: { x: 0, y: 0, width: output.width, height: output.height },
|
|
40
|
+
children: [],
|
|
41
|
+
surface: output,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return output;
|
|
45
|
+
}
|
|
46
|
+
function paintViewLayout(node, size) {
|
|
47
|
+
const width = Math.max(size.width, node.rect.x + node.rect.width, 0);
|
|
48
|
+
const height = Math.max(size.height, node.rect.y + node.rect.height, 0);
|
|
49
|
+
const surface = createSurface(width, height);
|
|
50
|
+
paintLayoutNode(surface, node);
|
|
51
|
+
return surface;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=view-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-output.js","sourceRoot":"","sources":["../src/view-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GAGnB,MAAM,qBAAqB,CAAC;AAe7B,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAkB,EAClB,IAAkB;IAElB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,MAAM;SAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAkB,EAClB,IAAkB;IAElB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YAC5D,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAChE,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,MAAM;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAgB,EAAE,IAAkB;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flyingrobots/bijou-tui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "TEA runtime for terminal UIs \u2014 model/update/view with keyboard input, alt screen, and layout helpers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"lint": "tsc --noEmit"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@flyingrobots/bijou": "
|
|
27
|
+
"@flyingrobots/bijou": "3.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^22.0.0",
|