@yeshwanthyk/open-tui 0.1.4 → 0.1.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.
Files changed (45) hide show
  1. package/dist/app.js +17 -15
  2. package/dist/app.jsx.map +1 -0
  3. package/dist/components/badge.js +60 -24
  4. package/dist/components/{badge.js.map → badge.jsx.map} +1 -1
  5. package/dist/components/code-block.js +110 -17
  6. package/dist/components/code-block.jsx.map +1 -0
  7. package/dist/components/dialog.js +86 -10
  8. package/dist/components/dialog.jsx.map +1 -0
  9. package/dist/components/diff.js +79 -13
  10. package/dist/components/diff.jsx.map +1 -0
  11. package/dist/components/divider.js +44 -11
  12. package/dist/components/divider.jsx.map +1 -0
  13. package/dist/components/editor.js +174 -127
  14. package/dist/components/{editor.js.map → editor.jsx.map} +1 -1
  15. package/dist/components/image.js +292 -228
  16. package/dist/components/{image.js.map → image.jsx.map} +1 -1
  17. package/dist/components/loader.js +50 -6
  18. package/dist/components/loader.jsx.map +1 -0
  19. package/dist/components/markdown.js +35 -18
  20. package/dist/components/markdown.jsx.map +1 -0
  21. package/dist/components/panel.js +86 -42
  22. package/dist/components/{panel.js.map → panel.jsx.map} +1 -1
  23. package/dist/components/select-list.js +193 -103
  24. package/dist/components/select-list.jsx.map +1 -0
  25. package/dist/components/spacer.js +17 -12
  26. package/dist/components/spacer.jsx.map +1 -0
  27. package/dist/components/toast.js +115 -34
  28. package/dist/components/toast.jsx.map +1 -0
  29. package/dist/context/terminal.js +1 -2
  30. package/dist/context/terminal.jsx.map +1 -0
  31. package/dist/context/theme.js +779 -555
  32. package/dist/context/theme.jsx.map +1 -0
  33. package/package.json +4 -4
  34. package/dist/app.js.map +0 -1
  35. package/dist/components/code-block.js.map +0 -1
  36. package/dist/components/dialog.js.map +0 -1
  37. package/dist/components/diff.js.map +0 -1
  38. package/dist/components/divider.js.map +0 -1
  39. package/dist/components/loader.js.map +0 -1
  40. package/dist/components/markdown.js.map +0 -1
  41. package/dist/components/select-list.js.map +0 -1
  42. package/dist/components/spacer.js.map +0 -1
  43. package/dist/components/toast.js.map +0 -1
  44. package/dist/context/terminal.js.map +0 -1
  45. package/dist/context/theme.js.map +0 -1
@@ -1,4 +1,9 @@
1
- import { jsx as _jsx } from "solid-js/h/jsx-runtime";
1
+ import { createComponent as _$createComponent } from "@opentui/solid";
2
+ import { setProp as _$setProp } from "@opentui/solid";
3
+ import { effect as _$effect } from "@opentui/solid";
4
+ import { insertNode as _$insertNode } from "@opentui/solid";
5
+ import { insert as _$insert } from "@opentui/solid";
6
+ import { createElement as _$createElement } from "@opentui/solid";
2
7
  /**
3
8
  * Image component for rendering images in the terminal
4
9
  *
@@ -14,206 +19,217 @@ import { useTheme } from "../context/theme.js";
14
19
  // Cache terminal capabilities
15
20
  let cachedCapabilities = null;
16
21
  // Default cell dimensions
17
- let cellDimensions = { widthPx: 9, heightPx: 18 };
22
+ let cellDimensions = {
23
+ widthPx: 9,
24
+ heightPx: 18
25
+ };
18
26
  export function setCellDimensions(dims) {
19
- cellDimensions = dims;
27
+ cellDimensions = dims;
20
28
  }
21
29
  export function getCellDimensions() {
22
- return cellDimensions;
30
+ return cellDimensions;
23
31
  }
24
32
  /**
25
33
  * Detect terminal image capabilities
26
34
  */
