@jrichman/ink 6.4.11 → 6.4.12
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/build/components/App.d.ts +6 -0
- package/build/components/App.js +5 -0
- package/build/components/App.js.map +1 -1
- package/build/components/AppContext.d.ts +36 -1
- package/build/components/AppContext.js +7 -2
- package/build/components/AppContext.js.map +1 -1
- package/build/components/Box.d.ts +26 -2
- package/build/components/Box.js +3 -2
- package/build/components/Box.js.map +1 -1
- package/build/components/StaticRender.d.ts +8 -0
- package/build/components/StaticRender.js +11 -0
- package/build/components/StaticRender.js.map +1 -0
- package/build/debug-log.d.ts +2 -0
- package/build/debug-log.js +44 -0
- package/build/debug-log.js.map +1 -0
- package/build/dom.d.ts +37 -3
- package/build/dom.js +19 -3
- package/build/dom.js.map +1 -1
- package/build/index.d.ts +4 -1
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/build/ink.d.ts +29 -2
- package/build/ink.js +215 -102
- package/build/ink.js.map +1 -1
- package/build/measure-element.d.ts +20 -1
- package/build/measure-element.js +201 -51
- package/build/measure-element.js.map +1 -1
- package/build/output.d.ts +195 -10
- package/build/output.js +494 -160
- package/build/output.js.map +1 -1
- package/build/reconciler.js +19 -3
- package/build/reconciler.js.map +1 -1
- package/build/render-background.js +1 -1
- package/build/render-background.js.map +1 -1
- package/build/render-cached.d.ts +17 -0
- package/build/render-cached.js +62 -0
- package/build/render-cached.js.map +1 -0
- package/build/render-container.d.ts +24 -0
- package/build/render-container.js +169 -0
- package/build/render-container.js.map +1 -0
- package/build/render-node-to-output.d.ts +15 -7
- package/build/render-node-to-output.js +123 -485
- package/build/render-node-to-output.js.map +1 -1
- package/build/render-screen-reader.d.ts +5 -0
- package/build/render-screen-reader.js +54 -0
- package/build/render-screen-reader.js.map +1 -0
- package/build/render-scrollbar.d.ts +22 -0
- package/build/render-scrollbar.js +77 -0
- package/build/render-scrollbar.js.map +1 -0
- package/build/render-sticky.d.ts +56 -0
- package/build/render-sticky.js +314 -0
- package/build/render-sticky.js.map +1 -0
- package/build/render-text-node.d.ts +24 -0
- package/build/render-text-node.js +133 -0
- package/build/render-text-node.js.map +1 -0
- package/build/render.d.ts +39 -0
- package/build/render.js +5 -0
- package/build/render.js.map +1 -1
- package/build/renderer.d.ts +10 -2
- package/build/renderer.js +103 -7
- package/build/renderer.js.map +1 -1
- package/build/replay.d.ts +60 -0
- package/build/replay.js +138 -0
- package/build/replay.js.map +1 -0
- package/build/scroll.js +20 -1
- package/build/scroll.js.map +1 -1
- package/build/selection.d.ts +9 -0
- package/build/selection.js +47 -0
- package/build/selection.js.map +1 -1
- package/build/serialization.d.ts +28 -0
- package/build/serialization.js +267 -0
- package/build/serialization.js.map +1 -0
- package/build/styles.d.ts +18 -0
- package/build/styles.js.map +1 -1
- package/build/terminal-buffer.d.ts +53 -0
- package/build/terminal-buffer.js +441 -0
- package/build/terminal-buffer.js.map +1 -0
- package/build/worker/animation-controller.d.ts +72 -0
- package/build/worker/animation-controller.js +128 -0
- package/build/worker/animation-controller.js.map +1 -0
- package/build/worker/ansi-utils.d.ts +16 -0
- package/build/worker/ansi-utils.js +40 -0
- package/build/worker/ansi-utils.js.map +1 -0
- package/build/worker/canvas.d.ts +47 -0
- package/build/worker/canvas.js +94 -0
- package/build/worker/canvas.js.map +1 -0
- package/build/worker/compositor.d.ts +33 -0
- package/build/worker/compositor.js +314 -0
- package/build/worker/compositor.js.map +1 -0
- package/build/worker/platform.d.ts +15 -0
- package/build/worker/platform.js +19 -0
- package/build/worker/platform.js.map +1 -0
- package/build/worker/render-worker.d.ts +112 -0
- package/build/worker/render-worker.js +936 -0
- package/build/worker/render-worker.js.map +1 -0
- package/build/worker/scene-manager.d.ts +26 -0
- package/build/worker/scene-manager.js +99 -0
- package/build/worker/scene-manager.js.map +1 -0
- package/build/worker/scroll-optimizer.d.ts +32 -0
- package/build/worker/scroll-optimizer.js +110 -0
- package/build/worker/scroll-optimizer.js.map +1 -0
- package/build/worker/terminal-writer.d.ts +116 -0
- package/build/worker/terminal-writer.js +722 -0
- package/build/worker/terminal-writer.js.map +1 -0
- package/build/worker/worker-entry.d.ts +6 -0
- package/build/worker/worker-entry.js +130 -0
- package/build/worker/worker-entry.js.map +1 -0
- package/build/wrap-text.d.ts +6 -0
- package/build/wrap-text.js +120 -0
- package/build/wrap-text.js.map +1 -0
- package/package.json +3 -1
package/build/output.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type StyledChar } from '@alcalzone/ansi-tokenize';
|
|
2
2
|
import { type OutputTransformer } from './render-node-to-output.js';
|
|
3
|
+
import { type CursorPosition } from './log-update.js';
|
|
4
|
+
import { type StickyHeader, type DOMElement } from './dom.js';
|
|
3
5
|
/**
|
|
4
6
|
"Virtual" output class
|
|
5
7
|
|
|
@@ -7,9 +9,12 @@ Handles the positioning and saving of the output of each node in the tree. Also
|
|
|
7
9
|
|
|
8
10
|
Used to generate the final output of all nodes before writing it to actual output stream (e.g. stdout)
|
|
9
11
|
*/
|
|
12
|
+
export declare function clampCursorColumn(line: StyledChar[], col: number): number;
|
|
10
13
|
type Options = {
|
|
11
14
|
width: number;
|
|
12
15
|
height: number;
|
|
16
|
+
node?: DOMElement;
|
|
17
|
+
id?: string | number;
|
|
13
18
|
};
|
|
14
19
|
type Clip = {
|
|
15
20
|
x1: number | undefined;
|
|
@@ -17,34 +22,214 @@ type Clip = {
|
|
|
17
22
|
y1: number | undefined;
|
|
18
23
|
y2: number | undefined;
|
|
19
24
|
};
|
|
25
|
+
export type Rect = {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
};
|
|
31
|
+
export declare function intersectRect(a: Rect, b: Rect): Rect | undefined;
|
|
32
|
+
export declare function isRectIntersectingClip(rect: {
|
|
33
|
+
x1: number;
|
|
34
|
+
y1: number;
|
|
35
|
+
x2: number;
|
|
36
|
+
y2: number;
|
|
37
|
+
}, clip: {
|
|
38
|
+
x1?: number;
|
|
39
|
+
y1?: number;
|
|
40
|
+
x2?: number;
|
|
41
|
+
y2?: number;
|
|
42
|
+
}): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Represents a rendered rectangular area in the terminal.
|
|
45
|
+
* You can think of it a bit like a `<div>` element rendered in a web browser.
|
|
46
|
+
* Regions can be nested to support complex layouts, including scrollable areas,
|
|
47
|
+
* clipped views, and floating elements (like sticky headers).
|
|
48
|
+
* Each region contains its own localized buffer of rendered lines and maintains
|
|
49
|
+
* its own coordinates, dimensions, scroll state, borders, background colors, and children.
|
|
50
|
+
*/
|
|
51
|
+
export type Region = {
|
|
52
|
+
id: number | string;
|
|
53
|
+
x: number;
|
|
54
|
+
y: number;
|
|
55
|
+
width: number;
|
|
56
|
+
height: number;
|
|
57
|
+
lines: StyledChar[][];
|
|
58
|
+
styledOutput: StyledChar[][];
|
|
59
|
+
isScrollable: boolean;
|
|
60
|
+
isVerticallyScrollable?: boolean;
|
|
61
|
+
isHorizontallyScrollable?: boolean;
|
|
62
|
+
scrollTop?: number;
|
|
63
|
+
scrollLeft?: number;
|
|
64
|
+
scrollHeight?: number;
|
|
65
|
+
scrollWidth?: number;
|
|
66
|
+
scrollbarVisible?: boolean;
|
|
67
|
+
overflowToBackbuffer?: boolean;
|
|
68
|
+
marginRight?: number;
|
|
69
|
+
marginBottom?: number;
|
|
70
|
+
scrollbarThumbColor?: string;
|
|
71
|
+
backgroundColor?: string;
|
|
72
|
+
opaque?: boolean;
|
|
73
|
+
borderTop?: number;
|
|
74
|
+
borderBottom?: number;
|
|
75
|
+
stickyHeaders: StickyHeader[];
|
|
76
|
+
cachedStickyHeaders?: StickyHeader[];
|
|
77
|
+
children: Region[];
|
|
78
|
+
cursorPosition?: CursorPosition;
|
|
79
|
+
stableScrollback?: boolean;
|
|
80
|
+
nodeId?: number;
|
|
81
|
+
node?: DOMElement;
|
|
82
|
+
selectableText?: string;
|
|
83
|
+
selectableSpans: Array<{
|
|
84
|
+
y: number;
|
|
85
|
+
startX: number;
|
|
86
|
+
endX: number;
|
|
87
|
+
text: string;
|
|
88
|
+
}>;
|
|
89
|
+
};
|
|
90
|
+
export type RegionNode = {
|
|
91
|
+
id: string | number;
|
|
92
|
+
children: RegionNode[];
|
|
93
|
+
};
|
|
94
|
+
export type RegionUpdate = {
|
|
95
|
+
id: string | number;
|
|
96
|
+
x?: number;
|
|
97
|
+
y?: number;
|
|
98
|
+
width?: number;
|
|
99
|
+
height?: number;
|
|
100
|
+
scrollTop?: number;
|
|
101
|
+
scrollLeft?: number;
|
|
102
|
+
scrollHeight?: number;
|
|
103
|
+
scrollWidth?: number;
|
|
104
|
+
isScrollable?: boolean;
|
|
105
|
+
isVerticallyScrollable?: boolean;
|
|
106
|
+
isHorizontallyScrollable?: boolean;
|
|
107
|
+
scrollbarVisible?: boolean;
|
|
108
|
+
overflowToBackbuffer?: boolean;
|
|
109
|
+
marginRight?: number;
|
|
110
|
+
marginBottom?: number;
|
|
111
|
+
scrollbarThumbColor?: string;
|
|
112
|
+
backgroundColor?: string;
|
|
113
|
+
opaque?: boolean;
|
|
114
|
+
borderTop?: number;
|
|
115
|
+
borderBottom?: number;
|
|
116
|
+
stickyHeaders?: StickyHeader[];
|
|
117
|
+
lines?: {
|
|
118
|
+
updates: Array<{
|
|
119
|
+
start: number;
|
|
120
|
+
end: number;
|
|
121
|
+
data: Uint8Array;
|
|
122
|
+
source?: Uint8Array;
|
|
123
|
+
}>;
|
|
124
|
+
totalLength: number;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
export declare const regionLayoutProperties: readonly ["x", "y", "width", "height", "scrollTop", "scrollLeft", "scrollHeight", "scrollWidth", "isScrollable", "isVerticallyScrollable", "isHorizontallyScrollable", "scrollbarVisible", "overflowToBackbuffer", "marginRight", "marginBottom", "scrollbarThumbColor", "backgroundColor", "opaque", "borderTop", "borderBottom"];
|
|
128
|
+
export type RegionLayoutProps = {
|
|
129
|
+
x?: number;
|
|
130
|
+
y?: number;
|
|
131
|
+
width?: number;
|
|
132
|
+
height?: number;
|
|
133
|
+
scrollTop?: number;
|
|
134
|
+
scrollLeft?: number;
|
|
135
|
+
scrollHeight?: number;
|
|
136
|
+
scrollWidth?: number;
|
|
137
|
+
isScrollable?: boolean;
|
|
138
|
+
isVerticallyScrollable?: boolean;
|
|
139
|
+
isHorizontallyScrollable?: boolean;
|
|
140
|
+
scrollbarVisible?: boolean;
|
|
141
|
+
overflowToBackbuffer?: boolean;
|
|
142
|
+
marginRight?: number;
|
|
143
|
+
marginBottom?: number;
|
|
144
|
+
scrollbarThumbColor?: string;
|
|
145
|
+
backgroundColor?: string;
|
|
146
|
+
opaque?: boolean;
|
|
147
|
+
borderTop?: number;
|
|
148
|
+
borderBottom?: number;
|
|
149
|
+
};
|
|
150
|
+
export declare function copyRegionProperty<K extends (typeof regionLayoutProperties)[number]>(target: RegionLayoutProps, source: RegionLayoutProps, key: K): void;
|
|
20
151
|
export default class Output {
|
|
21
152
|
width: number;
|
|
22
153
|
height: number;
|
|
23
|
-
|
|
24
|
-
private
|
|
154
|
+
root: Region;
|
|
155
|
+
private readonly activeRegionStack;
|
|
25
156
|
private readonly clips;
|
|
26
157
|
constructor(options: Options);
|
|
27
158
|
getCurrentClip(): Clip | undefined;
|
|
159
|
+
getActiveRegion(): Region;
|
|
160
|
+
getRegionAbsoluteOffset(): {
|
|
161
|
+
x: number;
|
|
162
|
+
y: number;
|
|
163
|
+
};
|
|
164
|
+
startChildRegion(options: {
|
|
165
|
+
id: number | string;
|
|
166
|
+
x: number;
|
|
167
|
+
y: number;
|
|
168
|
+
width: number;
|
|
169
|
+
height: number;
|
|
170
|
+
isScrollable: boolean;
|
|
171
|
+
isVerticallyScrollable?: boolean;
|
|
172
|
+
isHorizontallyScrollable?: boolean;
|
|
173
|
+
scrollState?: {
|
|
174
|
+
scrollTop: number;
|
|
175
|
+
scrollLeft: number;
|
|
176
|
+
scrollHeight: number;
|
|
177
|
+
scrollWidth: number;
|
|
178
|
+
};
|
|
179
|
+
scrollbarVisible?: boolean;
|
|
180
|
+
overflowToBackbuffer?: boolean;
|
|
181
|
+
marginRight?: number;
|
|
182
|
+
marginBottom?: number;
|
|
183
|
+
scrollbarThumbColor?: string;
|
|
184
|
+
backgroundColor?: string;
|
|
185
|
+
opaque?: boolean;
|
|
186
|
+
nodeId?: number;
|
|
187
|
+
stableScrollback?: boolean;
|
|
188
|
+
borderTop?: number;
|
|
189
|
+
borderBottom?: number;
|
|
190
|
+
}): void;
|
|
191
|
+
endChildRegion(): void;
|
|
192
|
+
addStickyHeader(header: StickyHeader): void;
|
|
28
193
|
write(x: number, y: number, items: string | StyledChar[], options: {
|
|
29
194
|
transformers: OutputTransformer[];
|
|
30
195
|
lineIndex?: number;
|
|
31
196
|
preserveBackgroundColor?: boolean;
|
|
32
197
|
isTerminalCursorFocused?: boolean;
|
|
33
198
|
terminalCursorPosition?: number;
|
|
199
|
+
isSelectable?: boolean;
|
|
34
200
|
}): void;
|
|
35
201
|
clip(clip: Clip): void;
|
|
36
202
|
unclip(): void;
|
|
37
|
-
get():
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
203
|
+
get(): Region;
|
|
204
|
+
addRegionTree(region: Region, x: number, y: number): void;
|
|
205
|
+
private cloneRegion;
|
|
206
|
+
private trimRegionLines;
|
|
207
|
+
private clampCursorPosition;
|
|
208
|
+
private initLines;
|
|
209
|
+
private applyWrite;
|
|
210
|
+
private clearRange;
|
|
211
|
+
private clipChars;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Flattens a hierarchy of nested regions into a single 2D array of styled characters
|
|
215
|
+
* that represents the final visual output to be written to the terminal.
|
|
216
|
+
* This effectively renders the nested region tree (much like compositing layers
|
|
217
|
+
* in a web browser) into a single screen buffer.
|
|
218
|
+
*/
|
|
219
|
+
export declare function flattenRegion(root: Region, options?: {
|
|
220
|
+
context?: {
|
|
41
221
|
cursorPosition?: {
|
|
42
222
|
row: number;
|
|
43
223
|
col: number;
|
|
44
224
|
};
|
|
45
225
|
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
226
|
+
skipScrollbars?: boolean;
|
|
227
|
+
skipStickyHeaders?: boolean;
|
|
228
|
+
}): StyledChar[][];
|
|
229
|
+
export declare const extractSelectableText: (spans: Array<{
|
|
230
|
+
y: number;
|
|
231
|
+
startX: number;
|
|
232
|
+
endX: number;
|
|
233
|
+
text: string;
|
|
234
|
+
}>) => string;
|
|
50
235
|
export {};
|