@zakmandhro/bunti 0.2.1 → 0.4.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 +6 -5
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +33 -9
- package/dist/cli.js.map +1 -1
- package/dist/colors.d.ts +2 -2
- package/dist/colors.js +2 -2
- package/dist/components/Box.d.ts +1 -1
- package/dist/components/Button.d.ts +1 -1
- package/dist/components/Button.js +2 -2
- package/dist/components/Card.d.ts +1 -1
- package/dist/components/Card.js +3 -3
- package/dist/components/Header.d.ts +1 -1
- package/dist/components/Header.js +2 -2
- package/dist/components/Input.d.ts +2 -2
- package/dist/components/Input.js +1 -1
- package/dist/components/Link.d.ts +2 -2
- package/dist/components/Link.js +2 -2
- package/dist/components/Modal.d.ts +1 -1
- package/dist/components/Modal.js +2 -2
- package/dist/components/Progress.d.ts +2 -2
- package/dist/components/Progress.js +2 -2
- package/dist/components/Spinner.d.ts +2 -2
- package/dist/components/index.d.ts +9 -9
- package/dist/components/index.js +9 -9
- package/dist/data/nf-glyphs.d.ts +2 -2
- package/dist/demo-registry.d.ts.map +1 -1
- package/dist/demo-registry.js +6 -1
- package/dist/demo-registry.js.map +1 -1
- package/dist/demos/2048.js +559 -0
- package/dist/demos/2048.ts +1 -1
- package/dist/demos/animation.js +177 -0
- package/dist/demos/animation.ts +1 -1
- package/dist/demos/demo-layout.js +85 -0
- package/dist/demos/demo-layout.ts +6 -1
- package/dist/demos/engine.js +244 -0
- package/dist/demos/interaction.js +74 -0
- package/dist/demos/interaction.ts +1 -1
- package/dist/demos/login.js +175 -0
- package/dist/demos/login.ts +1 -1
- package/dist/demos/mission-control.js +427 -0
- package/dist/demos/platformer-physics.js +122 -0
- package/dist/demos/platformer-physics.ts +284 -0
- package/dist/demos/platformer.js +519 -0
- package/dist/demos/platformer.ts +761 -0
- package/dist/demos/showcase.js +181 -0
- package/dist/demos/showcase.ts +1 -1
- package/dist/detect.d.ts +24 -7
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +73 -12
- package/dist/detect.js.map +1 -1
- package/dist/diagnostics.d.ts +8 -2
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +11 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/dsl/context.d.ts +2 -2
- package/dist/dsl/context.d.ts.map +1 -1
- package/dist/dsl/context.js +14 -14
- package/dist/dsl/context.js.map +1 -1
- package/dist/dsl/hooks.d.ts +2 -2
- package/dist/dsl/hooks.js +1 -1
- package/dist/dsl/interaction.d.ts +3 -3
- package/dist/dsl/layers.d.ts +2 -2
- package/dist/dsl/motion.d.ts +2 -2
- package/dist/dsl/motion.js +2 -2
- package/dist/dsl/render.d.ts +2 -2
- package/dist/dsl/render.d.ts.map +1 -1
- package/dist/dsl/render.js +4 -8
- package/dist/dsl/render.js.map +1 -1
- package/dist/dsl/types.d.ts +11 -10
- package/dist/dsl/types.d.ts.map +1 -1
- package/dist/dsl/types.js.map +1 -1
- package/dist/dsl.d.ts +4 -4
- package/dist/dsl.js +3 -3
- package/dist/easing.d.ts +1 -1
- package/dist/geometry.d.ts +1 -1
- package/dist/geometry.js +1 -1
- package/dist/icons-full.d.ts +2 -2
- package/dist/icons-full.js +3 -3
- package/dist/icons.d.ts +4 -4
- package/dist/icons.js +3 -3
- package/dist/index.d.ts +45 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -24
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +18 -6
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +15 -6
- package/dist/layout.js.map +1 -1
- package/dist/pixels.d.ts +51 -0
- package/dist/pixels.d.ts.map +1 -0
- package/dist/pixels.js +82 -0
- package/dist/pixels.js.map +1 -0
- package/dist/render.d.ts +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +51 -11
- package/dist/render.js.map +1 -1
- package/dist/state.d.ts +4 -4
- package/dist/state.js +1 -1
- package/dist/theme.d.ts +2 -2
- package/dist/theme.js +1 -1
- package/dist/themes/catppuccin-mocha.d.ts +1 -1
- package/dist/themes/catppuccin-mocha.js +1 -1
- package/dist/themes/dracula.d.ts +1 -1
- package/dist/themes/dracula.js +1 -1
- package/dist/themes/github-light.d.ts +1 -1
- package/dist/themes/github-light.js +1 -1
- package/dist/themes/index.d.ts +7 -7
- package/dist/themes/index.js +6 -6
- package/dist/themes/nord.d.ts +1 -1
- package/dist/themes/nord.js +1 -1
- package/dist/themes/one-dark-pro.d.ts +1 -1
- package/dist/themes/one-dark-pro.js +1 -1
- package/dist/themes/tokyo-night.d.ts +1 -1
- package/dist/themes/tokyo-night.js +1 -1
- package/dist/utils.d.ts +6 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +68 -3
- package/dist/utils.js.map +1 -1
- package/llms.txt +4 -2
- package/package.json +8 -4
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { Box } from "../components/index.js";
|
|
2
|
+
import {
|
|
3
|
+
ICON_MAP,
|
|
4
|
+
joinHorizontal,
|
|
5
|
+
box as renderBox,
|
|
6
|
+
splitRect,
|
|
7
|
+
truncate
|
|
8
|
+
} from "../index.js";
|
|
9
|
+
import { demo } from "./demo-layout.js";
|
|
10
|
+
const PALETTE = [
|
|
11
|
+
"bunti-blue",
|
|
12
|
+
"sky",
|
|
13
|
+
"plasma",
|
|
14
|
+
"rose",
|
|
15
|
+
"gold",
|
|
16
|
+
"mint",
|
|
17
|
+
"success",
|
|
18
|
+
"warning",
|
|
19
|
+
"error"
|
|
20
|
+
];
|
|
21
|
+
const BORDERS = ["default", "rounded", "double", "dashed", "frame"];
|
|
22
|
+
demo("SHOWCASE", (ctx, bounds) => {
|
|
23
|
+
const { color, gradient, icon } = ctx;
|
|
24
|
+
const width = Math.min(bounds.w - 4, 104);
|
|
25
|
+
const shell = bounds.place({
|
|
26
|
+
y: 0,
|
|
27
|
+
width,
|
|
28
|
+
height: Math.min(bounds.h, 27)
|
|
29
|
+
});
|
|
30
|
+
const [left, right] = splitRect(shell, {
|
|
31
|
+
direction: "horizontal",
|
|
32
|
+
constraints: ["44%", "1fr"],
|
|
33
|
+
gap: 2
|
|
34
|
+
});
|
|
35
|
+
const [palette, layout] = splitRect(left, {
|
|
36
|
+
direction: "vertical",
|
|
37
|
+
constraints: [11, "1fr"],
|
|
38
|
+
gap: 1
|
|
39
|
+
});
|
|
40
|
+
const [frames, textLab, iconLab] = splitRect(right, {
|
|
41
|
+
direction: "vertical",
|
|
42
|
+
constraints: [8, 9, "1fr"],
|
|
43
|
+
gap: 1
|
|
44
|
+
});
|
|
45
|
+
Box(ctx, {
|
|
46
|
+
x: palette?.x,
|
|
47
|
+
y: palette?.y,
|
|
48
|
+
width: palette?.width,
|
|
49
|
+
height: palette?.height,
|
|
50
|
+
border: "rounded",
|
|
51
|
+
borderColor: "bunti-blue",
|
|
52
|
+
padding: [1, 2]
|
|
53
|
+
}, ({ text }) => {
|
|
54
|
+
text(color.fg("bunti-blue", color.bold(`COLOR SYSTEM
|
|
55
|
+
`)));
|
|
56
|
+
for (const [index, name] of PALETTE.entries()) {
|
|
57
|
+
if (index > 0 && index % 3 === 0)
|
|
58
|
+
text(`
|
|
59
|
+
`);
|
|
60
|
+
text(color.dim(name.padEnd(12)));
|
|
61
|
+
text(color.fg(name, "████"));
|
|
62
|
+
text(" ");
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
Box(ctx, {
|
|
66
|
+
x: layout?.x,
|
|
67
|
+
y: layout?.y,
|
|
68
|
+
width: layout?.width,
|
|
69
|
+
height: layout?.height,
|
|
70
|
+
border: "rounded",
|
|
71
|
+
borderColor: "mint",
|
|
72
|
+
padding: [1, 2]
|
|
73
|
+
}, ({ text }) => {
|
|
74
|
+
text(color.fg("mint", color.bold(`RECT LAYOUT
|
|
75
|
+
|
|
76
|
+
`)));
|
|
77
|
+
text(color.dim(`splitRect: fixed + percent + fill tracks
|
|
78
|
+
|
|
79
|
+
`));
|
|
80
|
+
const tracks = splitRect({ x: 0, y: 0, width: Math.max(1, (layout?.width ?? 8) - 6), height: 3 }, {
|
|
81
|
+
direction: "horizontal",
|
|
82
|
+
constraints: [8, "35%", "1fr"],
|
|
83
|
+
gap: 1
|
|
84
|
+
});
|
|
85
|
+
const blocks = tracks.map((track, index) => renderBox(color.fg("white", index === 0 ? "8 cols" : index === 1 ? "35%" : "fill"), {
|
|
86
|
+
width: track.width,
|
|
87
|
+
height: track.height,
|
|
88
|
+
border: "none",
|
|
89
|
+
bgColor: index === 0 ? "ocean" : index === 1 ? "nebula" : "plasma",
|
|
90
|
+
align: "center",
|
|
91
|
+
valign: "middle"
|
|
92
|
+
}));
|
|
93
|
+
text(joinHorizontal(...blocks));
|
|
94
|
+
text(`
|
|
95
|
+
|
|
96
|
+
`);
|
|
97
|
+
text(color.dim("Content stays inside the assigned Rect."));
|
|
98
|
+
});
|
|
99
|
+
Box(ctx, {
|
|
100
|
+
x: frames?.x,
|
|
101
|
+
y: frames?.y,
|
|
102
|
+
width: frames?.width,
|
|
103
|
+
height: frames?.height,
|
|
104
|
+
border: "rounded",
|
|
105
|
+
borderColor: "plasma",
|
|
106
|
+
padding: [1, 2]
|
|
107
|
+
}, ({ text }) => {
|
|
108
|
+
text(color.fg("plasma", color.bold(`BORDERS + DEPTH
|
|
109
|
+
|
|
110
|
+
`)));
|
|
111
|
+
const cells = splitRect({ x: 0, y: 3, width: Math.max(1, (frames?.width ?? 8) - 6), height: 3 }, {
|
|
112
|
+
direction: "horizontal",
|
|
113
|
+
constraints: BORDERS.map(() => "1fr"),
|
|
114
|
+
gap: 1
|
|
115
|
+
});
|
|
116
|
+
const blocks = BORDERS.map((border, index) => {
|
|
117
|
+
const cell = cells[index];
|
|
118
|
+
return renderBox(color.fg("silver", truncate(border, Math.max(1, cell.width - 2))), {
|
|
119
|
+
width: cell.width,
|
|
120
|
+
height: cell.height,
|
|
121
|
+
border,
|
|
122
|
+
borderColor: index % 2 === 0 ? "silver" : "gold",
|
|
123
|
+
align: "center",
|
|
124
|
+
valign: "middle"
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
text(joinHorizontal(...blocks));
|
|
128
|
+
});
|
|
129
|
+
Box(ctx, {
|
|
130
|
+
x: textLab?.x,
|
|
131
|
+
y: textLab?.y,
|
|
132
|
+
width: textLab?.width,
|
|
133
|
+
height: textLab?.height,
|
|
134
|
+
border: "rounded",
|
|
135
|
+
borderColor: "gold",
|
|
136
|
+
padding: [1, 2]
|
|
137
|
+
}, ({ text, box }) => {
|
|
138
|
+
text(color.fg("gold", color.bold(`TEXT + GRADIENTS
|
|
139
|
+
|
|
140
|
+
`)));
|
|
141
|
+
const bar = gradient({
|
|
142
|
+
colors: ["sky", "plasma", "rose", "gold", "mint"],
|
|
143
|
+
direction: "horizontal",
|
|
144
|
+
steps: Math.max(1, (textLab?.width ?? 8) - 6)
|
|
145
|
+
});
|
|
146
|
+
box({
|
|
147
|
+
width: "100%",
|
|
148
|
+
height: 1,
|
|
149
|
+
border: "none",
|
|
150
|
+
bgColor: bar
|
|
151
|
+
}, () => {});
|
|
152
|
+
text(`
|
|
153
|
+
`);
|
|
154
|
+
text(color.fg("silver", "Wrapped text respects ANSI colors and terminal width without escape damage."));
|
|
155
|
+
});
|
|
156
|
+
Box(ctx, {
|
|
157
|
+
x: iconLab?.x,
|
|
158
|
+
y: iconLab?.y,
|
|
159
|
+
width: iconLab?.width,
|
|
160
|
+
height: iconLab?.height,
|
|
161
|
+
border: "rounded",
|
|
162
|
+
borderColor: "silver",
|
|
163
|
+
padding: [1, 2]
|
|
164
|
+
}, ({ text, table }) => {
|
|
165
|
+
text(color.fg("silver", color.bold(`ICONS + TABLES
|
|
166
|
+
|
|
167
|
+
`)));
|
|
168
|
+
const rows = Object.keys(ICON_MAP).slice(0, 12).reduce((acc, name, index) => {
|
|
169
|
+
const row = Math.floor(index / 3);
|
|
170
|
+
acc[row] ??= [];
|
|
171
|
+
acc[row].push(`${icon(name)} ${color.dim(name)}`);
|
|
172
|
+
return acc;
|
|
173
|
+
}, []);
|
|
174
|
+
table(rows, {
|
|
175
|
+
width: Math.max(1, (iconLab?.width ?? 8) - 6),
|
|
176
|
+
border: "none",
|
|
177
|
+
padding: [0, 1],
|
|
178
|
+
columns: [{ align: "left" }, { align: "left" }, { align: "left" }]
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
package/dist/demos/showcase.ts
CHANGED
package/dist/detect.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface TerminalCapabilities {
|
|
|
14
14
|
color: boolean;
|
|
15
15
|
}
|
|
16
16
|
/** Terminal emulators Bunti identifies from environment variables. */
|
|
17
|
-
export type TerminalApp = 'ghostty' | 'kitty' | 'wezterm' | 'iterm2' | 'alacritty' | 'vscode' | 'apple-terminal' | 'warp' | 'unknown';
|
|
17
|
+
export type TerminalApp = 'ghostty' | 'kitty' | 'wezterm' | 'iterm2' | 'alacritty' | 'vscode' | 'apple-terminal' | 'warp' | 'windows-terminal' | 'conhost' | 'mintty' | 'conemu' | 'jetbrains' | 'unknown';
|
|
18
18
|
/**
|
|
19
19
|
* Nerd Font availability policy:
|
|
20
20
|
* - 'yes': the terminal embeds Nerd Font symbols (Ghostty >= 1.2).
|
|
@@ -47,6 +47,16 @@ export interface TerminalProfile {
|
|
|
47
47
|
source: 'override' | 'env';
|
|
48
48
|
}
|
|
49
49
|
type Env = Record<string, string | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* The non-env facts detection depends on. Defaults to the running process;
|
|
52
|
+
* tests pass a fixed host so results don't vary with the machine.
|
|
53
|
+
*/
|
|
54
|
+
export interface HostInfo {
|
|
55
|
+
/** `process.platform` value, e.g. 'win32', 'darwin', 'linux'. */
|
|
56
|
+
platform: string;
|
|
57
|
+
/** `os.release()` value; on Windows '10.0.<build>'. */
|
|
58
|
+
release: string;
|
|
59
|
+
}
|
|
50
60
|
/**
|
|
51
61
|
* Color capability tiers, from full 24-bit RGB down to no color at all.
|
|
52
62
|
* `resolveColor()` quantizes RGB values to the active tier automatically.
|
|
@@ -65,9 +75,13 @@ export type ColorTier = 'truecolor' | '256' | '16' | 'mono';
|
|
|
65
75
|
* TERM_PROGRAM=ghostty, TERM=xterm-ghostty), kitty (KITTY_WINDOW_ID,
|
|
66
76
|
* TERM=xterm-kitty), WezTerm (WEZTERM_PANE, TERM_PROGRAM), iTerm2
|
|
67
77
|
* (TERM_PROGRAM=iTerm.app, LC_TERMINAL=iTerm2), Alacritty
|
|
68
|
-
* (ALACRITTY_WINDOW_ID, TERM=alacritty), VS Code, Apple Terminal, Warp
|
|
78
|
+
* (ALACRITTY_WINDOW_ID, TERM=alacritty), VS Code, Apple Terminal, Warp,
|
|
79
|
+
* JetBrains (TERMINAL_EMULATOR), mintty (TERM_PROGRAM), ConEmu
|
|
80
|
+
* (ConEmuANSI/ConEmuPID), Windows Terminal (WT_SESSION).
|
|
81
|
+
* 4. On Windows with no signal and no TERM: Windows Terminal on Windows 11
|
|
82
|
+
* (default-terminal handoff sets no env), conhost on older builds.
|
|
69
83
|
*/
|
|
70
|
-
export declare function identifyTerminal(env?: Env): TerminalProfile;
|
|
84
|
+
export declare function identifyTerminal(env?: Env, host?: HostInfo): TerminalProfile;
|
|
71
85
|
/**
|
|
72
86
|
* Pure tier detection from an environment map (defaults to process.env).
|
|
73
87
|
*
|
|
@@ -76,14 +90,17 @@ export declare function identifyTerminal(env?: Env): TerminalProfile;
|
|
|
76
90
|
* 2. TERM=dumb -> 'mono'.
|
|
77
91
|
* 3. COLORTERM=truecolor|24bit -> 'truecolor'.
|
|
78
92
|
* 4. An identified truecolor-capable app (ghostty, kitty, wezterm, iterm2,
|
|
79
|
-
* alacritty, vscode, warp
|
|
93
|
+
* alacritty, vscode, warp, windows-terminal, mintty, jetbrains) ->
|
|
94
|
+
* 'truecolor'. This also catches TERM values
|
|
80
95
|
* like xterm-kitty that the legacy TERM families would misclassify.
|
|
81
96
|
* 5. Known truecolor TERM_PROGRAM, or a truecolor/direct TERM -> 'truecolor'.
|
|
82
97
|
* 6. TERM containing "256color" -> '256'.
|
|
83
98
|
* 7. Legacy TERM families (xterm, screen, vt100, linux, ...) -> '16'.
|
|
84
|
-
* 8.
|
|
99
|
+
* 8. Windows console with no TERM -> by build, matching Node's
|
|
100
|
+
* getColorDepth(): >= 14931 'truecolor', >= 10586 '256', else '16'.
|
|
101
|
+
* 9. Otherwise -> 'truecolor' (optimistic: modern terminals rarely set hints).
|
|
85
102
|
*/
|
|
86
|
-
export declare function detectColorTier(env?: Env): ColorTier;
|
|
103
|
+
export declare function detectColorTier(env?: Env, host?: HostInfo): ColorTier;
|
|
87
104
|
/**
|
|
88
105
|
* Returns the active color tier. Detection runs lazily on first call and is
|
|
89
106
|
* cached; `setColorTier()` overrides it (used by ScreenOptions.colorTier and
|
|
@@ -99,6 +116,6 @@ export declare function setColorTier(tier?: ColorTier): void;
|
|
|
99
116
|
* Back-compat wrapper over `identifyTerminal()` returning the legacy
|
|
100
117
|
* TerminalCapabilities shape. Prefer `identifyTerminal()` / `ctx.terminal`.
|
|
101
118
|
*/
|
|
102
|
-
export declare function detectCapabilities(env?: Env): Promise<TerminalCapabilities>;
|
|
119
|
+
export declare function detectCapabilities(env?: Env, host?: HostInfo): Promise<TerminalCapabilities>;
|
|
103
120
|
export {};
|
|
104
121
|
//# sourceMappingURL=detect.d.ts.map
|
package/dist/detect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,gBAAgB,GAChB,MAAM,GACN,kBAAkB,GAClB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,IAAI,GAAG,aAAa,GAAG,YAAY,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,GAAG,EAAE,WAAW,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChC,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,UAAU,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,QAAQ,EAAE,cAAc,CAAC;IACzB,qEAAqE;IACrE,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;CAC5B;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAiBD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAkJ5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,GAAE,GAAwB,EAC7B,IAAI,GAAE,QAAwB,GAC7B,eAAe,CAcjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,GAAG,GAAE,GAAwB,EAC7B,IAAI,GAAE,QAAwB,GAC7B,SAAS,CA8BX;AAKD;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAIrC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,QAG5C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,GAAE,GAAwB,EAC7B,IAAI,GAAE,QAAwB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAQ/B"}
|
package/dist/detect.js
CHANGED
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
* truecolor, sync-output support, Nerd Font policy). No escape-sequence
|
|
7
7
|
* probes are sent; async handshakes are deliberately deferred.
|
|
8
8
|
*/
|
|
9
|
+
import { release } from 'node:os';
|
|
10
|
+
const currentHost = () => ({
|
|
11
|
+
platform: process.platform,
|
|
12
|
+
release: release(),
|
|
13
|
+
});
|
|
14
|
+
/** Windows build number from `os.release()` ('10.0.26100' -> 26100), else 0. */
|
|
15
|
+
function windowsBuild(host) {
|
|
16
|
+
if (host.platform !== 'win32')
|
|
17
|
+
return 0;
|
|
18
|
+
const [major = 0, , build = 0] = host.release.split('.').map(Number);
|
|
19
|
+
return major >= 10 ? build : 0;
|
|
20
|
+
}
|
|
21
|
+
/** First Windows 11 build; Windows Terminal is the default console from 22H2. */
|
|
22
|
+
const WIN11_BUILD = 22000;
|
|
9
23
|
/**
|
|
10
24
|
* TERM_PROGRAM values known to render 24-bit color but NOT part of the
|
|
11
25
|
* TerminalApp union (those are covered by app identification).
|
|
@@ -20,6 +34,9 @@ const TRUECOLOR_APPS = [
|
|
|
20
34
|
'alacritty',
|
|
21
35
|
'vscode',
|
|
22
36
|
'warp',
|
|
37
|
+
'windows-terminal',
|
|
38
|
+
'mintty',
|
|
39
|
+
'jetbrains',
|
|
23
40
|
];
|
|
24
41
|
/** Apps with known synchronized-output (mode 2026) support. */
|
|
25
42
|
const SYNC_OUTPUT_APPS = [
|
|
@@ -40,6 +57,11 @@ const NERD_FONT_POLICY = {
|
|
|
40
57
|
alacritty: 'assumed-yes',
|
|
41
58
|
vscode: 'assumed-no',
|
|
42
59
|
'apple-terminal': 'assumed-no',
|
|
60
|
+
'windows-terminal': 'assumed-no', // builtin glyphs cover box/powerline only
|
|
61
|
+
conhost: 'assumed-no',
|
|
62
|
+
mintty: 'assumed-no',
|
|
63
|
+
conemu: 'assumed-no',
|
|
64
|
+
jetbrains: 'assumed-no',
|
|
43
65
|
unknown: 'assumed-no',
|
|
44
66
|
};
|
|
45
67
|
/** The TERM_PROGRAM value each app announces (when it sets one at all). */
|
|
@@ -50,6 +72,7 @@ const TERM_PROGRAM_BY_APP = {
|
|
|
50
72
|
vscode: 'vscode',
|
|
51
73
|
'apple-terminal': 'Apple_Terminal',
|
|
52
74
|
warp: 'WarpTerminal',
|
|
75
|
+
mintty: 'mintty',
|
|
53
76
|
};
|
|
54
77
|
/**
|
|
55
78
|
* Identifies the terminal app, version, and multiplexer from env vars.
|
|
@@ -57,7 +80,7 @@ const TERM_PROGRAM_BY_APP = {
|
|
|
57
80
|
* checked alongside TERM_PROGRAM because they survive tmux/screen, whose
|
|
58
81
|
* inner TERM rewrites would otherwise mask the outer emulator.
|
|
59
82
|
*/
|
|
60
|
-
function detectApp(env) {
|
|
83
|
+
function detectApp(env, host) {
|
|
61
84
|
const term = env.TERM || '';
|
|
62
85
|
const termProgram = env.TERM_PROGRAM || '';
|
|
63
86
|
const multiplexer = env.TMUX
|
|
@@ -94,6 +117,26 @@ function detectApp(env) {
|
|
|
94
117
|
else if (termProgram === 'WarpTerminal') {
|
|
95
118
|
app = 'warp';
|
|
96
119
|
}
|
|
120
|
+
else if (env.TERMINAL_EMULATOR === 'JetBrains-JediTerm') {
|
|
121
|
+
app = 'jetbrains';
|
|
122
|
+
}
|
|
123
|
+
else if (termProgram === 'mintty') {
|
|
124
|
+
app = 'mintty';
|
|
125
|
+
}
|
|
126
|
+
else if (env.ConEmuANSI === 'ON' || env.ConEmuPID) {
|
|
127
|
+
app = 'conemu';
|
|
128
|
+
}
|
|
129
|
+
else if (env.WT_SESSION) {
|
|
130
|
+
// Checked after TERM_PROGRAM apps: WT_SESSION leaks into terminals
|
|
131
|
+
// launched from a Windows Terminal tab (e.g. VS Code).
|
|
132
|
+
app = 'windows-terminal';
|
|
133
|
+
}
|
|
134
|
+
else if (host.platform === 'win32' && !term) {
|
|
135
|
+
// No env signal at all. Windows Terminal sets no WT_SESSION when it
|
|
136
|
+
// takes over as the default console (microsoft/terminal#13006), which
|
|
137
|
+
// is the stock setup on Windows 11 22H2+; older builds open conhost.
|
|
138
|
+
app = windowsBuild(host) >= WIN11_BUILD ? 'windows-terminal' : 'conhost';
|
|
139
|
+
}
|
|
97
140
|
let version;
|
|
98
141
|
if (termProgram !== '' && termProgram === TERM_PROGRAM_BY_APP[app]) {
|
|
99
142
|
version = env.TERM_PROGRAM_VERSION || undefined;
|
|
@@ -101,6 +144,9 @@ function detectApp(env) {
|
|
|
101
144
|
else if (app === 'iterm2' && env.LC_TERMINAL === 'iTerm2') {
|
|
102
145
|
version = env.LC_TERMINAL_VERSION || undefined;
|
|
103
146
|
}
|
|
147
|
+
else if (app === 'conemu') {
|
|
148
|
+
version = env.ConEmuBuild || undefined;
|
|
149
|
+
}
|
|
104
150
|
return { app, version, multiplexer };
|
|
105
151
|
}
|
|
106
152
|
/**
|
|
@@ -128,14 +174,18 @@ function nerdFontOverride(env) {
|
|
|
128
174
|
* TERM_PROGRAM=ghostty, TERM=xterm-ghostty), kitty (KITTY_WINDOW_ID,
|
|
129
175
|
* TERM=xterm-kitty), WezTerm (WEZTERM_PANE, TERM_PROGRAM), iTerm2
|
|
130
176
|
* (TERM_PROGRAM=iTerm.app, LC_TERMINAL=iTerm2), Alacritty
|
|
131
|
-
* (ALACRITTY_WINDOW_ID, TERM=alacritty), VS Code, Apple Terminal, Warp
|
|
177
|
+
* (ALACRITTY_WINDOW_ID, TERM=alacritty), VS Code, Apple Terminal, Warp,
|
|
178
|
+
* JetBrains (TERMINAL_EMULATOR), mintty (TERM_PROGRAM), ConEmu
|
|
179
|
+
* (ConEmuANSI/ConEmuPID), Windows Terminal (WT_SESSION).
|
|
180
|
+
* 4. On Windows with no signal and no TERM: Windows Terminal on Windows 11
|
|
181
|
+
* (default-terminal handoff sets no env), conhost on older builds.
|
|
132
182
|
*/
|
|
133
|
-
export function identifyTerminal(env = process.env) {
|
|
134
|
-
const { app, version, multiplexer } = detectApp(env);
|
|
183
|
+
export function identifyTerminal(env = process.env, host = currentHost()) {
|
|
184
|
+
const { app, version, multiplexer } = detectApp(env, host);
|
|
135
185
|
const override = nerdFontOverride(env);
|
|
136
186
|
const profile = {
|
|
137
187
|
app,
|
|
138
|
-
truecolor: detectColorTier(env) === 'truecolor',
|
|
188
|
+
truecolor: detectColorTier(env, host) === 'truecolor',
|
|
139
189
|
syncOutput: SYNC_OUTPUT_APPS.includes(app),
|
|
140
190
|
nerdFont: override ?? NERD_FONT_POLICY[app],
|
|
141
191
|
source: override !== undefined ? 'override' : 'env',
|
|
@@ -154,14 +204,17 @@ export function identifyTerminal(env = process.env) {
|
|
|
154
204
|
* 2. TERM=dumb -> 'mono'.
|
|
155
205
|
* 3. COLORTERM=truecolor|24bit -> 'truecolor'.
|
|
156
206
|
* 4. An identified truecolor-capable app (ghostty, kitty, wezterm, iterm2,
|
|
157
|
-
* alacritty, vscode, warp
|
|
207
|
+
* alacritty, vscode, warp, windows-terminal, mintty, jetbrains) ->
|
|
208
|
+
* 'truecolor'. This also catches TERM values
|
|
158
209
|
* like xterm-kitty that the legacy TERM families would misclassify.
|
|
159
210
|
* 5. Known truecolor TERM_PROGRAM, or a truecolor/direct TERM -> 'truecolor'.
|
|
160
211
|
* 6. TERM containing "256color" -> '256'.
|
|
161
212
|
* 7. Legacy TERM families (xterm, screen, vt100, linux, ...) -> '16'.
|
|
162
|
-
* 8.
|
|
213
|
+
* 8. Windows console with no TERM -> by build, matching Node's
|
|
214
|
+
* getColorDepth(): >= 14931 'truecolor', >= 10586 '256', else '16'.
|
|
215
|
+
* 9. Otherwise -> 'truecolor' (optimistic: modern terminals rarely set hints).
|
|
163
216
|
*/
|
|
164
|
-
export function detectColorTier(env = process.env) {
|
|
217
|
+
export function detectColorTier(env = process.env, host = currentHost()) {
|
|
165
218
|
if (env.NO_COLOR !== undefined && env.NO_COLOR !== '')
|
|
166
219
|
return 'mono';
|
|
167
220
|
const term = env.TERM || '';
|
|
@@ -170,7 +223,7 @@ export function detectColorTier(env = process.env) {
|
|
|
170
223
|
const colorterm = (env.COLORTERM || '').toLowerCase();
|
|
171
224
|
if (colorterm === 'truecolor' || colorterm === '24bit')
|
|
172
225
|
return 'truecolor';
|
|
173
|
-
const { app } = detectApp(env);
|
|
226
|
+
const { app } = detectApp(env, host);
|
|
174
227
|
if (TRUECOLOR_APPS.includes(app))
|
|
175
228
|
return 'truecolor';
|
|
176
229
|
if (EXTRA_TRUECOLOR_PROGRAMS.includes(env.TERM_PROGRAM || '')) {
|
|
@@ -186,6 +239,14 @@ export function detectColorTier(env = process.env) {
|
|
|
186
239
|
if (/^(xterm|screen|tmux|vt(1|2)\d\d|rxvt|linux|ansi|cygwin)/.test(term)) {
|
|
187
240
|
return '16';
|
|
188
241
|
}
|
|
242
|
+
if (host.platform === 'win32' && !term) {
|
|
243
|
+
const build = windowsBuild(host);
|
|
244
|
+
if (build >= 14931)
|
|
245
|
+
return 'truecolor';
|
|
246
|
+
if (build >= 10586)
|
|
247
|
+
return '256';
|
|
248
|
+
return '16';
|
|
249
|
+
}
|
|
189
250
|
return 'truecolor';
|
|
190
251
|
}
|
|
191
252
|
let tierOverride;
|
|
@@ -215,13 +276,13 @@ export function setColorTier(tier) {
|
|
|
215
276
|
* Back-compat wrapper over `identifyTerminal()` returning the legacy
|
|
216
277
|
* TerminalCapabilities shape. Prefer `identifyTerminal()` / `ctx.terminal`.
|
|
217
278
|
*/
|
|
218
|
-
export async function detectCapabilities(env = process.env) {
|
|
219
|
-
const profile = identifyTerminal(env);
|
|
279
|
+
export async function detectCapabilities(env = process.env, host = currentHost()) {
|
|
280
|
+
const profile = identifyTerminal(env, host);
|
|
220
281
|
return {
|
|
221
282
|
nerdFont: profile.nerdFont === 'yes' || profile.nerdFont === 'assumed-yes',
|
|
222
283
|
glyphProtocol: profile.app === 'ghostty',
|
|
223
284
|
unicode: true,
|
|
224
|
-
color: detectColorTier(env) !== 'mono',
|
|
285
|
+
color: detectColorTier(env, host) !== 'mono',
|
|
225
286
|
};
|
|
226
287
|
}
|
|
227
288
|
//# sourceMappingURL=detect.js.map
|
package/dist/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
|
package/dist/diagnostics.d.ts
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* The icon engine's unknown-name warnings flow through the same buffer via
|
|
11
11
|
* registerHintFlusher(), so a session produces at most one hint block.
|
|
12
12
|
*/
|
|
13
|
-
import type { Rect } from './geometry';
|
|
14
|
-
import type { ScreenOptions } from './state';
|
|
13
|
+
import type { Rect } from './geometry.js';
|
|
14
|
+
import type { ScreenOptions } from './state.js';
|
|
15
15
|
/** Lazily produces extra hint lines at flush time (used by the icon engine). */
|
|
16
16
|
type HintFlusher = () => string[];
|
|
17
17
|
/** True when dev hints are disabled (NODE_ENV=production or BUNTI_NO_HINTS=1). */
|
|
@@ -49,6 +49,12 @@ export declare function hintInputReadWithoutKeyboard(options: ScreenOptions): vo
|
|
|
49
49
|
* piped stdin (CI, `echo | bun app.ts`, agent harnesses) is ignored.
|
|
50
50
|
*/
|
|
51
51
|
export declare function hintKeyboardStdinNotTTY(keyboardRequested: boolean, stdinIsTTY: boolean): void;
|
|
52
|
+
/**
|
|
53
|
+
* Hint: mouse requested in the classic Windows console. conhost reports
|
|
54
|
+
* clicks as MOUSE_EVENT input records, which Node/Bun stdin never sees;
|
|
55
|
+
* SGR mouse sequences only arrive through ConPTY (Windows Terminal, VS Code).
|
|
56
|
+
*/
|
|
57
|
+
export declare function hintMouseInConhost(mouseRequested: boolean, app: string | undefined): void;
|
|
52
58
|
/**
|
|
53
59
|
* Marks a frame boundary for keyless-hook tracking: compares the two most
|
|
54
60
|
* recent completed frames and hints once when the positional hook count
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,gFAAgF;AAChF,KAAK,WAAW,GAAG,MAAM,MAAM,EAAE,CAAC;AAMlC,kFAAkF;AAClF,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AASD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAG9D;AAED,sEAAsE;AACtE,wBAAgB,UAAU,IAAI,MAAM,CAOnC;AAED,mEAAmE;AACnE,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAID,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,CAqBpB;AAID;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAKzE;AAID;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,OAAO,EAC1B,UAAU,EAAE,OAAO,GAClB,IAAI,CAMN;AAgBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAsBlD;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,GAAG,UAAU,GAC5B,IAAI,CAKN;AAQD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,GAAG,IAAI,CAwBpE;AAID,6DAA6D;AAC7D,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,uEAAuE;AACvE,wBAAgB,YAAY,IAAI,IAAI,CAGnC"}
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,gFAAgF;AAChF,KAAK,WAAW,GAAG,MAAM,MAAM,EAAE,CAAC;AAMlC,kFAAkF;AAClF,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AASD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAG9D;AAED,sEAAsE;AACtE,wBAAgB,UAAU,IAAI,MAAM,CAOnC;AAED,mEAAmE;AACnE,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAID,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBtE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC3B,MAAM,GAAG,SAAS,CAqBpB;AAID;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAKzE;AAID;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,OAAO,EAC1B,UAAU,EAAE,OAAO,GAClB,IAAI,CAMN;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,OAAO,EACvB,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,IAAI,CAMN;AAgBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAsBlD;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,GAAG,UAAU,GAC5B,IAAI,CAKN;AAQD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,GAAG,IAAI,CAwBpE;AAID,6DAA6D;AAC7D,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,uEAAuE;AACvE,wBAAgB,YAAY,IAAI,IAAI,CAGnC"}
|
package/dist/diagnostics.js
CHANGED
|
@@ -136,6 +136,17 @@ export function hintKeyboardStdinNotTTY(keyboardRequested, stdinIsTTY) {
|
|
|
136
136
|
recordHint('keyboard requested but stdin is not a TTY (piped input is ignored); ' +
|
|
137
137
|
'run in a real terminal or PTY');
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Hint: mouse requested in the classic Windows console. conhost reports
|
|
141
|
+
* clicks as MOUSE_EVENT input records, which Node/Bun stdin never sees;
|
|
142
|
+
* SGR mouse sequences only arrive through ConPTY (Windows Terminal, VS Code).
|
|
143
|
+
*/
|
|
144
|
+
export function hintMouseInConhost(mouseRequested, app) {
|
|
145
|
+
if (!mouseRequested || app !== 'conhost')
|
|
146
|
+
return;
|
|
147
|
+
recordHint('mouse requested in the classic Windows console, which does not deliver ' +
|
|
148
|
+
'mouse input to Node/Bun; run in Windows Terminal or VS Code');
|
|
149
|
+
}
|
|
139
150
|
const hookLogs = new WeakMap();
|
|
140
151
|
const HOOK_DRIFT_HINT = 'conditional keyless useState detected — pass a stable string key';
|
|
141
152
|
/**
|
package/dist/diagnostics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;AAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;AACxC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,kFAAkF;AAClF,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,CAC5E,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,iBAAiB;QAAE,OAAO;IAC9B,iBAAiB,GAAG,IAAI,CAAC;IACzB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,eAAe,EAAE;QAAE,OAAO;IAC9B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,eAAe,EAAE,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAoB;IACtD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,2DAA2D,IAAI,IAAI,CAAC;AAC7E,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,UAAU;IACxB,IAAI,eAAe,EAAE;QAAE,OAAO;IAC9B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,GAAG;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,6DAA6D;AAE7D,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,GAAW;IAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC;IACxD,IAAI,IAAI,GAAa,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,IAAI,IAAI,GAAa,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM;gBAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,MAAM,GAAG,GAAG;YAAE,OAAO,GAAG,GAAG,CAAC,CAAC;QACjC,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,UAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,IAAwB,CAAC;IAC7B,IAAI,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,KAAa,CAAC;QAClB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,GAAG,SAAS,CAAC;YACjB,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAE5D;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAsB;IACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO;IAChE,UAAU,CACR,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED,4DAA4D;AAE5D;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,iBAA0B,EAC1B,UAAmB;IAEnB,IAAI,CAAC,iBAAiB,IAAI,UAAU;QAAE,OAAO;IAC7C,UAAU,CACR,sEAAsE;QACpE,+BAA+B,CAClC,CAAC;AACJ,CAAC;AAWD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAwB,CAAC;AAErD,MAAM,eAAe,GACnB,kEAAkE,CAAC;AAErE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,eAAe,EAAE;QAAE,OAAO;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,UAAU,CAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,UAAU,CAAC,eAAe,CAAC,CAAC;oBAC5B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,KAAa,EACb,IAA6B;IAE7B,IAAI,eAAe,EAAE;QAAE,OAAO;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACzB,CAAC;AAED,4EAA4E;AAE5E,mEAAmE;AAEnE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAyB;IAC5D,IAAI,mBAAmB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAC9D,IAAI,eAAe,EAAE;QAAE,OAAO;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACpB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,SAAS;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACpB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAC5C,IACE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;gBACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;gBACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;gBACpB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EACpB,CAAC;gBACD,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,UAAU,CACR,qEAAqE,CACtE,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,qBAAqB;AAErB,6DAA6D;AAC7D,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY;IAC1B,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,mBAAmB,GAAG,KAAK,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/dsl/context.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Bunti DSL context factories: the common per-closure context, the direct
|
|
3
3
|
* (screen-buffer) box renderer, and the top-level screen context.
|
|
4
4
|
*/
|
|
5
|
-
import type { ScreenState } from '../state';
|
|
6
|
-
import { type BuntiContext } from './types';
|
|
5
|
+
import type { ScreenState } from '../state.js';
|
|
6
|
+
import { type BuntiContext } from './types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Top-level Screen Context
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/dsl/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/dsl/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkDH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,UAAU,CAAC;AAkBvD,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,SAAS,CAAC;AAsxBjB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAgHpE"}
|
package/dist/dsl/context.js
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
* Bunti DSL context factories: the common per-closure context, the direct
|
|
3
3
|
* (screen-buffer) box renderer, and the top-level screen context.
|
|
4
4
|
*/
|
|
5
|
-
import { bg, contrastText, createGradient, darken, fade, fg, lighten, rgb, } from '../colors';
|
|
6
|
-
import { identifyTerminal } from '../detect';
|
|
7
|
-
import { beginHookFrame, hintInputReadWithoutKeyboard, hintOverlappingBoxes, } from '../diagnostics';
|
|
8
|
-
import { resolveRect as resolveGeometryRect, resolvePlacedRect, splitRect as splitGeometryRect, } from '../geometry';
|
|
9
|
-
import { icon, replaceEmojis } from '../icons';
|
|
10
|
-
import { dimRect, getWindow, joinHorizontal, joinVertical, blit as layoutBlit, box as layoutBox, gradient as layoutGradient, list as layoutList, table as layoutTable, viewport as layoutViewport, wallpaper as layoutWallpaper, measureBox, rect, resolveSize, } from '../layout';
|
|
11
|
-
import { darkTheme, resolveTheme, } from '../theme';
|
|
12
|
-
import { visibleWidth } from '../utils';
|
|
13
|
-
import { colors } from '../vendor/colors';
|
|
14
|
-
import { createHooks } from './hooks';
|
|
15
|
-
import { createInteraction } from './interaction';
|
|
16
|
-
import { compositeLayer, createLayerScreenState, layerContentBounds, } from './layers';
|
|
17
|
-
import { createMotion } from './motion';
|
|
18
|
-
import { KEYS, } from './types';
|
|
5
|
+
import { bg, contrastText, createGradient, darken, fade, fg, lighten, rgb, } from '../colors.js';
|
|
6
|
+
import { identifyTerminal } from '../detect.js';
|
|
7
|
+
import { beginHookFrame, hintInputReadWithoutKeyboard, hintOverlappingBoxes, } from '../diagnostics.js';
|
|
8
|
+
import { resolveRect as resolveGeometryRect, resolvePlacedRect, splitRect as splitGeometryRect, } from '../geometry.js';
|
|
9
|
+
import { icon, replaceEmojis } from '../icons.js';
|
|
10
|
+
import { dimRect, getWindow, joinHorizontal, joinVertical, blit as layoutBlit, box as layoutBox, gradient as layoutGradient, list as layoutList, table as layoutTable, viewport as layoutViewport, wallpaper as layoutWallpaper, measureBox, rect, resolveSize, } from '../layout.js';
|
|
11
|
+
import { darkTheme, resolveTheme, } from '../theme.js';
|
|
12
|
+
import { visibleWidth } from '../utils.js';
|
|
13
|
+
import { colors } from '../vendor/colors.js';
|
|
14
|
+
import { createHooks } from './hooks.js';
|
|
15
|
+
import { createInteraction } from './interaction.js';
|
|
16
|
+
import { compositeLayer, createLayerScreenState, layerContentBounds, } from './layers.js';
|
|
17
|
+
import { createMotion } from './motion.js';
|
|
18
|
+
import { KEYS, } from './types.js';
|
|
19
19
|
/** Luminance scale applied by layer drop shadows at composite time. */
|
|
20
20
|
const LAYER_SHADOW_DIM = 0.45;
|
|
21
21
|
function pushHitboxFrame(dslState) {
|