linecraft 0.2.5 → 0.2.6
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 +59 -21
- package/README.md +10 -1
- package/lib/components/code-debug.d.ts.map +1 -1
- package/lib/components/code-debug.js +33 -63
- package/lib/components/code-debug.js.map +1 -1
- package/lib/components/code-debug.test.js +11 -19
- package/lib/components/code-debug.test.js.map +1 -1
- package/lib/components/fill.d.ts +2 -1
- package/lib/components/fill.d.ts.map +1 -1
- package/lib/components/fill.js.map +1 -1
- package/lib/components/progress-bar-grid.d.ts.map +1 -1
- package/lib/components/progress-bar-grid.js +5 -3
- package/lib/components/progress-bar-grid.js.map +1 -1
- package/lib/components/prompt.js +1 -1
- package/lib/components/prompt.js.map +1 -1
- package/lib/components/section.js +1 -1
- package/lib/components/section.js.map +1 -1
- package/lib/components/segments.js +4 -4
- package/lib/components/segments.js.map +1 -1
- package/lib/components/spinner.d.ts +2 -1
- package/lib/components/spinner.d.ts.map +1 -1
- package/lib/components/spinner.js +1 -1
- package/lib/components/spinner.js.map +1 -1
- package/lib/components/styled.d.ts +3 -2
- package/lib/components/styled.d.ts.map +1 -1
- package/lib/components/styled.js +1 -1
- package/lib/components/styled.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/layout/grid.d.ts.map +1 -1
- package/lib/layout/grid.js +1 -2
- package/lib/layout/grid.js.map +1 -1
- package/lib/layout/grid.test.js +3 -3
- package/lib/layout/grid.test.js.map +1 -1
- package/lib/native/region.test.js +1 -1
- package/lib/native/region.test.js.map +1 -1
- package/lib/region-resize.test.js +3 -3
- package/lib/region-resize.test.js.map +1 -1
- package/lib/types.d.ts +6 -5
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/colors.d.ts.map +1 -1
- package/lib/utils/colors.js +50 -8
- package/lib/utils/colors.js.map +1 -1
- package/lib/utils/colors.test.js.map +1 -1
- package/lib/utils/debug-log.js +1 -1
- package/lib/utils/debug-log.js.map +1 -1
- package/lib/utils/terminal-theme.d.ts +17 -28
- package/lib/utils/terminal-theme.d.ts.map +1 -1
- package/lib/utils/terminal-theme.js +66 -38
- package/lib/utils/terminal-theme.js.map +1 -1
- package/lib/utils/text.d.ts.map +1 -1
- package/lib/utils/text.js +0 -52
- package/lib/utils/text.js.map +1 -1
- package/lib/utils/text.test.js +1 -1
- package/lib/utils/text.test.js.map +1 -1
- package/lib/utils/wait-for-spacebar.js +1 -1
- package/lib/utils/wait-for-spacebar.js.map +1 -1
- package/package.json +8 -2
|
@@ -32,7 +32,7 @@ describe('Region resize and reflow', () => {
|
|
|
32
32
|
const longText = 'This is a very long line that will wrap when the terminal is narrow but not when it is wide';
|
|
33
33
|
region.set(Styled({}, longText));
|
|
34
34
|
// Add a prompt (static lines)
|
|
35
|
-
const
|
|
35
|
+
const _promptSection = region.add(['', 'Press SPACEBAR to continue...']);
|
|
36
36
|
// Simulate initial render at narrow width
|
|
37
37
|
mockStdout.columns = 40; // Narrow terminal
|
|
38
38
|
const renderer = region.renderer;
|
|
@@ -68,7 +68,7 @@ describe('Region resize and reflow', () => {
|
|
|
68
68
|
const component = Styled({}, 'Line 1\nLine 2\nLine 3\nLine 4');
|
|
69
69
|
region.set(component);
|
|
70
70
|
// Add prompt below
|
|
71
|
-
const
|
|
71
|
+
const _promptSection2 = region.add(['', 'Press SPACEBAR to continue...']);
|
|
72
72
|
// Simulate narrow terminal (content wraps to 4 lines)
|
|
73
73
|
mockStdout.columns = 20;
|
|
74
74
|
const renderer = region.renderer;
|
|
@@ -107,7 +107,7 @@ describe('Region resize and reflow', () => {
|
|
|
107
107
|
renderer.effectiveWidth = 40;
|
|
108
108
|
region.reRenderLastContent();
|
|
109
109
|
renderer.flush();
|
|
110
|
-
const
|
|
110
|
+
const _count1 = (writtenData.join('').match(/Press SPACEBAR/g) || []).length;
|
|
111
111
|
writtenData = [];
|
|
112
112
|
// Resize
|
|
113
113
|
mockStdout.columns = 120;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region-resize.test.js","sourceRoot":"","sources":["../src/region-resize.test.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,UAA8B,CAAC;IACnC,IAAI,WAAqB,CAAC;IAE1B,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,EAAE,CAAC;QACjB,UAAU,GAAG;YACX,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE;gBACvB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC;YACZ,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;YACb,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,GAAG,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;YAChC,MAAM,EAAE,UAAU;YAClB,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;QAEH,uDAAuD;QACvD,MAAM,QAAQ,GAAG,6FAA6F,CAAC;QAC/G,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEjC,8BAA8B;QAC9B,MAAM,
|
|
1
|
+
{"version":3,"file":"region-resize.test.js","sourceRoot":"","sources":["../src/region-resize.test.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AutoColor } from './utils/terminal-theme.js';
|
|
2
|
+
export type Color = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'gray' | 'grey' | 'white' | 'brightBlack' | 'brightRed' | 'brightGreen' | 'brightYellow' | 'brightBlue' | 'brightMagenta' | 'brightCyan' | 'brightWhite' | (string & {});
|
|
2
3
|
export interface TextStyle {
|
|
3
|
-
color?: Color;
|
|
4
|
-
backgroundColor?: Color;
|
|
4
|
+
color?: Color | AutoColor;
|
|
5
|
+
backgroundColor?: Color | AutoColor;
|
|
5
6
|
bold?: boolean;
|
|
6
7
|
dim?: boolean;
|
|
7
8
|
italic?: boolean;
|
|
@@ -37,12 +38,12 @@ export interface SpinnerOptions {
|
|
|
37
38
|
*/
|
|
38
39
|
export type FillChar = string | {
|
|
39
40
|
char: string;
|
|
40
|
-
color?: Color;
|
|
41
|
+
color?: Color | AutoColor;
|
|
41
42
|
};
|
|
42
43
|
/**
|
|
43
44
|
* Base options for all components - includes common styling props
|
|
44
45
|
*/
|
|
45
46
|
export interface BaseComponentOptions {
|
|
46
|
-
color?: Color;
|
|
47
|
+
color?: Color | AutoColor;
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,OAAO,GACP,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,aAAa,GACb,WAAW,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,MAAM,KAAK,GACb,OAAO,GACP,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,aAAa,GACb,WAAW,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,aAAa,GACb,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;CAAE,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAC;AAuE/C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAoDlE"}
|
package/lib/utils/colors.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isAutoColor, autoStyle } from './terminal-theme.js';
|
|
1
2
|
const ANSI_COLORS = {
|
|
2
3
|
black: '30',
|
|
3
4
|
red: '31',
|
|
@@ -15,6 +16,8 @@ const ANSI_COLORS = {
|
|
|
15
16
|
brightMagenta: '95',
|
|
16
17
|
brightCyan: '96',
|
|
17
18
|
brightWhite: '97',
|
|
19
|
+
gray: '90',
|
|
20
|
+
grey: '90',
|
|
18
21
|
};
|
|
19
22
|
const ANSI_BG_COLORS = {
|
|
20
23
|
black: '40',
|
|
@@ -33,27 +36,66 @@ const ANSI_BG_COLORS = {
|
|
|
33
36
|
brightMagenta: '105',
|
|
34
37
|
brightCyan: '106',
|
|
35
38
|
brightWhite: '107',
|
|
39
|
+
gray: '100',
|
|
40
|
+
grey: '100',
|
|
36
41
|
};
|
|
42
|
+
function getColorCode(color, isBackground = false) {
|
|
43
|
+
// Named ANSI colors
|
|
44
|
+
if (color in ANSI_COLORS && !isBackground) {
|
|
45
|
+
return ANSI_COLORS[color];
|
|
46
|
+
}
|
|
47
|
+
if (color in ANSI_BG_COLORS && isBackground) {
|
|
48
|
+
return ANSI_BG_COLORS[color];
|
|
49
|
+
}
|
|
50
|
+
// 256 colors: "5;N" where N is 0-255
|
|
51
|
+
if (/^\d+$/.test(color)) {
|
|
52
|
+
return `${isBackground ? '48' : '38'};5;${color}`;
|
|
53
|
+
}
|
|
54
|
+
// hex colors: "#RRGGBB"
|
|
55
|
+
if (/^#[0-9a-fA-F]{6}$/.test(color)) {
|
|
56
|
+
const r = parseInt(color.slice(1, 3), 16);
|
|
57
|
+
const g = parseInt(color.slice(3, 5), 16);
|
|
58
|
+
const b = parseInt(color.slice(5, 7), 16);
|
|
59
|
+
return `${isBackground ? '48' : '38'};2;${r};${g};${b}`;
|
|
60
|
+
}
|
|
61
|
+
// Fallback to basic white or ignore
|
|
62
|
+
return isBackground ? '40' : '37';
|
|
63
|
+
}
|
|
37
64
|
export function applyStyle(text, style) {
|
|
38
65
|
if (!style)
|
|
39
66
|
return text;
|
|
67
|
+
// Resolve semantic tokens if provided
|
|
68
|
+
let resolvedStyle = { ...style };
|
|
69
|
+
if (style.color && isAutoColor(style.color)) {
|
|
70
|
+
const semanticStyle = autoStyle(style.color);
|
|
71
|
+
// Merge semantic style (color, bold, dim, etc.) but let specific overrides in 'style' win
|
|
72
|
+
resolvedStyle = { ...semanticStyle, ...style };
|
|
73
|
+
// The 'color' property in resolvedStyle is currently the token name, resolve it to the actual color
|
|
74
|
+
resolvedStyle.color = semanticStyle.color;
|
|
75
|
+
}
|
|
76
|
+
if (style.backgroundColor && isAutoColor(style.backgroundColor)) {
|
|
77
|
+
const semanticBgStyle = autoStyle(style.backgroundColor);
|
|
78
|
+
resolvedStyle.backgroundColor = semanticBgStyle.color;
|
|
79
|
+
}
|
|
40
80
|
const codes = [];
|
|
41
|
-
if (
|
|
42
|
-
|
|
81
|
+
if (resolvedStyle.color) {
|
|
82
|
+
const code = getColorCode(resolvedStyle.color, false);
|
|
83
|
+
codes.push(code);
|
|
43
84
|
}
|
|
44
|
-
if (
|
|
45
|
-
|
|
85
|
+
if (resolvedStyle.backgroundColor) {
|
|
86
|
+
const bgCode = getColorCode(resolvedStyle.backgroundColor, true);
|
|
87
|
+
codes.push(bgCode);
|
|
46
88
|
}
|
|
47
|
-
if (
|
|
89
|
+
if (resolvedStyle.bold) {
|
|
48
90
|
codes.push('1');
|
|
49
91
|
}
|
|
50
|
-
if (
|
|
92
|
+
if (resolvedStyle.dim) {
|
|
51
93
|
codes.push('2'); // Dim/faint intensity
|
|
52
94
|
}
|
|
53
|
-
if (
|
|
95
|
+
if (resolvedStyle.italic) {
|
|
54
96
|
codes.push('3');
|
|
55
97
|
}
|
|
56
|
-
if (
|
|
98
|
+
if (resolvedStyle.underline) {
|
|
57
99
|
codes.push('4');
|
|
58
100
|
}
|
|
59
101
|
if (codes.length === 0) {
|
package/lib/utils/colors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.test.js","sourceRoot":"","sources":["../../src/utils/colors.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"colors.test.js","sourceRoot":"","sources":["../../src/utils/colors.test.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/debug-log.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug-log.js","sourceRoot":"","sources":["../../src/utils/debug-log.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,gEAAgE;AAEhE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,QAAQ;IACJ,MAAM,CAAC,QAAQ,GAAoB,IAAI,CAAC;IACxC,OAAO,CAAS;IAChB,OAAO,GAAY,KAAK,CAAC;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,IAAI,CAAC;YACH,gCAAgC;YAChC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,OAAO,EACZ,iKAAiK,CAClK,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"debug-log.js","sourceRoot":"","sources":["../../src/utils/debug-log.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,gEAAgE;AAEhE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,QAAQ;IACJ,MAAM,CAAC,QAAQ,GAAoB,IAAI,CAAC;IACxC,OAAO,CAAS;IAChB,OAAO,GAAY,KAAK,CAAC;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,IAAI,CAAC;YACH,gCAAgC;YAChC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,OAAO,EACZ,iKAAiK,CAClK,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;;AAGH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,37 +1,26 @@
|
|
|
1
|
+
import type { Color, TextStyle } from '../types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Detect if the terminal has a dark or light background
|
|
3
|
-
*
|
|
4
|
-
* Uses the COLORFGBG environment variable which has format "foreground;background"
|
|
5
|
-
* where background values 0-7 indicate dark background, 8-15 indicate light background.
|
|
6
|
-
*
|
|
7
|
-
* If COLORFGBG is not available, defaults to assuming dark background (most common).
|
|
8
|
-
*
|
|
9
|
-
* @returns true if terminal has dark background, false if light
|
|
10
4
|
*/
|
|
11
5
|
export declare function isDarkTerminal(): boolean;
|
|
12
6
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* On dark terminals: returns 'brightBlack' (will be dimmed for less contrast)
|
|
16
|
-
* On light terminals: returns 'black' (darker gray, less contrasty)
|
|
17
|
-
*
|
|
18
|
-
* These colors provide minimal contrast while remaining subtle and not distracting
|
|
19
|
-
* from the main code content. On dark terminals, the color should be applied with
|
|
20
|
-
* dim=true to reduce contrast further.
|
|
21
|
-
*
|
|
22
|
-
* @returns Color name suitable for line numbers
|
|
7
|
+
* Resolve a value based on the current terminal theme
|
|
23
8
|
*/
|
|
24
|
-
export declare function
|
|
9
|
+
export declare function resolveThemeColor<T>(colors: {
|
|
10
|
+
dark: T;
|
|
11
|
+
light: T;
|
|
12
|
+
}, forceTheme?: 'dark' | 'light'): T;
|
|
13
|
+
export type AutoColor = 'base' | 'muted' | 'highlight' | 'accent' | 'warning' | 'error' | 'info' | 'location' | 'success';
|
|
25
14
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* On dark terminals: returns 'blue' (muted, less contrasty blue)
|
|
29
|
-
* On light terminals: returns 'brightBlue' (muted, less contrasty blue)
|
|
30
|
-
*
|
|
31
|
-
* This provides a subtle, less contrasty color for line numbers that still
|
|
32
|
-
* has a blue shade, working well in both dark and light terminal themes.
|
|
33
|
-
*
|
|
34
|
-
* @returns Color name suitable for colored line numbers
|
|
15
|
+
* Checks if a string is a semantic auto-color token
|
|
35
16
|
*/
|
|
36
|
-
export declare function
|
|
17
|
+
export declare function isAutoColor(color: string): color is AutoColor;
|
|
18
|
+
/**
|
|
19
|
+
* Automatically picks the right ANSI color for a semantic token based on light/dark theme
|
|
20
|
+
*/
|
|
21
|
+
export declare function autoColor(token: AutoColor, override?: 'dark' | 'light'): Color;
|
|
22
|
+
/**
|
|
23
|
+
* Automatically picks the right full style for a semantic token
|
|
24
|
+
*/
|
|
25
|
+
export declare function autoStyle(token: AutoColor, override?: 'dark' | 'light'): TextStyle;
|
|
37
26
|
//# sourceMappingURL=terminal-theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-theme.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-theme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal-theme.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIpD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAkBxC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAC5B,CAAC,CAIH;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AA2C1H;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAE9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAGlF"}
|
|
@@ -1,62 +1,90 @@
|
|
|
1
1
|
// Terminal theme detection utilities
|
|
2
2
|
/**
|
|
3
3
|
* Detect if the terminal has a dark or light background
|
|
4
|
-
*
|
|
5
|
-
* Uses the COLORFGBG environment variable which has format "foreground;background"
|
|
6
|
-
* where background values 0-7 indicate dark background, 8-15 indicate light background.
|
|
7
|
-
*
|
|
8
|
-
* If COLORFGBG is not available, defaults to assuming dark background (most common).
|
|
9
|
-
*
|
|
10
|
-
* @returns true if terminal has dark background, false if light
|
|
11
4
|
*/
|
|
12
5
|
export function isDarkTerminal() {
|
|
6
|
+
if (process.env.TERMINAL_THEME === 'light')
|
|
7
|
+
return false;
|
|
8
|
+
if (process.env.TERMINAL_THEME === 'dark')
|
|
9
|
+
return true;
|
|
13
10
|
const colorfgbg = process.env.COLORFGBG;
|
|
14
11
|
if (!colorfgbg) {
|
|
15
|
-
// Default to dark (most terminals are dark)
|
|
16
12
|
return true;
|
|
17
13
|
}
|
|
18
|
-
// COLORFGBG format: "foreground;background" or just "background"
|
|
19
14
|
const parts = colorfgbg.split(';');
|
|
20
15
|
const background = parts.length > 1 ? parts[1] : parts[0];
|
|
21
16
|
const bgNum = parseInt(background, 10);
|
|
22
17
|
if (isNaN(bgNum)) {
|
|
23
|
-
// Can't parse, default to dark
|
|
24
18
|
return true;
|
|
25
19
|
}
|
|
26
|
-
// Background values 0-7 = dark, 8-15 = light
|
|
27
20
|
return bgNum < 8;
|
|
28
21
|
}
|
|
29
22
|
/**
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
* Resolve a value based on the current terminal theme
|
|
24
|
+
*/
|
|
25
|
+
export function resolveThemeColor(colors, forceTheme) {
|
|
26
|
+
if (forceTheme === 'dark')
|
|
27
|
+
return colors.dark;
|
|
28
|
+
if (forceTheme === 'light')
|
|
29
|
+
return colors.light;
|
|
30
|
+
return isDarkTerminal() ? colors.dark : colors.light;
|
|
31
|
+
}
|
|
32
|
+
const semanticPalette = {
|
|
33
|
+
base: {
|
|
34
|
+
dark: { color: 'gray' },
|
|
35
|
+
light: { color: 'gray' }
|
|
36
|
+
},
|
|
37
|
+
muted: {
|
|
38
|
+
dark: { color: 'white', dim: true },
|
|
39
|
+
light: { color: 'gray', dim: true }
|
|
40
|
+
},
|
|
41
|
+
highlight: {
|
|
42
|
+
dark: { color: 'white' },
|
|
43
|
+
light: { color: 'black', bold: true }
|
|
44
|
+
},
|
|
45
|
+
accent: {
|
|
46
|
+
dark: { color: 'blue', bold: true },
|
|
47
|
+
light: { color: 'blue', bold: true }
|
|
48
|
+
},
|
|
49
|
+
location: {
|
|
50
|
+
dark: { color: 'magenta' },
|
|
51
|
+
light: { color: 'magenta' }
|
|
52
|
+
},
|
|
53
|
+
success: {
|
|
54
|
+
dark: { color: 'brightGreen' },
|
|
55
|
+
light: { color: 'green' }
|
|
56
|
+
},
|
|
57
|
+
warning: {
|
|
58
|
+
dark: { color: 'brightYellow' },
|
|
59
|
+
light: { color: 'brightMagenta' }
|
|
60
|
+
},
|
|
61
|
+
error: {
|
|
62
|
+
dark: { color: 'brightRed' },
|
|
63
|
+
light: { color: 'red' }
|
|
64
|
+
},
|
|
65
|
+
info: {
|
|
66
|
+
dark: { color: 'blue' },
|
|
67
|
+
light: { color: 'blue' }
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
const autoColorSet = new Set(['base', 'muted', 'highlight', 'accent', 'warning', 'error', 'info', 'location', 'success']);
|
|
71
|
+
/**
|
|
72
|
+
* Checks if a string is a semantic auto-color token
|
|
73
|
+
*/
|
|
74
|
+
export function isAutoColor(color) {
|
|
75
|
+
return autoColorSet.has(color);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Automatically picks the right ANSI color for a semantic token based on light/dark theme
|
|
40
79
|
*/
|
|
41
|
-
export function
|
|
42
|
-
|
|
43
|
-
// On light terminals, use black (darker gray, less contrasty)
|
|
44
|
-
return isDarkTerminal() ? 'brightBlack' : 'black';
|
|
80
|
+
export function autoColor(token, override) {
|
|
81
|
+
return autoStyle(token, override).color;
|
|
45
82
|
}
|
|
46
83
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* On dark terminals: returns 'blue' (muted, less contrasty blue)
|
|
50
|
-
* On light terminals: returns 'brightBlue' (muted, less contrasty blue)
|
|
51
|
-
*
|
|
52
|
-
* This provides a subtle, less contrasty color for line numbers that still
|
|
53
|
-
* has a blue shade, working well in both dark and light terminal themes.
|
|
54
|
-
*
|
|
55
|
-
* @returns Color name suitable for colored line numbers
|
|
84
|
+
* Automatically picks the right full style for a semantic token
|
|
56
85
|
*/
|
|
57
|
-
export function
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return isDarkTerminal() ? 'blue' : 'brightBlue';
|
|
86
|
+
export function autoStyle(token, override) {
|
|
87
|
+
const choice = semanticPalette[token];
|
|
88
|
+
return resolveThemeColor(choice, override);
|
|
61
89
|
}
|
|
62
90
|
//# sourceMappingURL=terminal-theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-theme.js","sourceRoot":"","sources":["../../src/utils/terminal-theme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal-theme.js","sourceRoot":"","sources":["../../src/utils/terminal-theme.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB9C;AAwDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgCtE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuBlE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8BpE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsCrE;AAqBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CA8DR;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,wBAAwB,CAgK1B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAuK9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAGD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBtD;AA0GD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAyCrG"}
|
package/lib/utils/text.js
CHANGED
|
@@ -301,7 +301,6 @@ function extractVisibleRange(text, startCol, endCol) {
|
|
|
301
301
|
export function mapColumnToDisplay(originalText, truncatedText, visibleStartCol, visibleEndCol, originalCol, rangeStartCol, rangeEndCol) {
|
|
302
302
|
const truncatedPlain = stripAnsi(truncatedText);
|
|
303
303
|
const hasEllipsisStart = truncatedPlain.startsWith('...');
|
|
304
|
-
const hasEllipsisEnd = truncatedPlain.endsWith('...');
|
|
305
304
|
const ellipsisStartOffset = hasEllipsisStart ? 3 : 0;
|
|
306
305
|
// If we have range boundaries, use them for more accurate mapping
|
|
307
306
|
if (rangeStartCol !== undefined && rangeEndCol !== undefined) {
|
|
@@ -729,57 +728,6 @@ export function countVisibleChars(text) {
|
|
|
729
728
|
* Extract active ANSI codes and OSC 8 hyperlinks from text (all codes that are active at the end)
|
|
730
729
|
* Returns the ANSI escape sequences that should be applied to continue the styling
|
|
731
730
|
*/
|
|
732
|
-
/**
|
|
733
|
-
* Extract only SGR (color/style) codes, excluding OSC 8 hyperlinks
|
|
734
|
-
* Used for ellipsis styling where we want color but not hyperlinks
|
|
735
|
-
*/
|
|
736
|
-
function extractActiveSgrCodes(text) {
|
|
737
|
-
const codes = [];
|
|
738
|
-
let idx = 0;
|
|
739
|
-
while (idx < text.length) {
|
|
740
|
-
if (text[idx] === '\x1b' && idx + 1 < text.length && text[idx + 1] === '[') {
|
|
741
|
-
// Found ANSI SGR escape sequence
|
|
742
|
-
let end = idx + 2;
|
|
743
|
-
while (end < text.length && text[end] !== 'm') {
|
|
744
|
-
end++;
|
|
745
|
-
}
|
|
746
|
-
if (end < text.length) {
|
|
747
|
-
const code = text.substring(idx, end + 1);
|
|
748
|
-
// Check if it's a reset (0m) or a style code
|
|
749
|
-
if (code === '\x1b[0m') {
|
|
750
|
-
// Reset - clear all previous codes
|
|
751
|
-
codes.length = 0;
|
|
752
|
-
}
|
|
753
|
-
else {
|
|
754
|
-
// Style code - add it
|
|
755
|
-
codes.push(code);
|
|
756
|
-
}
|
|
757
|
-
idx = end + 1;
|
|
758
|
-
}
|
|
759
|
-
else {
|
|
760
|
-
idx++;
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
else if (text[idx] === '\x1b' && idx + 4 < text.length && text.substring(idx, idx + 4) === '\x1b]8;') {
|
|
764
|
-
// Skip OSC 8 hyperlink sequences (don't include in result)
|
|
765
|
-
let end = idx + 4;
|
|
766
|
-
while (end < text.length - 1) {
|
|
767
|
-
if (text[end] === '\x1b' && text[end + 1] === '\\') {
|
|
768
|
-
idx = end + 2;
|
|
769
|
-
break;
|
|
770
|
-
}
|
|
771
|
-
end++;
|
|
772
|
-
}
|
|
773
|
-
if (end >= text.length - 1) {
|
|
774
|
-
idx++;
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
else {
|
|
778
|
-
idx++;
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
return codes.join('');
|
|
782
|
-
}
|
|
783
731
|
function extractActiveAnsiCodes(text) {
|
|
784
732
|
const codes = [];
|
|
785
733
|
let idx = 0;
|