πŸ“„ File detail

components/IdleReturnDialog.tsx

🧩 .tsxπŸ“ 118 linesπŸ’Ύ 9,861 bytesπŸ“ text
← Back to All Files

🎯 Use case

This file lives under β€œcomponents/”, which covers shared React UI pieces. On the API surface it exposes IdleReturnDialog β€” mainly types, interfaces, or factory objects. Dependencies touch React UI. It composes internal code from ink, utils, CustomSelect, and design-system (relative imports).

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

import { c as _c } from "react/compiler-runtime"; import React from 'react'; import { Box, Text } from '../ink.js'; import { formatTokens } from '../utils/format.js'; import { Select } from './CustomSelect/index.js';

πŸ“€ Exports (heuristic)

  • IdleReturnDialog

πŸ“š External import roots

Package roots from from "…" (relative paths omitted).

  • react

πŸ–₯️ Source preview

import { c as _c } from "react/compiler-runtime";
import React from 'react';
import { Box, Text } from '../ink.js';
import { formatTokens } from '../utils/format.js';
import { Select } from './CustomSelect/index.js';
import { Dialog } from './design-system/Dialog.js';
type IdleReturnAction = 'continue' | 'clear' | 'dismiss' | 'never';
type Props = {
  idleMinutes: number;
  totalInputTokens: number;
  onDone: (action: IdleReturnAction) => void;
};
export function IdleReturnDialog(t0) {
  const $ = _c(16);
  const {
    idleMinutes,
    totalInputTokens,
    onDone
  } = t0;
  let t1;
  if ($[0] !== idleMinutes) {
    t1 = formatIdleDuration(idleMinutes);
    $[0] = idleMinutes;
    $[1] = t1;
  } else {
    t1 = $[1];
  }
  const formattedIdle = t1;
  let t2;
  if ($[2] !== totalInputTokens) {
    t2 = formatTokens(totalInputTokens);
    $[2] = totalInputTokens;
    $[3] = t2;
  } else {
    t2 = $[3];
  }
  const formattedTokens = t2;
  const t3 = `You've been away ${formattedIdle} and this conversation is ${formattedTokens} tokens.`;
  let t4;
  if ($[4] !== onDone) {
    t4 = () => onDone("dismiss");
    $[4] = onDone;
    $[5] = t4;
  } else {
    t4 = $[5];
  }
  let t5;
  if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
    t5 = <Box flexDirection="column"><Text>If this is a new task, clearing context will save usage and be faster.</Text></Box>;
    $[6] = t5;
  } else {
    t5 = $[6];
  }
  let t6;
  if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
    t6 = {
      value: "continue" as const,
      label: "Continue this conversation"
    };
    $[7] = t6;
  } else {
    t6 = $[7];
  }
  let t7;
  if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
    t7 = {
      value: "clear" as const,
      label: "Send message as a new conversation"
    };
    $[8] = t7;
  } else {
    t7 = $[8];
  }
  let t8;
  if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
    t8 = [t6, t7, {
      value: "never" as const,
      label: "Don't ask me again"
    }];
    $[9] = t8;
  } else {
    t8 = $[9];
  }
  let t9;
  if ($[10] !== onDone) {
    t9 = <Select options={t8} onChange={value => onDone(value)} />;
    $[10] = onDone;
    $[11] = t9;
  } else {
    t9 = $[11];
  }
  let t10;
  if ($[12] !== t3 || $[13] !== t4 || $[14] !== t9) {
    t10 = <Dialog title={t3} onCancel={t4}>{t5}{t9}</Dialog>;
    $[12] = t3;
    $[13] = t4;
    $[14] = t9;
    $[15] = t10;
  } else {
    t10 = $[15];
  }
  return t10;
}
function formatIdleDuration(minutes: number): string {
  if (minutes < 1) {
    return '< 1m';
  }
  if (minutes < 60) {
    return `${Math.floor(minutes)}m`;
  }
  const hours = Math.floor(minutes / 60);
  const remainingMinutes = Math.floor(minutes % 60);
  if (remainingMinutes === 0) {
    return `${hours}h`;
  }
  return `${hours}h ${remainingMinutes}m`;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkJveCIsIlRleHQiLCJmb3JtYXRUb2tlbnMiLCJTZWxlY3QiLCJEaWFsb2ciLCJJZGxlUmV0dXJuQWN0aW9uIiwiUHJvcHMiLCJpZGxlTWludXRlcyIsInRvdGFsSW5wdXRUb2tlbnMiLCJvbkRvbmUiLCJhY3Rpb24iLCJJZGxlUmV0dXJuRGlhbG9nIiwidDAiLCIkIiwiX2MiLCJ0MSIsImZvcm1hdElkbGVEdXJhdGlvbiIsImZvcm1hdHRlZElkbGUiLCJ0MiIsImZvcm1hdHRlZFRva2VucyIsInQzIiwidDQiLCJ0NSIsIlN5bWJvbCIsImZvciIsInQ2IiwidmFsdWUiLCJjb25zdCIsImxhYmVsIiwidDciLCJ0OCIsInQ5IiwidDEwIiwibWludXRlcyIsIk1hdGgiLCJmbG9vciIsImhvdXJzIiwicmVtYWluaW5nTWludXRlcyJdLCJzb3VyY2VzIjpbIklkbGVSZXR1cm5EaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uL2luay5qcydcbmltcG9ydCB7IGZvcm1hdFRva2VucyB9IGZyb20gJy4uL3V0aWxzL2Zvcm1hdC5qcydcbmltcG9ydCB7IFNlbGVjdCB9IGZyb20gJy4vQ3VzdG9tU2VsZWN0L2luZGV4LmpzJ1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnLi9kZXNpZ24tc3lzdGVtL0RpYWxvZy5qcydcblxudHlwZSBJZGxlUmV0dXJuQWN0aW9uID0gJ2NvbnRpbnVlJyB8ICdjbGVhcicgfCAnZGlzbWlzcycgfCAnbmV2ZXInXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGlkbGVNaW51dGVzOiBudW1iZXJcbiAgdG90YWxJbnB1dFRva2VuczogbnVtYmVyXG4gIG9uRG9uZTogKGFjdGlvbjogSWRsZVJldHVybkFjdGlvbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gSWRsZVJldHVybkRpYWxvZyh7XG4gIGlkbGVNaW51dGVzLFxuICB0b3RhbElucHV0VG9rZW5zLFxuICBvbkRvbmUsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IGZvcm1hdHRlZElkbGUgPSBmb3JtYXRJZGxlRHVyYXRpb24oaWRsZU1pbnV0ZXMpXG4gIGNvbnN0IGZvcm1hdHRlZFRva2VucyA9IGZvcm1hdFRva2Vucyh0b3RhbElucHV0VG9rZW5zKVxuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgdGl0bGU9e2BZb3UndmUgYmVlbiBhd2F5ICR7Zm9ybWF0dGVkSWRsZX0gYW5kIHRoaXMgY29udmVyc2F0aW9uIGlzICR7Zm9ybWF0dGVkVG9rZW5zfSB0b2tlbnMuYH1cbiAgICAgIG9uQ2FuY2VsPXsoKSA9PiBvbkRvbmUoJ2Rpc21pc3MnKX1cbiAgICA+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgSWYgdGhpcyBpcyBhIG5ldyB0YXNrLCBjbGVhcmluZyBjb250ZXh0IHdpbGwgc2F2ZSB1c2FnZSBhbmQgYmUgZmFzdGVyLlxuICAgICAgICA8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxTZWxlY3RcbiAgICAgICAgb3B0aW9ucz17W1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnY29udGludWUnIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGFiZWw6ICdDb250aW51ZSB0aGlzIGNvbnZlcnNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2NsZWFyJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGxhYmVsOiAnU2VuZCBtZXNzYWdlIGFzIGEgbmV3IGNvbnZlcnNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ25ldmVyJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGxhYmVsOiBcIkRvbid0IGFzayBtZSBhZ2FpblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF19XG4gICAgICAgIG9uQ2hhbmdlPXsodmFsdWU6IElkbGVSZXR1cm5BY3Rpb24pID0+IG9uRG9uZSh2YWx1ZSl9XG4gICAgICAvPlxuICAgIDwvRGlhbG9nPlxuICApXG59XG5cbmZ1bmN0aW9uIGZvcm1hdElkbGVEdXJhdGlvbihtaW51dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAobWludXRlcyA8IDEpIHtcbiAgICByZXR1cm4gJzwgMW0nXG4gIH1cbiAgaWYgKG1pbnV0ZXMgPCA2MCkge1xuICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1pbnV0ZXMpfW1gXG4gIH1cbiAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MClcbiAgY29uc3QgcmVtYWluaW5nTWludXRlcyA9IE1hdGguZmxvb3IobWludXRlcyAlIDYwKVxuICBpZiAocmVtYWluaW5nTWludXRlcyA9PT0gMCkge1xuICAgIHJldHVybiBgJHtob3Vyc31oYFxuICB9XG4gIHJldHVybiBgJHtob3Vyc31oICR7cmVtYWluaW5nTWludXRlc31tYFxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsV0FBVztBQUNyQyxTQUFTQyxZQUFZLFFBQVEsb0JBQW9CO0FBQ2pELFNBQVNDLE1BQU0sUUFBUSx5QkFBeUI7QUFDaEQsU0FBU0MsTUFBTSxRQUFRLDJCQUEyQjtBQUVsRCxLQUFLQyxnQkFBZ0IsR0FBRyxVQUFVLEdBQUcsT0FBTyxHQUFHLFNBQVMsR0FBRyxPQUFPO0FBRWxFLEtBQUtDLEtBQUssR0FBRztFQUNYQyxXQUFXLEVBQUUsTUFBTTtFQUNuQkMsZ0JBQWdCLEVBQUUsTUFBTTtFQUN4QkMsTUFBTSxFQUFFLENBQUNDLE1BQU0sRUFBRUwsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJO0FBQzVDLENBQUM7QUFFRCxPQUFPLFNBQUFNLGlCQUFBQyxFQUFBO0VBQUEsTUFBQUMsQ0FBQSxHQUFBQyxF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