/ components / messages / HighlightedThinkingText.tsx
HighlightedThinkingText.tsx
  1  import { c as _c } from "react/compiler-runtime";
  2  import figures from 'figures';
  3  import * as React from 'react';
  4  import { useContext } from 'react';
  5  import { useQueuedMessage } from '../../context/QueuedMessageContext.js';
  6  import { Box, Text } from '../../ink.js';
  7  import { formatBriefTimestamp } from '../../utils/formatBriefTimestamp.js';
  8  import { findThinkingTriggerPositions, getRainbowColor, isUltrathinkEnabled } from '../../utils/thinking.js';
  9  import { MessageActionsSelectedContext } from '../messageActions.js';
 10  type Props = {
 11    text: string;
 12    useBriefLayout?: boolean;
 13    timestamp?: string;
 14  };
 15  export function HighlightedThinkingText(t0) {
 16    const $ = _c(31);
 17    const {
 18      text,
 19      useBriefLayout,
 20      timestamp
 21    } = t0;
 22    const isQueued = useQueuedMessage()?.isQueued ?? false;
 23    const isSelected = useContext(MessageActionsSelectedContext);
 24    const pointerColor = isSelected ? "suggestion" : "subtle";
 25    if (useBriefLayout) {
 26      let t1;
 27      if ($[0] !== timestamp) {
 28        t1 = timestamp ? formatBriefTimestamp(timestamp) : "";
 29        $[0] = timestamp;
 30        $[1] = t1;
 31      } else {
 32        t1 = $[1];
 33      }
 34      const ts = t1;
 35      const t2 = isQueued ? "subtle" : "briefLabelYou";
 36      let t3;
 37      if ($[2] !== t2) {
 38        t3 = <Text color={t2}>You</Text>;
 39        $[2] = t2;
 40        $[3] = t3;
 41      } else {
 42        t3 = $[3];
 43      }
 44      let t4;
 45      if ($[4] !== ts) {
 46        t4 = ts ? <Text dimColor={true}> {ts}</Text> : null;
 47        $[4] = ts;
 48        $[5] = t4;
 49      } else {
 50        t4 = $[5];
 51      }
 52      let t5;
 53      if ($[6] !== t3 || $[7] !== t4) {
 54        t5 = <Box flexDirection="row">{t3}{t4}</Box>;
 55        $[6] = t3;
 56        $[7] = t4;
 57        $[8] = t5;
 58      } else {
 59        t5 = $[8];
 60      }
 61      const t6 = isQueued ? "subtle" : "text";
 62      let t7;
 63      if ($[9] !== t6 || $[10] !== text) {
 64        t7 = <Text color={t6}>{text}</Text>;
 65        $[9] = t6;
 66        $[10] = text;
 67        $[11] = t7;
 68      } else {
 69        t7 = $[11];
 70      }
 71      let t8;
 72      if ($[12] !== t5 || $[13] !== t7) {
 73        t8 = <Box flexDirection="column" paddingLeft={2}>{t5}{t7}</Box>;
 74        $[12] = t5;
 75        $[13] = t7;
 76        $[14] = t8;
 77      } else {
 78        t8 = $[14];
 79      }
 80      return t8;
 81    }
 82    let parts;
 83    let t1;
 84    if ($[15] !== pointerColor || $[16] !== text) {
 85      t1 = Symbol.for("react.early_return_sentinel");
 86      bb0: {
 87        const triggers = isUltrathinkEnabled() ? findThinkingTriggerPositions(text) : [];
 88        if (triggers.length === 0) {
 89          let t2;
 90          if ($[19] !== pointerColor) {
 91            t2 = <Text color={pointerColor}>{figures.pointer} </Text>;
 92            $[19] = pointerColor;
 93            $[20] = t2;
 94          } else {
 95            t2 = $[20];
 96          }
 97          let t3;
 98          if ($[21] !== text) {
 99            t3 = <Text color="text">{text}</Text>;
100            $[21] = text;
101            $[22] = t3;
102          } else {
103            t3 = $[22];
104          }
105          let t4;
106          if ($[23] !== t2 || $[24] !== t3) {
107            t4 = <Text>{t2}{t3}</Text>;
108            $[23] = t2;
109            $[24] = t3;
110            $[25] = t4;
111          } else {
112            t4 = $[25];
113          }
114          t1 = t4;
115          break bb0;
116        }
117        parts = [];
118        let cursor = 0;
119        for (const t of triggers) {
120          if (t.start > cursor) {
121            parts.push(<Text key={`plain-${cursor}`} color="text">{text.slice(cursor, t.start)}</Text>);
122          }
123          for (let i = t.start; i < t.end; i++) {
124            parts.push(<Text key={`rb-${i}`} color={getRainbowColor(i - t.start)}>{text[i]}</Text>);
125          }
126          cursor = t.end;
127        }
128        if (cursor < text.length) {
129          parts.push(<Text key={`plain-${cursor}`} color="text">{text.slice(cursor)}</Text>);
130        }
131      }
132      $[15] = pointerColor;
133      $[16] = text;
134      $[17] = parts;
135      $[18] = t1;
136    } else {
137      parts = $[17];
138      t1 = $[18];
139    }
140    if (t1 !== Symbol.for("react.early_return_sentinel")) {
141      return t1;
142    }
143    let t2;
144    if ($[26] !== pointerColor) {
145      t2 = <Text color={pointerColor}>{figures.pointer} </Text>;
146      $[26] = pointerColor;
147      $[27] = t2;
148    } else {
149      t2 = $[27];
150    }
151    let t3;
152    if ($[28] !== parts || $[29] !== t2) {
153      t3 = <Text>{t2}{parts}</Text>;
154      $[28] = parts;
155      $[29] = t2;
156      $[30] = t3;
157    } else {
158      t3 = $[30];
159    }
160    return t3;
161  }
162  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJ1c2VDb250ZXh0IiwidXNlUXVldWVkTWVzc2FnZSIsIkJveCIsIlRleHQiLCJmb3JtYXRCcmllZlRpbWVzdGFtcCIsImZpbmRUaGlua2luZ1RyaWdnZXJQb3NpdGlvbnMiLCJnZXRSYWluYm93Q29sb3IiLCJpc1VsdHJhdGhpbmtFbmFibGVkIiwiTWVzc2FnZUFjdGlvbnNTZWxlY3RlZENvbnRleHQiLCJQcm9wcyIsInRleHQiLCJ1c2VCcmllZkxheW91dCIsInRpbWVzdGFtcCIsIkhpZ2hsaWdodGVkVGhpbmtpbmdUZXh0IiwidDAiLCIkIiwiX2MiLCJpc1F1ZXVlZCIsImlzU2VsZWN0ZWQiLCJwb2ludGVyQ29sb3IiLCJ0MSIsInRzIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJwYXJ0cyIsIlN5bWJvbCIsImZvciIsImJiMCIsInRyaWdnZXJzIiwibGVuZ3RoIiwicG9pbnRlciIsImN1cnNvciIsInQiLCJzdGFydCIsInB1c2giLCJzbGljZSIsImkiLCJlbmQiXSwic291cmNlcyI6WyJIaWdobGlnaHRlZFRoaW5raW5nVGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpZ3VyZXMgZnJvbSAnZmlndXJlcydcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUXVldWVkTWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvbnRleHQvUXVldWVkTWVzc2FnZUNvbnRleHQuanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyBmb3JtYXRCcmllZlRpbWVzdGFtcCB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdEJyaWVmVGltZXN0YW1wLmpzJ1xuaW1wb3J0IHtcbiAgZmluZFRoaW5raW5nVHJpZ2dlclBvc2l0aW9ucyxcbiAgZ2V0UmFpbmJvd0NvbG9yLFxuICBpc1VsdHJhdGhpbmtFbmFibGVkLFxufSBmcm9tICcuLi8uLi91dGlscy90aGlua2luZy5qcydcbmltcG9ydCB7IE1lc3NhZ2VBY3Rpb25zU2VsZWN0ZWRDb250ZXh0IH0gZnJvbSAnLi4vbWVzc2FnZUFjdGlvbnMuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIHRleHQ6IHN0cmluZ1xuICB1c2VCcmllZkxheW91dD86IGJvb2xlYW5cbiAgdGltZXN0YW1wPzogc3RyaW5nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIaWdobGlnaHRlZFRoaW5raW5nVGV4dCh7XG4gIHRleHQsXG4gIHVzZUJyaWVmTGF5b3V0LFxuICB0aW1lc3RhbXAsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIC8vIEJyaWVmL2Fzc2lzdGFudCBtb2RlOiBjaGF0LXN0eWxlIFwiWW91XCIgbGFiZWwgaW5zdGVhZCBvZiB0aGUg4p2vIGhpZ2hsaWdodC5cbiAgLy8gUGFyZW50IGRyb3BzIGl0cyBiYWNrZ3JvdW5kQ29sb3Igd2hlbiB0aGlzIGlzIHRydWUsIHNvIG5vIGdyZXkgc2hvd3NcbiAgLy8gdGhyb3VnaC4gTm8gbWFudWFsIHdyYXAgbmVlZGVkIOKAlCBJbmsgd3JhcHMgaW5zaWRlIHRoZSBwYXJlbnQgQm94LlxuICBjb25zdCBpc1F1ZXVlZCA9IHVzZVF1ZXVlZE1lc3NhZ2UoKT8uaXNRdWV1ZWQgPz8gZmFsc2VcbiAgY29uc3QgaXNTZWxlY3RlZCA9IHVzZUNvbnRleHQoTWVzc2FnZUFjdGlvbnNTZWxlY3RlZENvbnRleHQpXG4gIGNvbnN0IHBvaW50ZXJDb2xvciA9IGlzU2VsZWN0ZWQgPyAnc3VnZ2VzdGlvbicgOiAnc3VidGxlJ1xuICBpZiAodXNlQnJpZWZMYXlvdXQpIHtcbiAgICBjb25zdCB0cyA9IHRpbWVzdGFtcCA/IGZvcm1hdEJyaWVmVGltZXN0YW1wKHRpbWVzdGFtcCkgOiAnJ1xuICAgIHJldHVybiAoXG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBwYWRkaW5nTGVmdD17Mn0+XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgICAgIDxUZXh0IGNvbG9yPXtpc1F1ZXVlZCA/ICdzdWJ0bGUnIDogJ2JyaWVmTGFiZWxZb3UnfT5Zb3U8L1RleHQ+XG4gICAgICAgICAge3RzID8gPFRleHQgZGltQ29sb3I+IHt0c308L1RleHQ+IDogbnVsbH1cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUZXh0IGNvbG9yPXtpc1F1ZXVlZCA/ICdzdWJ0bGUnIDogJ3RleHQnfT57dGV4dH08L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICApXG4gIH1cblxuICBjb25zdCB0cmlnZ2VycyA9IGlzVWx0cmF0aGlua0VuYWJsZWQoKVxuICAgID8gZmluZFRoaW5raW5nVHJpZ2dlclBvc2l0aW9ucyh0ZXh0KVxuICAgIDogW11cblxuICBpZiAodHJpZ2dlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxUZXh0PlxuICAgICAgICA8VGV4dCBjb2xvcj17cG9pbnRlckNvbG9yfT57ZmlndXJlcy5wb2ludGVyfSA8L1RleHQ+XG4gICAgICAgIDxUZXh0IGNvbG9yPVwidGV4dFwiPnt0ZXh0fTwvVGV4dD5cbiAgICAgIDwvVGV4dD5cbiAgICApXG4gIH1cblxuICAvLyBTdGF0aWMgcmFpbmJvdyAobm8gc2hpbW1lciDigJQgdHJhbnNjcmlwdCBtZXNzYWdlcyBkb24ndCBhbmltYXRlKVxuICBjb25zdCBwYXJ0czogUmVhY3QuUmVhY3ROb2RlW10gPSBbXVxuICBsZXQgY3Vyc29yID0gMFxuICBmb3IgKGNvbnN0IHQgb2YgdHJpZ2dlcnMpIHtcbiAgICBpZiAodC5zdGFydCA+IGN1cnNvcikge1xuICAgICAgcGFydHMucHVzaChcbiAgICAgICAgPFRleHQga2V5PXtgcGxhaW4tJHtjdXJzb3J9YH0gY29sb3I9XCJ0ZXh0XCI+XG4gICAgICAgICAge3RleHQuc2xpY2UoY3Vyc29yLCB0LnN0YXJ0KX1cbiAgICAgICAgPC9UZXh0PixcbiAgICAgIClcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHQuc3RhcnQ7IGkgPCB0LmVuZDsgaSsrKSB7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICA8VGV4dCBrZXk9e2ByYi0ke2l9YH0gY29sb3I9e2dldFJhaW5ib3dDb2xvcihpIC0gdC5zdGFydCl9PlxuICAgICAgICAgIHt0ZXh0W2ldfVxuICAgICAgICA8L1RleHQ+LFxuICAgICAgKVxuICAgIH1cbiAgICBjdXJzb3IgPSB0LmVuZFxuICB9XG4gIGlmIChjdXJzb3IgPCB0ZXh0Lmxlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goXG4gICAgICA8VGV4dCBrZXk9e2BwbGFpbi0ke2N1cnNvcn1gfSBjb2xvcj1cInRleHRcIj5cbiAgICAgICAge3RleHQuc2xpY2UoY3Vyc29yKX1cbiAgICAgIDwvVGV4dD4sXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8VGV4dD5cbiAgICAgIDxUZXh0IGNvbG9yPXtwb2ludGVyQ29sb3J9PntmaWd1cmVzLnBvaW50ZXJ9IDwvVGV4dD5cbiAgICAgIHtwYXJ0c31cbiAgICA8L1RleHQ+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLE9BQU8sTUFBTSxTQUFTO0FBQzdCLE9BQU8sS0FBS0MsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsVUFBVSxRQUFRLE9BQU87QUFDbEMsU0FBU0MsZ0JBQWdCLFFBQVEsdUNBQXVDO0FBQ3hFLFNBQVNDLEdBQUcsRUFBRUMsSUFBSSxRQUFRLGNBQWM7QUFDeEMsU0FBU0Msb0JBQW9CLFFBQVEscUNBQXFDO0FBQzFFLFNBQ0VDLDRCQUE0QixFQUM1QkMsZUFBZSxFQUNmQyxtQkFBbUIsUUFDZCx5QkFBeUI7QUFDaEMsU0FBU0MsNkJBQTZCLFFBQVEsc0JBQXNCO0FBRXBFLEtBQUtDLEtBQUssR0FBRztFQUNYQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxjQUFjLENBQUMsRUFBRSxPQUFPO0VBQ3hCQyxTQUFTLENBQUMsRUFBRSxNQUFNO0FBQ3BCLENBQUM7QUFF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