dmux 1.3.3 → 1.5.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.
Files changed (38) hide show
  1. package/dist/AutoUpdater.d.ts +35 -0
  2. package/dist/AutoUpdater.d.ts.map +1 -0
  3. package/dist/AutoUpdater.js +225 -0
  4. package/dist/AutoUpdater.js.map +1 -0
  5. package/dist/BetterTextInput.d.ts +10 -0
  6. package/dist/BetterTextInput.d.ts.map +1 -0
  7. package/dist/BetterTextInput.js +177 -0
  8. package/dist/BetterTextInput.js.map +1 -0
  9. package/dist/CleanTextInput.d.ts +10 -0
  10. package/dist/CleanTextInput.d.ts.map +1 -0
  11. package/dist/CleanTextInput.js +572 -0
  12. package/dist/CleanTextInput.js.map +1 -0
  13. package/dist/DmuxApp.d.ts +2 -0
  14. package/dist/DmuxApp.d.ts.map +1 -1
  15. package/dist/DmuxApp.js +330 -165
  16. package/dist/DmuxApp.js.map +1 -1
  17. package/dist/EnhancedTextInput.d.ts.map +1 -1
  18. package/dist/EnhancedTextInput.js +155 -50
  19. package/dist/EnhancedTextInput.js.map +1 -1
  20. package/dist/GeminiTextInput.d.ts +12 -0
  21. package/dist/GeminiTextInput.d.ts.map +1 -0
  22. package/dist/GeminiTextInput.js +210 -0
  23. package/dist/GeminiTextInput.js.map +1 -0
  24. package/dist/MultilineTextInput.d.ts +10 -0
  25. package/dist/MultilineTextInput.d.ts.map +1 -0
  26. package/dist/MultilineTextInput.js +184 -0
  27. package/dist/MultilineTextInput.js.map +1 -0
  28. package/dist/SimpleGeminiInput.d.ts +12 -0
  29. package/dist/SimpleGeminiInput.d.ts.map +1 -0
  30. package/dist/SimpleGeminiInput.js +223 -0
  31. package/dist/SimpleGeminiInput.js.map +1 -0
  32. package/dist/StyledTextInput.d.ts +10 -0
  33. package/dist/StyledTextInput.d.ts.map +1 -0
  34. package/dist/StyledTextInput.js +10 -0
  35. package/dist/StyledTextInput.js.map +1 -0
  36. package/dist/index.js +48 -3
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,572 @@
1
+ import React, { useState, useEffect, useMemo } from 'react';
2
+ import { Box, Text, useInput, useFocus, useStdout } from 'ink';
3
+ const CleanTextInput = ({ value, onChange, onSubmit, placeholder = '' }) => {
4
+ const { isFocused } = useFocus({ autoFocus: true });
5
+ const [cursor, setCursor] = useState(value.length);
6
+ const { stdout } = useStdout();
7
+ const [pastedItems, setPastedItems] = useState(new Map());
8
+ const [nextPasteId, setNextPasteId] = useState(1);
9
+ const [isProcessingPaste, setIsProcessingPaste] = useState(false);
10
+ // Paste buffering state
11
+ const [pasteBuffer, setPasteBuffer] = useState('');
12
+ const [isPasting, setIsPasting] = useState(false);
13
+ const [pasteTimeout, setPasteTimeout] = useState(null);
14
+ const [inBracketedPaste, setInBracketedPaste] = useState(false);
15
+ // Calculate available width for text (terminal width - borders - padding - prompt)
16
+ // Subtract 2 for borders, 2 for padding, 2 for "> " prompt = 6 total
17
+ // The prompt is always rendered separately, so we need to account for it
18
+ // Use process.stdout.columns as fallback since useStdout might not update
19
+ const terminalWidth = process.stdout.columns || (stdout ? stdout.columns : 80);
20
+ // Reduce by 1 more to prevent edge case where text exactly fills width
21
+ const maxWidth = Math.max(20, terminalWidth - 7);
22
+ // Keep cursor in bounds
23
+ useEffect(() => {
24
+ if (cursor > value.length) {
25
+ setCursor(value.length);
26
+ }
27
+ else if (cursor < 0) {
28
+ setCursor(0);
29
+ }
30
+ }, [value.length, cursor]);
31
+ // Enable bracketed paste mode with small delay to avoid blocking UI
32
+ useEffect(() => {
33
+ let bracketedPasteTimer = null;
34
+ if (isFocused) {
35
+ // Small delay to let UI settle before enabling bracketed paste
36
+ bracketedPasteTimer = setTimeout(() => {
37
+ process.stdout.write('\x1b[?2004h');
38
+ }, 10);
39
+ }
40
+ return () => {
41
+ if (bracketedPasteTimer) {
42
+ clearTimeout(bracketedPasteTimer);
43
+ }
44
+ process.stdout.write('\x1b[?2004l');
45
+ // Clean up paste timeout if component unmounts
46
+ if (pasteTimeout) {
47
+ clearTimeout(pasteTimeout);
48
+ }
49
+ };
50
+ }, [isFocused, pasteTimeout]);
51
+ // Preprocess pasted content to remove formatting artifacts
52
+ const preprocessPastedContent = (input) => {
53
+ // Remove ANSI escape sequences (colors, cursor movements, etc)
54
+ let cleaned = input.replace(/\x1b\[[0-9;]*m/g, ''); // Remove color codes
55
+ cleaned = cleaned.replace(/\x1b\[[\d;]*[A-Za-z]/g, ''); // Remove cursor movements
56
+ // Remove box drawing characters
57
+ const boxChars = /[╭╮╰╯│─┌┐└┘├┤┬┴┼━┃┏┓┗┛┣┫┳┻╋]/g;
58
+ cleaned = cleaned.replace(boxChars, '');
59
+ // Normalize line endings
60
+ cleaned = cleaned.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
61
+ // Split into lines for processing
62
+ let lines = cleaned.split('\n');
63
+ // Remove common prompt patterns and clean each line
64
+ lines = lines.map(line => {
65
+ // Remove leading prompt indicators
66
+ line = line.replace(/^[>$#]\s+/, '');
67
+ // Trim whitespace
68
+ return line.trim();
69
+ });
70
+ // Remove empty lines at start and end
71
+ while (lines.length > 0 && lines[0] === '')
72
+ lines.shift();
73
+ while (lines.length > 0 && lines[lines.length - 1] === '')
74
+ lines.pop();
75
+ // Handle wrapped lines (lines that were split by terminal width)
76
+ const unwrappedLines = [];
77
+ for (let i = 0; i < lines.length; i++) {
78
+ const currentLine = lines[i];
79
+ const nextLine = lines[i + 1];
80
+ // If current line doesn't end with punctuation and next line starts lowercase,
81
+ // it's likely a wrapped line
82
+ if (nextLine &&
83
+ currentLine.length > 0 &&
84
+ !currentLine.match(/[.!?;:,]$/) &&
85
+ nextLine[0] &&
86
+ nextLine[0] === nextLine[0].toLowerCase()) {
87
+ // Join wrapped lines
88
+ unwrappedLines.push(currentLine + ' ' + nextLine);
89
+ i++; // Skip next line since we merged it
90
+ }
91
+ else {
92
+ unwrappedLines.push(currentLine);
93
+ }
94
+ }
95
+ return unwrappedLines.join('\n');
96
+ };
97
+ // Expand paste references to their actual content
98
+ const expandPasteReferences = (text) => {
99
+ let expanded = text;
100
+ const tagPattern = /\[#(\d+) Pasted, \d+ lines?\]/g;
101
+ let match;
102
+ while ((match = tagPattern.exec(text)) !== null) {
103
+ const pasteId = parseInt(match[1]);
104
+ const pastedContent = pastedItems.get(pasteId);
105
+ if (pastedContent) {
106
+ expanded = expanded.replace(match[0], pastedContent.content);
107
+ }
108
+ }
109
+ return expanded;
110
+ };
111
+ // Process complete pasted content once buffering is done
112
+ const processPastedContent = (fullContent) => {
113
+ // Always preprocess pasted content
114
+ const cleaned = preprocessPastedContent(fullContent);
115
+ const lines = cleaned.split('\n');
116
+ if (lines.length > 10) {
117
+ // Large paste - create reference tag
118
+ const pasteId = nextPasteId;
119
+ const pasteRef = {
120
+ id: pasteId,
121
+ content: cleaned,
122
+ lineCount: lines.length,
123
+ timestamp: Date.now()
124
+ };
125
+ setPastedItems(prev => {
126
+ const newMap = new Map(prev);
127
+ newMap.set(pasteId, pasteRef);
128
+ return newMap;
129
+ });
130
+ setNextPasteId(pasteId + 1);
131
+ // Insert reference tag
132
+ const tag = `[#${pasteId} Pasted, ${lines.length} lines]`;
133
+ const before = value.slice(0, cursor);
134
+ const after = value.slice(cursor);
135
+ onChange(before + tag + after);
136
+ setCursor(cursor + tag.length);
137
+ }
138
+ else {
139
+ // Small paste - insert cleaned content directly
140
+ const before = value.slice(0, cursor);
141
+ const after = value.slice(cursor);
142
+ onChange(before + cleaned + after);
143
+ setCursor(cursor + cleaned.length);
144
+ }
145
+ // Reset paste state
146
+ setPasteBuffer('');
147
+ setIsPasting(false);
148
+ setInBracketedPaste(false);
149
+ };
150
+ useInput((input, key) => {
151
+ if (!isFocused)
152
+ return;
153
+ // Escape clears
154
+ if (key.escape) {
155
+ onChange('');
156
+ setCursor(0);
157
+ return;
158
+ }
159
+ // Shift+Enter submits with expanded content
160
+ if (key.return && key.shift) {
161
+ const expandedValue = expandPasteReferences(value);
162
+ onSubmit?.(expandedValue);
163
+ return;
164
+ }
165
+ // Enter adds newline
166
+ if (key.return) {
167
+ const before = value.slice(0, cursor);
168
+ const after = value.slice(cursor);
169
+ const newValue = before + '\n' + after;
170
+ onChange(newValue);
171
+ setCursor(cursor + 1);
172
+ return;
173
+ }
174
+ // Backspace deletes BEFORE cursor
175
+ // IMPORTANT: Some terminals send 'delete' key when backspace is pressed
176
+ // Handle both key.backspace and key.delete as backspace
177
+ if (key.backspace || key.delete || input === '\x7f' || input === '\x08') {
178
+ // Clear any paste state when delete is pressed
179
+ if (isPasting) {
180
+ setIsPasting(false);
181
+ setPasteBuffer('');
182
+ if (pasteTimeout) {
183
+ clearTimeout(pasteTimeout);
184
+ setPasteTimeout(null);
185
+ }
186
+ }
187
+ if (cursor > 0) {
188
+ const before = value.slice(0, cursor - 1);
189
+ const after = value.slice(cursor);
190
+ const newValue = before + after;
191
+ onChange(newValue);
192
+ setCursor(cursor - 1);
193
+ }
194
+ return;
195
+ }
196
+ // Forward delete (actual delete key behavior) - removed since we're treating delete as backspace
197
+ // If you need forward delete, use a different key combination
198
+ // Ctrl-A: Jump to beginning of current visual line
199
+ if (key.ctrl && input === 'a') {
200
+ const wrapped = wrapText(value, maxWidth);
201
+ const currentPos = findCursorInWrappedLines(wrapped, cursor);
202
+ // Find absolute position of start of current visual line
203
+ let absolutePos = 0;
204
+ for (let i = 0; i < currentPos.line; i++) {
205
+ absolutePos += wrapped[i].line.length;
206
+ if (!wrapped[i].isHardBreak && i < wrapped.length - 1) {
207
+ absolutePos++; // Space between wrapped segments
208
+ }
209
+ else if (wrapped[i].isHardBreak) {
210
+ absolutePos++; // Newline character
211
+ }
212
+ }
213
+ setCursor(absolutePos);
214
+ return;
215
+ }
216
+ // Ctrl-E: Jump to end of current visual line
217
+ if (key.ctrl && input === 'e') {
218
+ const wrapped = wrapText(value, maxWidth);
219
+ const currentPos = findCursorInWrappedLines(wrapped, cursor);
220
+ // Find absolute position of end of current visual line
221
+ let absolutePos = 0;
222
+ for (let i = 0; i <= currentPos.line; i++) {
223
+ if (i === currentPos.line) {
224
+ absolutePos += wrapped[i].line.length;
225
+ }
226
+ else {
227
+ absolutePos += wrapped[i].line.length;
228
+ if (!wrapped[i].isHardBreak && i < wrapped.length - 1) {
229
+ absolutePos++; // Space between wrapped segments
230
+ }
231
+ else if (wrapped[i].isHardBreak) {
232
+ absolutePos++; // Newline character
233
+ }
234
+ }
235
+ }
236
+ setCursor(Math.min(absolutePos, value.length));
237
+ return;
238
+ }
239
+ // Left arrow
240
+ if (key.leftArrow) {
241
+ setCursor(Math.max(0, cursor - 1));
242
+ return;
243
+ }
244
+ // Right arrow
245
+ if (key.rightArrow) {
246
+ setCursor(Math.min(value.length, cursor + 1));
247
+ return;
248
+ }
249
+ // Up/Down arrows for navigation (works with both hard and soft wrapped lines)
250
+ if (key.upArrow || key.downArrow) {
251
+ // Get wrapped lines to understand visual layout
252
+ const wrapped = wrapText(value, maxWidth);
253
+ const currentPos = findCursorInWrappedLines(wrapped, cursor);
254
+ if (key.upArrow && currentPos.line > 0) {
255
+ // Move up one visual line
256
+ const targetLine = currentPos.line - 1;
257
+ const targetCol = Math.min(currentPos.col, wrapped[targetLine].line.length);
258
+ // Convert back to absolute position
259
+ let absolutePos = 0;
260
+ for (let i = 0; i < targetLine; i++) {
261
+ absolutePos += wrapped[i].line.length;
262
+ // Add space if this was a soft wrap
263
+ if (!wrapped[i].isHardBreak && i < wrapped.length - 1) {
264
+ const nextLineExists = i + 1 < wrapped.length;
265
+ if (nextLineExists)
266
+ absolutePos++; // Space between wrapped segments
267
+ }
268
+ else if (wrapped[i].isHardBreak) {
269
+ absolutePos++; // Newline character
270
+ }
271
+ }
272
+ absolutePos += targetCol;
273
+ setCursor(Math.min(absolutePos, value.length));
274
+ }
275
+ else if (key.downArrow && currentPos.line < wrapped.length - 1) {
276
+ // Move down one visual line
277
+ const targetLine = currentPos.line + 1;
278
+ const targetCol = Math.min(currentPos.col, wrapped[targetLine].line.length);
279
+ // Convert back to absolute position
280
+ let absolutePos = 0;
281
+ for (let i = 0; i < targetLine; i++) {
282
+ absolutePos += wrapped[i].line.length;
283
+ // Add space if this was a soft wrap
284
+ if (!wrapped[i].isHardBreak && i < wrapped.length - 1) {
285
+ const nextLineExists = i + 1 < wrapped.length;
286
+ if (nextLineExists)
287
+ absolutePos++; // Space between wrapped segments
288
+ }
289
+ else if (wrapped[i].isHardBreak) {
290
+ absolutePos++; // Newline character
291
+ }
292
+ }
293
+ absolutePos += targetCol;
294
+ setCursor(Math.min(absolutePos, value.length));
295
+ }
296
+ return;
297
+ }
298
+ // Regular text input with paste detection and buffering
299
+ if (input && !key.ctrl && !key.meta) {
300
+ // Detect bracketed paste sequences
301
+ const PASTE_START = '\x1b[200~';
302
+ const PASTE_END = '\x1b[201~';
303
+ // Check for bracketed paste markers
304
+ const hasPasteStart = input.includes(PASTE_START);
305
+ const hasPasteEnd = input.includes(PASTE_END);
306
+ // Handle bracketed paste mode
307
+ if (hasPasteStart) {
308
+ setInBracketedPaste(true);
309
+ // Extract content after paste start marker
310
+ const startIdx = input.indexOf(PASTE_START) + PASTE_START.length;
311
+ const content = hasPasteEnd ?
312
+ input.substring(startIdx, input.indexOf(PASTE_END)) :
313
+ input.substring(startIdx);
314
+ setPasteBuffer(content);
315
+ if (hasPasteEnd) {
316
+ // Complete paste in single chunk
317
+ processPastedContent(pasteBuffer + content);
318
+ setPasteBuffer('');
319
+ setInBracketedPaste(false);
320
+ }
321
+ return;
322
+ }
323
+ if (hasPasteEnd && inBracketedPaste) {
324
+ // End of bracketed paste
325
+ const endIdx = input.indexOf(PASTE_END);
326
+ const finalContent = input.substring(0, endIdx);
327
+ processPastedContent(pasteBuffer + finalContent);
328
+ setPasteBuffer('');
329
+ setInBracketedPaste(false);
330
+ return;
331
+ }
332
+ if (inBracketedPaste) {
333
+ // Continue buffering bracketed paste content
334
+ setPasteBuffer(prev => prev + input);
335
+ return;
336
+ }
337
+ // Detect non-bracketed paste (fallback for terminals without bracketed paste mode)
338
+ // Exclude delete/backspace key sequences from paste detection
339
+ const isDeleteSequence = input === '\x7f' || input === '\x08' ||
340
+ input.split('').every(c => c === '\x7f' || c === '\x08');
341
+ // Better heuristics for paste detection:
342
+ // - Must have newlines OR be quite long (>10 chars at once)
343
+ // - Single chars or small groups (2-3) are likely fast typing
344
+ // - Already in paste mode should continue
345
+ const hasNewlines = input.includes('\n');
346
+ const isVeryLong = input.length > 10;
347
+ const isLikelyPaste = !isDeleteSequence && ((hasNewlines && input.length > 2) || // Multi-line content
348
+ isVeryLong || // Very long single chunk
349
+ (isPasting && input.length > 0)); // Continue existing paste
350
+ if (isLikelyPaste && !inBracketedPaste) {
351
+ // Clear any existing timeout
352
+ if (pasteTimeout) {
353
+ clearTimeout(pasteTimeout);
354
+ }
355
+ // Add to paste buffer
356
+ setPasteBuffer(prev => prev + input);
357
+ setIsPasting(true);
358
+ // Set timeout to detect end of paste (when no more input arrives)
359
+ const timeout = setTimeout(() => {
360
+ // Process the complete buffered paste
361
+ if (pasteBuffer || input) {
362
+ processPastedContent(pasteBuffer + input);
363
+ }
364
+ setPasteBuffer('');
365
+ setIsPasting(false);
366
+ }, 100); // 100ms timeout to collect all chunks
367
+ setPasteTimeout(timeout);
368
+ return;
369
+ }
370
+ // Normal single character input (or fast typing)
371
+ if (!isPasting && !inBracketedPaste) {
372
+ const before = value.slice(0, cursor);
373
+ const after = value.slice(cursor);
374
+ onChange(before + input + after);
375
+ setCursor(cursor + input.length);
376
+ }
377
+ else if (isPasting && !isLikelyPaste && !inBracketedPaste) {
378
+ // If we're in paste mode but this doesn't look like a paste,
379
+ // it's probably just fast typing - cancel paste mode
380
+ if (pasteTimeout) {
381
+ clearTimeout(pasteTimeout);
382
+ setPasteTimeout(null);
383
+ }
384
+ setPasteBuffer('');
385
+ setIsPasting(false);
386
+ // Process as normal input
387
+ const before = value.slice(0, cursor);
388
+ const after = value.slice(cursor);
389
+ onChange(before + input + after);
390
+ setCursor(cursor + input.length);
391
+ }
392
+ }
393
+ });
394
+ // Function to wrap text at word boundaries
395
+ const wrapText = (text, width) => {
396
+ if (!text)
397
+ return [{ line: '', isHardBreak: false }];
398
+ const hardLines = text.split('\n');
399
+ const wrappedLines = [];
400
+ for (let i = 0; i < hardLines.length; i++) {
401
+ const hardLine = hardLines[i];
402
+ const isLastHardLine = i === hardLines.length - 1;
403
+ if (hardLine.length <= width) {
404
+ // Line fits within width
405
+ wrappedLines.push({ line: hardLine, isHardBreak: !isLastHardLine });
406
+ }
407
+ else {
408
+ // Need to wrap this line at word boundaries
409
+ let remaining = hardLine;
410
+ while (remaining.length > 0) {
411
+ if (remaining.length <= width) {
412
+ // Last segment of this hard line
413
+ wrappedLines.push({
414
+ line: remaining,
415
+ isHardBreak: !isLastHardLine
416
+ });
417
+ break;
418
+ }
419
+ // Find last space within width limit
420
+ let breakPoint = width;
421
+ // Look for the last space that fits within the width - 1 to wrap before overflow
422
+ let lastSpace = remaining.lastIndexOf(' ', width - 1);
423
+ if (lastSpace > 0) {
424
+ // Found a space to break at
425
+ breakPoint = lastSpace;
426
+ }
427
+ else {
428
+ // No good space found, break at width or look for first space
429
+ const firstSpace = remaining.indexOf(' ');
430
+ if (firstSpace > 0 && firstSpace < width) {
431
+ breakPoint = firstSpace;
432
+ }
433
+ else {
434
+ // No spaces or space is beyond width, break at width
435
+ breakPoint = Math.min(width, remaining.length);
436
+ }
437
+ }
438
+ const segment = remaining.slice(0, breakPoint);
439
+ wrappedLines.push({
440
+ line: segment.trimEnd(),
441
+ isHardBreak: false // soft wrap
442
+ });
443
+ // Skip the space if we broke at a space
444
+ const nextChar = remaining[breakPoint];
445
+ if (nextChar === ' ') {
446
+ remaining = remaining.slice(breakPoint + 1);
447
+ }
448
+ else {
449
+ remaining = remaining.slice(breakPoint);
450
+ }
451
+ }
452
+ }
453
+ }
454
+ return wrappedLines;
455
+ };
456
+ // Function to find cursor position in wrapped lines
457
+ const findCursorInWrappedLines = (wrappedLines, absoluteCursor) => {
458
+ let pos = 0;
459
+ // Walk through the original text and wrapped lines simultaneously
460
+ const originalLines = value.split('\n');
461
+ let originalPos = 0;
462
+ let wrappedIndex = 0;
463
+ for (let i = 0; i < originalLines.length; i++) {
464
+ const originalLine = originalLines[i];
465
+ // Count wrapped segments for this original line
466
+ let linePos = 0;
467
+ while (wrappedIndex < wrappedLines.length && linePos < originalLine.length) {
468
+ const wrappedLine = wrappedLines[wrappedIndex];
469
+ const segmentLength = wrappedLine.line.length;
470
+ // Check if cursor is in this wrapped segment
471
+ const segmentEnd = originalPos + segmentLength;
472
+ if (absoluteCursor <= segmentEnd) {
473
+ const colInSegment = absoluteCursor - originalPos;
474
+ return {
475
+ line: wrappedIndex,
476
+ col: colInSegment
477
+ };
478
+ }
479
+ originalPos = segmentEnd;
480
+ linePos += segmentLength;
481
+ // Account for space that was removed during wrapping
482
+ if (!wrappedLine.isHardBreak && wrappedIndex < wrappedLines.length - 1) {
483
+ // This was a soft wrap, account for the space that was trimmed
484
+ if (linePos < originalLine.length && originalLine[linePos] === ' ') {
485
+ originalPos++; // Skip the space in position counting
486
+ linePos++;
487
+ }
488
+ }
489
+ wrappedIndex++;
490
+ if (wrappedLine.isHardBreak)
491
+ break;
492
+ }
493
+ // Account for the newline character
494
+ if (i < originalLines.length - 1) {
495
+ originalPos++; // newline character
496
+ }
497
+ }
498
+ // Cursor at very end
499
+ const lastLine = wrappedLines[wrappedLines.length - 1];
500
+ return {
501
+ line: wrappedLines.length - 1,
502
+ col: lastLine ? lastLine.line.length : 0
503
+ };
504
+ };
505
+ // Helper to render text with highlighted paste tags
506
+ const renderTextWithTags = (text, isInverse = false) => {
507
+ const tagPattern = /(\[#\d+ Pasted, \d+ lines?\])/g;
508
+ const parts = text.split(tagPattern);
509
+ return parts.map((part, i) => {
510
+ if (part.match(tagPattern)) {
511
+ // Render paste tag with special styling
512
+ return React.createElement(Text, { key: i, color: "cyan", dimColor: true }, part);
513
+ }
514
+ // Regular text
515
+ return isInverse ? React.createElement(Text, { key: i, inverse: true }, part) : React.createElement(Text, { key: i }, part);
516
+ });
517
+ };
518
+ // Memoize wrapped text to avoid recalculating on every render
519
+ const wrappedLines = useMemo(() => wrapText(value, maxWidth), [value, maxWidth]);
520
+ const hasMultipleLines = wrappedLines.length > 1;
521
+ if (value === '') {
522
+ // Show cursor for empty input (no placeholder)
523
+ return (React.createElement(Box, null,
524
+ React.createElement(Box, { width: 2 },
525
+ React.createElement(Text, null, '> ')),
526
+ React.createElement(Box, null,
527
+ React.createElement(Text, { inverse: true }, ' '))));
528
+ }
529
+ // Find cursor position in wrapped lines
530
+ const cursorPos = findCursorInWrappedLines(wrappedLines, cursor);
531
+ // Render wrapped lines
532
+ return (React.createElement(Box, { flexDirection: "column" }, wrappedLines.map((wrappedLine, idx) => {
533
+ const isFirst = idx === 0;
534
+ const hasCursor = idx === cursorPos.line;
535
+ const line = wrappedLine.line;
536
+ if (hasCursor) {
537
+ const before = line.slice(0, cursorPos.col);
538
+ const at = line[cursorPos.col] || ' ';
539
+ const after = line.slice(cursorPos.col + 1);
540
+ // Check if cursor is within a paste tag
541
+ const tagPattern = /\[#\d+ Pasted, \d+ lines?\]/g;
542
+ let match;
543
+ let cursorInTag = false;
544
+ while ((match = tagPattern.exec(line)) !== null) {
545
+ if (cursorPos.col >= match.index && cursorPos.col < match.index + match[0].length) {
546
+ cursorInTag = true;
547
+ break;
548
+ }
549
+ }
550
+ return (React.createElement(Box, { key: idx },
551
+ React.createElement(Box, { width: 2 },
552
+ React.createElement(Text, null, isFirst ? '> ' : ' ')),
553
+ React.createElement(Box, null, cursorInTag ? (
554
+ // Cursor is within a paste tag - render specially
555
+ React.createElement(React.Fragment, null,
556
+ renderTextWithTags(before),
557
+ React.createElement(Text, { inverse: true, color: "cyan" }, at),
558
+ renderTextWithTags(after))) : (
559
+ // Normal rendering with tag highlighting
560
+ React.createElement(React.Fragment, null,
561
+ renderTextWithTags(before),
562
+ React.createElement(Text, { inverse: true }, at),
563
+ renderTextWithTags(after))))));
564
+ }
565
+ return (React.createElement(Box, { key: idx },
566
+ React.createElement(Box, { width: 2 },
567
+ React.createElement(Text, null, isFirst ? '> ' : ' ')),
568
+ React.createElement(Box, null, line ? renderTextWithTags(line) : React.createElement(Text, null, ' '))));
569
+ })));
570
+ };
571
+ export default CleanTextInput;
572
+ //# sourceMappingURL=CleanTextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CleanTextInput.js","sourceRoot":"","sources":["../src/CleanTextInput.tsx"],"names":[],"mappings":"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"}
package/dist/DmuxApp.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { AutoUpdater } from './AutoUpdater.js';
2
3
  interface DmuxAppProps {
3
4
  dmuxDir: string;
4
5
  panesFile: string;
@@ -6,6 +7,7 @@ interface DmuxAppProps {
6
7
  sessionName: string;
7
8
  projectRoot?: string;
8
9
  settingsFile: string;
10
+ autoUpdater?: AutoUpdater;
9
11
  }
10
12
  declare const DmuxApp: React.FC<DmuxAppProps>;
11
13
  export default DmuxApp;
@@ -1 +1 @@
1
- {"version":3,"file":"DmuxApp.d.ts","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AA4CnD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqmEnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"DmuxApp.d.ts","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAUnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAoCpD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyyEnC,CAAC;AAEF,eAAe,OAAO,CAAC"}