@dungle-scrubs/tallow 0.8.21 → 0.8.23
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/dist/cli.js +35 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/interactive-mode-patch.d.ts +2 -0
- package/dist/interactive-mode-patch.d.ts.map +1 -1
- package/dist/interactive-mode-patch.js +82 -0
- package/dist/interactive-mode-patch.js.map +1 -1
- package/dist/sdk.d.ts +17 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +68 -1
- package/dist/sdk.js.map +1 -1
- package/dist/workspace-transition-relay.d.ts +40 -7
- package/dist/workspace-transition-relay.d.ts.map +1 -1
- package/dist/workspace-transition-relay.js +81 -16
- package/dist/workspace-transition-relay.js.map +1 -1
- package/extensions/__integration__/background-task-widget-ownership.test.ts +216 -0
- package/extensions/__integration__/claude-hooks-compat.test.ts +156 -0
- package/extensions/__integration__/slash-command-bridge.test.ts +169 -23
- package/extensions/_shared/atomic-write.ts +1 -1
- package/extensions/_shared/bordered-box.ts +102 -0
- package/extensions/_shared/interop-events.ts +5 -0
- package/extensions/_shared/pid-registry.ts +1 -1
- package/extensions/agent-commands-tool/index.ts +4 -1
- package/extensions/background-task-tool/__tests__/lifecycle.test.ts +50 -25
- package/extensions/background-task-tool/index.ts +139 -221
- package/extensions/bash-tool-enhanced/index.ts +1 -75
- package/extensions/cd-tool/index.ts +2 -2
- package/extensions/context-fork/spawn.ts +4 -1
- package/extensions/health/index.ts +6 -6
- package/extensions/hooks/__tests__/claude-compat.test.ts +35 -0
- package/extensions/hooks/__tests__/subprocess-hardening.test.ts +73 -0
- package/extensions/hooks/index.ts +27 -4
- package/extensions/loop/__tests__/loop.test.ts +168 -4
- package/extensions/loop/extension.json +6 -5
- package/extensions/loop/index.ts +242 -31
- package/extensions/plan-mode-tool/__tests__/agent-end-execution.test.ts +373 -0
- package/extensions/plan-mode-tool/index.ts +103 -41
- package/extensions/prompt-suggestions/__tests__/editor-compatibility.test.ts +42 -0
- package/extensions/prompt-suggestions/index.ts +41 -6
- package/extensions/slash-command-bridge/__tests__/slash-command-bridge.test.ts +267 -671
- package/extensions/slash-command-bridge/extension.json +1 -1
- package/extensions/slash-command-bridge/index.ts +230 -116
- package/extensions/subagent-tool/index.ts +2 -2
- package/extensions/subagent-tool/process.ts +4 -5
- package/extensions/tasks/commands/register-tasks-extension.ts +41 -0
- package/extensions/teams-tool/__tests__/peer-messaging.test.ts +29 -24
- package/extensions/teams-tool/dashboard.ts +3 -5
- package/extensions/teams-tool/dispatch/auto-dispatch.ts +18 -1
- package/extensions/teams-tool/tools/teammate-tools.ts +9 -6
- package/extensions/wezterm-pane-control/__tests__/index.test.ts +88 -4
- package/extensions/wezterm-pane-control/index.ts +113 -8
- package/package.json +6 -4
- package/packages/tallow-tui/README.md +51 -0
- package/packages/tallow-tui/dist/autocomplete.d.ts +48 -0
- package/packages/tallow-tui/dist/autocomplete.d.ts.map +1 -0
- package/packages/tallow-tui/dist/autocomplete.js +564 -0
- package/packages/tallow-tui/dist/autocomplete.js.map +1 -0
- package/packages/tallow-tui/dist/border-styles.d.ts +32 -0
- package/packages/tallow-tui/dist/border-styles.d.ts.map +1 -0
- package/packages/tallow-tui/dist/border-styles.js +46 -0
- package/packages/tallow-tui/dist/border-styles.js.map +1 -0
- package/packages/tallow-tui/dist/components/bordered-box.d.ts +52 -0
- package/packages/tallow-tui/dist/components/bordered-box.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/bordered-box.js +89 -0
- package/packages/tallow-tui/dist/components/bordered-box.js.map +1 -0
- package/packages/tallow-tui/dist/components/box.d.ts +22 -0
- package/packages/tallow-tui/dist/components/box.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/box.js +104 -0
- package/packages/tallow-tui/dist/components/box.js.map +1 -0
- package/packages/tallow-tui/dist/components/cancellable-loader.d.ts +22 -0
- package/packages/tallow-tui/dist/components/cancellable-loader.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/cancellable-loader.js +35 -0
- package/packages/tallow-tui/dist/components/cancellable-loader.js.map +1 -0
- package/packages/tallow-tui/dist/components/editor.d.ts +240 -0
- package/packages/tallow-tui/dist/components/editor.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/editor.js +1766 -0
- package/packages/tallow-tui/dist/components/editor.js.map +1 -0
- package/packages/tallow-tui/dist/components/image.d.ts +126 -0
- package/packages/tallow-tui/dist/components/image.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/image.js +245 -0
- package/packages/tallow-tui/dist/components/image.js.map +1 -0
- package/packages/tallow-tui/dist/components/input.d.ts +37 -0
- package/packages/tallow-tui/dist/components/input.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/input.js +439 -0
- package/packages/tallow-tui/dist/components/input.js.map +1 -0
- package/packages/tallow-tui/dist/components/loader.d.ts +88 -0
- package/packages/tallow-tui/dist/components/loader.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/loader.js +146 -0
- package/packages/tallow-tui/dist/components/loader.js.map +1 -0
- package/packages/tallow-tui/dist/components/markdown.d.ts +95 -0
- package/packages/tallow-tui/dist/components/markdown.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/markdown.js +633 -0
- package/packages/tallow-tui/dist/components/markdown.js.map +1 -0
- package/packages/tallow-tui/dist/components/select-list.d.ts +32 -0
- package/packages/tallow-tui/dist/components/select-list.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/select-list.js +156 -0
- package/packages/tallow-tui/dist/components/select-list.js.map +1 -0
- package/packages/tallow-tui/dist/components/settings-list.d.ts +50 -0
- package/packages/tallow-tui/dist/components/settings-list.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/settings-list.js +189 -0
- package/packages/tallow-tui/dist/components/settings-list.js.map +1 -0
- package/packages/tallow-tui/dist/components/spacer.d.ts +12 -0
- package/packages/tallow-tui/dist/components/spacer.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/spacer.js +23 -0
- package/packages/tallow-tui/dist/components/spacer.js.map +1 -0
- package/packages/tallow-tui/dist/components/text.d.ts +19 -0
- package/packages/tallow-tui/dist/components/text.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/text.js +91 -0
- package/packages/tallow-tui/dist/components/text.js.map +1 -0
- package/packages/tallow-tui/dist/components/truncated-text.d.ts +13 -0
- package/packages/tallow-tui/dist/components/truncated-text.d.ts.map +1 -0
- package/packages/tallow-tui/dist/components/truncated-text.js +51 -0
- package/packages/tallow-tui/dist/components/truncated-text.js.map +1 -0
- package/packages/tallow-tui/dist/editor-component.d.ts +50 -0
- package/packages/tallow-tui/dist/editor-component.d.ts.map +1 -0
- package/packages/tallow-tui/dist/editor-component.js +2 -0
- package/packages/tallow-tui/dist/editor-component.js.map +1 -0
- package/packages/tallow-tui/dist/fuzzy.d.ts +16 -0
- package/packages/tallow-tui/dist/fuzzy.d.ts.map +1 -0
- package/packages/tallow-tui/dist/fuzzy.js +107 -0
- package/packages/tallow-tui/dist/fuzzy.js.map +1 -0
- package/packages/tallow-tui/dist/index.d.ts +25 -0
- package/packages/tallow-tui/dist/index.d.ts.map +1 -0
- package/packages/tallow-tui/dist/index.js +35 -0
- package/packages/tallow-tui/dist/index.js.map +1 -0
- package/packages/tallow-tui/dist/keybindings.d.ts +39 -0
- package/packages/tallow-tui/dist/keybindings.d.ts.map +1 -0
- package/packages/tallow-tui/dist/keybindings.js +114 -0
- package/packages/tallow-tui/dist/keybindings.js.map +1 -0
- package/packages/tallow-tui/dist/keys.d.ts +168 -0
- package/packages/tallow-tui/dist/keys.d.ts.map +1 -0
- package/packages/tallow-tui/dist/keys.js +971 -0
- package/packages/tallow-tui/dist/keys.js.map +1 -0
- package/packages/tallow-tui/dist/kill-ring.d.ts +28 -0
- package/packages/tallow-tui/dist/kill-ring.d.ts.map +1 -0
- package/packages/tallow-tui/dist/kill-ring.js +44 -0
- package/packages/tallow-tui/dist/kill-ring.js.map +1 -0
- package/packages/tallow-tui/dist/stdin-buffer.d.ts +48 -0
- package/packages/tallow-tui/dist/stdin-buffer.d.ts.map +1 -0
- package/packages/tallow-tui/dist/stdin-buffer.js +317 -0
- package/packages/tallow-tui/dist/stdin-buffer.js.map +1 -0
- package/packages/tallow-tui/dist/terminal-image.d.ts +161 -0
- package/packages/tallow-tui/dist/terminal-image.d.ts.map +1 -0
- package/packages/tallow-tui/dist/terminal-image.js +460 -0
- package/packages/tallow-tui/dist/terminal-image.js.map +1 -0
- package/packages/tallow-tui/dist/terminal.d.ts +102 -0
- package/packages/tallow-tui/dist/terminal.d.ts.map +1 -0
- package/packages/tallow-tui/dist/terminal.js +263 -0
- package/packages/tallow-tui/dist/terminal.js.map +1 -0
- package/packages/tallow-tui/dist/test-utils/capability-env.d.ts +14 -0
- package/packages/tallow-tui/dist/test-utils/capability-env.d.ts.map +1 -0
- package/packages/tallow-tui/dist/test-utils/capability-env.js +55 -0
- package/packages/tallow-tui/dist/test-utils/capability-env.js.map +1 -0
- package/packages/tallow-tui/dist/tui.d.ts +239 -0
- package/packages/tallow-tui/dist/tui.d.ts.map +1 -0
- package/packages/tallow-tui/dist/tui.js +1058 -0
- package/packages/tallow-tui/dist/tui.js.map +1 -0
- package/packages/tallow-tui/dist/undo-stack.d.ts +17 -0
- package/packages/tallow-tui/dist/undo-stack.d.ts.map +1 -0
- package/packages/tallow-tui/dist/undo-stack.js +25 -0
- package/packages/tallow-tui/dist/undo-stack.js.map +1 -0
- package/packages/tallow-tui/dist/utils.d.ts +96 -0
- package/packages/tallow-tui/dist/utils.d.ts.map +1 -0
- package/packages/tallow-tui/dist/utils.js +843 -0
- package/packages/tallow-tui/dist/utils.js.map +1 -0
- package/packages/tallow-tui/package.json +24 -0
- package/packages/tallow-tui/src/__tests__/__snapshots__/render.test.ts.snap +121 -0
- package/packages/tallow-tui/src/__tests__/editor-border.test.ts +72 -0
- package/packages/tallow-tui/src/__tests__/editor-change-listener.test.ts +121 -0
- package/packages/tallow-tui/src/__tests__/editor-ghost-text.test.ts +112 -0
- package/packages/tallow-tui/src/__tests__/fuzzy.test.ts +91 -0
- package/packages/tallow-tui/src/__tests__/image-component.test.ts +113 -0
- package/packages/tallow-tui/src/__tests__/keys.test.ts +141 -0
- package/packages/tallow-tui/src/__tests__/render.test.ts +179 -0
- package/packages/tallow-tui/src/__tests__/stdin-buffer.test.ts +82 -0
- package/packages/tallow-tui/src/__tests__/terminal-image.test.ts +363 -0
- package/packages/tallow-tui/src/__tests__/tui-diff-regression.test.ts +454 -0
- package/packages/tallow-tui/src/__tests__/tui-render-scheduling.test.ts +256 -0
- package/packages/tallow-tui/src/__tests__/utils.test.ts +259 -0
- package/packages/tallow-tui/src/autocomplete.ts +716 -0
- package/packages/tallow-tui/src/border-styles.ts +60 -0
- package/packages/tallow-tui/src/components/bordered-box.ts +113 -0
- package/packages/tallow-tui/src/components/box.ts +137 -0
- package/packages/tallow-tui/src/components/cancellable-loader.ts +40 -0
- package/packages/tallow-tui/src/components/editor.ts +2143 -0
- package/packages/tallow-tui/src/components/image.ts +315 -0
- package/packages/tallow-tui/src/components/input.ts +522 -0
- package/packages/tallow-tui/src/components/loader.ts +187 -0
- package/packages/tallow-tui/src/components/markdown.ts +780 -0
- package/packages/tallow-tui/src/components/select-list.ts +197 -0
- package/packages/tallow-tui/src/components/settings-list.ts +264 -0
- package/packages/tallow-tui/src/components/spacer.ts +28 -0
- package/packages/tallow-tui/src/components/text.ts +113 -0
- package/packages/tallow-tui/src/components/truncated-text.ts +65 -0
- package/packages/tallow-tui/src/editor-component.ts +92 -0
- package/packages/tallow-tui/src/fuzzy.ts +133 -0
- package/packages/tallow-tui/src/index.ts +118 -0
- package/packages/tallow-tui/src/keybindings.ts +183 -0
- package/packages/tallow-tui/src/keys.ts +1189 -0
- package/packages/tallow-tui/src/kill-ring.ts +46 -0
- package/packages/tallow-tui/src/stdin-buffer.ts +386 -0
- package/packages/tallow-tui/src/terminal-image.ts +619 -0
- package/packages/tallow-tui/src/terminal.ts +350 -0
- package/packages/tallow-tui/src/test-utils/capability-env.ts +56 -0
- package/packages/tallow-tui/src/tui.ts +1336 -0
- package/packages/tallow-tui/src/undo-stack.ts +28 -0
- package/packages/tallow-tui/src/utils.ts +948 -0
- package/packages/tallow-tui/tsconfig.build.json +21 -0
- package/runtime/agent-runner.ts +20 -0
- package/runtime/atomic-write.ts +8 -0
- package/runtime/otel.ts +12 -0
- package/runtime/resolve-module.ts +23 -0
- package/runtime/runtime-path-provider.ts +12 -0
- package/runtime/runtime-provenance.ts +17 -0
- package/runtime/workspace-transition-relay.ts +21 -0
- package/runtime/workspace-transition.ts +29 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Text } from "./text.js";
|
|
2
|
+
/** Default braille spinner frames used when no custom frames are provided. */
|
|
3
|
+
const DEFAULT_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
4
|
+
/** Default animation interval in milliseconds. */
|
|
5
|
+
const DEFAULT_INTERVAL_MS = 80;
|
|
6
|
+
/**
|
|
7
|
+
* Loader component that updates with a spinning animation.
|
|
8
|
+
*
|
|
9
|
+
* @param ui - TUI instance for rendering
|
|
10
|
+
* @param spinnerColorFn - Color function applied to the spinner frame
|
|
11
|
+
* @param messageColorFn - Color function applied to the message text
|
|
12
|
+
* @param message - Text shown next to the spinner (default: "Loading...")
|
|
13
|
+
* @param options - Optional frames and interval override
|
|
14
|
+
*/
|
|
15
|
+
export class Loader extends Text {
|
|
16
|
+
spinnerColorFn;
|
|
17
|
+
messageColorFn;
|
|
18
|
+
message;
|
|
19
|
+
frames;
|
|
20
|
+
intervalMs;
|
|
21
|
+
currentFrame = 0;
|
|
22
|
+
intervalId = null;
|
|
23
|
+
_transformIntervalId = null;
|
|
24
|
+
ui = null;
|
|
25
|
+
/** Per-instance tick counter for message transform animations. */
|
|
26
|
+
_transformTick = 0;
|
|
27
|
+
/** Tracks whether setMessage() has been called since construction. */
|
|
28
|
+
_messageChanged = false;
|
|
29
|
+
constructor(ui, spinnerColorFn, messageColorFn, message = "Loading...", options) {
|
|
30
|
+
super("", 1, 0);
|
|
31
|
+
this.spinnerColorFn = spinnerColorFn;
|
|
32
|
+
this.messageColorFn = messageColorFn;
|
|
33
|
+
this.message = message;
|
|
34
|
+
this.frames = options?.frames ?? Loader.defaultFrames ?? DEFAULT_FRAMES;
|
|
35
|
+
this.intervalMs = options?.intervalMs ?? Loader.defaultIntervalMs ?? DEFAULT_INTERVAL_MS;
|
|
36
|
+
this.ui = ui;
|
|
37
|
+
this.start();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Global default spinner frames — set once, applies to all new Loader instances.
|
|
41
|
+
* Extensions can set this at session_start to override the braille default.
|
|
42
|
+
*/
|
|
43
|
+
static defaultFrames;
|
|
44
|
+
/**
|
|
45
|
+
* Global default interval — set once, applies to all new Loader instances.
|
|
46
|
+
*/
|
|
47
|
+
static defaultIntervalMs;
|
|
48
|
+
/**
|
|
49
|
+
* Global message transform — called each tick to modify the displayed message.
|
|
50
|
+
* Extensions use this to animate or replace the loader text.
|
|
51
|
+
* Return the string to display. The transform is applied before messageColorFn.
|
|
52
|
+
*/
|
|
53
|
+
static defaultMessageTransform;
|
|
54
|
+
/**
|
|
55
|
+
* Interval (ms) for the message transform tick — independent of the spinner frame rate.
|
|
56
|
+
* When set to a value faster than the spinner interval, a separate timer drives
|
|
57
|
+
* the transform tick and re-renders, giving animations higher
|
|
58
|
+
* frame rates without affecting the spinner animation speed.
|
|
59
|
+
*/
|
|
60
|
+
static defaultTransformIntervalMs;
|
|
61
|
+
/** Whether the loader is hidden (renders as empty space). */
|
|
62
|
+
hidden = false;
|
|
63
|
+
/**
|
|
64
|
+
* Hide the loader — renders nothing but keeps the interval alive.
|
|
65
|
+
* Call show() to restore.
|
|
66
|
+
*/
|
|
67
|
+
hide() {
|
|
68
|
+
this.hidden = true;
|
|
69
|
+
this.setText("");
|
|
70
|
+
this.ui?.requestRender();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Show the loader after a hide() call.
|
|
74
|
+
*/
|
|
75
|
+
show() {
|
|
76
|
+
this.hidden = false;
|
|
77
|
+
this.updateDisplay();
|
|
78
|
+
}
|
|
79
|
+
render(width) {
|
|
80
|
+
if (this.hidden)
|
|
81
|
+
return [];
|
|
82
|
+
return ["", ...super.render(width)];
|
|
83
|
+
}
|
|
84
|
+
start() {
|
|
85
|
+
this.updateDisplay();
|
|
86
|
+
const transformMs = Loader.defaultTransformIntervalMs;
|
|
87
|
+
const hasFastTransform = Loader.defaultMessageTransform != null &&
|
|
88
|
+
transformMs != null &&
|
|
89
|
+
transformMs < this.intervalMs;
|
|
90
|
+
this.intervalId = setInterval(() => {
|
|
91
|
+
this.currentFrame = (this.currentFrame + 1) % this.frames.length;
|
|
92
|
+
this._transformTick++;
|
|
93
|
+
this.updateDisplay();
|
|
94
|
+
}, this.intervalMs);
|
|
95
|
+
// Separate faster interval for message transform re-renders only.
|
|
96
|
+
// Does NOT advance _transformTick — just re-rolls random visuals.
|
|
97
|
+
if (hasFastTransform) {
|
|
98
|
+
this._transformIntervalId = setInterval(() => {
|
|
99
|
+
this.updateDisplay();
|
|
100
|
+
}, transformMs);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
stop() {
|
|
104
|
+
if (this.intervalId) {
|
|
105
|
+
clearInterval(this.intervalId);
|
|
106
|
+
this.intervalId = null;
|
|
107
|
+
}
|
|
108
|
+
if (this._transformIntervalId) {
|
|
109
|
+
clearInterval(this._transformIntervalId);
|
|
110
|
+
this._transformIntervalId = null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** Sentinel value — pass to setWorkingMessage() to hide the loader. */
|
|
114
|
+
static HIDE = "\u200B";
|
|
115
|
+
/**
|
|
116
|
+
* Set the loader message. Pass Loader.HIDE to hide, any other string to show.
|
|
117
|
+
* @param message - Message text or Loader.HIDE sentinel
|
|
118
|
+
*/
|
|
119
|
+
setMessage(message) {
|
|
120
|
+
if (message === Loader.HIDE) {
|
|
121
|
+
this.hide();
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (this.hidden)
|
|
125
|
+
this.show();
|
|
126
|
+
this._messageChanged = true;
|
|
127
|
+
this.message = message;
|
|
128
|
+
this.updateDisplay();
|
|
129
|
+
}
|
|
130
|
+
updateDisplay() {
|
|
131
|
+
const frame = this.frames[this.currentFrame];
|
|
132
|
+
let displayMessage = this.message;
|
|
133
|
+
if (Loader.defaultMessageTransform) {
|
|
134
|
+
displayMessage = Loader.defaultMessageTransform({
|
|
135
|
+
message: this.message,
|
|
136
|
+
tick: this._transformTick,
|
|
137
|
+
isInitialMessage: !this._messageChanged,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
this.setText(`${this.spinnerColorFn(frame)} ${this.messageColorFn(displayMessage)}`);
|
|
141
|
+
if (this.ui) {
|
|
142
|
+
this.ui.requestRender();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/components/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { Component } from "../tui.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default text styling for markdown content.
|
|
4
|
+
* Applied to all text unless overridden by markdown formatting.
|
|
5
|
+
*/
|
|
6
|
+
export interface DefaultTextStyle {
|
|
7
|
+
/** Foreground color function */
|
|
8
|
+
color?: (text: string) => string;
|
|
9
|
+
/** Background color function */
|
|
10
|
+
bgColor?: (text: string) => string;
|
|
11
|
+
/** Bold text */
|
|
12
|
+
bold?: boolean;
|
|
13
|
+
/** Italic text */
|
|
14
|
+
italic?: boolean;
|
|
15
|
+
/** Strikethrough text */
|
|
16
|
+
strikethrough?: boolean;
|
|
17
|
+
/** Underline text */
|
|
18
|
+
underline?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Theme functions for markdown elements.
|
|
22
|
+
* Each function takes text and returns styled text with ANSI codes.
|
|
23
|
+
*/
|
|
24
|
+
export interface MarkdownTheme {
|
|
25
|
+
heading: (text: string) => string;
|
|
26
|
+
link: (text: string) => string;
|
|
27
|
+
linkUrl: (text: string) => string;
|
|
28
|
+
code: (text: string) => string;
|
|
29
|
+
codeBlock: (text: string) => string;
|
|
30
|
+
codeBlockBorder: (text: string) => string;
|
|
31
|
+
quote: (text: string) => string;
|
|
32
|
+
quoteBorder: (text: string) => string;
|
|
33
|
+
hr: (text: string) => string;
|
|
34
|
+
listBullet: (text: string) => string;
|
|
35
|
+
bold: (text: string) => string;
|
|
36
|
+
italic: (text: string) => string;
|
|
37
|
+
strikethrough: (text: string) => string;
|
|
38
|
+
underline: (text: string) => string;
|
|
39
|
+
highlightCode?: (code: string, lang?: string) => string[];
|
|
40
|
+
/** Prefix applied to each rendered code block line (default: " ") */
|
|
41
|
+
codeBlockIndent?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare class Markdown implements Component {
|
|
44
|
+
private text;
|
|
45
|
+
private paddingX;
|
|
46
|
+
private paddingY;
|
|
47
|
+
private defaultTextStyle?;
|
|
48
|
+
private theme;
|
|
49
|
+
private defaultStylePrefix?;
|
|
50
|
+
private cachedText?;
|
|
51
|
+
private cachedWidth?;
|
|
52
|
+
private cachedLines?;
|
|
53
|
+
constructor(text: string, paddingX: number, paddingY: number, theme: MarkdownTheme, defaultTextStyle?: DefaultTextStyle);
|
|
54
|
+
setText(text: string): void;
|
|
55
|
+
invalidate(): void;
|
|
56
|
+
render(width: number): string[];
|
|
57
|
+
/**
|
|
58
|
+
* Apply default text style to a string.
|
|
59
|
+
* This is the base styling applied to all text content.
|
|
60
|
+
* NOTE: Background color is NOT applied here - it's applied at the padding stage
|
|
61
|
+
* to ensure it extends to the full line width.
|
|
62
|
+
*/
|
|
63
|
+
private applyDefaultStyle;
|
|
64
|
+
private getDefaultStylePrefix;
|
|
65
|
+
private getStylePrefix;
|
|
66
|
+
private getDefaultInlineStyleContext;
|
|
67
|
+
private renderToken;
|
|
68
|
+
private renderInlineTokens;
|
|
69
|
+
/**
|
|
70
|
+
* Render a list with proper nesting support
|
|
71
|
+
*/
|
|
72
|
+
private renderList;
|
|
73
|
+
/**
|
|
74
|
+
* Render list item tokens, handling nested lists
|
|
75
|
+
* Returns lines WITHOUT the parent indent (renderList will add it)
|
|
76
|
+
*/
|
|
77
|
+
private renderListItem;
|
|
78
|
+
/**
|
|
79
|
+
* Get the visible width of the longest word in a string.
|
|
80
|
+
*/
|
|
81
|
+
private getLongestWordWidth;
|
|
82
|
+
/**
|
|
83
|
+
* Wrap a table cell to fit into a column.
|
|
84
|
+
*
|
|
85
|
+
* Delegates to wrapTextWithAnsi() so ANSI codes + long tokens are handled
|
|
86
|
+
* consistently with the rest of the renderer.
|
|
87
|
+
*/
|
|
88
|
+
private wrapCellText;
|
|
89
|
+
/**
|
|
90
|
+
* Render a table with width-aware cell wrapping.
|
|
91
|
+
* Cells that don't fit are wrapped to multiple lines.
|
|
92
|
+
*/
|
|
93
|
+
private renderTable;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/components/markdown.ts"],"names":[],"mappings":"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"}
|