source dump of claude code
at main 143 lines 17 kB view raw
1import { c as _c } from "react/compiler-runtime"; 2import * as React from 'react'; 3import { Ansi, Box, Text, useAnimationFrame } from '../../ink.js'; 4import { segmentTextByHighlights, type TextHighlight } from '../../utils/textHighlighting.js'; 5import { ShimmerChar } from '../Spinner/ShimmerChar.js'; 6type Props = { 7 text: string; 8 highlights: TextHighlight[]; 9}; 10type LinePart = { 11 text: string; 12 highlight: TextHighlight | undefined; 13 start: number; 14}; 15export function HighlightedInput(t0) { 16 const $ = _c(23); 17 const { 18 text, 19 highlights 20 } = t0; 21 let lines; 22 if ($[0] !== highlights || $[1] !== text) { 23 const segments = segmentTextByHighlights(text, highlights); 24 lines = [[]]; 25 let pos = 0; 26 for (const segment of segments) { 27 const parts = segment.text.split("\n"); 28 for (let i = 0; i < parts.length; i++) { 29 if (i > 0) { 30 lines.push([]); 31 pos = pos + 1; 32 } 33 const part = parts[i]; 34 if (part.length > 0) { 35 lines[lines.length - 1].push({ 36 text: part, 37 highlight: segment.highlight, 38 start: pos 39 }); 40 } 41 pos = pos + part.length; 42 } 43 } 44 $[0] = highlights; 45 $[1] = text; 46 $[2] = lines; 47 } else { 48 lines = $[2]; 49 } 50 let t1; 51 if ($[3] !== highlights) { 52 t1 = highlights.some(_temp); 53 $[3] = highlights; 54 $[4] = t1; 55 } else { 56 t1 = $[4]; 57 } 58 const hasShimmer = t1; 59 let sweepStart = 0; 60 let cycleLength = 1; 61 if (hasShimmer) { 62 let lo = Infinity; 63 let hi = -Infinity; 64 if ($[5] !== hi || $[6] !== highlights || $[7] !== lo) { 65 for (const h_0 of highlights) { 66 if (h_0.shimmerColor) { 67 lo = Math.min(lo, h_0.start); 68 hi = Math.max(hi, h_0.end); 69 } 70 } 71 $[5] = hi; 72 $[6] = highlights; 73 $[7] = lo; 74 $[8] = lo; 75 $[9] = hi; 76 } else { 77 lo = $[8]; 78 hi = $[9]; 79 } 80 sweepStart = lo - 10; 81 cycleLength = hi - lo + 20; 82 } 83 let t2; 84 if ($[10] !== cycleLength || $[11] !== hasShimmer || $[12] !== lines || $[13] !== sweepStart) { 85 t2 = { 86 lines, 87 hasShimmer, 88 sweepStart, 89 cycleLength 90 }; 91 $[10] = cycleLength; 92 $[11] = hasShimmer; 93 $[12] = lines; 94 $[13] = sweepStart; 95 $[14] = t2; 96 } else { 97 t2 = $[14]; 98 } 99 const { 100 lines: lines_0, 101 hasShimmer: hasShimmer_0, 102 sweepStart: sweepStart_0, 103 cycleLength: cycleLength_0 104 } = t2; 105 const [ref, time] = useAnimationFrame(hasShimmer_0 ? 50 : null); 106 const glimmerIndex = hasShimmer_0 ? sweepStart_0 + Math.floor(time / 50) % cycleLength_0 : -100; 107 let t3; 108 if ($[15] !== glimmerIndex || $[16] !== lines_0) { 109 let t4; 110 if ($[18] !== glimmerIndex) { 111 t4 = (lineParts, lineIndex) => <Box key={lineIndex}>{lineParts.length === 0 ? <Text> </Text> : lineParts.map((part_0, partIndex) => { 112 if (part_0.highlight?.shimmerColor && part_0.highlight.color) { 113 return <Text key={partIndex}>{part_0.text.split("").map((char, charIndex) => <ShimmerChar key={charIndex} char={char} index={part_0.start + charIndex} glimmerIndex={glimmerIndex} messageColor={part_0.highlight.color} shimmerColor={part_0.highlight.shimmerColor} />)}</Text>; 114 } 115 return <Text key={partIndex} color={part_0.highlight?.color} dimColor={part_0.highlight?.dimColor} inverse={part_0.highlight?.inverse}><Ansi>{part_0.text}</Ansi></Text>; 116 })}</Box>; 117 $[18] = glimmerIndex; 118 $[19] = t4; 119 } else { 120 t4 = $[19]; 121 } 122 t3 = lines_0.map(t4); 123 $[15] = glimmerIndex; 124 $[16] = lines_0; 125 $[17] = t3; 126 } else { 127 t3 = $[17]; 128 } 129 let t4; 130 if ($[20] !== ref || $[21] !== t3) { 131 t4 = <Box ref={ref} flexDirection="column">{t3}</Box>; 132 $[20] = ref; 133 $[21] = t3; 134 $[22] = t4; 135 } else { 136 t4 = $[22]; 137 } 138 return t4; 139} 140function _temp(h) { 141 return h.shimmerColor; 142} 143//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkFuc2kiLCJCb3giLCJUZXh0IiwidXNlQW5pbWF0aW9uRnJhbWUiLCJzZWdtZW50VGV4dEJ5SGlnaGxpZ2h0cyIsIlRleHRIaWdobGlnaHQiLCJTaGltbWVyQ2hhciIsIlByb3BzIiwidGV4dCIsImhpZ2hsaWdodHMiLCJMaW5lUGFydCIsImhpZ2hsaWdodCIsInN0YXJ0IiwiSGlnaGxpZ2h0ZWRJbnB1dCIsInQwIiwiJCIsIl9jIiwibGluZXMiLCJzZWdtZW50cyIsInBvcyIsInNlZ21lbnQiLCJwYXJ0cyIsInNwbGl0IiwiaSIsImxlbmd0aCIsInB1c2giLCJwYXJ0IiwidDEiLCJzb21lIiwiX3RlbXAiLCJoYXNTaGltbWVyIiwic3dlZXBTdGFydCIsImN5Y2xlTGVuZ3RoIiwibG8iLCJJbmZpbml0eSIsImhpIiwiaF8wIiwiaCIsInNoaW1tZXJDb2xvciIsIk1hdGgiLCJtaW4iLCJtYXgiLCJlbmQiLCJ0MiIsImxpbmVzXzAiLCJoYXNTaGltbWVyXzAiLCJzd2VlcFN0YXJ0XzAiLCJjeWNsZUxlbmd0aF8wIiwicmVmIiwidGltZSIsImdsaW1tZXJJbmRleCIsImZsb29yIiwidDMiLCJ0NCIsImxpbmVQYXJ0cyIsImxpbmVJbmRleCIsIm1hcCIsInBhcnRfMCIsInBhcnRJbmRleCIsImNvbG9yIiwiY2hhciIsImNoYXJJbmRleCIsImRpbUNvbG9yIiwiaW52ZXJzZSJdLCJzb3VyY2VzIjpbIlNoaW1tZXJlZElucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEFuc2ksIEJveCwgVGV4dCwgdXNlQW5pbWF0aW9uRnJhbWUgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQge1xuICBzZWdtZW50VGV4dEJ5SGlnaGxpZ2h0cyxcbiAgdHlwZSBUZXh0SGlnaGxpZ2h0LFxufSBmcm9tICcuLi8uLi91dGlscy90ZXh0SGlnaGxpZ2h0aW5nLmpzJ1xuaW1wb3J0IHsgU2hpbW1lckNoYXIgfSBmcm9tICcuLi9TcGlubmVyL1NoaW1tZXJDaGFyLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICB0ZXh0OiBzdHJpbmdcbiAgaGlnaGxpZ2h0czogVGV4dEhpZ2hsaWdodFtdXG59XG5cbnR5cGUgTGluZVBhcnQgPSB7XG4gIHRleHQ6IHN0cmluZ1xuICBoaWdobGlnaHQ6IFRleHRIaWdobGlnaHQgfCB1bmRlZmluZWRcbiAgc3RhcnQ6IG51bWJlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGlnaGxpZ2h0ZWRJbnB1dCh7IHRleHQsIGhpZ2hsaWdodHMgfTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAvLyBUaGUgc2hpbW1lciBhbmltYXRpb24gKGJlbG93KSByZS1yZW5kZXJzIHRoaXMgY29tcG9uZW50IGF0IDIwZnBzIHdoaWxlIHRoZVxuICAvLyB1bHRyYXRoaW5rIGtleXdvcmQgaXMgcHJlc2VudC4gdGV4dC9oaWdobGlnaHRzIGFyZSByZWZlcmVudGlhbGx5IHN0YWJsZVxuICAvLyBhY3Jvc3MgYW5pbWF0aW9uIHRpY2tzIChwYXJlbnQgZG9lc24ndCByZS1yZW5kZXIpLCBzbyBtZW1vaXplIGV2ZXJ5dGhpbmdcbiAgLy8gdGhhdCBkZXJpdmVzIGZyb20gdGhlbTogc2VnbWVudFRleHRCeUhpZ2hsaWdodHMgYWxvbmUgaXMgfjg1wrVzL2NhbGxcbiAgLy8gKHRva2VuaXplICsgc29ydCArIE8obsKyKSBvdmVybGFwKSwgd2hpY2ggYWRkcyB1cCBmYXN0IGF0IDIwZnBzLlxuICBjb25zdCB7IGxpbmVzLCBoYXNTaGltbWVyLCBzd2VlcFN0YXJ0LCBjeWNsZUxlbmd0aCB9ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc2VnbWVudHMgPSBzZWdtZW50VGV4dEJ5SGlnaGxpZ2h0cyh0ZXh0LCBoaWdobGlnaHRzKVxuXG4gICAgLy8gU3BsaXQgc2VnbWVudHMgYnkgbmV3bGluZXMgaW50byBwZXItbGluZSBncm91cHMuIEluaydzIHJvdy1kaXJlY3Rpb24gQm94XG4gICAgLy8gaW5kZW50cyBjb250aW51YXRpb24gbGluZXMgb2YgYSBtdWx0aS1saW5lIGNoaWxkIHRvIHRoYXQgY2hpbGQncyBYIG9mZnNldC5cbiAgICAvLyBCeSBzcGxpdHRpbmcgYXQgbmV3bGluZXMsIGVhY2ggbGluZSByZW5kZXJzIGFzIGl0cyBvd24gcm93LCBhdm9pZGluZyB0aGVcbiAgICAvLyBpbmNvcnJlY3QgaW5kZW50YXRpb24gd2hlbiBoaWdobGlnaHRlZCB0ZXh0IGlzIGZvbGxvd2VkIGJ5IHdyYXBwZWQgY29udGVudC5cbiAgICBjb25zdCBsaW5lczogTGluZVBhcnRbXVtdID0gW1tdXVxuICAgIGxldCBwb3MgPSAwXG4gICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHNlZ21lbnQudGV4dC5zcGxpdCgnXFxuJylcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgbGluZXMucHVzaChbXSlcbiAgICAgICAgICBwb3MgKz0gMVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1tpXSFcbiAgICAgICAgaWYgKHBhcnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdIS5wdXNoKHtcbiAgICAgICAgICAgIHRleHQ6IHBhcnQsXG4gICAgICAgICAgICBoaWdobGlnaHQ6IHNlZ21lbnQuaGlnaGxpZ2h0LFxuICAgICAgICAgICAgc3RhcnQ6IHBvcyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBwYXJ0Lmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNjb3BlIHRoZSBzd2VlcCB0byBzaGltbWVyLWhpZ2hsaWdodGVkIHJhbmdlcyBzbyBjeWNsZSB0aW1lIGRvZXNuJ3QgZ3Jvd1xuICAgIC8vIHdpdGggaW5wdXQgbGVuZ3RoLiBQYWRkaW5nIGNyZWF0ZXMgYW4gb2Zmc2NyZWVuIHBhdXNlIGJldHdlZW4gc3dlZXBzLlxuICAgIGNvbnN0IGhhc1NoaW1tZXIgPSBoaWdobGlnaHRzLnNvbWUoaCA9PiBoLnNoaW1tZXJDb2xvcilcbiAgICBsZXQgc3dlZXBTdGFydCA9IDBcbiAgICBsZXQgY3ljbGVMZW5ndGggPSAxXG4gICAgaWYgKGhhc1NoaW1tZXIpIHtcbiAgICAgIGNvbnN0IHBhZGRpbmcgPSAxMFxuICAgICAgbGV0IGxvID0gSW5maW5pdHlcbiAgICAgIGxldCBoaSA9IC1JbmZpbml0eVxuICAgICAgZm9yIChjb25zdCBoIG9mIGhpZ2hsaWdodHMpIHtcbiAgICAgICAgaWYgKGguc2hpbW1lckNvbG9yKSB7XG4gICAgICAgICAgbG8gPSBNYXRoLm1pbihsbywgaC5zdGFydClcbiAgICAgICAgICBoaSA9IE1hdGgubWF4KGhpLCBoLmVuZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3dlZXBTdGFydCA9IGxvIC0gcGFkZGluZ1xuICAgICAgY3ljbGVMZW5ndGggPSBoaSAtIGxvICsgcGFkZGluZyAqIDJcbiAgICB9XG5cbiAgICByZXR1cm4geyBsaW5lcywgaGFzU2hpbW1lciwgc3dlZXBTdGFydCwgY3ljbGVMZW5ndGggfVxuICB9LCBbdGV4dCwgaGlnaGxpZ2h0c10pXG5cbiAgY29uc3QgW3JlZiwgdGltZV0gPSB1c2VBbmltYXRpb25GcmFtZShoYXNTaGltbWVyID8gNTAgOiBudWxsKVxuICBjb25zdCBnbGltbWVySW5kZXggPSBoYXNTaGltbWVyXG4gICAgPyBzd2VlcFN0YXJ0ICsgKE1hdGguZmxvb3IodGltZSAvIDUwKSAlIGN5Y2xlTGVuZ3RoKVxuICAgIDogLTEwMFxuXG4gIHJldHVybiAoXG4gICAgPEJveCByZWY9e3JlZn0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAge2xpbmVzLm1hcCgobGluZVBhcnRzLCBsaW5lSW5kZXgpID0+IChcbiAgICAgICAgPEJveCBrZXk9e2xpbmVJbmRleH0+XG4gICAgICAgICAge2xpbmVQYXJ0cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8VGV4dD4gPC9UZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBsaW5lUGFydHMubWFwKChwYXJ0LCBwYXJ0SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBhcnQuaGlnaGxpZ2h0Py5zaGltbWVyQ29sb3IgJiYgcGFydC5oaWdobGlnaHQuY29sb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPFRleHQga2V5PXtwYXJ0SW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICB7cGFydC50ZXh0LnNwbGl0KCcnKS5tYXAoKGNoYXIsIGNoYXJJbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyQ2hhclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGFySW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFyPXtjaGFyfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e3BhcnQuc3RhcnQgKyBjaGFySW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBnbGltbWVySW5kZXg9e2dsaW1tZXJJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VDb2xvcj17cGFydC5oaWdobGlnaHQhLmNvbG9yIX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaW1tZXJDb2xvcj17cGFydC5oaWdobGlnaHQhLnNoaW1tZXJDb2xvciF9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgIGtleT17cGFydEluZGV4fVxuICAgICAgICAgICAgICAgICAgY29sb3I9e3BhcnQuaGlnaGxpZ2h0Py5jb2xvcn1cbiAgICAgICAgICAgICAgICAgIGRpbUNvbG9yPXtwYXJ0LmhpZ2hsaWdodD8uZGltQ29sb3J9XG4gICAgICAgICAgICAgICAgICBpbnZlcnNlPXtwYXJ0LmhpZ2hsaWdodD8uaW52ZXJzZX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8QW5zaT57cGFydC50ZXh0fTwvQW5zaT5cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9Cb3g+XG4gICAgICApKX1cbiAgICA8L0JveD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLQSxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFQyxpQkFBaUIsUUFBUSxjQUFjO0FBQ2pFLFNBQ0VDLHVCQUF1QixFQUN2QixLQUFLQyxhQUFhLFFBQ2IsaUNBQWlDO0FBQ3hDLFNBQVNDLFdBQVcsUUFBUSwyQkFBMkI7QUFFdkQsS0FBS0MsS0FBSyxHQUFHO0VBQ1hDLElBQUksRUFBRSxNQUFNO0VBQ1pDLFVBQVUsRUFBRUosYUFBYSxFQUFFO0FBQzdCLENBQUM7QUFFRCxLQUFLSyxRQUFRLEdBQUc7RUFDZEYsSUFBSSxFQUFFLE1BQU07RUFDWkcsU0FBUyxFQUFFTixhQUFhLEdBQUcsU0FBUztFQUNwQ08sS0FBSyxFQUFFLE1BQU07QUFDZixDQUFDO0FBRUQsT0FBTyxTQUFBQyxpQkFBQUMsRUFBQTtFQUFBLE1BQUFDLENBQUEsR0FBQUMsRUFBQTtFQUEwQjtJQUFBUixJQUFBO0lBQUFDO0VBQUEsSUFBQUssRUFBMkI7RUFBQSxJQUFBRyxLQUFBO0VBQUEsSUFBQUYsQ0FBQSxRQUFBTixVQUFBLElBQUFNLENBQUEsUUFBQVAsSUFBQTtJQU94RCxNQUFBVSxRQUFBLEdBQWlCZCx1QkFB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