27
35
  export function detectCapabilities() {
28
- const env = process.env;
29
- const termProgram = env["TERM_PROGRAM"]?.toLowerCase() || "";
30
- const term = env["TERM"]?.toLowerCase() || "";
31
- const colorTerm = env["COLORTERM"]?.toLowerCase() || "";
32
- const termInfo = env["TERMINFO"]?.toLowerCase() || "";
33
- // Kitty protocol support
34
- if (env["KITTY_WINDOW_ID"] || termProgram === "kitty") {
35
- return { images: "kitty", trueColor: true };
36
- }
37
- // Ghostty - check TERM_PROGRAM or TERMINFO (for tmux passthrough)
38
- if (termProgram === "ghostty" || term.includes("ghostty") || termInfo.includes("ghostty")) {
39
- return { images: "kitty", trueColor: true };
40
- }
41
- if (env["WEZTERM_PANE"] || termProgram === "wezterm") {
42
- return { images: "kitty", trueColor: true };
43
- }
44
- // iTerm2 protocol support
45
- if (env["ITERM_SESSION_ID"] || termProgram === "iterm.app") {
46
- return { images: "iterm2", trueColor: true };
47
- }
48
- // No image support
49
- const trueColor = colorTerm === "truecolor" || colorTerm === "24bit";
50
- return { images: null, trueColor };
36
+ const env = process.env;
37
+ const termProgram = env["TERM_PROGRAM"]?.toLowerCase() || "";
38
+ const term = env["TERM"]?.toLowerCase() || "";
39
+ const colorTerm = env["COLORTERM"]?.toLowerCase() || "";
40
+ const termInfo = env["TERMINFO"]?.toLowerCase() || "";
41
+ // Kitty protocol support
42
+ if (env["KITTY_WINDOW_ID"] || termProgram === "kitty") {
43
+ return {
44
+ images: "kitty",
45
+ trueColor: true
46
+ };
47
+ }
48
+ // Ghostty - check TERM_PROGRAM or TERMINFO (for tmux passthrough)
49
+ if (termProgram === "ghostty" || term.includes("ghostty") || termInfo.includes("ghostty")) {
50
+ return {
51
+ images: "kitty",
52
+ trueColor: true
53
+ };
54
+ }
55
+ if (env["WEZTERM_PANE"] || termProgram === "wezterm") {
56
+ return {
57
+ images: "kitty",
58
+ trueColor: true
59
+ };
60
+ }
61
+ // iTerm2 protocol support
62
+ if (env["ITERM_SESSION_ID"] || termProgram === "iterm.app") {
63
+ return {
64
+ images: "iterm2",
65
+ trueColor: true
66
+ };
67
+ }
68
+ // No image support
69
+ const trueColor = colorTerm === "truecolor" || colorTerm === "24bit";
70
+ return {
71
+ images: null,
72
+ trueColor
73
+ };
51
74
  }
52
75
  export function getCapabilities() {
53
- if (!cachedCapabilities) {
54
- cachedCapabilities = detectCapabilities();
55
- }
56
- return cachedCapabilities;
76
+ if (!cachedCapabilities) {
77
+ cachedCapabilities = detectCapabilities();
78
+ }
79
+ return cachedCapabilities;
57
80
  }
58
81
  export function resetCapabilitiesCache() {
59
- cachedCapabilities = null;
82
+ cachedCapabilities = null;
60
83
  }
61
84
  /**
62
85
  * Encode image using Kitty graphics protocol
63
86
  */
