linecraft 0.4.0 → 0.5.1

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.
Files changed (110) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +3 -3
  3. package/lib/component.d.ts +34 -0
  4. package/lib/component.d.ts.map +1 -0
  5. package/lib/component.js +42 -0
  6. package/lib/component.js.map +1 -0
  7. package/lib/components/code-debug.d.ts +35 -0
  8. package/lib/components/code-debug.d.ts.map +1 -0
  9. package/lib/components/code-debug.js +294 -0
  10. package/lib/components/code-debug.js.map +1 -0
  11. package/lib/components/fill.d.ts +15 -0
  12. package/lib/components/fill.d.ts.map +1 -0
  13. package/lib/components/fill.js +37 -0
  14. package/lib/components/fill.js.map +1 -0
  15. package/lib/components/index.d.ts +2 -2
  16. package/lib/components/index.d.ts.map +1 -1
  17. package/lib/components/index.js +2 -2
  18. package/lib/components/index.js.map +1 -1
  19. package/lib/components/progress-bar-grid.d.ts +1 -1
  20. package/lib/components/progress-bar-grid.d.ts.map +1 -1
  21. package/lib/components/progress-bar-grid.js +6 -6
  22. package/lib/components/progress-bar-grid.js.map +1 -1
  23. package/lib/components/prompt.d.ts +4 -5
  24. package/lib/components/prompt.d.ts.map +1 -1
  25. package/lib/components/prompt.js +17 -69
  26. package/lib/components/prompt.js.map +1 -1
  27. package/lib/components/section.d.ts +33 -0
  28. package/lib/components/section.d.ts.map +1 -0
  29. package/lib/components/section.js +178 -0
  30. package/lib/components/section.js.map +1 -0
  31. package/lib/components/segments.d.ts +26 -0
  32. package/lib/components/segments.d.ts.map +1 -0
  33. package/lib/components/segments.js +105 -0
  34. package/lib/components/segments.js.map +1 -0
  35. package/lib/components/spinner.d.ts +18 -16
  36. package/lib/components/spinner.d.ts.map +1 -1
  37. package/lib/components/spinner.js +63 -47
  38. package/lib/components/spinner.js.map +1 -1
  39. package/lib/components/style.test.js +11 -11
  40. package/lib/components/style.test.js.map +1 -1
  41. package/lib/components/styled.d.ts +17 -0
  42. package/lib/components/styled.d.ts.map +1 -0
  43. package/lib/components/styled.js +107 -0
  44. package/lib/components/styled.js.map +1 -0
  45. package/lib/components/styled.test.d.ts +2 -0
  46. package/lib/components/styled.test.d.ts.map +1 -0
  47. package/lib/components/styled.test.js +135 -0
  48. package/lib/components/styled.test.js.map +1 -0
  49. package/lib/index.d.ts +17 -13
  50. package/lib/index.d.ts.map +1 -1
  51. package/lib/index.js +13 -13
  52. package/lib/index.js.map +1 -1
  53. package/lib/index.test.js +17 -11
  54. package/lib/index.test.js.map +1 -1
  55. package/lib/layout/grid.d.ts +31 -35
  56. package/lib/layout/grid.d.ts.map +1 -1
  57. package/lib/layout/grid.js +437 -216
  58. package/lib/layout/grid.js.map +1 -1
  59. package/lib/layout/grid.test.js +332 -36
  60. package/lib/layout/grid.test.js.map +1 -1
  61. package/lib/native/ansi.d.ts +9 -0
  62. package/lib/native/ansi.d.ts.map +1 -1
  63. package/lib/native/ansi.js +9 -0
  64. package/lib/native/ansi.js.map +1 -1
  65. package/lib/native/diff.d.ts +5 -1
  66. package/lib/native/diff.d.ts.map +1 -1
  67. package/lib/native/diff.js +25 -7
  68. package/lib/native/diff.js.map +1 -1
  69. package/lib/native/region-renderer-debug.test.d.ts +2 -0
  70. package/lib/native/region-renderer-debug.test.d.ts.map +1 -0
  71. package/lib/native/region-renderer-debug.test.js +45 -0
  72. package/lib/native/region-renderer-debug.test.js.map +1 -0
  73. package/lib/native/region-renderer.d.ts +57 -148
  74. package/lib/native/region-renderer.d.ts.map +1 -1
  75. package/lib/native/region-renderer.js +455 -1124
  76. package/lib/native/region-renderer.js.map +1 -1
  77. package/lib/native/region.test.js +2 -20
  78. package/lib/native/region.test.js.map +1 -1
  79. package/lib/region-resize.test.d.ts +2 -0
  80. package/lib/region-resize.test.d.ts.map +1 -0
  81. package/lib/region-resize.test.js +124 -0
  82. package/lib/region-resize.test.js.map +1 -0
  83. package/lib/region.d.ts +97 -9
  84. package/lib/region.d.ts.map +1 -1
  85. package/lib/region.js +591 -185
  86. package/lib/region.js.map +1 -1
  87. package/lib/region.test.js +3 -3
  88. package/lib/region.test.js.map +1 -1
  89. package/lib/types.d.ts +9 -0
  90. package/lib/types.d.ts.map +1 -1
  91. package/lib/utils/file-link.d.ts +16 -0
  92. package/lib/utils/file-link.d.ts.map +1 -0
  93. package/lib/utils/file-link.js +23 -0
  94. package/lib/utils/file-link.js.map +1 -0
  95. package/lib/utils/prompt.d.ts +15 -0
  96. package/lib/utils/prompt.d.ts.map +1 -0
  97. package/lib/utils/prompt.js +128 -0
  98. package/lib/utils/prompt.js.map +1 -0
  99. package/lib/utils/terminal-theme.d.ts +36 -0
  100. package/lib/utils/terminal-theme.d.ts.map +1 -0
  101. package/lib/utils/terminal-theme.js +61 -0
  102. package/lib/utils/terminal-theme.js.map +1 -0
  103. package/lib/utils/text.d.ts +53 -3
  104. package/lib/utils/text.d.ts.map +1 -1
  105. package/lib/utils/text.js +194 -36
  106. package/lib/utils/text.js.map +1 -1
  107. package/lib/utils/wait-for-spacebar.d.ts.map +1 -1
  108. package/lib/utils/wait-for-spacebar.js +9 -6
  109. package/lib/utils/wait-for-spacebar.js.map +1 -1
  110. package/package.json +15 -15
