linecraft 0.2.3 → 0.2.5
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 +84 -7
- package/lib/components/code-debug.d.ts +7 -1
- package/lib/components/code-debug.d.ts.map +1 -1
- package/lib/components/code-debug.js +261 -232
- package/lib/components/code-debug.js.map +1 -1
- package/lib/components/code-debug.test.d.ts +2 -0
- package/lib/components/code-debug.test.d.ts.map +1 -0
- package/lib/components/code-debug.test.js +253 -0
- package/lib/components/code-debug.test.js.map +1 -0
- package/lib/components/progress-bar-grid.d.ts.map +1 -1
- package/lib/components/progress-bar-grid.js +2 -1
- package/lib/components/progress-bar-grid.js.map +1 -1
- package/lib/components/progress-bar-grid.test.js +8 -7
- package/lib/components/progress-bar-grid.test.js.map +1 -1
- package/lib/components/prompt.d.ts.map +1 -1
- package/lib/components/prompt.js +2 -1
- package/lib/components/prompt.js.map +1 -1
- package/lib/components/segments.d.ts.map +1 -1
- package/lib/components/segments.js +0 -7
- package/lib/components/segments.js.map +1 -1
- package/lib/components/style.test.js +12 -11
- package/lib/components/style.test.js.map +1 -1
- package/lib/components/styled.d.ts +1 -0
- package/lib/components/styled.d.ts.map +1 -1
- package/lib/components/styled.js +38 -8
- package/lib/components/styled.js.map +1 -1
- package/lib/components/styled.test.js +12 -11
- package/lib/components/styled.test.js.map +1 -1
- package/lib/layout/grid.d.ts +3 -2
- package/lib/layout/grid.d.ts.map +1 -1
- package/lib/layout/grid.js +166 -81
- package/lib/layout/grid.js.map +1 -1
- package/lib/layout/grid.test.js +70 -3
- package/lib/layout/grid.test.js.map +1 -1
- package/lib/native/diff.d.ts.map +1 -1
- package/lib/native/diff.js +2 -1
- package/lib/native/diff.js.map +1 -1
- package/lib/native/diff.test.js.map +1 -1
- package/lib/native/region-old.js +4 -4
- package/lib/native/region-old.js.map +1 -1
- package/lib/native/region-renderer.d.ts +3 -2
- package/lib/native/region-renderer.d.ts.map +1 -1
- package/lib/native/region-renderer.js +39 -9
- package/lib/native/region-renderer.js.map +1 -1
- package/lib/native/region-simple.d.ts.map +1 -1
- package/lib/native/region-simple.js +1 -1
- package/lib/native/region-simple.js.map +1 -1
- package/lib/region.d.ts +3 -3
- package/lib/region.d.ts.map +1 -1
- package/lib/region.js +15 -66
- package/lib/region.js.map +1 -1
- package/lib/types.d.ts +1 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/colors.d.ts.map +1 -1
- package/lib/utils/colors.js +3 -0
- package/lib/utils/colors.js.map +1 -1
- package/lib/utils/cursor-position.d.ts.map +1 -1
- package/lib/utils/cursor-position.js +4 -15
- package/lib/utils/cursor-position.js.map +1 -1
- package/lib/utils/prompt.js +3 -3
- package/lib/utils/prompt.js.map +1 -1
- package/lib/utils/terminal-theme.d.ts +5 -4
- package/lib/utils/terminal-theme.d.ts.map +1 -1
- package/lib/utils/terminal-theme.js +7 -6
- package/lib/utils/terminal-theme.js.map +1 -1
- package/lib/utils/text.d.ts +91 -2
- package/lib/utils/text.d.ts.map +1 -1
- package/lib/utils/text.js +765 -72
- package/lib/utils/text.js.map +1 -1
- package/lib/utils/text.test.d.ts +2 -0
- package/lib/utils/text.test.d.ts.map +1 -0
- package/lib/utils/text.test.js +237 -0
- package/lib/utils/text.test.js.map +1 -0
- package/lib/utils/wait-for-spacebar.d.ts.map +1 -1
- package/lib/utils/wait-for-spacebar.js +2 -9
- package/lib/utils/wait-for-spacebar.js.map +1 -1
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,CAAC;IACnF,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACrC,SAAS,CAsGX"}
|
package/lib/components/styled.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Style component for text styling and overflow handling
|
|
2
|
+
import { callComponent } from '../component.js';
|
|
2
3
|
import { applyStyle } from '../utils/colors.js';
|
|
3
|
-
import { truncateEnd, truncateStart, truncateMiddle, wrapText } from '../utils/text.js';
|
|
4
|
+
import { truncateEnd, truncateStart, truncateMiddle, wrapText, countVisibleChars } from '../utils/text.js';
|
|
4
5
|
/**
|
|
5
6
|
* Styled component - applies styling and handles overflow
|
|
6
7
|
*/
|
|
@@ -17,14 +18,17 @@ export function Styled(options, content) {
|
|
|
17
18
|
}
|
|
18
19
|
else {
|
|
19
20
|
// It's a component - render it
|
|
20
|
-
const result = content
|
|
21
|
+
const result = callComponent(content, ctx);
|
|
21
22
|
if (result === null)
|
|
22
23
|
return null;
|
|
23
24
|
text = result;
|
|
24
25
|
}
|
|
25
26
|
// Handle overflow
|
|
26
27
|
const overflow = options.overflow ?? 'wrap';
|
|
27
|
-
|
|
28
|
+
// Apply max width constraint if specified (content-based width up to max)
|
|
29
|
+
const availableWidth = Math.max(0, options.max !== undefined
|
|
30
|
+
? Math.min(ctx.availableWidth, options.max)
|
|
31
|
+
: ctx.availableWidth);
|
|
28
32
|
const alignMode = options.align ?? 'left';
|
|
29
33
|
const styleOptions = {
|
|
30
34
|
color: options.color,
|
|
@@ -39,6 +43,13 @@ export function Styled(options, content) {
|
|
|
39
43
|
}
|
|
40
44
|
const formatted = lines.map(line => {
|
|
41
45
|
const aligned = alignText(line, availableWidth, alignMode);
|
|
46
|
+
// Check if the line already has ANSI codes - if so, preserve them
|
|
47
|
+
const hasAnsiCodes = /\x1b\[[0-9;]*m/.test(aligned);
|
|
48
|
+
if (hasAnsiCodes) {
|
|
49
|
+
// Text already has styling - don't overwrite it, just return as-is
|
|
50
|
+
return aligned;
|
|
51
|
+
}
|
|
52
|
+
// No existing ANSI codes - apply the style options
|
|
42
53
|
return applyStyle(aligned, styleOptions);
|
|
43
54
|
});
|
|
44
55
|
return formatted.length === 1 ? formatted[0] : formatted;
|
|
@@ -49,13 +60,15 @@ export function Styled(options, content) {
|
|
|
49
60
|
if (typeof text === 'string') {
|
|
50
61
|
// Single line
|
|
51
62
|
let processed = text;
|
|
52
|
-
|
|
63
|
+
// Check visible width, not raw string length
|
|
64
|
+
const visibleWidth = countVisibleChars(processed);
|
|
65
|
+
if (overflow === 'ellipsis-end' && visibleWidth > availableWidth) {
|
|
53
66
|
processed = truncateEnd(processed, availableWidth);
|
|
54
67
|
}
|
|
55
|
-
else if (overflow === 'ellipsis-start' &&
|
|
68
|
+
else if (overflow === 'ellipsis-start' && visibleWidth > availableWidth) {
|
|
56
69
|
processed = truncateStart(processed, availableWidth);
|
|
57
70
|
}
|
|
58
|
-
else if (overflow === 'ellipsis-middle' &&
|
|
71
|
+
else if (overflow === 'ellipsis-middle' && visibleWidth > availableWidth) {
|
|
59
72
|
processed = truncateMiddle(processed, availableWidth);
|
|
60
73
|
}
|
|
61
74
|
else if (overflow === 'wrap' || overflow === 'none') {
|
|
@@ -64,14 +77,31 @@ export function Styled(options, content) {
|
|
|
64
77
|
}
|
|
65
78
|
// Apply alignment
|
|
66
79
|
const aligned = alignText(processed, availableWidth, alignMode);
|
|
80
|
+
// Check if the line already has ANSI codes - if so, preserve them
|
|
81
|
+
const hasAnsiCodes = /\x1b\[[0-9;]*m/.test(aligned);
|
|
82
|
+
if (hasAnsiCodes) {
|
|
83
|
+
// Text already has styling - don't overwrite it, just return as-is
|
|
84
|
+
return aligned;
|
|
85
|
+
}
|
|
86
|
+
// No existing ANSI codes - apply the style options
|
|
67
87
|
return applyStyle(aligned, styleOptions);
|
|
68
88
|
}
|
|
69
89
|
else {
|
|
70
90
|
// Array of strings - apply styling and alignment to each line
|
|
71
91
|
const lines = [];
|
|
72
92
|
for (const line of text) {
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
// Check if line already has ANSI codes
|
|
94
|
+
const hasAnsiCodes = /\x1b\[[0-9;]*m/.test(line);
|
|
95
|
+
if (hasAnsiCodes) {
|
|
96
|
+
// Already styled - wrap it preserving ANSI codes
|
|
97
|
+
const wrapped = wrapText(line, availableWidth);
|
|
98
|
+
lines.push(...wrapped);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// No ANSI codes - wrap and will be styled later
|
|
102
|
+
const wrapped = wrapText(line, availableWidth);
|
|
103
|
+
lines.push(...wrapped);
|
|
104
|
+
}
|
|
75
105
|
}
|
|
76
106
|
return formatLines(lines);
|
|
77
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.js","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"AAAA,yDAAyD;
|
|
1
|
+
{"version":3,"file":"styled.js","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
2
|
import { Styled } from './styled.js';
|
|
3
3
|
import { TerminalRegion } from '../region.js';
|
|
4
|
+
import { callComponent } from '../component.js';
|
|
4
5
|
describe('Style Component', () => {
|
|
5
6
|
let region;
|
|
6
7
|
beforeEach(() => {
|
|
@@ -9,7 +10,7 @@ describe('Style Component', () => {
|
|
|
9
10
|
describe('basic styling', () => {
|
|
10
11
|
it('should apply color', () => {
|
|
11
12
|
const component = Styled({ color: 'red' }, 'Hello');
|
|
12
|
-
const result = component
|
|
13
|
+
const result = callComponent(component, {
|
|
13
14
|
availableWidth: 80,
|
|
14
15
|
region: region,
|
|
15
16
|
columnIndex: 0,
|
|
@@ -20,7 +21,7 @@ describe('Style Component', () => {
|
|
|
20
21
|
});
|
|
21
22
|
it('should apply backgroundColor', () => {
|
|
22
23
|
const component = Styled({ backgroundColor: 'blue' }, 'Hello');
|
|
23
|
-
const result = component
|
|
24
|
+
const result = callComponent(component, {
|
|
24
25
|
availableWidth: 80,
|
|
25
26
|
region: region,
|
|
26
27
|
columnIndex: 0,
|
|
@@ -31,7 +32,7 @@ describe('Style Component', () => {
|
|
|
31
32
|
});
|
|
32
33
|
it('should apply bold', () => {
|
|
33
34
|
const component = Styled({ bold: true }, 'Hello');
|
|
34
|
-
const result = component
|
|
35
|
+
const result = callComponent(component, {
|
|
35
36
|
availableWidth: 80,
|
|
36
37
|
region: region,
|
|
37
38
|
columnIndex: 0,
|
|
@@ -43,7 +44,7 @@ describe('Style Component', () => {
|
|
|
43
44
|
describe('overflow handling', () => {
|
|
44
45
|
it('should truncate with ellipsis-end', () => {
|
|
45
46
|
const component = Styled({ overflow: 'ellipsis-end' }, 'This is a very long text');
|
|
46
|
-
const result = component
|
|
47
|
+
const result = callComponent(component, {
|
|
47
48
|
availableWidth: 10,
|
|
48
49
|
region: region,
|
|
49
50
|
columnIndex: 0,
|
|
@@ -55,7 +56,7 @@ describe('Style Component', () => {
|
|
|
55
56
|
});
|
|
56
57
|
it('should truncate with ellipsis-start', () => {
|
|
57
58
|
const component = Styled({ overflow: 'ellipsis-start' }, 'This is a very long text');
|
|
58
|
-
const result = component
|
|
59
|
+
const result = callComponent(component, {
|
|
59
60
|
availableWidth: 10,
|
|
60
61
|
region: region,
|
|
61
62
|
columnIndex: 0,
|
|
@@ -67,7 +68,7 @@ describe('Style Component', () => {
|
|
|
67
68
|
});
|
|
68
69
|
it('should wrap text', () => {
|
|
69
70
|
const component = Styled({ overflow: 'wrap' }, 'This is a very long text that should wrap');
|
|
70
|
-
const result = component
|
|
71
|
+
const result = callComponent(component, {
|
|
71
72
|
availableWidth: 10,
|
|
72
73
|
region: region,
|
|
73
74
|
columnIndex: 0,
|
|
@@ -80,7 +81,7 @@ describe('Style Component', () => {
|
|
|
80
81
|
describe('when condition', () => {
|
|
81
82
|
it('should return null when condition is false', () => {
|
|
82
83
|
const component = Styled({ when: () => false }, 'Hello');
|
|
83
|
-
const result = component
|
|
84
|
+
const result = callComponent(component, {
|
|
84
85
|
availableWidth: 80,
|
|
85
86
|
region: region,
|
|
86
87
|
columnIndex: 0,
|
|
@@ -90,7 +91,7 @@ describe('Style Component', () => {
|
|
|
90
91
|
});
|
|
91
92
|
it('should return content when condition is true', () => {
|
|
92
93
|
const component = Styled({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
|
|
93
|
-
const result = component
|
|
94
|
+
const result = callComponent(component, {
|
|
94
95
|
availableWidth: 80,
|
|
95
96
|
region: region,
|
|
96
97
|
columnIndex: 0,
|
|
@@ -100,14 +101,14 @@ describe('Style Component', () => {
|
|
|
100
101
|
});
|
|
101
102
|
it('should check availableWidth in condition', () => {
|
|
102
103
|
const component = Styled({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
|
|
103
|
-
const result1 = component
|
|
104
|
+
const result1 = callComponent(component, {
|
|
104
105
|
availableWidth: 40,
|
|
105
106
|
region: region,
|
|
106
107
|
columnIndex: 0,
|
|
107
108
|
rowIndex: 0,
|
|
108
109
|
});
|
|
109
110
|
expect(result1).toBeNull();
|
|
110
|
-
const result2 = component
|
|
111
|
+
const result2 = callComponent(component, {
|
|
111
112
|
availableWidth: 60,
|
|
112
113
|
region: region,
|
|
113
114
|
columnIndex: 0,
|
|
@@ -119,7 +120,7 @@ describe('Style Component', () => {
|
|
|
119
120
|
describe('multi-line content', () => {
|
|
120
121
|
it('should apply styling to each line', () => {
|
|
121
122
|
const component = Styled({ color: 'red' }, ['Line 1', 'Line 2']);
|
|
122
|
-
const result = component
|
|
123
|
+
const result = callComponent(component, {
|
|
123
124
|
availableWidth: 80,
|
|
124
125
|
region: region,
|
|
125
126
|
columnIndex: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled.test.js","sourceRoot":"","sources":["../../src/components/styled.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"styled.test.js","sourceRoot":"","sources":["../../src/components/styled.test.ts"],"names":[],"mappings":"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"}
|
package/lib/layout/grid.d.ts
CHANGED
|
@@ -4,8 +4,9 @@ import type { Component } from '../component.js';
|
|
|
4
4
|
* Grid template entry: fixed width, flex unit, or minmax
|
|
5
5
|
*/
|
|
6
6
|
export type GridTemplateEntry = number | 'auto' | '*' | `${number}*` | {
|
|
7
|
-
min
|
|
8
|
-
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
width?: string;
|
|
9
10
|
};
|
|
10
11
|
export interface GridOptions {
|
|
11
12
|
/** Explicit column definitions (like CSS grid-template-columns) */
|
package/lib/layout/grid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/layout/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/layout/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA6BhE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,MAAM,GACN,GAAG,GACH,GAAG,MAAM,GAAG,GACZ;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAE9B,0HAA0H;IAC1H,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAE/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAErC,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,eAAe,CAAC;CACxD;AAuSD;;;;GAIG;AACH,wBAAgB,IAAI,CAClB,OAAO,EAAE,WAAW,EACpB,GAAG,QAAQ,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,EAAE,GAC1D,SAAS,CA6fX"}
|