64
87
  function encodeKitty(base64Data, columns, rows) {
65
- const CHUNK_SIZE = 4096;
66
- const params = ["a=T", "f=100", "q=2", `c=${columns}`, `r=${rows}`];
67
- if (base64Data.length <= CHUNK_SIZE) {
68
- return `\x1b_G${params.join(",")};${base64Data}\x1b\\`;
69
- }
70
- const chunks = [];
71
- let offset = 0;
72
- let isFirst = true;
73
- while (offset < base64Data.length) {
74
- const chunk = base64Data.slice(offset, offset + CHUNK_SIZE);
75
- const isLast = offset + CHUNK_SIZE >= base64Data.length;
76
- if (isFirst) {
77
- chunks.push(`\x1b_G${params.join(",")},m=1;${chunk}\x1b\\`);
78
- isFirst = false;
79
- }
80
- else if (isLast) {
81
- chunks.push(`\x1b_Gm=0;${chunk}\x1b\\`);
82
- }
83
- else {
84
- chunks.push(`\x1b_Gm=1;${chunk}\x1b\\`);
85
- }
86
- offset += CHUNK_SIZE;
88
+ const CHUNK_SIZE = 4096;
89
+ const params = ["a=T", "f=100", "q=2", `c=${columns}`, `r=${rows}`];
90
+ if (base64Data.length <= CHUNK_SIZE) {
91
+ return `\x1b_G${params.join(",")};${base64Data}\x1b\\`;
92
+ }
93
+ const chunks = [];
94
+ let offset = 0;
95
+ let isFirst = true;
96
+ while (offset < base64Data.length) {
97
+ const chunk = base64Data.slice(offset, offset + CHUNK_SIZE);
98
+ const isLast = offset + CHUNK_SIZE >= base64Data.length;
99
+ if (isFirst) {
100
+ chunks.push(`\x1b_G${params.join(",")},m=1;${chunk}\x1b\\`);
101
+ isFirst = false;
102
+ } else if (isLast) {
103
+ chunks.push(`\x1b_Gm=0;${chunk}\x1b\\`);
104
+ } else {
105
+ chunks.push(`\x1b_Gm=1;${chunk}\x1b\\`);
87
106
  }
88
- return chunks.join("");
107
+ offset += CHUNK_SIZE;
108
+ }
109
+ return chunks.join("");
89
110
  }
90
111
  /**
91
112
  * Encode image using iTerm2 inline image protocol
92
113
  */
93
114
  function encodeITerm2(base64Data, width) {
94
- const params = [`inline=1`, `width=${width}`, `height=auto`, `preserveAspectRatio=1`];
95
- return `\x1b]1337;File=${params.join(";")}:${base64Data}\x07`;
115
+ const params = [`inline=1`, `width=${width}`, `height=auto`, `preserveAspectRatio=1`];
116
+ return `\x1b]1337;File=${params.join(";")}:${base64Data}\x07`;
96
117
  }
97
118
  /**
98
119
  * Calculate image rows based on dimensions and cell size
99
120
  */
100
121
  function calculateRows(imageDims, targetWidthCells) {
101
- const targetWidthPx = targetWidthCells * cellDimensions.widthPx;
102
- const scale = targetWidthPx / imageDims.widthPx;
103
- const scaledHeightPx = imageDims.heightPx * scale;
104
- const rows = Math.ceil(scaledHeightPx / cellDimensions.heightPx);
105
- return Math.max(1, rows);
122
+ const targetWidthPx = targetWidthCells * cellDimensions.widthPx;
123
+ const scale = targetWidthPx / imageDims.widthPx;
124
+ const scaledHeightPx = imageDims.heightPx * scale;
125
+ const rows = Math.ceil(scaledHeightPx / cellDimensions.heightPx);
126
+ return Math.max(1, rows);
106
127
  }
107
128
  // Image dimension extractors
108
129
  function getPngDimensions(base64Data) {
109
- try {
110
- const buffer = Buffer.from(base64Data, "base64");
111
- if (buffer.length < 24)
112
- return null;
113
- if (buffer[0] !== 0x89 || buffer[1] !== 0x50 || buffer[2] !== 0x4e || buffer[3] !== 0x47)
114
- return null;
115
- return { widthPx: buffer.readUInt32BE(16), heightPx: buffer.readUInt32BE(20) };
116
- }
117
- catch {
118
- return null;
119
- }
130
+ try {
131
+ const buffer = Buffer.from(base64Data, "base64");
132
+ if (buffer.length < 24) return null;
133
+ if (buffer[0] !== 0x89 || buffer[1] !== 0x50 || buffer[2] !== 0x4e || buffer[3] !== 0x47) return null;
134
+ return {
135
+ widthPx: buffer.readUInt32BE(16),
136
+ heightPx: buffer.readUInt32BE(20)
137
+ };
138
+ } catch {
139
+ return null;
140
+ }
120
141
  }
121
142
  function getJpegDimensions(base64Data) {
122
- try {
123
- const buffer = Buffer.from(base64Data, "base64");
124
- if (buffer.length < 2 || buffer[0] !== 0xff || buffer[1] !== 0xd8)
125
- return null;
126
- let offset = 2;
127
- while (offset < buffer.length - 9) {
128
- if (buffer[offset] !== 0xff) {
129
- offset++;
130
- continue;
131
- }
132
- const marker = buffer[offset + 1];
133
- if (marker !== undefined && marker >= 0xc0 && marker <= 0xc2) {
134
- return { widthPx: buffer.readUInt16BE(offset + 7), heightPx: buffer.readUInt16BE(offset + 5) };
135
- }
136
- if (offset + 3 >= buffer.length)
137
- return null;
138
- const length = buffer.readUInt16BE(offset + 2);
139
- if (length < 2)
140
- return null;
141
- offset += 2 + length;
142
- }
143
- return null;
144
- }
145
- catch {
146
- return null;
143
+ try {
144
+ const buffer = Buffer.from(base64Data, "base64");
145
+ if (buffer.length < 2 || buffer[0] !== 0xff || buffer[1] !== 0xd8) return null;
146
+ let offset = 2;
147
+ while (offset < buffer.length - 9) {
148
+ if (buffer[offset] !== 0xff) {
149
+ offset++;
150
+ continue;
151
+ }
152
+ const marker = buffer[offset + 1];
153
+ if (marker !== undefined && marker >= 0xc0 && marker <= 0xc2) {
154
+ return {
155
+ widthPx: buffer.readUInt16BE(offset + 7),
156
+ heightPx: buffer.readUInt16BE(offset + 5)
157
+ };
158
+ }
159
+ if (offset + 3 >= buffer.length) return null;
160
+ const length = buffer.readUInt16BE(offset + 2);
161
+ if (length < 2) return null;
162
+ offset += 2 + length;
147
163
  }
164
+ return null;
165
+ } catch {
166
+ return null;
167
+ }
148
168
  }
149
169
  function getGifDimensions(base64Data) {
150
- try {
151
- const buffer = Buffer.from(base64Data, "base64");
152
- if (buffer.length < 10)
153
- return null;
154
- const sig = buffer.slice(0, 6).toString("ascii");
155
- if (sig !== "GIF87a" && sig !== "GIF89a")
156
- return null;
157
- return { widthPx: buffer.readUInt16LE(6), heightPx: buffer.readUInt16LE(8) };
158
- }
159
- catch {
160
- return null;
161
- }
170
+ try {
171
+ const buffer = Buffer.from(base64Data, "base64");
172
+ if (buffer.length < 10) return null;
173
+ const sig = buffer.slice(0, 6).toString("ascii");
174
+ if (sig !== "GIF87a" && sig !== "GIF89a") return null;
175
+ return {
176
+ widthPx: buffer.readUInt16LE(6),
177
+ heightPx: buffer.readUInt16LE(8)
178
+ };
179
+ } catch {
180
+ return null;
181
+ }
162
182
  }
163
183
  function getWebpDimensions(base64Data) {
164
- try {
165
- const buffer = Buffer.from(base64Data, "base64");
166
- if (buffer.length < 30)
167
- return null;
168
- if (buffer.slice(0, 4).toString("ascii") !== "RIFF")
169
- return null;
170
- if (buffer.slice(8, 12).toString("ascii") !== "WEBP")
171
- return null;
172
- const chunk = buffer.slice(12, 16).toString("ascii");
173
- if (chunk === "VP8 " && buffer.length >= 30) {
174
- return { widthPx: buffer.readUInt16LE(26) & 0x3fff, heightPx: buffer.readUInt16LE(28) & 0x3fff };
175
- }
176
- if (chunk === "VP8L" && buffer.length >= 25) {
177
- const bits = buffer.readUInt32LE(21);
178
- return { widthPx: (bits & 0x3fff) + 1, heightPx: ((bits >> 14) & 0x3fff) + 1 };
179
- }
180
- if (chunk === "VP8X" && buffer.length >= 30) {
181
- return {
182
- widthPx: ((buffer[24] ?? 0) | ((buffer[25] ?? 0) << 8) | ((buffer[26] ?? 0) << 16)) + 1,
183
- heightPx: ((buffer[27] ?? 0) | ((buffer[28] ?? 0) << 8) | ((buffer[29] ?? 0) << 16)) + 1,
184
- };
185
- }
186
- return null;
184
+ try {
185
+ const buffer = Buffer.from(base64Data, "base64");
186
+ if (buffer.length < 30) return null;
187
+ if (buffer.slice(0, 4).toString("ascii") !== "RIFF") return null;
188
+ if (buffer.slice(8, 12).toString("ascii") !== "WEBP") return null;
189
+ const chunk = buffer.slice(12, 16).toString("ascii");
190
+ if (chunk === "VP8 " && buffer.length >= 30) {
191
+ return {
192
+ widthPx: buffer.readUInt16LE(26) & 0x3fff,
193
+ heightPx: buffer.readUInt16LE(28) & 0x3fff
194
+ };
187
195
  }
188
- catch {
189
- return null;
196
+ if (chunk === "VP8L" && buffer.length >= 25) {
197
+ const bits = buffer.readUInt32LE(21);
198
+ return {
199
+ widthPx: (bits & 0x3fff) + 1,
200
+ heightPx: (bits >> 14 & 0x3fff) + 1
201
+ };
190
202
  }
203
+ if (chunk === "VP8X" && buffer.length >= 30) {
204
+ return {
205
+ widthPx: ((buffer[24] ?? 0) | (buffer[25] ?? 0) << 8 | (buffer[26] ?? 0) << 16) + 1,
206
+ heightPx: ((buffer[27] ?? 0) | (buffer[28] ?? 0) << 8 | (buffer[29] ?? 0) << 16) + 1
207
+ };
208
+ }
209
+ return null;
210
+ } catch {
211
+ return null;
212
+ }
191
213
  }
192
214
  /**
193
215
  * Get image dimensions from base64 data
194
216
  */
195
217
  export function getImageDimensions(base64Data, mimeType) {
196
- if (mimeType === "image/png")
197
- return getPngDimensions(base64Data);
198
- if (mimeType === "image/jpeg")
199
- return getJpegDimensions(base64Data);
200
- if (mimeType === "image/gif")
201
- return getGifDimensions(base64Data);
202
- if (mimeType === "image/webp")
203
- return getWebpDimensions(base64Data);
204
- return null;
218
+ if (mimeType === "image/png") return getPngDimensions(base64Data);
219
+ if (mimeType === "image/jpeg") return getJpegDimensions(base64Data);
220
+ if (mimeType === "image/gif") return getGifDimensions(base64Data);
221
+ if (mimeType === "image/webp") return getWebpDimensions(base64Data);
222
+ return null;
205
223
  }
206
224
  /**
207
225
  * Generate fallback text for images
208
226
  */
209
227
  function imageFallback(mimeType, dimensions, filename) {
210
- const parts = [];
211
- if (filename)
212
- parts.push(filename);
213
- parts.push(`[${mimeType}]`);
214
- if (dimensions)
215
- parts.push(`${dimensions.widthPx}x${dimensions.heightPx}`);
216
- return `[Image: ${parts.join(" ")}]`;
228
+ const parts = [];
229
+ if (filename) parts.push(filename);
230
+ parts.push(`[${mimeType}]`);
231
+ if (dimensions) parts.push(`${dimensions.widthPx}x${dimensions.heightPx}`);
232
+ return `[Image: ${parts.join(" ")}]`;
217
233
  }
218
234
  // Track rendered images to avoid duplicate writes
219
235
  const renderedImages = new Set();
@@ -222,16 +238,15 @@ const renderedImages = new Set();
222
238
  * This bypasses OpenTUI's text buffer which doesn't handle OSC sequences properly
223
239
  */
224
240
  function writeImageToStdout(sequence, rows, imageId) {
225
- // Avoid duplicate writes for the same image
226
- if (renderedImages.has(imageId))
227
- return;
228
- renderedImages.add(imageId);
229
- // Move cursor up to the start of the reserved space, output image, then restore position
230
- // The box component reserves `rows` lines, so we move up (rows-1) to position at start
231
- const moveUp = rows > 1 ? `\x1b[${rows - 1}A` : "";
232
- const moveDown = rows > 1 ? `\x1b[${rows - 1}B` : "";
233
- // Write: move up, image sequence, move down (to restore cursor position)
234
- process.stdout.write(moveUp + sequence + moveDown);
241
+ // Avoid duplicate writes for the same image
242
+ if (renderedImages.has(imageId)) return;
243
+ renderedImages.add(imageId);
244
+ // Move cursor up to the start of the reserved space, output image, then restore position
245
+ // The box component reserves `rows` lines, so we move up (rows-1) to position at start
246
+ const moveUp = rows > 1 ? `\x1b[${rows - 1}A` : "";
247
+ const moveDown = rows > 1 ? `\x1b[${rows - 1}B` : "";
248
+ // Write: move up, image sequence, move down (to restore cursor position)
249
+ process.stdout.write(moveUp + sequence + moveDown);
235
250
  }
236
251
  /**
237
252
  * Image component for rendering inline images in the terminal
@@ -246,70 +261,119 @@ function writeImageToStdout(sequence, rows, imageId) {
246
261
  * ```
247
262
  */
248
263
  export function Image(props) {
249
- const { theme } = useTheme();
250
- const caps = getCapabilities();
251
- const fallbackColor = () => props.fallbackColor ?? theme.textMuted;
252
- const termDimensions = useTerminalDimensions();
253
- // Get or detect dimensions
254
- const dimensions = createMemo(() => {
255
- if (props.dimensions)
256
- return props.dimensions;
257
- return getImageDimensions(props.data, props.mimeType) ?? { widthPx: 800, heightPx: 600 };
258
- });
259
- // Dynamic maxWidth based on terminal size
260
- const maxWidth = createMemo(() => Math.min(props.maxWidth ?? 60, termDimensions().width - 4));
261
- const maxHeight = () => props.maxHeight ?? 24;
262
- // Generate content-based key for caching (re-render if data or size changes)
263
- const imageKey = createMemo(() => {
264
- const dims = dimensions();
265
- const mw = maxWidth();
266
- const mh = maxHeight();
267
- // Use first 32 chars of data for key
268
- const dataPrefix = props.data.slice(0, 32);
269
- return `img-${dataPrefix}-${dims.widthPx}x${dims.heightPx}-${mw}x${mh}`;
270
- });
271
- // Render image or fallback
272
- const renderResult = createMemo(() => {
273
- if (!caps.images) {
274
- return { type: "fallback", text: imageFallback(props.mimeType, dimensions(), props.filename) };
275
- }
276
- const width = maxWidth();
277
- let rows = calculateRows(dimensions(), width);
278
- // Clamp to maxHeight
279
- if (rows > maxHeight()) {
280
- rows = maxHeight();
281
- }
282
- if (caps.images === "kitty") {
283
- const sequence = encodeKitty(props.data, width, rows);
284
- return { type: "image", sequence, rows };
285
- }
286
- if (caps.images === "iterm2") {
287
- const sequence = encodeITerm2(props.data, width);
288
- return { type: "image", sequence, rows };
289
- }
290
- return { type: "fallback", text: imageFallback(props.mimeType, dimensions(), props.filename) };
291
- });
292
- // Write image directly to stdout when component renders
293
- createEffect(() => {
294
- const result = renderResult();
295
- const key = imageKey();
296
- if (result.type === "image") {
297
- // Small delay to ensure the box has been rendered and positioned
298
- setTimeout(() => {
299
- writeImageToStdout(result.sequence, result.rows, key);
300
- }, 50);
301
- }
302
- });
303
- // Re-render on terminal resize - imageKey already depends on maxWidth which depends on termDimensions
304
- createEffect(() => {
305
- const key = imageKey();
306
- // Remove from cache to force re-render when dimensions change
307
- renderedImages.delete(key);
308
- });
309
- // Cleanup: remove from rendered set when component unmounts
310
- onCleanup(() => {
311
- renderedImages.delete(imageKey());
312
- });
313
- return (_jsx(Show, { when: renderResult().type === "image", fallback: _jsx("text", { fg: fallbackColor(), children: renderResult().text }), children: _jsx("box", { height: renderResult().rows, width: maxWidth(), children: _jsx("text", { fg: theme.textMuted, children: " ".repeat(maxWidth()) }) }) }));
314
- }
315
- //# sourceMappingURL=image.js.map
264
+ const {
265
+ theme
266
+ } = useTheme();
267
+ const caps = getCapabilities();
268
+ const fallbackColor = () => props.fallbackColor ?? theme.textMuted;
269
+ const termDimensions = useTerminalDimensions();
270
+ // Get or detect dimensions
271
+ const dimensions = createMemo(() => {
272
+ if (props.dimensions) return props.dimensions;
273
+ return getImageDimensions(props.data, props.mimeType) ?? {
274
+ widthPx: 800,
275
+ heightPx: 600
276
+ };
277
+ });
278
+ // Dynamic maxWidth based on terminal size
279
+ const maxWidth = createMemo(() => Math.min(props.maxWidth ?? 60, termDimensions().width - 4));
280
+ const maxHeight = () => props.maxHeight ?? 24;
281
+ // Generate content-based key for caching (re-render if data or size changes)
282
+ const imageKey = createMemo(() => {
283
+ const dims = dimensions();
284
+ const mw = maxWidth();
285
+ const mh = maxHeight();
286
+ // Use first 32 chars of data for key
287
+ const dataPrefix = props.data.slice(0, 32);
288
+ return `img-${dataPrefix}-${dims.widthPx}x${dims.heightPx}-${mw}x${mh}`;
289
+ });
290
+ // Render image or fallback
291
+ const renderResult = createMemo(() => {
292
+ if (!caps.images) {
293
+ return {
294
+ type: "fallback",
295
+ text: imageFallback(props.mimeType, dimensions(), props.filename)
296
+ };
297
+ }
298
+ const width = maxWidth();
299
+ let rows = calculateRows(dimensions(), width);
300
+ // Clamp to maxHeight
301
+ if (rows > maxHeight()) {
302
+ rows = maxHeight();
303
+ }
304
+ if (caps.images === "kitty") {
305
+ const sequence = encodeKitty(props.data, width, rows);
306
+ return {
307
+ type: "image",
308
+ sequence,
309
+ rows
310
+ };
311
+ }
312
+ if (caps.images === "iterm2") {
313
+ const sequence = encodeITerm2(props.data, width);
314
+ return {
315
+ type: "image",
316
+ sequence,
317
+ rows
318
+ };
319
+ }
320
+ return {
321
+ type: "fallback",
322
+ text: imageFallback(props.mimeType, dimensions(), props.filename)
323
+ };
324
+ });
325
+ // Write image directly to stdout when component renders
326
+ createEffect(() => {
327
+ const result = renderResult();
328
+ const key = imageKey();
329
+ if (result.type === "image") {
330
+ // Small delay to ensure the box has been rendered and positioned
331
+ setTimeout(() => {
332
+ writeImageToStdout(result.sequence, result.rows, key);
333
+ }, 50);
334
+ }
335
+ });
336
+ // Re-render on terminal resize - imageKey already depends on maxWidth which depends on termDimensions
337
+ createEffect(() => {
338
+ const key = imageKey();
339
+ // Remove from cache to force re-render when dimensions change
340
+ renderedImages.delete(key);
341
+ });
342
+ // Cleanup: remove from rendered set when component unmounts
343
+ onCleanup(() => {
344
+ renderedImages.delete(imageKey());
345
+ });
346
+ return _$createComponent(Show, {
347
+ get when() {
348
+ return renderResult().type === "image";
349
+ },
350
+ get fallback() {
351
+ return (() => {
352
+ var _el$3 = _$createElement("text");
353
+ _$insert(_el$3, () => renderResult().text);
354
+ _$effect(_$p => _$setProp(_el$3, "fg", fallbackColor(), _$p));
355
+ return _el$3;
356
+ })();
357
+ },
358
+ get children() {
359
+ var _el$ = _$createElement("box"),
360
+ _el$2 = _$createElement("text");
361
+ _$insertNode(_el$, _el$2);
362
+ _$insert(_el$2, () => " ".repeat(maxWidth()));
363
+ _$effect(_p$ => {
364
+ var _v$ = renderResult().rows,
365
+ _v$2 = maxWidth(),
366
+ _v$3 = theme.textMuted;
367
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$, "height", _v$, _p$.e));
368
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$, "width", _v$2, _p$.t));
369
+ _v$3 !== _p$.a && (_p$.a = _$setProp(_el$2, "fg", _v$3, _p$.a));
370
+ return _p$;
371
+ }, {
372
+ e: undefined,
373
+ t: undefined,
374
+ a: undefined
375
+ });
376
+ return _el$;
377
+ }
378
+ });
379
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/components/image.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.jsx","sourceRoot":"","sources":["../../src/components/image.tsx"],"names":[],"mappings":"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"}