@@ -1,50 +1,66 @@
1
- const DEFAULT_SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
2
- export class Spinner {
3
- region;
4
- lineNumber; // 1-based
5
- frameIndex = 0;
6
- text = '';
7
- interval;
8
- isRunning = false;
9
- frames;
10
- intervalMs;
11
- constructor(region, lineNumber, options = {}) {
12
- this.region = region;
13
- this.lineNumber = lineNumber;
14
- this.frames = options.frames ?? DEFAULT_SPINNER_FRAMES;
15
- this.intervalMs = options.interval ?? 100;
16
- }
17
- start() {
18
- if (this.isRunning)
19
- return;
20
- this.isRunning = true;
21
- // Render immediately when starting
22
- this.render();
23
- this.interval = setInterval(() => {
24
- this.frameIndex = (this.frameIndex + 1) % this.frames.length;
25
- this.render();
26
- }, this.intervalMs);
27
- }
28
- stop() {
29
- if (!this.isRunning)
30
- return;
31
- this.isRunning = false;
32
- if (this.interval) {
33
- clearInterval(this.interval);
1
+ // Spinner component - manages its own animation state
2
+ import { applyStyle } from '../utils/colors';
3
+ // Built-in spinner frame definitions
4
+ const SPINNER_FRAMES = {
5
+ 'classic-dots': ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'], // Clockwise rotation with 3 connected dots
6
+ 'bouncing-bar': ['▁', '', '▃', '▄', '▅', '▆', '▇', '█', '▇', '▆', '▅', '▄', '▃', '▂'],
7
+ };
8
+ /**
9
+ * Create a spinner component that manages its own animation state
10
+ * Returns an object with render(), start(), and stop() methods
11
+ */
12
+ export function Spinner(options = {}) {
13
+ const { style, frames, interval = 80, color = 'yellow', autoStart = true, } = options;
14
+ // Determine which frames to use: custom frames override style
15
+ const finalFrames = frames ?? (style ? SPINNER_FRAMES[style] : ['⠇', '⠋', '⠙', '⠴', '⠋', '⠙', '⠸', '⠴', '⠦']);
16
+ let currentFrameIndex = 0;
17
+ let intervalId = null;
18
+ let onUpdateCallback = null;
19
+ let cleanupRegistered = false;
20
+ const render = (ctx) => {
21
+ // Store the onUpdate callback from context (set by region)
22
+ if (ctx.onUpdate && !onUpdateCallback) {
23
+ onUpdateCallback = ctx.onUpdate;
24
+ // Start automatically if enabled and callback is available
25
+ if (autoStart) {
26
+ start();
27
+ }
34
28
  }
35
- // Clear the spinner line
36
- this.region.setLine(this.lineNumber, '');
37
- }
38
- setText(text) {
39
- this.text = text;
40
- this.render();
41
- }
42
- render() {
43
- const frame = this.frames[this.frameIndex];
44
- const line = `${frame} ${this.text}`;
45
- // Just update the line - Zig handles batching and rendering
46
- this.region.setLine(this.lineNumber, line);
47
- // Spinner updates frequently, so Zig's throttling will handle smooth animation
48
- }
29
+ // Register cleanup callback to stop the interval when component is removed (only once)
30
+ if (ctx.onCleanup && !cleanupRegistered) {
31
+ cleanupRegistered = true;
32
+ ctx.onCleanup(() => {
33
+ stop();
34
+ });
35
+ }
36
+ const frame = finalFrames[currentFrameIndex];
37
+ if (color) {
38
+ return applyStyle(frame, { color });
39
+ }
40
+ return frame;
41
+ };
42
+ const start = () => {
43
+ if (intervalId !== null) {
44
+ return; // Already running
45
+ }
46
+ intervalId = setInterval(() => {
47
+ currentFrameIndex = (currentFrameIndex + 1) % finalFrames.length;
48
+ // Trigger re-render using the callback from RenderContext
49
+ if (onUpdateCallback) {
50
+ onUpdateCallback();
51
+ }
52
+ }, interval);
53
+ };
54
+ const stop = () => {
55
+ if (intervalId !== null) {
56
+ clearInterval(intervalId);
57
+ intervalId = null;
58
+ }
59
+ };
60
+ return {
61
+ render,
62
+ start,
63
+ stop,
64
+ };
49
65
  }
50
66
  //# sourceMappingURL=spinner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/components/spinner.ts"],"names":[],"mappings":"AAGA,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAElF,MAAM,OAAO,OAAO;IACV,MAAM,CAAiB;IACvB,UAAU,CAAS,CAAC,UAAU;IAC9B,UAAU,GAAW,CAAC,CAAC;IACvB,IAAI,GAAW,EAAE,CAAC;IAClB,QAAQ,CAAkB;IAC1B,SAAS,GAAY,KAAK,CAAC;IAC3B,MAAM,CAAW;IACjB,UAAU,CAAS;IAE3B,YAAY,MAAsB,EAAE,UAAkB,EAAE,UAA0B,EAAE;QAClF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,sBAAsB,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IAC5C,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,mCAAmC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QACD,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAErC,4DAA4D;QAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3C,+EAA+E;IACjF,CAAC;CACF"}
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/components/spinner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach } from 'vitest';
2
- import { style } from './style';
2
+ import { Styled } from './styled';
3
3
  import { TerminalRegion } from '../region';
4
4
  describe('Style Component', () => {
5
5
  let region;
@@ -8,7 +8,7 @@ describe('Style Component', () => {
8
8
  });
9
9
  describe('basic styling', () => {
10
10
  it('should apply color', () => {
11
- const component = style({ color: 'red' }, 'Hello');
11
+ const component = Styled({ color: 'red' }, 'Hello');
12
12
  const result = component({
13
13
  availableWidth: 80,
14
14
  region: region,
@@ -19,7 +19,7 @@ describe('Style Component', () => {
19
19
  expect(result).toContain('\x1b[31m'); // ANSI red
20
20
  });
21
21
  it('should apply backgroundColor', () => {
22
- const component = style({ backgroundColor: 'blue' }, 'Hello');
22
+ const component = Styled({ backgroundColor: 'blue' }, 'Hello');
23
23
  const result = component({
24
24
  availableWidth: 80,
25
25
  region: region,
@@ -30,7 +30,7 @@ describe('Style Component', () => {
30
30
  expect(result).toContain('\x1b[44m'); // ANSI blue background
31
31
  });
32
32
  it('should apply bold', () => {
33
- const component = style({ bold: true }, 'Hello');
33
+ const component = Styled({ bold: true }, 'Hello');
34
34
  const result = component({
35
35
  availableWidth: 80,
36
36
  region: region,
@@ -42,7 +42,7 @@ describe('Style Component', () => {
42
42
  });
43
43
  describe('overflow handling', () => {
44
44
  it('should truncate with ellipsis-end', () => {
45
- const component = style({ overflow: 'ellipsis-end' }, 'This is a very long text');
45
+ const component = Styled({ overflow: 'ellipsis-end' }, 'This is a very long text');
46
46
  const result = component({
47
47
  availableWidth: 10,
48
48
  region: region,
@@ -54,7 +54,7 @@ describe('Style Component', () => {
54
54
  expect(plain.length).toBeLessThanOrEqual(10);
55
55
  });
56
56
  it('should truncate with ellipsis-start', () => {
57
- const component = style({ overflow: 'ellipsis-start' }, 'This is a very long text');
57
+ const component = Styled({ overflow: 'ellipsis-start' }, 'This is a very long text');
58
58
  const result = component({
59
59
  availableWidth: 10,
60
60
  region: region,
@@ -66,7 +66,7 @@ describe('Style Component', () => {
66
66
  expect(plain.length).toBeLessThanOrEqual(10);
67
67
  });
68
68
  it('should wrap text', () => {
69
- const component = style({ overflow: 'wrap' }, 'This is a very long text that should wrap');
69
+ const component = Styled({ overflow: 'wrap' }, 'This is a very long text that should wrap');
70
70
  const result = component({
71
71
  availableWidth: 10,
72
72
  region: region,
@@ -79,7 +79,7 @@ describe('Style Component', () => {
79
79
  });
80
80
  describe('when condition', () => {
81
81
  it('should return null when condition is false', () => {
82
- const component = style({ when: () => false }, 'Hello');
82
+ const component = Styled({ when: () => false }, 'Hello');
83
83
  const result = component({
84
84
  availableWidth: 80,
85
85
  region: region,
@@ -89,7 +89,7 @@ describe('Style Component', () => {
89
89
  expect(result).toBeNull();
90
90
  });
91
91
  it('should return content when condition is true', () => {
92
- const component = style({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
92
+ const component = Styled({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
93
93
  const result = component({
94
94
  availableWidth: 80,
95
95
  region: region,
@@ -99,7 +99,7 @@ describe('Style Component', () => {
99
99
  expect(result).toContain('Hello');
100
100
  });
101
101
  it('should check availableWidth in condition', () => {
102
- const component = style({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
102
+ const component = Styled({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
103
103
  const result1 = component({
104
104
  availableWidth: 40,
105
105
  region: region,
@@ -118,7 +118,7 @@ describe('Style Component', () => {
118
118
  });
119
119
  describe('multi-line content', () => {
120
120
  it('should apply styling to each line', () => {
121
- const component = style({ color: 'red' }, ['Line 1', 'Line 2']);
121
+ const component = Styled({ color: 'red' }, ['Line 1', 'Line 2']);
122
122
  const result = component({
123
123
  availableWidth: 80,
124
124
  region: region,
@@ -1 +1 @@
1
- {"version":3,"file":"style.test.js","sourceRoot":"","sources":["../../src/components/style.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.test.js","sourceRoot":"","sources":["../../src/components/style.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { RenderContext, Component } from '../component';
2
+ import type { Color } from '../types';
3
+ export interface StyleOptions {
4
+ color?: Color;
5
+ backgroundColor?: Color;
6
+ bold?: boolean;
7
+ italic?: boolean;
8
+ underline?: boolean;
9
+ overflow?: 'none' | 'ellipsis-end' | 'ellipsis-start' | 'ellipsis-middle' | 'wrap';
10
+ align?: 'left' | 'right' | 'center';
11
+ when?: (ctx: RenderContext) => boolean;
12
+ }
13
+ /**
14
+ * Styled component - applies styling and handles overflow
15
+ */
16
+ export declare function Styled(options: StyleOptions, content: string | string[] | Component): Component;
17
+ //# sourceMappingURL=styled.d.ts.map
@@ -0,0 +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,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAItC,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,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,CAyEX"}
@@ -0,0 +1,107 @@
1
+ // Style component for text styling and overflow handling
2
+ import { applyStyle } from '../utils/colors';
3
+ import { truncateEnd, truncateStart, truncateMiddle, wrapText } from '../utils/text';
4
+ /**
5
+ * Styled component - applies styling and handles overflow
6
+ */
7
+ export function Styled(options, content) {
8
+ return (ctx) => {
9
+ // Check when condition
10
+ if (options.when && !options.when(ctx)) {
11
+ return null;
12
+ }
13
+ // Get content
14
+ let text;
15
+ if (typeof content === 'string' || Array.isArray(content)) {
16
+ text = content;
17
+ }
18
+ else {
19
+ // It's a component - render it
20
+ const result = content(ctx);
21
+ if (result === null)
22
+ return null;
23
+ text = result;
24
+ }
25
+ // Handle overflow
26
+ const overflow = options.overflow ?? 'wrap';
27
+ const availableWidth = Math.max(0, ctx.availableWidth);
28
+ const alignMode = options.align ?? 'left';
29
+ const styleOptions = {
30
+ color: options.color,
31
+ backgroundColor: options.backgroundColor,
32
+ bold: options.bold,
33
+ italic: options.italic,
34
+ underline: options.underline,
35
+ };
36
+ const formatLines = (lines) => {
37
+ if (lines.length === 0) {
38
+ lines.push('');
39
+ }
40
+ const formatted = lines.map(line => {
41
+ const aligned = alignText(line, availableWidth, alignMode);
42
+ return applyStyle(aligned, styleOptions);
43
+ });
44
+ return formatted.length === 1 ? formatted[0] : formatted;
45
+ };
46
+ if (availableWidth === 0) {
47
+ return formatLines(['']);
48
+ }
49
+ if (typeof text === 'string') {
50
+ // Single line
51
+ let processed = text;
52
+ if (overflow === 'ellipsis-end' && processed.length > availableWidth) {
53
+ processed = truncateEnd(processed, availableWidth);
54
+ }
55
+ else if (overflow === 'ellipsis-start' && processed.length > availableWidth) {
56
+ processed = truncateStart(processed, availableWidth);
57
+ }
58
+ else if (overflow === 'ellipsis-middle' && processed.length > availableWidth) {
59
+ processed = truncateMiddle(processed, availableWidth);
60
+ }
61
+ else if (overflow === 'wrap' || overflow === 'none') {
62
+ const wrapped = wrapText(processed, availableWidth);
63
+ return formatLines(wrapped);
64
+ }
65
+ // Apply alignment
66
+ const aligned = alignText(processed, availableWidth, alignMode);
67
+ return applyStyle(aligned, styleOptions);
68
+ }
69
+ else {
70
+ // Array of strings - apply styling and alignment to each line
71
+ const lines = [];
72
+ for (const line of text) {
73
+ const wrapped = wrapText(line, availableWidth);
74
+ lines.push(...wrapped);
75
+ }
76
+ return formatLines(lines);
77
+ }
78
+ };
79
+ }
80
+ /**
81
+ * Align text within available width
82
+ */
83
+ function alignText(text, width, align) {
84
+ // Get plain text length (without ANSI codes)
85
+ const plainText = text.replace(/\x1b\[[0-9;]*m/g, '');
86
+ const textLength = plainText.length;
87
+ if (!Number.isFinite(width)) {
88
+ return text;
89
+ }
90
+ if (textLength >= width) {
91
+ return text; // No alignment needed if text is already at or exceeds width
92
+ }
93
+ const padding = width - textLength;
94
+ if (align === 'right') {
95
+ return ' '.repeat(padding) + text;
96
+ }
97
+ else if (align === 'center') {
98
+ const leftPad = Math.floor(padding / 2);
99
+ const rightPad = padding - leftPad;
100
+ return ' '.repeat(leftPad) + text + ' '.repeat(rightPad);
101
+ }
102
+ else {
103
+ // 'left' - default, no padding needed
104
+ return text + ' '.repeat(padding);
105
+ }
106
+ }
107
+ //# sourceMappingURL=styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../src/components/styled.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=styled.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled.test.d.ts","sourceRoot":"","sources":["../../src/components/styled.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,135 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { Styled } from './styled';
3
+ import { TerminalRegion } from '../region';
4
+ describe('Style Component', () => {
5
+ let region;
6
+ beforeEach(() => {
7
+ region = new TerminalRegion({ disableRendering: true, width: 80 });
8
+ });
9
+ describe('basic styling', () => {
10
+ it('should apply color', () => {
11
+ const component = Styled({ color: 'red' }, 'Hello');
12
+ const result = component({
13
+ availableWidth: 80,
14
+ region: region,
15
+ columnIndex: 0,
16
+ rowIndex: 0,
17
+ });
18
+ expect(result).toContain('Hello');
19
+ expect(result).toContain('\x1b[31m'); // ANSI red
20
+ });
21
+ it('should apply backgroundColor', () => {
22
+ const component = Styled({ backgroundColor: 'blue' }, 'Hello');
23
+ const result = component({
24
+ availableWidth: 80,
25
+ region: region,
26
+ columnIndex: 0,
27
+ rowIndex: 0,
28
+ });
29
+ expect(result).toContain('Hello');
30
+ expect(result).toContain('\x1b[44m'); // ANSI blue background
31
+ });
32
+ it('should apply bold', () => {
33
+ const component = Styled({ bold: true }, 'Hello');
34
+ const result = component({
35
+ availableWidth: 80,
36
+ region: region,
37
+ columnIndex: 0,
38
+ rowIndex: 0,
39
+ });
40
+ expect(result).toContain('\x1b[1m'); // ANSI bold
41
+ });
42
+ });
43
+ describe('overflow handling', () => {
44
+ it('should truncate with ellipsis-end', () => {
45
+ const component = Styled({ overflow: 'ellipsis-end' }, 'This is a very long text');
46
+ const result = component({
47
+ availableWidth: 10,
48
+ region: region,
49
+ columnIndex: 0,
50
+ rowIndex: 0,
51
+ });
52
+ const plain = result.replace(/\x1b\[[0-9;]*m/g, '');
53
+ expect(plain).toMatch(/\.\.\.$/);
54
+ expect(plain.length).toBeLessThanOrEqual(10);
55
+ });
56
+ it('should truncate with ellipsis-start', () => {
57
+ const component = Styled({ overflow: 'ellipsis-start' }, 'This is a very long text');
58
+ const result = component({
59
+ availableWidth: 10,
60
+ region: region,
61
+ columnIndex: 0,
62
+ rowIndex: 0,
63
+ });
64
+ const plain = result.replace(/\x1b\[[0-9;]*m/g, '');
65
+ expect(plain).toMatch(/^\.\.\./);
66
+ expect(plain.length).toBeLessThanOrEqual(10);
67
+ });
68
+ it('should wrap text', () => {
69
+ const component = Styled({ overflow: 'wrap' }, 'This is a very long text that should wrap');
70
+ const result = component({
71
+ availableWidth: 10,
72
+ region: region,
73
+ columnIndex: 0,
74
+ rowIndex: 0,
75
+ });
76
+ expect(Array.isArray(result)).toBe(true);
77
+ expect(result.length).toBeGreaterThan(1);
78
+ });
79
+ });
80
+ describe('when condition', () => {
81
+ it('should return null when condition is false', () => {
82
+ const component = Styled({ when: () => false }, 'Hello');
83
+ const result = component({
84
+ availableWidth: 80,
85
+ region: region,
86
+ columnIndex: 0,
87
+ rowIndex: 0,
88
+ });
89
+ expect(result).toBeNull();
90
+ });
91
+ it('should return content when condition is true', () => {
92
+ const component = Styled({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
93
+ const result = component({
94
+ availableWidth: 80,
95
+ region: region,
96
+ columnIndex: 0,
97
+ rowIndex: 0,
98
+ });
99
+ expect(result).toContain('Hello');
100
+ });
101
+ it('should check availableWidth in condition', () => {
102
+ const component = Styled({ when: (ctx) => ctx.availableWidth > 50 }, 'Hello');
103
+ const result1 = component({
104
+ availableWidth: 40,
105
+ region: region,
106
+ columnIndex: 0,
107
+ rowIndex: 0,
108
+ });
109
+ expect(result1).toBeNull();
110
+ const result2 = component({
111
+ availableWidth: 60,
112
+ region: region,
113
+ columnIndex: 0,
114
+ rowIndex: 0,
115
+ });
116
+ expect(result2).toContain('Hello');
117
+ });
118
+ });
119
+ describe('multi-line content', () => {
120
+ it('should apply styling to each line', () => {
121
+ const component = Styled({ color: 'red' }, ['Line 1', 'Line 2']);
122
+ const result = component({
123
+ availableWidth: 80,
124
+ region: region,
125
+ columnIndex: 0,
126
+ rowIndex: 0,
127
+ });
128
+ expect(Array.isArray(result)).toBe(true);
129
+ expect(result.length).toBe(2);
130
+ expect(result[0]).toContain('Line 1');
131
+ expect(result[1]).toContain('Line 2');
132
+ });
133
+ });
134
+ });
135
+ //# sourceMappingURL=styled.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled.test.js","sourceRoot":"","sources":["../../src/components/styled.test.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,19 +1,23 @@
1
- export { TerminalRegion } from './region';
1
+ export { TerminalRegion, SectionReference, ComponentReference } from './region';
2
2
  export { getTerminalWidth, getTerminalHeight, isTTY, onResize } from './utils/terminal';
3
- export { grid, style } from './api/grid';
3
+ export { grid as Grid } from './layout/grid';
4
+ export { Styled } from './components/styled';
4
5
  export type { GridOptions } from './layout/grid';
5
- export type { StyleOptions } from './components/style';
6
- export { color } from './api/color';
7
- export { showPrompt } from './components/index';
8
- export type { RegionOptions, LineContent, TextStyle, Color, ProgressBarOptions, SpinnerOptions, } from './types';
6
+ export type { StyleOptions } from './components/styled';
7
+ export { fill } from './components/fill';
8
+ export type { FillOptions } from './components/fill';
9
+ export { Section, type SectionOptions } from './components/section';
10
+ export { Spinner, type SpinnerOptions } from './components/spinner';
11
+ export { Segments, type SegmentsOptions, type Segment } from './components/segments';
12
+ export { CodeDebug, type CodeDebugOptions, type CodeDebugType } from './components/code-debug';
13
+ export { prompt } from './utils/prompt';
14
+ export type { RegionOptions, LineContent, TextStyle, Color, ProgressBarOptions, } from './types';
9
15
  import { TerminalRegion } from './region';
10
- import { Spinner } from './components/spinner';
11
- import type { RegionOptions, SpinnerOptions } from './types';
16
+ import type { RegionOptions } from './types';
12
17
  import type { ProgressBarOptions as ProgressBarGridOptions } from './components/progress-bar-grid';
13
- export declare function region(options?: RegionOptions): TerminalRegion;
14
- export declare const createRegion: typeof region;
15
- export declare function progressBar(options: ProgressBarGridOptions): import("./layout/grid").Component;
18
+ export declare function Region(options?: RegionOptions): TerminalRegion;
19
+ export declare const region: typeof Region;
20
+ export declare const createRegion: typeof Region;
21
+ export declare function progressBar(options: ProgressBarGridOptions): import("./component").Component;
16
22
  export declare const createProgressBar: typeof progressBar;
17
- export declare function spinner(region: TerminalRegion, lineNumber: number, options?: SpinnerOptions): Spinner;
18
- export declare const createSpinner: typeof spinner;
19
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,KAAK,EACL,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAsB,cAAc,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAE9D;AAGD,eAAO,MAAM,YAAY,eAAS,CAAC;AAGnC,wBAAgB,WAAW,CAAC,OAAO,EAAE,sBAAsB,qCAE1D;AAGD,eAAO,MAAM,iBAAiB,oBAAc,CAAC;AAE7C,wBAAgB,OAAO,CACrB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAET;AAGD,eAAO,MAAM,aAAa,gBAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAExF,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,KAAK,EACL,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAE9D;AAGD,eAAO,MAAM,MAAM,eAAS,CAAC;AAC7B,eAAO,MAAM,YAAY,eAAS,CAAC;AAGnC,wBAAgB,WAAW,CAAC,OAAO,EAAE,sBAAsB,mCAE1D;AAGD,eAAO,MAAM,iBAAiB,oBAAc,CAAC"}