@kingkoo1985/ink 6.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/colorize.d.ts +4 -0
- package/build/colorize.js +59 -0
- package/build/colorize.js.map +1 -0
- package/build/components/AccessibilityContext.d.ts +3 -0
- package/build/components/AccessibilityContext.js +5 -0
- package/build/components/AccessibilityContext.js.map +1 -0
- package/build/components/App.d.ts +68 -0
- package/build/components/App.js +290 -0
- package/build/components/App.js.map +1 -0
- package/build/components/AppContext.d.ts +52 -0
- package/build/components/AppContext.js +16 -0
- package/build/components/AppContext.js.map +1 -0
- package/build/components/BackgroundContext.d.ts +4 -0
- package/build/components/BackgroundContext.js +3 -0
- package/build/components/BackgroundContext.js.map +1 -0
- package/build/components/Box.d.ts +171 -0
- package/build/components/Box.js +40 -0
- package/build/components/Box.js.map +1 -0
- package/build/components/ErrorOverview.d.ts +6 -0
- package/build/components/ErrorOverview.js +84 -0
- package/build/components/ErrorOverview.js.map +1 -0
- package/build/components/FocusContext.d.ts +16 -0
- package/build/components/FocusContext.js +16 -0
- package/build/components/FocusContext.js.map +1 -0
- package/build/components/Newline.d.ts +13 -0
- package/build/components/Newline.js +8 -0
- package/build/components/Newline.js.map +1 -0
- package/build/components/Spacer.d.ts +7 -0
- package/build/components/Spacer.js +11 -0
- package/build/components/Spacer.js.map +1 -0
- package/build/components/Static.d.ts +24 -0
- package/build/components/Static.js +29 -0
- package/build/components/Static.js.map +1 -0
- package/build/components/StaticRender.d.ts +8 -0
- package/build/components/StaticRender.js +19 -0
- package/build/components/StaticRender.js.map +1 -0
- package/build/components/StderrContext.d.ts +15 -0
- package/build/components/StderrContext.js +12 -0
- package/build/components/StderrContext.js.map +1 -0
- package/build/components/StdinContext.d.ts +22 -0
- package/build/components/StdinContext.js +16 -0
- package/build/components/StdinContext.js.map +1 -0
- package/build/components/StdoutContext.d.ts +15 -0
- package/build/components/StdoutContext.js +12 -0
- package/build/components/StdoutContext.js.map +1 -0
- package/build/components/Text.d.ts +63 -0
- package/build/components/Text.js +50 -0
- package/build/components/Text.js.map +1 -0
- package/build/components/Transform.d.ts +16 -0
- package/build/components/Transform.js +15 -0
- package/build/components/Transform.js.map +1 -0
- package/build/data-limited-lru-map.d.ts +20 -0
- package/build/data-limited-lru-map.js +65 -0
- package/build/data-limited-lru-map.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/devtools-window-polyfill.d.ts +1 -0
- package/build/devtools-window-polyfill.js +65 -0
- package/build/devtools-window-polyfill.js.map +1 -0
- package/build/devtools.d.ts +1 -0
- package/build/devtools.js +8 -0
- package/build/devtools.js.map +1 -0
- package/build/dom.d.ts +114 -0
- package/build/dom.js +169 -0
- package/build/dom.js.map +1 -0
- package/build/get-max-width.d.ts +3 -0
- package/build/get-max-width.js +10 -0
- package/build/get-max-width.js.map +1 -0
- package/build/hooks/use-app.d.ts +5 -0
- package/build/hooks/use-app.js +8 -0
- package/build/hooks/use-app.js.map +1 -0
- package/build/hooks/use-focus-manager.d.ts +28 -0
- package/build/hooks/use-focus-manager.js +17 -0
- package/build/hooks/use-focus-manager.js.map +1 -0
- package/build/hooks/use-focus.d.ts +29 -0
- package/build/hooks/use-focus.js +42 -0
- package/build/hooks/use-focus.js.map +1 -0
- package/build/hooks/use-input.d.ts +93 -0
- package/build/hooks/use-input.js +92 -0
- package/build/hooks/use-input.js.map +1 -0
- package/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
- package/build/hooks/use-is-screen-reader-enabled.js +11 -0
- package/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
- package/build/hooks/use-stderr.d.ts +5 -0
- package/build/hooks/use-stderr.js +8 -0
- package/build/hooks/use-stderr.js.map +1 -0
- package/build/hooks/use-stdin.d.ts +5 -0
- package/build/hooks/use-stdin.js +8 -0
- package/build/hooks/use-stdin.js.map +1 -0
- package/build/hooks/use-stdout.d.ts +5 -0
- package/build/hooks/use-stdout.js +8 -0
- package/build/hooks/use-stdout.js.map +1 -0
- package/build/index.d.ts +38 -0
- package/build/index.js +27 -0
- package/build/index.js.map +1 -0
- package/build/ink.d.ts +110 -0
- package/build/ink.js +576 -0
- package/build/ink.js.map +1 -0
- package/build/instances.d.ts +3 -0
- package/build/instances.js +8 -0
- package/build/instances.js.map +1 -0
- package/build/layout.d.ts +18 -0
- package/build/layout.js +54 -0
- package/build/layout.js.map +1 -0
- package/build/log-update.d.ts +28 -0
- package/build/log-update.js +529 -0
- package/build/log-update.js.map +1 -0
- package/build/measure-element.d.ts +119 -0
- package/build/measure-element.js +825 -0
- package/build/measure-element.js.map +1 -0
- package/build/measure-text.d.ts +50 -0
- package/build/measure-text.js +237 -0
- package/build/measure-text.js.map +1 -0
- package/build/output.d.ts +242 -0
- package/build/output.js +607 -0
- package/build/output.js.map +1 -0
- package/build/parse-keypress.d.ts +14 -0
- package/build/parse-keypress.js +225 -0
- package/build/parse-keypress.js.map +1 -0
- package/build/reconciler.d.ts +4 -0
- package/build/reconciler.js +326 -0
- package/build/reconciler.js.map +1 -0
- package/build/render-background.d.ts +4 -0
- package/build/render-background.js +37 -0
- package/build/render-background.js.map +1 -0
- package/build/render-border.d.ts +4 -0
- package/build/render-border.js +81 -0
- package/build/render-border.js.map +1 -0
- package/build/render-cached.d.ts +18 -0
- package/build/render-cached.js +66 -0
- package/build/render-cached.js.map +1 -0
- package/build/render-container.d.ts +27 -0
- package/build/render-container.js +169 -0
- package/build/render-container.js.map +1 -0
- package/build/render-node-to-output.d.ts +32 -0
- package/build/render-node-to-output.js +177 -0
- package/build/render-node-to-output.js.map +1 -0
- 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 +23 -0
- package/build/render-scrollbar.js +70 -0
- package/build/render-scrollbar.js.map +1 -0
- package/build/render-sticky.d.ts +53 -0
- package/build/render-sticky.js +317 -0
- package/build/render-sticky.js.map +1 -0
- package/build/render-text-node.d.ts +20 -0
- package/build/render-text-node.js +155 -0
- package/build/render-text-node.js.map +1 -0
- package/build/render.d.ts +165 -0
- package/build/render.js +60 -0
- package/build/render.js.map +1 -0
- package/build/renderer.d.ts +24 -0
- package/build/renderer.js +292 -0
- package/build/renderer.js.map +1 -0
- package/build/replay.d.ts +59 -0
- package/build/replay.js +128 -0
- package/build/replay.js.map +1 -0
- package/build/resize-observer.d.ts +24 -0
- package/build/resize-observer.js +102 -0
- package/build/resize-observer.js.map +1 -0
- package/build/scroll.d.ts +11 -0
- package/build/scroll.js +123 -0
- package/build/scroll.js.map +1 -0
- package/build/selection.d.ts +52 -0
- package/build/selection.js +359 -0
- package/build/selection.js.map +1 -0
- package/build/serialization.d.ts +25 -0
- package/build/serialization.js +224 -0
- package/build/serialization.js.map +1 -0
- package/build/squash-text-nodes.d.ts +16 -0
- package/build/squash-text-nodes.js +58 -0
- package/build/squash-text-nodes.js.map +1 -0
- package/build/styled-line.d.ts +58 -0
- package/build/styled-line.js +629 -0
- package/build/styled-line.js.map +1 -0
- package/build/styles.d.ts +286 -0
- package/build/styles.js +257 -0
- package/build/styles.js.map +1 -0
- package/build/terminal-buffer.d.ts +57 -0
- package/build/terminal-buffer.js +507 -0
- package/build/terminal-buffer.js.map +1 -0
- package/build/text-wrap.d.ts +12 -0
- package/build/text-wrap.js +154 -0
- package/build/text-wrap.js.map +1 -0
- package/build/tokenize.d.ts +47 -0
- package/build/tokenize.js +419 -0
- package/build/tokenize.js.map +1 -0
- package/build/vertical-gap.d.ts +17 -0
- package/build/vertical-gap.js +20 -0
- package/build/vertical-gap.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 +49 -0
- package/build/worker/canvas.js +90 -0
- package/build/worker/canvas.js.map +1 -0
- package/build/worker/compositor.d.ts +33 -0
- package/build/worker/compositor.js +308 -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 +944 -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 +109 -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 +708 -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/license +9 -0
- package/package.json +208 -0
- package/readme.md +2353 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Calculates the number of newlines to insert based on a vertical gap.
|
|
8
|
+
*
|
|
9
|
+
* If there was preceding content on a previous line, we output a newline for
|
|
10
|
+
* the line break, plus any empty lines corresponding to the gap. If there was
|
|
11
|
+
* no preceding content, we only output newlines for the gap.
|
|
12
|
+
*
|
|
13
|
+
* @param gap The vertical gap in lines.
|
|
14
|
+
* @param hasPriorContent Whether there was content before this gap.
|
|
15
|
+
* @returns The number of newlines to insert.
|
|
16
|
+
*/
|
|
17
|
+
export const calculateNewlineCount = (gap, hasPriorContent) => {
|
|
18
|
+
return hasPriorContent ? 1 + gap : gap;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=vertical-gap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertical-gap.js","sourceRoot":"","sources":["../src/vertical-gap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,GAAW,EACX,eAAwB,EACf,EAAE;IACX,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { type Region } from '../output.js';
|
|
7
|
+
export type AnimationOptions = {
|
|
8
|
+
interval: number;
|
|
9
|
+
onTick: () => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Manages scroll animations.
|
|
13
|
+
* Interpolates between current scroll position and target scroll position.
|
|
14
|
+
*/
|
|
15
|
+
export declare class AnimationController {
|
|
16
|
+
private readonly options;
|
|
17
|
+
private readonly targetScrollTops;
|
|
18
|
+
private intervalId?;
|
|
19
|
+
private idleResolvers;
|
|
20
|
+
constructor(options: AnimationOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Updates the animation interval.
|
|
23
|
+
*/
|
|
24
|
+
updateInterval(interval: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* Returns the internal target scroll tops map.
|
|
27
|
+
*/
|
|
28
|
+
get allTargetScrollTops(): ReadonlyMap<string | number, number>;
|
|
29
|
+
/**
|
|
30
|
+
* Returns true if the animation loop is running.
|
|
31
|
+
*/
|
|
32
|
+
get isRunning(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Returns a promise that resolves when the animation loop stops.
|
|
35
|
+
*/
|
|
36
|
+
waitForIdle(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Sets the target scroll position for a region.
|
|
39
|
+
*/
|
|
40
|
+
setTargetScrollTop(regionId: string | number, scrollTop: number): void;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the target scroll top for a region.
|
|
43
|
+
*/
|
|
44
|
+
getTargetScrollTop(regionId: string | number): number | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Removes the target scroll position for a region.
|
|
47
|
+
*/
|
|
48
|
+
deleteTargetScrollTop(regionId: string | number): void;
|
|
49
|
+
/**
|
|
50
|
+
* Starts the animation loop if not already running.
|
|
51
|
+
*/
|
|
52
|
+
start(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Stops the animation loop.
|
|
55
|
+
*/
|
|
56
|
+
stop(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Interrupts animations and jumps all regions to their targets.
|
|
59
|
+
*/
|
|
60
|
+
jumpToTargets(regions: Map<string | number, Region>): void;
|
|
61
|
+
/**
|
|
62
|
+
* Updates regions based on their targets. Returns true if any region scrolled.
|
|
63
|
+
*/
|
|
64
|
+
updateRegions(regions: Map<string | number, Region>): {
|
|
65
|
+
hasScrolled: boolean;
|
|
66
|
+
canScrollMore: boolean;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Processes one frame of animation.
|
|
70
|
+
*/
|
|
71
|
+
private tick;
|
|
72
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Manages scroll animations.
|
|
8
|
+
* Interpolates between current scroll position and target scroll position.
|
|
9
|
+
*/
|
|
10
|
+
export class AnimationController {
|
|
11
|
+
options;
|
|
12
|
+
targetScrollTops = new Map();
|
|
13
|
+
intervalId;
|
|
14
|
+
idleResolvers = [];
|
|
15
|
+
constructor(options) {
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Updates the animation interval.
|
|
20
|
+
*/
|
|
21
|
+
updateInterval(interval) {
|
|
22
|
+
this.options.interval = interval;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns the internal target scroll tops map.
|
|
26
|
+
*/
|
|
27
|
+
get allTargetScrollTops() {
|
|
28
|
+
return this.targetScrollTops;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns true if the animation loop is running.
|
|
32
|
+
*/
|
|
33
|
+
get isRunning() {
|
|
34
|
+
return this.intervalId !== undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns a promise that resolves when the animation loop stops.
|
|
38
|
+
*/
|
|
39
|
+
async waitForIdle() {
|
|
40
|
+
if (!this.isRunning) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
return new Promise(resolve => {
|
|
44
|
+
this.idleResolvers.push(resolve);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sets the target scroll position for a region.
|
|
49
|
+
*/
|
|
50
|
+
setTargetScrollTop(regionId, scrollTop) {
|
|
51
|
+
this.targetScrollTops.set(regionId, scrollTop);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Returns the target scroll top for a region.
|
|
55
|
+
*/
|
|
56
|
+
getTargetScrollTop(regionId) {
|
|
57
|
+
return this.targetScrollTops.get(regionId);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Removes the target scroll position for a region.
|
|
61
|
+
*/
|
|
62
|
+
deleteTargetScrollTop(regionId) {
|
|
63
|
+
this.targetScrollTops.delete(regionId);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Starts the animation loop if not already running.
|
|
67
|
+
*/
|
|
68
|
+
start() {
|
|
69
|
+
if (this.intervalId) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.intervalId = setInterval(() => {
|
|
73
|
+
this.tick();
|
|
74
|
+
}, this.options.interval);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Stops the animation loop.
|
|
78
|
+
*/
|
|
79
|
+
stop() {
|
|
80
|
+
if (this.intervalId) {
|
|
81
|
+
clearInterval(this.intervalId);
|
|
82
|
+
this.intervalId = undefined;
|
|
83
|
+
}
|
|
84
|
+
for (const resolve of this.idleResolvers) {
|
|
85
|
+
resolve();
|
|
86
|
+
}
|
|
87
|
+
this.idleResolvers = [];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Interrupts animations and jumps all regions to their targets.
|
|
91
|
+
*/
|
|
92
|
+
jumpToTargets(regions) {
|
|
93
|
+
for (const [id, target] of this.targetScrollTops) {
|
|
94
|
+
const region = regions.get(id);
|
|
95
|
+
if (region) {
|
|
96
|
+
region.scrollTop = target;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
this.stop();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Updates regions based on their targets. Returns true if any region scrolled.
|
|
103
|
+
*/
|
|
104
|
+
updateRegions(regions) {
|
|
105
|
+
let hasScrolled = false;
|
|
106
|
+
let canScrollMore = false;
|
|
107
|
+
for (const region of regions.values()) {
|
|
108
|
+
const target = this.targetScrollTops.get(region.id);
|
|
109
|
+
if (target === undefined) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const current = region.scrollTop ?? 0;
|
|
113
|
+
if (current !== target) {
|
|
114
|
+
region.scrollTop = current < target ? current + 1 : current - 1;
|
|
115
|
+
hasScrolled = true;
|
|
116
|
+
canScrollMore = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return { hasScrolled, canScrollMore };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Processes one frame of animation.
|
|
123
|
+
*/
|
|
124
|
+
tick() {
|
|
125
|
+
this.options.onTick();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=animation-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-controller.js","sourceRoot":"","sources":["../../src/worker/animation-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export declare const enterSynchronizedOutput = "\u001B[?2026h";
|
|
7
|
+
export declare const exitSynchronizedOutput = "\u001B[?2026l";
|
|
8
|
+
export declare const resetScrollRegion = "\u001B[r";
|
|
9
|
+
export declare const ris = "\u001Bc";
|
|
10
|
+
export declare const clearScrollbackStandard = "\u001B[3J";
|
|
11
|
+
export declare const homeEraseDown = "\u001B[H\u001B[J";
|
|
12
|
+
export declare const getMoveCursorDownCode: (skippedLines: number) => string;
|
|
13
|
+
export declare const getMoveCursorUpCode: (skippedLines: number) => string;
|
|
14
|
+
export declare const getDeleteLinesCode: (count: number) => string;
|
|
15
|
+
export declare const getInsertLinesCode: (count: number) => string;
|
|
16
|
+
export declare const getSetScrollRegionCode: (top: number, bottom: number) => string;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import ansiEscapes from 'ansi-escapes';
|
|
7
|
+
export const enterSynchronizedOutput = '\u001B[?2026h';
|
|
8
|
+
export const exitSynchronizedOutput = '\u001B[?2026l';
|
|
9
|
+
export const resetScrollRegion = '\u001B[r';
|
|
10
|
+
export const ris = '\u001Bc';
|
|
11
|
+
export const clearScrollbackStandard = '\u001B[3J';
|
|
12
|
+
export const homeEraseDown = '\u001B[H\u001B[J';
|
|
13
|
+
export const getMoveCursorDownCode = (skippedLines) => {
|
|
14
|
+
if (skippedLines > 0) {
|
|
15
|
+
if (skippedLines === 1) {
|
|
16
|
+
return ansiEscapes.cursorNextLine;
|
|
17
|
+
}
|
|
18
|
+
return ansiEscapes.cursorDown(skippedLines);
|
|
19
|
+
}
|
|
20
|
+
return '';
|
|
21
|
+
};
|
|
22
|
+
export const getMoveCursorUpCode = (skippedLines) => {
|
|
23
|
+
if (skippedLines > 0) {
|
|
24
|
+
if (skippedLines === 1) {
|
|
25
|
+
return ansiEscapes.cursorPrevLine;
|
|
26
|
+
}
|
|
27
|
+
return ansiEscapes.cursorUp(skippedLines);
|
|
28
|
+
}
|
|
29
|
+
return '';
|
|
30
|
+
};
|
|
31
|
+
export const getDeleteLinesCode = (count) => {
|
|
32
|
+
return `\u001B[${count}M`;
|
|
33
|
+
};
|
|
34
|
+
export const getInsertLinesCode = (count) => {
|
|
35
|
+
return `\u001B[${count}L`;
|
|
36
|
+
};
|
|
37
|
+
export const getSetScrollRegionCode = (top, bottom) => {
|
|
38
|
+
return `\u001B[${top + 1};${bottom}r`;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=ansi-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi-utils.js","sourceRoot":"","sources":["../../src/worker/ansi-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;AAC7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAoB,EAAU,EAAE;IACrE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,cAAc,CAAC;QACnC,CAAC;QAED,OAAO,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAU,EAAE;IACnE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,cAAc,CAAC;QACnC,CAAC;QAED,OAAO,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IAC3D,OAAO,UAAU,KAAK,GAAG,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IAC3D,OAAO,UAAU,KAAK,GAAG,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAU,EAAE;IAC7E,OAAO,UAAU,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { StyledLine } from '../styled-line.js';
|
|
7
|
+
import { type RenderLine } from './terminal-writer.js';
|
|
8
|
+
export type Rect = {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
w: number;
|
|
12
|
+
h: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* A 2D drawing surface for terminal characters.
|
|
16
|
+
* Handles clipping and bounds checking.
|
|
17
|
+
*/
|
|
18
|
+
export declare class Canvas {
|
|
19
|
+
readonly width: number;
|
|
20
|
+
readonly height: number;
|
|
21
|
+
private readonly lines;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new Canvas from a set of lines.
|
|
24
|
+
*/
|
|
25
|
+
static fromLines(width: number, height: number, lines: RenderLine[]): Canvas;
|
|
26
|
+
/**
|
|
27
|
+
* Creates an empty Canvas with the given dimensions.
|
|
28
|
+
*/
|
|
29
|
+
static create(width: number, height: number, tainted?: boolean): Canvas;
|
|
30
|
+
constructor(width: number, height: number, lines: RenderLine[]);
|
|
31
|
+
/**
|
|
32
|
+
* Returns the character at the given coordinates.
|
|
33
|
+
*/
|
|
34
|
+
getChar(x: number, y: number): {
|
|
35
|
+
bgColor?: string;
|
|
36
|
+
} | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Sets a character at the given coordinates, respecting clipping.
|
|
39
|
+
*/
|
|
40
|
+
setChar(x: number, y: number, value: string, formatFlags: number, fgColor?: string, bgColor?: string, link?: string, clip?: Rect): void;
|
|
41
|
+
/**
|
|
42
|
+
* Draws a sequence of characters starting at (x, y).
|
|
43
|
+
*/
|
|
44
|
+
drawStyledChars(x: number, y: number, chars: StyledLine, clip?: Rect): void;
|
|
45
|
+
/**
|
|
46
|
+
* Returns the underlying lines.
|
|
47
|
+
*/
|
|
48
|
+
getLines(): RenderLine[];
|
|
49
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { StyledLine } from '../styled-line.js';
|
|
7
|
+
/**
|
|
8
|
+
* A 2D drawing surface for terminal characters.
|
|
9
|
+
* Handles clipping and bounds checking.
|
|
10
|
+
*/
|
|
11
|
+
export class Canvas {
|
|
12
|
+
width;
|
|
13
|
+
height;
|
|
14
|
+
lines;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new Canvas from a set of lines.
|
|
17
|
+
*/
|
|
18
|
+
static fromLines(width, height, lines) {
|
|
19
|
+
return new Canvas(width, height, lines);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates an empty Canvas with the given dimensions.
|
|
23
|
+
*/
|
|
24
|
+
static create(width, height, tainted = false) {
|
|
25
|
+
const lines = [];
|
|
26
|
+
for (let i = 0; i < height; i++) {
|
|
27
|
+
lines.push({
|
|
28
|
+
styledChars: new StyledLine(),
|
|
29
|
+
text: '',
|
|
30
|
+
length: 0,
|
|
31
|
+
tainted,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return new Canvas(width, height, lines);
|
|
35
|
+
}
|
|
36
|
+
constructor(width, height, lines) {
|
|
37
|
+
this.width = width;
|
|
38
|
+
this.height = height;
|
|
39
|
+
this.lines = lines;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns the character at the given coordinates.
|
|
43
|
+
*/
|
|
44
|
+
getChar(x, y) {
|
|
45
|
+
if (y < 0 || y >= this.height || x < 0 || x >= this.width) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const line = this.lines[y];
|
|
49
|
+
if (!line || x >= line.styledChars.length) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return { bgColor: line.styledChars.getBgColor(x) };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets a character at the given coordinates, respecting clipping.
|
|
56
|
+
*/
|
|
57
|
+
// eslint-disable-next-line max-params
|
|
58
|
+
setChar(x, y, value, formatFlags, fgColor, bgColor, link, clip) {
|
|
59
|
+
if (y < 0 || y >= this.height || x < 0 || x >= this.width) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (clip &&
|
|
63
|
+
(x < clip.x || x >= clip.x + clip.w || y < clip.y || y >= clip.y + clip.h)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const line = this.lines[y];
|
|
67
|
+
if (!line) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
while (line.styledChars.length <= x) {
|
|
71
|
+
line.styledChars.pushChar(' ', 0);
|
|
72
|
+
}
|
|
73
|
+
line.styledChars.setChar(x, value, formatFlags, fgColor, bgColor, link);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Draws a sequence of characters starting at (x, y).
|
|
77
|
+
*/
|
|
78
|
+
drawStyledChars(x, y, chars, clip) {
|
|
79
|
+
for (let i = 0; i < chars.length; i++) {
|
|
80
|
+
this.setChar(x + i, y, chars.getValue(i), chars.getFormatFlags(i), chars.getFgColor(i), chars.getBgColor(i), chars.getLink(i), clip);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns the underlying lines.
|
|
85
|
+
*/
|
|
86
|
+
getLines() {
|
|
87
|
+
return this.lines;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/worker/canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { type Region } from '../output.js';
|
|
7
|
+
import { type StickyHeader } from '../dom.js';
|
|
8
|
+
import { type Canvas, type Rect } from './canvas.js';
|
|
9
|
+
export type CompositionOptions = {
|
|
10
|
+
skipStickyHeaders?: boolean;
|
|
11
|
+
skipScrollbars?: boolean;
|
|
12
|
+
stickyHeadersInBackbuffer?: boolean;
|
|
13
|
+
animatedScroll?: boolean;
|
|
14
|
+
targetScrollTops: ReadonlyMap<string | number, number>;
|
|
15
|
+
regionWasAtEnd: Map<string | number, boolean>;
|
|
16
|
+
canvasHeight: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Handles rendering of various UI elements onto a Canvas.
|
|
20
|
+
*/
|
|
21
|
+
export declare class Compositor {
|
|
22
|
+
private readonly options;
|
|
23
|
+
private static lastBackgroundColor?;
|
|
24
|
+
private static lastBackgroundStyles;
|
|
25
|
+
constructor(options: CompositionOptions);
|
|
26
|
+
drawContent(canvas: Canvas, region: Region, absX: number, absY: number, clip: Rect): void;
|
|
27
|
+
drawStickyHeaders(canvas: Canvas, region: Region, absX: number, absY: number, clip: Rect): void;
|
|
28
|
+
drawScrollbars(canvas: Canvas, region: Region, absX: number, absY: number, clip: Rect): void;
|
|
29
|
+
isHeaderStuck(header: StickyHeader, absY: number, scrollTop: number, region: Region): boolean;
|
|
30
|
+
calculateActualStuckTopHeight(region: Region, absY: number, scrollTop: number): number;
|
|
31
|
+
calculateActualStuckBottomHeight(region: Region, absY: number, scrollTop: number): number;
|
|
32
|
+
private getBackgroundStyles;
|
|
33
|
+
}
|