import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { stringWidth } from '../../ink/stringWidth.js'; import { Text, useTheme } from '../../ink.js'; import { getGraphemeSegmenter } from '../../utils/intl.js'; import { getTheme, type Theme } from '../../utils/theme.js'; import type { SpinnerMode } from './types.js'; import { interpolateColor, parseRGB, toRGBColor } from './utils.js'; type Props = { message: string; mode: SpinnerMode; messageColor: keyof Theme; glimmerIndex: number; flashOpacity: number; shimmerColor: keyof Theme; stalledIntensity?: number; }; const ERROR_RED = { r: 171, g: 43, b: 63 }; export function GlimmerMessage(t0) { const $ = _c(75); const { message, mode, messageColor, glimmerIndex, flashOpacity, shimmerColor, stalledIntensity: t1 } = t0; const stalledIntensity = t1 === undefined ? 0 : t1; const [themeName] = useTheme(); let messageWidth; let segments; let t2; if ($[0] !== flashOpacity || $[1] !== message || $[2] !== messageColor || $[3] !== mode || $[4] !== shimmerColor || $[5] !== stalledIntensity || $[6] !== themeName) { t2 = Symbol.for("react.early_return_sentinel"); bb0: { const theme = getTheme(themeName); let segs; if ($[10] !== message) { segs = []; for (const { segment } of getGraphemeSegmenter().segment(message)) { segs.push({ segment, width: stringWidth(segment) }); } $[10] = message; $[11] = segs; } else { segs = $[11]; } let t3; if ($[12] !== message) { t3 = stringWidth(message); $[12] = message; $[13] = t3; } else { t3 = $[13]; } let t4; if ($[14] !== segs || $[15] !== t3) { t4 = { segments: segs, messageWidth: t3 }; $[14] = segs; $[15] = t3; $[16] = t4; } else { t4 = $[16]; } ({ segments, messageWidth } = t4); if (!message) { t2 = null; break bb0; } if (stalledIntensity > 0) { const baseColorStr = theme[messageColor]; const baseRGB = baseColorStr ? parseRGB(baseColorStr) : null; if (baseRGB) { const interpolated = interpolateColor(baseRGB, ERROR_RED, stalledIntensity); const color = toRGBColor(interpolated); let t5; if ($[17] !== color) { t5 = ; $[17] = color; $[18] = t5; } else { t5 = $[18]; } t2 = <>{message}{t5}; break bb0; } const color_0 = stalledIntensity > 0.5 ? "error" : messageColor; let t5; if ($[19] !== color_0 || $[20] !== message) { t5 = {message}; $[19] = color_0; $[20] = message; $[21] = t5; } else { t5 = $[21]; } let t6; if ($[22] !== color_0) { t6 = ; $[22] = color_0; $[23] = t6; } else { t6 = $[23]; } let t7; if ($[24] !== t5 || $[25] !== t6) { t7 = <>{t5}{t6}; $[24] = t5; $[25] = t6; $[26] = t7; } else { t7 = $[26]; } t2 = t7; break bb0; } if (mode === "tool-use") { const baseColorStr_0 = theme[messageColor]; const shimmerColorStr = theme[shimmerColor]; const baseRGB_0 = baseColorStr_0 ? parseRGB(baseColorStr_0) : null; const shimmerRGB = shimmerColorStr ? parseRGB(shimmerColorStr) : null; if (baseRGB_0 && shimmerRGB) { const interpolated_0 = interpolateColor(baseRGB_0, shimmerRGB, flashOpacity); const t5 = {message}; let t6; if ($[27] !== messageColor) { t6 = ; $[27] = messageColor; $[28] = t6; } else { t6 = $[28]; } let t7; if ($[29] !== t5 || $[30] !== t6) { t7 = <>{t5}{t6}; $[29] = t5; $[30] = t6; $[31] = t7; } else { t7 = $[31]; } t2 = t7; break bb0; } const color_1 = flashOpacity > 0.5 ? shimmerColor : messageColor; let t5; if ($[32] !== color_1 || $[33] !== message) { t5 = {message}; $[32] = color_1; $[33] = message; $[34] = t5; } else { t5 = $[34]; } let t6; if ($[35] !== messageColor) { t6 = ; $[35] = messageColor; $[36] = t6; } else { t6 = $[36]; } let t7; if ($[37] !== t5 || $[38] !== t6) { t7 = <>{t5}{t6}; $[37] = t5; $[38] = t6; $[39] = t7; } else { t7 = $[39]; } t2 = t7; break bb0; } } $[0] = flashOpacity; $[1] = message; $[2] = messageColor; $[3] = mode; $[4] = shimmerColor; $[5] = stalledIntensity; $[6] = themeName; $[7] = messageWidth; $[8] = segments; $[9] = t2; } else { messageWidth = $[7]; segments = $[8]; t2 = $[9]; } if (t2 !== Symbol.for("react.early_return_sentinel")) { return t2; } const shimmerStart = glimmerIndex - 1; const shimmerEnd = glimmerIndex + 1; if (shimmerStart >= messageWidth || shimmerEnd < 0) { let t3; if ($[40] !== message || $[41] !== messageColor) { t3 = {message}; $[40] = message; $[41] = messageColor; $[42] = t3; } else { t3 = $[42]; } let t4; if ($[43] !== messageColor) { t4 = ; $[43] = messageColor; $[44] = t4; } else { t4 = $[44]; } let t5; if ($[45] !== t3 || $[46] !== t4) { t5 = <>{t3}{t4}; $[45] = t3; $[46] = t4; $[47] = t5; } else { t5 = $[47]; } return t5; } const clampedStart = Math.max(0, shimmerStart); let colPos = 0; let before = ""; let shim = ""; let after = ""; if ($[48] !== after || $[49] !== before || $[50] !== clampedStart || $[51] !== colPos || $[52] !== segments || $[53] !== shim || $[54] !== shimmerEnd) { for (const { segment: segment_0, width } of segments) { if (colPos + width <= clampedStart) { before = before + segment_0; } else { if (colPos > shimmerEnd) { after = after + segment_0; } else { shim = shim + segment_0; } } colPos = colPos + width; } $[48] = after; $[49] = before; $[50] = clampedStart; $[51] = colPos; $[52] = segments; $[53] = shim; $[54] = shimmerEnd; $[55] = before; $[56] = after; $[57] = shim; $[58] = colPos; } else { before = $[55] as string; after = $[56] as string; shim = $[57] as string; colPos = $[58] as number; } let t3; if ($[59] !== before || $[60] !== messageColor) { t3 = before && {before}; $[59] = before; $[60] = messageColor; $[61] = t3; } else { t3 = $[61]; } let t4; if ($[62] !== shim || $[63] !== shimmerColor) { t4 = {shim}; $[62] = shim; $[63] = shimmerColor; $[64] = t4; } else { t4 = $[64]; } let t5; if ($[65] !== after || $[66] !== messageColor) { t5 = after && {after}; $[65] = after; $[66] = messageColor; $[67] = t5; } else { t5 = $[67]; } let t6; if ($[68] !== messageColor) { t6 = ; $[68] = messageColor; $[69] = t6; } else { t6 = $[69]; } let t7; if ($[70] !== t3 || $[71] !== t4 || $[72] !== t5 || $[73] !== t6) { t7 = <>{t3}{t4}{t5}{t6}; $[70] = t3; $[71] = t4; $[72] = t5; $[73] = t6; $[74] = t7; } else { t7 = $[74]; } return t7; }