linecraft 0.1.0 → 0.2.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/LICENSE +1 -1
- package/README.md +313 -64
- package/lib/api/color.d.ts +6 -0
- package/lib/api/color.d.ts.map +1 -0
- package/lib/api/color.js +9 -0
- package/lib/api/color.js.map +1 -0
- package/lib/api/color.test.d.ts +2 -0
- package/lib/api/color.test.d.ts.map +1 -0
- package/lib/api/color.test.js +23 -0
- package/lib/api/color.test.js.map +1 -0
- package/lib/api/flex.d.ts +55 -0
- package/lib/api/flex.d.ts.map +1 -0
- package/lib/api/flex.js +86 -0
- package/lib/api/flex.js.map +1 -0
- package/lib/api/flex.test.d.ts +2 -0
- package/lib/api/flex.test.d.ts.map +1 -0
- package/lib/api/flex.test.js +82 -0
- package/lib/api/flex.test.js.map +1 -0
- package/lib/api/grid.d.ts +22 -0
- package/lib/api/grid.d.ts.map +1 -0
- package/lib/api/grid.js +65 -0
- package/lib/api/grid.js.map +1 -0
- package/lib/api/grid.test.d.ts +2 -0
- package/lib/api/grid.test.d.ts.map +1 -0
- package/lib/api/grid.test.js +48 -0
- package/lib/api/grid.test.js.map +1 -0
- package/lib/components/base.d.ts +53 -0
- package/lib/components/base.d.ts.map +1 -0
- package/lib/components/base.js +47 -0
- package/lib/components/base.js.map +1 -0
- package/lib/components/col.d.ts +35 -0
- package/lib/components/col.d.ts.map +1 -0
- package/lib/components/col.js +168 -0
- package/lib/components/col.js.map +1 -0
- package/lib/components/col.test.d.ts +2 -0
- package/lib/components/col.test.d.ts.map +1 -0
- package/lib/components/col.test.js +96 -0
- package/lib/components/col.test.js.map +1 -0
- package/lib/components/index.d.ts +3 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +5 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/progress-bar-grid.d.ts +20 -0
- package/lib/components/progress-bar-grid.d.ts.map +1 -0
- package/lib/components/progress-bar-grid.js +44 -0
- package/lib/components/progress-bar-grid.js.map +1 -0
- package/lib/components/progress-bar-grid.test.d.ts +2 -0
- package/lib/components/progress-bar-grid.test.d.ts.map +1 -0
- package/lib/components/progress-bar-grid.test.js +101 -0
- package/lib/components/progress-bar-grid.test.js.map +1 -0
- package/lib/components/progress-bar.d.ts +26 -3
- package/lib/components/progress-bar.d.ts.map +1 -1
- package/lib/components/progress-bar.js +62 -6
- package/lib/components/progress-bar.js.map +1 -1
- package/lib/components/progress-bar.test.d.ts +2 -0
- package/lib/components/progress-bar.test.d.ts.map +1 -0
- package/lib/components/progress-bar.test.js +153 -0
- package/lib/components/progress-bar.test.js.map +1 -0
- package/lib/components/prompt.d.ts +14 -0
- package/lib/components/prompt.d.ts.map +1 -0
- package/lib/components/prompt.js +77 -0
- package/lib/components/prompt.js.map +1 -0
- package/lib/components/renderable.d.ts +42 -0
- package/lib/components/renderable.d.ts.map +1 -0
- package/lib/components/renderable.js +225 -0
- package/lib/components/renderable.js.map +1 -0
- package/lib/components/spinner.d.ts +2 -2
- package/lib/components/spinner.d.ts.map +1 -1
- package/lib/components/spinner.js +3 -1
- package/lib/components/spinner.js.map +1 -1
- package/lib/components/spinner.test.d.ts +2 -0
- package/lib/components/spinner.test.d.ts.map +1 -0
- package/lib/components/spinner.test.js +168 -0
- package/lib/components/spinner.test.js.map +1 -0
- package/lib/components/style.d.ts +16 -0
- package/lib/components/style.d.ts.map +1 -0
- package/lib/components/style.js +72 -0
- package/lib/components/style.js.map +1 -0
- package/lib/components/style.test.d.ts +2 -0
- package/lib/components/style.test.d.ts.map +1 -0
- package/lib/components/style.test.js +135 -0
- package/lib/components/style.test.js.map +1 -0
- package/lib/components/text.d.ts +24 -0
- package/lib/components/text.d.ts.map +1 -0
- package/lib/components/text.js +65 -0
- package/lib/components/text.js.map +1 -0
- package/lib/drawing/boxes.d.ts +33 -0
- package/lib/drawing/boxes.d.ts.map +1 -0
- package/lib/drawing/boxes.js +76 -0
- package/lib/drawing/boxes.js.map +1 -0
- package/lib/index.d.ts +18 -11
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +21 -10
- package/lib/index.js.map +1 -1
- package/lib/index.test.d.ts +2 -0
- package/lib/index.test.d.ts.map +1 -0
- package/lib/index.test.js +80 -0
- package/lib/index.test.js.map +1 -0
- package/lib/layout/flex.d.ts +39 -0
- package/lib/layout/flex.d.ts.map +1 -0
- package/lib/layout/flex.js +300 -0
- package/lib/layout/flex.js.map +1 -0
- package/lib/layout/flex.test.d.ts +2 -0
- package/lib/layout/flex.test.d.ts.map +1 -0
- package/lib/layout/flex.test.js +206 -0
- package/lib/layout/flex.test.js.map +1 -0
- package/lib/layout/grid.d.ts +53 -0
- package/lib/layout/grid.d.ts.map +1 -0
- package/lib/layout/grid.js +421 -0
- package/lib/layout/grid.js.map +1 -0
- package/lib/layout/grid.test.d.ts +2 -0
- package/lib/layout/grid.test.d.ts.map +1 -0
- package/lib/layout/grid.test.js +139 -0
- package/lib/layout/grid.test.js.map +1 -0
- package/lib/native/ansi.d.ts +104 -0
- package/lib/native/ansi.d.ts.map +1 -0
- package/lib/native/ansi.js +120 -0
- package/lib/native/ansi.js.map +1 -0
- package/lib/native/ansi.test.d.ts +2 -0
- package/lib/native/ansi.test.d.ts.map +1 -0
- package/lib/native/ansi.test.js +57 -0
- package/lib/native/ansi.test.js.map +1 -0
- package/lib/native/buffer.d.ts +32 -0
- package/lib/native/buffer.d.ts.map +1 -0
- package/lib/native/buffer.js +49 -0
- package/lib/native/buffer.js.map +1 -0
- package/lib/native/buffer.test.d.ts +2 -0
- package/lib/native/buffer.test.d.ts.map +1 -0
- package/lib/native/buffer.test.js +64 -0
- package/lib/native/buffer.test.js.map +1 -0
- package/lib/native/diff.d.ts +20 -0
- package/lib/native/diff.d.ts.map +1 -0
- package/lib/native/diff.js +33 -0
- package/lib/native/diff.js.map +1 -0
- package/lib/native/diff.test.d.ts +2 -0
- package/lib/native/diff.test.d.ts.map +1 -0
- package/lib/native/diff.test.js +106 -0
- package/lib/native/diff.test.js.map +1 -0
- package/lib/native/region-old.d.ts +117 -0
- package/lib/native/region-old.d.ts.map +1 -0
- package/lib/native/region-old.js +539 -0
- package/lib/native/region-old.js.map +1 -0
- package/lib/native/region-renderer.d.ts +167 -0
- package/lib/native/region-renderer.d.ts.map +1 -0
- package/lib/native/region-renderer.js +1238 -0
- package/lib/native/region-renderer.js.map +1 -0
- package/lib/native/region-simple.d.ts +44 -0
- package/lib/native/region-simple.d.ts.map +1 -0
- package/lib/native/region-simple.js +290 -0
- package/lib/native/region-simple.js.map +1 -0
- package/lib/native/region.d.ts +53 -0
- package/lib/native/region.d.ts.map +1 -0
- package/lib/native/region.js +426 -0
- package/lib/native/region.js.map +1 -0
- package/lib/native/region.test.d.ts +2 -0
- package/lib/native/region.test.d.ts.map +1 -0
- package/lib/native/region.test.js +248 -0
- package/lib/native/region.test.js.map +1 -0
- package/lib/native/throttle.d.ts +29 -0
- package/lib/native/throttle.d.ts.map +1 -0
- package/lib/native/throttle.js +57 -0
- package/lib/native/throttle.js.map +1 -0
- package/lib/native/throttle.test.d.ts +2 -0
- package/lib/native/throttle.test.d.ts.map +1 -0
- package/lib/native/throttle.test.js +86 -0
- package/lib/native/throttle.test.js.map +1 -0
- package/lib/native.d.ts +5 -11
- package/lib/native.d.ts.map +1 -1
- package/lib/native.js +8 -64
- package/lib/native.js.map +1 -1
- package/lib/region.d.ts +48 -5
- package/lib/region.d.ts.map +1 -1
- package/lib/region.js +474 -36
- package/lib/region.js.map +1 -1
- package/lib/region.test.d.ts +2 -0
- package/lib/region.test.d.ts.map +1 -0
- package/lib/region.test.js +227 -0
- package/lib/region.test.js.map +1 -0
- package/lib/region.visual.test.d.ts +2 -0
- package/lib/region.visual.test.d.ts.map +1 -0
- package/lib/region.visual.test.js +55 -0
- package/lib/region.visual.test.js.map +1 -0
- package/lib/test-helpers/capturable-terminal.d.ts +61 -0
- package/lib/test-helpers/capturable-terminal.d.ts.map +1 -0
- package/lib/test-helpers/capturable-terminal.js +113 -0
- package/lib/test-helpers/capturable-terminal.js.map +1 -0
- package/lib/test-helpers/capturable-terminal.test.d.ts +2 -0
- package/lib/test-helpers/capturable-terminal.test.d.ts.map +1 -0
- package/lib/test-helpers/capturable-terminal.test.js +45 -0
- package/lib/test-helpers/capturable-terminal.test.js.map +1 -0
- package/lib/test-helpers/mock-region.d.ts +21 -0
- package/lib/test-helpers/mock-region.d.ts.map +1 -0
- package/lib/test-helpers/mock-region.js +37 -0
- package/lib/test-helpers/mock-region.js.map +1 -0
- package/lib/test-helpers/virtual-terminal-diff-reflow.test.d.ts +2 -0
- package/lib/test-helpers/virtual-terminal-diff-reflow.test.d.ts.map +1 -0
- package/lib/test-helpers/virtual-terminal-diff-reflow.test.js +256 -0
- package/lib/test-helpers/virtual-terminal-diff-reflow.test.js.map +1 -0
- package/lib/test-helpers/virtual-terminal-flex-resize.test.d.ts +2 -0
- package/lib/test-helpers/virtual-terminal-flex-resize.test.d.ts.map +1 -0
- package/lib/test-helpers/virtual-terminal-flex-resize.test.js +438 -0
- package/lib/test-helpers/virtual-terminal-flex-resize.test.js.map +1 -0
- package/lib/test-helpers/virtual-terminal.d.ts +176 -0
- package/lib/test-helpers/virtual-terminal.d.ts.map +1 -0
- package/lib/test-helpers/virtual-terminal.js +492 -0
- package/lib/test-helpers/virtual-terminal.js.map +1 -0
- package/lib/test-helpers/virtual-terminal.test.d.ts +2 -0
- package/lib/test-helpers/virtual-terminal.test.d.ts.map +1 -0
- package/lib/test-helpers/virtual-terminal.test.js +219 -0
- package/lib/test-helpers/virtual-terminal.test.js.map +1 -0
- package/lib/ts/components/spinner.test.d.ts +2 -0
- package/lib/ts/components/spinner.test.d.ts.map +1 -0
- package/lib/ts/components/spinner.test.js +168 -0
- package/lib/ts/components/spinner.test.js.map +1 -0
- package/lib/ts/utils/colors.test.d.ts +2 -0
- package/lib/ts/utils/colors.test.d.ts.map +1 -0
- package/lib/ts/utils/colors.test.js +87 -0
- package/lib/ts/utils/colors.test.js.map +1 -0
- package/lib/types.d.ts +8 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/colors-simple.d.ts +51 -0
- package/lib/utils/colors-simple.d.ts.map +1 -0
- package/lib/utils/colors-simple.js +59 -0
- package/lib/utils/colors-simple.js.map +1 -0
- package/lib/utils/colors.d.ts +1 -1
- package/lib/utils/colors.d.ts.map +1 -1
- package/lib/utils/colors.js.map +1 -1
- package/lib/utils/colors.test.d.ts +2 -0
- package/lib/utils/colors.test.d.ts.map +1 -0
- package/lib/utils/colors.test.js +87 -0
- package/lib/utils/colors.test.js.map +1 -0
- package/lib/utils/cursor-position.d.ts +22 -0
- package/lib/utils/cursor-position.d.ts.map +1 -0
- package/lib/utils/cursor-position.js +139 -0
- package/lib/utils/cursor-position.js.map +1 -0
- package/lib/utils/debug-log.d.ts +2 -0
- package/lib/utils/debug-log.d.ts.map +1 -0
- package/lib/utils/debug-log.js +36 -0
- package/lib/utils/debug-log.js.map +1 -0
- package/lib/utils/terminal.d.ts +27 -0
- package/lib/utils/terminal.d.ts.map +1 -0
- package/lib/utils/terminal.js +116 -0
- package/lib/utils/terminal.js.map +1 -0
- package/lib/utils/text.d.ts +21 -0
- package/lib/utils/text.d.ts.map +1 -0
- package/lib/utils/text.js +82 -0
- package/lib/utils/text.js.map +1 -0
- package/lib/utils/wait-for-spacebar.d.ts +10 -0
- package/lib/utils/wait-for-spacebar.d.ts.map +1 -0
- package/lib/utils/wait-for-spacebar.js +71 -0
- package/lib/utils/wait-for-spacebar.js.map +1 -0
- package/package.json +31 -28
- package/.cursor/plan.md +0 -952
- package/TESTING.md +0 -102
- package/build.zig +0 -100
- package/examples/basic-progress.ts +0 -21
- package/examples/multi-lane.ts +0 -29
- package/examples/spinner.ts +0 -20
- package/examples/test-basic.ts +0 -23
- package/src/ts/components/progress-bar.ts +0 -53
- package/src/ts/components/spinner.ts +0 -56
- package/src/ts/index.ts +0 -37
- package/src/ts/native.ts +0 -86
- package/src/ts/region.ts +0 -89
- package/src/ts/types/ffi-napi.d.ts +0 -11
- package/src/ts/types/ref-napi.d.ts +0 -5
- package/src/ts/types.ts +0 -53
- package/src/ts/utils/colors.ts +0 -72
- package/src/zig/ansi.zig +0 -21
- package/src/zig/buffer.zig +0 -37
- package/src/zig/diff.zig +0 -43
- package/src/zig/region.zig +0 -292
- package/src/zig/renderer.zig +0 -92
- package/src/zig/test_ansi.zig +0 -66
- package/src/zig/test_buffer.zig +0 -82
- package/src/zig/test_diff.zig +0 -220
- package/src/zig/test_integration.zig +0 -76
- package/src/zig/test_region.zig +0 -191
- package/src/zig/test_runner.zig +0 -27
- package/src/zig/test_throttle.zig +0 -59
- package/src/zig/throttle.zig +0 -38
- package/tsconfig.json +0 -21
package/lib/region.js
CHANGED
|
@@ -1,74 +1,512 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { applyStyle } from './utils/colors
|
|
1
|
+
import { RegionRenderer } from './native/region-renderer';
|
|
2
|
+
import { applyStyle } from './utils/colors';
|
|
3
|
+
import { getTerminalWidth } from './utils/terminal';
|
|
4
|
+
import { resolveGrid } from './api/grid';
|
|
5
|
+
/**
|
|
6
|
+
* TerminalRegion - High-level API for terminal region management
|
|
7
|
+
*
|
|
8
|
+
* This is the public API that wraps the low-level RegionRenderer.
|
|
9
|
+
* It adds component orchestration, grid layout, and styling support.
|
|
10
|
+
*/
|
|
3
11
|
export class TerminalRegion {
|
|
4
|
-
|
|
12
|
+
renderer;
|
|
5
13
|
_width;
|
|
6
|
-
_height;
|
|
14
|
+
_height;
|
|
15
|
+
// Track ALL component descriptors that have been set/added, so we can re-render them
|
|
16
|
+
// This is an array of descriptors (or arrays of descriptors for multi-line sections)
|
|
17
|
+
allComponentDescriptors = [];
|
|
18
|
+
// Track all lines in the region (component + waitForSpacebar + any whitespace)
|
|
19
|
+
// This allows us to re-render the entire region correctly
|
|
20
|
+
regionLines = [];
|
|
21
|
+
// Prevent concurrent re-renders (e.g., multiple resize events firing rapidly)
|
|
22
|
+
isReRendering = false;
|
|
7
23
|
constructor(options = {}) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
24
|
+
this._width = options.width ?? getTerminalWidth();
|
|
25
|
+
this._height = options.height ?? 1;
|
|
26
|
+
// Create the low-level renderer
|
|
27
|
+
// Only pass width if it was explicitly set by the user (to allow auto-resize)
|
|
28
|
+
const rendererOptions = {
|
|
29
|
+
height: this._height,
|
|
30
|
+
stdout: options.stdout,
|
|
31
|
+
disableRendering: options.disableRendering,
|
|
32
|
+
// CRITICAL: Pass callback to re-render last content during keep-alive and resize
|
|
33
|
+
// This ensures ALL components (grid) are re-rendered with current width
|
|
34
|
+
// The region orchestrates this - components don't manage their own re-rendering
|
|
35
|
+
onKeepAlive: () => this.reRenderLastContent(),
|
|
36
|
+
};
|
|
37
|
+
// Only set width if user explicitly provided it (allows auto-resize to work)
|
|
38
|
+
if (options.width !== undefined) {
|
|
39
|
+
rendererOptions.width = options.width;
|
|
40
|
+
}
|
|
41
|
+
this.renderer = new RegionRenderer(rendererOptions);
|
|
13
42
|
}
|
|
14
43
|
get width() {
|
|
44
|
+
// Sync with renderer width (important for auto-resize)
|
|
45
|
+
this._width = this.renderer.getWidth();
|
|
15
46
|
return this._width;
|
|
16
47
|
}
|
|
17
48
|
get height() {
|
|
18
49
|
return this._height;
|
|
19
50
|
}
|
|
51
|
+
getLine(lineNumber) {
|
|
52
|
+
return this.renderer.getLine(lineNumber);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Set a single line (1-based line numbers)
|
|
56
|
+
*
|
|
57
|
+
* Note: With auto-wrap disabled globally, we manage all wrapping ourselves.
|
|
58
|
+
* This method sets a single line - if content needs to wrap, it should
|
|
59
|
+
* be handled by the component layer (grid, style, etc.) before calling this.
|
|
60
|
+
* Content that exceeds the region width will be truncated by the terminal.
|
|
61
|
+
*
|
|
62
|
+
* The region will automatically expand if lineNumber exceeds current height.
|
|
63
|
+
*/
|
|
20
64
|
setLine(lineNumber, content) {
|
|
21
65
|
if (lineNumber < 1) {
|
|
22
66
|
throw new Error('Line numbers start at 1');
|
|
23
67
|
}
|
|
24
|
-
//
|
|
68
|
+
// Update our height tracking if this line is beyond current height
|
|
69
|
+
// BUT respect the expansion limit (max 10 lines beyond current height)
|
|
70
|
+
// This prevents accidental expansion from stray setLine calls
|
|
71
|
+
if (lineNumber > this._height) {
|
|
72
|
+
const maxAllowedHeight = this._height + 10;
|
|
73
|
+
this._height = Math.min(lineNumber, maxAllowedHeight);
|
|
74
|
+
}
|
|
75
|
+
// Extract text and apply styling
|
|
25
76
|
const text = typeof content === 'string' ? content : content.text;
|
|
26
|
-
// Apply styling if provided
|
|
27
77
|
const styled = applyStyle(text, typeof content === 'object' ? content.style : undefined);
|
|
28
|
-
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// - Buffer this update in pending_frame
|
|
33
|
-
// - Check throttle
|
|
34
|
-
// - Schedule render if needed (or render immediately if throttle allows)
|
|
35
|
-
// Update our height tracking if Zig expanded
|
|
36
|
-
if (lineNumber > this._height) {
|
|
37
|
-
this._height = lineNumber;
|
|
78
|
+
// CRITICAL: Track this line as static content (not part of component)
|
|
79
|
+
// This allows us to preserve it during re-renders
|
|
80
|
+
while (this.regionLines.length < lineNumber) {
|
|
81
|
+
this.regionLines.push({ type: 'static', lineNumber: this.regionLines.length + 1 });
|
|
38
82
|
}
|
|
83
|
+
this.regionLines[lineNumber - 1] = {
|
|
84
|
+
type: 'static',
|
|
85
|
+
content: styled,
|
|
86
|
+
lineNumber
|
|
87
|
+
};
|
|
88
|
+
// Update the renderer (this will expand the renderer if needed)
|
|
89
|
+
this.renderer.setLine(lineNumber, styled);
|
|
39
90
|
}
|
|
40
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Set content in the region, replacing all existing content.
|
|
93
|
+
* This always does a full replace - if the new content is the same length,
|
|
94
|
+
* it will overwrite the existing lines. If it's a different length, it will
|
|
95
|
+
* resize the region accordingly.
|
|
96
|
+
*/
|
|
97
|
+
set(content, ...additionalLines) {
|
|
98
|
+
// Check if we have multiple grid descriptors (for multi-line rendering)
|
|
99
|
+
const allContent = additionalLines.length > 0
|
|
100
|
+
? [content, ...additionalLines]
|
|
101
|
+
: [content];
|
|
102
|
+
// Check if first item is a grid descriptor
|
|
103
|
+
if (allContent.length > 0 && typeof allContent[0] === 'object' && allContent[0] !== null && 'type' in allContent[0] && allContent[0].type === 'grid') {
|
|
104
|
+
// Grid descriptor(s)
|
|
105
|
+
this.allComponentDescriptors = [allContent.length > 1 ? allContent : allContent[0]];
|
|
106
|
+
const width = this.width;
|
|
107
|
+
let totalHeight = 0;
|
|
108
|
+
const renderer = this.renderer;
|
|
109
|
+
const oldHeight = this._height;
|
|
110
|
+
// Calculate total height first
|
|
111
|
+
for (const descriptor of allContent) {
|
|
112
|
+
if (descriptor.type === 'grid') {
|
|
113
|
+
const component = resolveGrid(this, descriptor);
|
|
114
|
+
totalHeight += component.getHeight();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// FULL REPLACE: Truncate both frames to exact new height
|
|
118
|
+
renderer.pendingFrame = renderer.pendingFrame.slice(0, totalHeight);
|
|
119
|
+
renderer.previousFrame = renderer.previousFrame.slice(0, totalHeight);
|
|
120
|
+
while (renderer.pendingFrame.length < totalHeight) {
|
|
121
|
+
renderer.pendingFrame.push('');
|
|
122
|
+
}
|
|
123
|
+
while (renderer.previousFrame.length < totalHeight) {
|
|
124
|
+
renderer.previousFrame.push('');
|
|
125
|
+
}
|
|
126
|
+
for (let i = 0; i < totalHeight; i++) {
|
|
127
|
+
renderer.pendingFrame[i] = '';
|
|
128
|
+
}
|
|
129
|
+
this._height = totalHeight;
|
|
130
|
+
this.regionLines = [];
|
|
131
|
+
for (let i = 0; i < totalHeight; i++) {
|
|
132
|
+
this.regionLines[i] = { type: 'component', lineNumber: i + 1 };
|
|
133
|
+
}
|
|
134
|
+
// CRITICAL: Disable auto-rendering during component rendering
|
|
135
|
+
// Components call setLine() which triggers scheduleRender(), but we want
|
|
136
|
+
// to batch all updates and render once at the end
|
|
137
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
138
|
+
renderer.disableRendering = true;
|
|
139
|
+
// Render each component on its line
|
|
140
|
+
let currentLine = 1;
|
|
141
|
+
for (const descriptor of allContent) {
|
|
142
|
+
if (descriptor.type === 'grid') {
|
|
143
|
+
const component = resolveGrid(this, descriptor);
|
|
144
|
+
const height = component.getHeight();
|
|
145
|
+
component.render(0, currentLine, width);
|
|
146
|
+
currentLine += height;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
renderer.height = totalHeight;
|
|
150
|
+
if (totalHeight > oldHeight) {
|
|
151
|
+
renderer.expandTo(totalHeight);
|
|
152
|
+
}
|
|
153
|
+
// Re-enable rendering and flush once
|
|
154
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
155
|
+
// Note: flush() is async but we don't await here - caller should await if needed
|
|
156
|
+
void this.renderer.flush();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Single grid descriptor
|
|
160
|
+
if (typeof content === 'object' && content !== null && 'type' in content && content.type === 'grid') {
|
|
161
|
+
this.allComponentDescriptors = [content];
|
|
162
|
+
const component = resolveGrid(this, content);
|
|
163
|
+
const width = this.width;
|
|
164
|
+
const height = component.getHeight();
|
|
165
|
+
const renderer = this.renderer;
|
|
166
|
+
const oldHeight = this._height;
|
|
167
|
+
renderer.pendingFrame = renderer.pendingFrame.slice(0, height);
|
|
168
|
+
renderer.previousFrame = renderer.previousFrame.slice(0, height);
|
|
169
|
+
while (renderer.pendingFrame.length < height) {
|
|
170
|
+
renderer.pendingFrame.push('');
|
|
171
|
+
}
|
|
172
|
+
while (renderer.previousFrame.length < height) {
|
|
173
|
+
renderer.previousFrame.push('');
|
|
174
|
+
}
|
|
175
|
+
for (let i = 0; i < height; i++) {
|
|
176
|
+
renderer.pendingFrame[i] = '';
|
|
177
|
+
}
|
|
178
|
+
this._height = height;
|
|
179
|
+
this.regionLines = [];
|
|
180
|
+
for (let i = 0; i < height; i++) {
|
|
181
|
+
this.regionLines[i] = { type: 'component', lineNumber: i + 1 };
|
|
182
|
+
}
|
|
183
|
+
renderer.height = height;
|
|
184
|
+
if (height > oldHeight) {
|
|
185
|
+
renderer.expandTo(height);
|
|
186
|
+
}
|
|
187
|
+
// CRITICAL: Disable auto-rendering during component rendering
|
|
188
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
189
|
+
renderer.disableRendering = true;
|
|
190
|
+
component.render(0, 1, width);
|
|
191
|
+
if (renderer.pendingFrame.length > height) {
|
|
192
|
+
renderer.pendingFrame = renderer.pendingFrame.slice(0, height);
|
|
193
|
+
}
|
|
194
|
+
// Re-enable rendering and flush once
|
|
195
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
196
|
+
// Note: flush() is async but we don't await here - caller should await if needed
|
|
197
|
+
void this.renderer.flush();
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Original string/array handling
|
|
41
201
|
if (typeof content === 'string') {
|
|
42
202
|
// Single string with \n line breaks
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.
|
|
203
|
+
const lineCount = content.split('\n').length;
|
|
204
|
+
this._height = lineCount;
|
|
205
|
+
this.renderer.set(content);
|
|
46
206
|
}
|
|
47
|
-
else {
|
|
48
|
-
// Array of LineContent
|
|
49
|
-
const lines = content.map(c => applyStyle(c.text, c.style)).join('\n');
|
|
50
|
-
native.set(this.handle, lines);
|
|
207
|
+
else if (Array.isArray(content)) {
|
|
208
|
+
// Array of LineContent - apply styling to each
|
|
51
209
|
this._height = content.length;
|
|
210
|
+
const lines = content.map(c => applyStyle(c.text, c.style)).join('\n');
|
|
211
|
+
this.renderer.set(lines);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Add content to the region, appending it after existing content.
|
|
216
|
+
* This is useful for adding multiple sections without overwriting previous content.
|
|
217
|
+
*/
|
|
218
|
+
add(content, ...additionalLines) {
|
|
219
|
+
// Check if we have multiple grid descriptors
|
|
220
|
+
const allContent = additionalLines.length > 0
|
|
221
|
+
? [content, ...additionalLines]
|
|
222
|
+
: [content];
|
|
223
|
+
// Check if first item is a grid descriptor
|
|
224
|
+
if (allContent.length > 0 && typeof allContent[0] === 'object' && allContent[0] !== null && 'type' in allContent[0] && allContent[0].type === 'grid') {
|
|
225
|
+
const width = this.width;
|
|
226
|
+
let totalHeight = 0;
|
|
227
|
+
// Calculate total height of new content
|
|
228
|
+
const resolvedComponents = [];
|
|
229
|
+
for (const descriptor of allContent) {
|
|
230
|
+
if (descriptor.type === 'grid') {
|
|
231
|
+
const component = resolveGrid(this, descriptor);
|
|
232
|
+
resolvedComponents.push(component);
|
|
233
|
+
totalHeight += component.getHeight();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
const renderer = this.renderer;
|
|
237
|
+
const startLine = this._height + 1;
|
|
238
|
+
// Extend frames to accommodate new content
|
|
239
|
+
while (renderer.pendingFrame.length < this._height + totalHeight) {
|
|
240
|
+
renderer.pendingFrame.push('');
|
|
241
|
+
}
|
|
242
|
+
// CRITICAL: Only expand previousFrame if we're actually rendering
|
|
243
|
+
// previousFrame should represent what was actually rendered, not what we plan to render
|
|
244
|
+
// If disableRendering=true, we haven't rendered yet, so don't expand previousFrame
|
|
245
|
+
// This prevents false negatives in content-change detection
|
|
246
|
+
if (!renderer.disableRendering) {
|
|
247
|
+
while (renderer.previousFrame.length < this._height + totalHeight) {
|
|
248
|
+
renderer.previousFrame.push('');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Clear lines where new content will be rendered
|
|
252
|
+
for (let i = 0; i < totalHeight; i++) {
|
|
253
|
+
renderer.pendingFrame[this._height + i] = '';
|
|
254
|
+
}
|
|
255
|
+
// Update regionLines
|
|
256
|
+
for (let i = 0; i < totalHeight; i++) {
|
|
257
|
+
this.regionLines.push({ type: 'component', lineNumber: this._height + i + 1 });
|
|
258
|
+
}
|
|
259
|
+
// Track this new content
|
|
260
|
+
const descriptorsToAdd = allContent.length > 1 ? allContent : allContent[0];
|
|
261
|
+
this.allComponentDescriptors.push(descriptorsToAdd);
|
|
262
|
+
// Update region height BEFORE rendering
|
|
263
|
+
this._height += totalHeight;
|
|
264
|
+
renderer.height = this._height;
|
|
265
|
+
// Expand region to accommodate new content
|
|
266
|
+
renderer.expandTo(this._height);
|
|
267
|
+
// CRITICAL: Disable auto-rendering during component rendering
|
|
268
|
+
// Components call setLine() which triggers scheduleRender(), but we want
|
|
269
|
+
// to batch all updates and render once at the end
|
|
270
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
271
|
+
renderer.disableRendering = true;
|
|
272
|
+
// Render each component starting from startLine
|
|
273
|
+
let currentLine = startLine;
|
|
274
|
+
for (const component of resolvedComponents) {
|
|
275
|
+
const height = component.getHeight();
|
|
276
|
+
component.render(0, currentLine, width);
|
|
277
|
+
currentLine += height;
|
|
278
|
+
}
|
|
279
|
+
// Re-enable rendering and flush once
|
|
280
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
281
|
+
// Note: flush() is async but we don't await here - caller should await if needed
|
|
282
|
+
void this.renderer.flush();
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// Single grid descriptor
|
|
286
|
+
if (typeof content === 'object' && content !== null && 'type' in content && content.type === 'grid') {
|
|
287
|
+
const component = resolveGrid(this, content);
|
|
288
|
+
const width = this.width;
|
|
289
|
+
const height = component.getHeight();
|
|
290
|
+
const startLine = this._height + 1;
|
|
291
|
+
const renderer = this.renderer;
|
|
292
|
+
// Extend frames
|
|
293
|
+
while (renderer.pendingFrame.length < this._height + height) {
|
|
294
|
+
renderer.pendingFrame.push('');
|
|
295
|
+
}
|
|
296
|
+
// CRITICAL: Only expand previousFrame if we're actually rendering
|
|
297
|
+
// previousFrame should represent what was actually rendered, not what we plan to render
|
|
298
|
+
// If disableRendering=true, we haven't rendered yet, so don't expand previousFrame
|
|
299
|
+
// This prevents false negatives in content-change detection
|
|
300
|
+
if (!renderer.disableRendering) {
|
|
301
|
+
while (renderer.previousFrame.length < this._height + height) {
|
|
302
|
+
renderer.previousFrame.push('');
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// Clear lines where new content will be rendered
|
|
306
|
+
for (let i = 0; i < height; i++) {
|
|
307
|
+
renderer.pendingFrame[this._height + i] = '';
|
|
308
|
+
}
|
|
309
|
+
// Update regionLines
|
|
310
|
+
for (let i = 0; i < height; i++) {
|
|
311
|
+
this.regionLines.push({ type: 'component', lineNumber: this._height + i + 1 });
|
|
312
|
+
}
|
|
313
|
+
// Track this new content
|
|
314
|
+
this.allComponentDescriptors.push(content);
|
|
315
|
+
// Update region height BEFORE rendering
|
|
316
|
+
this._height += height;
|
|
317
|
+
renderer.height = this._height;
|
|
318
|
+
// Expand region to accommodate new content
|
|
319
|
+
renderer.expandTo(this._height);
|
|
320
|
+
// CRITICAL: Disable auto-rendering during component rendering
|
|
321
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
322
|
+
renderer.disableRendering = true;
|
|
323
|
+
// Render component
|
|
324
|
+
component.render(0, startLine, width);
|
|
325
|
+
// Re-enable rendering and flush once
|
|
326
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
327
|
+
// Note: flush() is async but we don't await here - caller should await if needed
|
|
328
|
+
void this.renderer.flush();
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
// String/array handling - append after existing content
|
|
332
|
+
if (typeof content === 'string') {
|
|
333
|
+
const lines = content.split('\n');
|
|
334
|
+
const startLine = this._height + 1;
|
|
335
|
+
// CRITICAL: Disable auto-rendering during line setting to batch updates
|
|
336
|
+
// setLine() will expand the region automatically, but we want to batch renders
|
|
337
|
+
const renderer = this.renderer;
|
|
338
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
339
|
+
renderer.disableRendering = true;
|
|
340
|
+
// Set all lines (setLine() will expand region automatically)
|
|
341
|
+
for (let i = 0; i < lines.length; i++) {
|
|
342
|
+
this.setLine(startLine + i, lines[i]);
|
|
343
|
+
}
|
|
344
|
+
// Update region height tracking (setLine() already updated renderer.height)
|
|
345
|
+
this._height = startLine + lines.length - 1;
|
|
346
|
+
// Re-enable rendering and flush once
|
|
347
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
348
|
+
this.renderer.flush();
|
|
349
|
+
}
|
|
350
|
+
else if (Array.isArray(content)) {
|
|
351
|
+
const startLine = this._height + 1;
|
|
352
|
+
// CRITICAL: Disable auto-rendering during line setting to batch updates
|
|
353
|
+
// setLine() will expand the region automatically, but we want to batch renders
|
|
354
|
+
const renderer = this.renderer;
|
|
355
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
356
|
+
renderer.disableRendering = true;
|
|
357
|
+
// Set all lines (setLine() will expand region automatically)
|
|
358
|
+
for (let i = 0; i < content.length; i++) {
|
|
359
|
+
this.setLine(startLine + i, String(content[i]));
|
|
360
|
+
}
|
|
361
|
+
// Update region height tracking (setLine() already updated renderer.height)
|
|
362
|
+
this._height = startLine + content.length - 1;
|
|
363
|
+
// Re-enable rendering and flush once
|
|
364
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
365
|
+
this.renderer.flush();
|
|
52
366
|
}
|
|
53
367
|
}
|
|
54
368
|
clearLine(lineNumber) {
|
|
55
369
|
if (lineNumber < 1) {
|
|
56
370
|
throw new Error('Line numbers start at 1');
|
|
57
371
|
}
|
|
58
|
-
|
|
372
|
+
this.renderer.clearLine(lineNumber);
|
|
59
373
|
}
|
|
60
374
|
clear() {
|
|
61
|
-
|
|
375
|
+
this.renderer.clear();
|
|
62
376
|
}
|
|
63
|
-
flush() {
|
|
377
|
+
async flush() {
|
|
64
378
|
// Force immediate render of any pending updates (bypasses throttle)
|
|
65
|
-
|
|
379
|
+
// Returns a promise that resolves when rendering is complete
|
|
380
|
+
await this.renderer.flush();
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Re-render the last content that was set
|
|
384
|
+
* This re-renders all components (grid) with the current width
|
|
385
|
+
* Used by resize handler and keep-alive to prevent auto-reflow
|
|
386
|
+
* The region orchestrates this - components don't manage their own re-rendering
|
|
387
|
+
*
|
|
388
|
+
* CRITICAL: Re-renders the entire region, including:
|
|
389
|
+
* - Component lines (grid)
|
|
390
|
+
* - Static lines (waitForSpacebar, whitespace)
|
|
391
|
+
* This ensures everything is in the correct position
|
|
392
|
+
*/
|
|
393
|
+
reRenderLastContent() {
|
|
394
|
+
// CRITICAL: Prevent concurrent re-renders
|
|
395
|
+
// If we're already re-rendering, skip this call to prevent duplicates
|
|
396
|
+
if (this.isReRendering) {
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
if (this.allComponentDescriptors.length > 0) {
|
|
400
|
+
this.isReRendering = true;
|
|
401
|
+
try {
|
|
402
|
+
const renderer = this.renderer;
|
|
403
|
+
renderer.logToFile(`[reRenderLastContent] CALLED: height=${this._height} lastRenderedHeight=${renderer.lastRenderedHeight}`);
|
|
404
|
+
const width = this.width;
|
|
405
|
+
// First, calculate total height of ALL content (components + static lines)
|
|
406
|
+
let totalHeight = 0;
|
|
407
|
+
for (const descriptorOrArray of this.allComponentDescriptors) {
|
|
408
|
+
const descriptors = Array.isArray(descriptorOrArray) && descriptorOrArray.length > 0 && typeof descriptorOrArray[0] === 'object' && descriptorOrArray[0] !== null && 'type' in descriptorOrArray[0]
|
|
409
|
+
? descriptorOrArray
|
|
410
|
+
: [descriptorOrArray];
|
|
411
|
+
for (const descriptor of descriptors) {
|
|
412
|
+
if (descriptor.type === 'grid') {
|
|
413
|
+
const component = resolveGrid(this, descriptor);
|
|
414
|
+
totalHeight += component.getHeight();
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
// CRITICAL: Include static lines (waitForSpacebar, whitespace) in total height
|
|
419
|
+
// Count how many static lines exist beyond the component height
|
|
420
|
+
let maxStaticLineNumber = 0;
|
|
421
|
+
for (let i = 0; i < this.regionLines.length; i++) {
|
|
422
|
+
const lineInfo = this.regionLines[i];
|
|
423
|
+
if (lineInfo.type === 'static' && lineInfo.content !== undefined) {
|
|
424
|
+
maxStaticLineNumber = Math.max(maxStaticLineNumber, lineInfo.lineNumber);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// totalHeight should be at least as large as the highest static line number
|
|
428
|
+
totalHeight = Math.max(totalHeight, maxStaticLineNumber);
|
|
429
|
+
// CRITICAL: Ensure frames are the correct size BEFORE re-rendering
|
|
430
|
+
// This prevents overwriting or truncating content incorrectly
|
|
431
|
+
while (renderer.pendingFrame.length < totalHeight) {
|
|
432
|
+
renderer.pendingFrame.push('');
|
|
433
|
+
}
|
|
434
|
+
while (renderer.previousFrame.length < totalHeight) {
|
|
435
|
+
renderer.previousFrame.push('');
|
|
436
|
+
}
|
|
437
|
+
// Truncate frames to exact height (in case they're too large)
|
|
438
|
+
renderer.pendingFrame = renderer.pendingFrame.slice(0, totalHeight);
|
|
439
|
+
renderer.previousFrame = renderer.previousFrame.slice(0, totalHeight);
|
|
440
|
+
// CRITICAL: Don't clear previousFrame on resize/re-render
|
|
441
|
+
// We need to preserve previousFrame so renderNow() can detect if content actually changed
|
|
442
|
+
// If we clear it, renderNow() will always think content changed and re-render unnecessarily
|
|
443
|
+
// The previousFrame will be updated after renderNow() completes
|
|
444
|
+
// Clear all lines before re-rendering
|
|
445
|
+
for (let i = 0; i < totalHeight; i++) {
|
|
446
|
+
renderer.pendingFrame[i] = '';
|
|
447
|
+
}
|
|
448
|
+
// CRITICAL: Disable auto-rendering during component rendering
|
|
449
|
+
// Components call setLine() which triggers scheduleRender(), but we want
|
|
450
|
+
// to batch all updates and render once at the end
|
|
451
|
+
const wasRenderingDisabled = renderer.disableRendering;
|
|
452
|
+
renderer.disableRendering = true;
|
|
453
|
+
// Now re-render ALL component descriptors starting from line 1
|
|
454
|
+
let currentLine = 1;
|
|
455
|
+
for (const descriptorOrArray of this.allComponentDescriptors) {
|
|
456
|
+
// Each entry can be a single descriptor or an array of descriptors (for multi-line sections)
|
|
457
|
+
const descriptors = Array.isArray(descriptorOrArray) && descriptorOrArray.length > 0 && typeof descriptorOrArray[0] === 'object' && descriptorOrArray[0] !== null && 'type' in descriptorOrArray[0]
|
|
458
|
+
? descriptorOrArray
|
|
459
|
+
: [descriptorOrArray];
|
|
460
|
+
// Re-render each component in this section
|
|
461
|
+
for (const descriptor of descriptors) {
|
|
462
|
+
if (descriptor.type === 'grid') {
|
|
463
|
+
const component = resolveGrid(this, descriptor);
|
|
464
|
+
const componentHeight = component.getHeight();
|
|
465
|
+
// Render component at current line
|
|
466
|
+
component.render(0, currentLine, width);
|
|
467
|
+
// Move to next line
|
|
468
|
+
currentLine += componentHeight;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
// Update height to match all rendered content
|
|
473
|
+
this._height = totalHeight;
|
|
474
|
+
renderer.height = totalHeight;
|
|
475
|
+
// CRITICAL: DON'T update lastRenderedHeight before flushing
|
|
476
|
+
// This would change the state and make renderNow() think height hasn't increased
|
|
477
|
+
// when it actually has. Let renderNow() update lastRenderedHeight after rendering.
|
|
478
|
+
// This keeps the state consistent with the normal set() path
|
|
479
|
+
const oldLastRenderedHeight = renderer.lastRenderedHeight;
|
|
480
|
+
renderer.logToFile(`[reRenderLastContent] BEFORE flush: height=${totalHeight} lastRenderedHeight=${oldLastRenderedHeight}`);
|
|
481
|
+
// CRITICAL: Re-render static lines (waitForSpacebar, whitespace)
|
|
482
|
+
// These are tracked in regionLines with type 'static'
|
|
483
|
+
for (let i = 0; i < this.regionLines.length; i++) {
|
|
484
|
+
const lineInfo = this.regionLines[i];
|
|
485
|
+
if (lineInfo.type === 'static' && lineInfo.content !== undefined) {
|
|
486
|
+
// Re-render this static line
|
|
487
|
+
const lineNumber = i + 1;
|
|
488
|
+
// Ensure pendingFrame has enough lines
|
|
489
|
+
while (renderer.pendingFrame.length < lineNumber) {
|
|
490
|
+
renderer.pendingFrame.push('');
|
|
491
|
+
}
|
|
492
|
+
renderer.pendingFrame[lineNumber - 1] = lineInfo.content;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
// Re-enable rendering and flush once
|
|
496
|
+
renderer.disableRendering = wasRenderingDisabled;
|
|
497
|
+
this.renderer.flush();
|
|
498
|
+
}
|
|
499
|
+
finally {
|
|
500
|
+
this.isReRendering = false;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
66
503
|
}
|
|
67
504
|
setThrottle(fps) {
|
|
68
|
-
native
|
|
505
|
+
// Note: setThrottleFps doesn't exist on native region, removing for now
|
|
506
|
+
// this.region.setThrottleFps(fps);
|
|
69
507
|
}
|
|
70
|
-
destroy() {
|
|
71
|
-
|
|
508
|
+
async destroy(clearFirst = false) {
|
|
509
|
+
await this.renderer.destroy(clearFirst);
|
|
72
510
|
}
|
|
73
511
|
}
|
|
74
512
|
//# sourceMappingURL=region.js.map
|
package/lib/region.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"region.js","sourceRoot":"","sources":["../src/ts/region.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"region.js","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region.test.d.ts","sourceRoot":"","sources":["../src/region.test.ts"],"names":[],"mappings":""}
|