import { c as _c } from "react/compiler-runtime"; import { extname } from 'path'; import React, { Suspense, use, useMemo } from 'react'; import { Ansi, Text } from '../../ink.js'; import { getCliHighlightPromise } from '../../utils/cliHighlight.js'; import { logForDebugging } from '../../utils/debug.js'; import { convertLeadingTabsToSpaces } from '../../utils/file.js'; import { hashPair } from '../../utils/hash.js'; type Props = { code: string; filePath: string; dim?: boolean; skipColoring?: boolean; }; // Module-level highlight cache — hl.highlight() is the hot cost on virtual- // scroll remounts. useMemo doesn't survive unmount→remount. Keyed by hash // of code+language to avoid retaining full source strings (#24180 RSS fix). const HL_CACHE_MAX = 500; const hlCache = new Map(); function cachedHighlight(hl: NonNullable>>, code: string, language: string): string { const key = hashPair(language, code); const hit = hlCache.get(key); if (hit !== undefined) { hlCache.delete(key); hlCache.set(key, hit); return hit; } const out = hl.highlight(code, { language }); if (hlCache.size >= HL_CACHE_MAX) { const first = hlCache.keys().next().value; if (first !== undefined) hlCache.delete(first); } hlCache.set(key, out); return out; } export function HighlightedCodeFallback(t0) { const $ = _c(20); const { code, filePath, dim: t1, skipColoring: t2 } = t0; const dim = t1 === undefined ? false : t1; const skipColoring = t2 === undefined ? false : t2; let t3; if ($[0] !== code) { t3 = convertLeadingTabsToSpaces(code); $[0] = code; $[1] = t3; } else { t3 = $[1]; } const codeWithSpaces = t3; if (skipColoring) { let t4; if ($[2] !== codeWithSpaces) { t4 = {codeWithSpaces}; $[2] = codeWithSpaces; $[3] = t4; } else { t4 = $[3]; } let t5; if ($[4] !== dim || $[5] !== t4) { t5 = {t4}; $[4] = dim; $[5] = t4; $[6] = t5; } else { t5 = $[6]; } return t5; } let t4; if ($[7] !== filePath) { t4 = extname(filePath).slice(1); $[7] = filePath; $[8] = t4; } else { t4 = $[8]; } const language = t4; let t5; if ($[9] !== codeWithSpaces) { t5 = {codeWithSpaces}; $[9] = codeWithSpaces; $[10] = t5; } else { t5 = $[10]; } let t6; if ($[11] !== codeWithSpaces || $[12] !== language) { t6 = ; $[11] = codeWithSpaces; $[12] = language; $[13] = t6; } else { t6 = $[13]; } let t7; if ($[14] !== t5 || $[15] !== t6) { t7 = {t6}; $[14] = t5; $[15] = t6; $[16] = t7; } else { t7 = $[16]; } let t8; if ($[17] !== dim || $[18] !== t7) { t8 = {t7}; $[17] = dim; $[18] = t7; $[19] = t8; } else { t8 = $[19]; } return t8; } function Highlighted(t0) { const $ = _c(10); const { codeWithSpaces, language } = t0; let t1; if ($[0] === Symbol.for("react.memo_cache_sentinel")) { t1 = getCliHighlightPromise(); $[0] = t1; } else { t1 = $[0]; } const hl = use(t1); let t2; if ($[1] !== codeWithSpaces || $[2] !== hl || $[3] !== language) { bb0: { if (!hl) { t2 = codeWithSpaces; break bb0; } let highlightLang = "markdown"; if (language) { if (hl.supportsLanguage(language)) { highlightLang = language; } else { logForDebugging(`Language not supported while highlighting code, falling back to markdown: ${language}`); } } ; try { t2 = cachedHighlight(hl, codeWithSpaces, highlightLang); } catch (t3) { const e = t3; if (e instanceof Error && e.message.includes("Unknown language")) { logForDebugging(`Language not supported while highlighting code, falling back to markdown: ${e}`); let t4; if ($[5] !== codeWithSpaces || $[6] !== hl) { t4 = cachedHighlight(hl, codeWithSpaces, "markdown"); $[5] = codeWithSpaces; $[6] = hl; $[7] = t4; } else { t4 = $[7]; } t2 = t4; break bb0; } t2 = codeWithSpaces; } } $[1] = codeWithSpaces; $[2] = hl; $[3] = language; $[4] = t2; } else { t2 = $[4]; } const out = t2; let t3; if ($[8] !== out) { t3 = {out}; $[8] = out; $[9] = t3; } else { t3 = $[9]; } return t3; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHRuYW1lIiwiUmVhY3QiLCJTdXNwZW5zZSIsInVzZSIsInVzZU1lbW8iLCJBbnNpIiwiVGV4dCIsImdldENsaUhpZ2hsaWdodFByb21pc2UiLCJsb2dGb3JEZWJ1Z2dpbmciLCJjb252ZXJ0TGVhZGluZ1RhYnNUb1NwYWNlcyIsImhhc2hQYWlyIiwiUHJvcHMiLCJjb2RlIiwiZmlsZVBhdGgiLCJkaW0iLCJza2lwQ29sb3JpbmciLCJITF9DQUNIRV9NQVgiLCJobENhY2hlIiwiTWFwIiwiY2FjaGVkSGlnaGxpZ2h0IiwiaGwiLCJOb25OdWxsYWJsZSIsIkF3YWl0ZWQiLCJSZXR1cm5UeXBlIiwibGFuZ3VhZ2UiLCJrZXkiLCJoaXQiLCJnZXQiLCJ1bmRlZmluZWQiLCJkZWxldGUiLCJzZXQiLCJvdXQiLCJoaWdobGlnaHQiLCJzaXplIiwiZmlyc3QiLCJrZXlzIiwibmV4dCIsInZhbHVlIiwiSGlnaGxpZ2h0ZWRDb2RlRmFsbGJhY2siLCJ0MCIsIiQiLCJfYyIsInQxIiwidDIiLCJ0MyIsImNvZGVXaXRoU3BhY2VzIiwidDQiLCJ0NSIsInNsaWNlIiwidDYiLCJ0NyIsInQ4IiwiSGlnaGxpZ2h0ZWQiLCJTeW1ib2wiLCJmb3IiLCJiYjAiLCJoaWdobGlnaHRMYW5nIiwic3VwcG9ydHNMYW5ndWFnZSIsImUiLCJFcnJvciIsIm1lc3NhZ2UiLCJpbmNsdWRlcyJdLCJzb3VyY2VzIjpbIkZhbGxiYWNrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSAncGF0aCdcbmltcG9ydCBSZWFjdCwgeyBTdXNwZW5zZSwgdXNlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBbnNpLCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgZ2V0Q2xpSGlnaGxpZ2h0UHJvbWlzZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NsaUhpZ2hsaWdodC5qcydcbmltcG9ydCB7IGxvZ0ZvckRlYnVnZ2luZyB9IGZyb20gJy4uLy4uL3V0aWxzL2RlYnVnLmpzJ1xuaW1wb3J0IHsgY29udmVydExlYWRpbmdUYWJzVG9TcGFjZXMgfSBmcm9tICcuLi8uLi91dGlscy9maWxlLmpzJ1xuaW1wb3J0IHsgaGFzaFBhaXIgfSBmcm9tICcuLi8uLi91dGlscy9oYXNoLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBjb2RlOiBzdHJpbmdcbiAgZmlsZVBhdGg6IHN0cmluZ1xuICBkaW0/OiBib29sZWFuXG4gIHNraXBDb2xvcmluZz86IGJvb2xlYW5cbn1cblxuLy8gTW9kdWxlLWxldmVsIGhpZ2hsaWdodCBjYWNoZSDigJQgaGwuaGlnaGxpZ2h0KCkgaXMgdGhlIGhvdCBjb3N0IG9uIHZpcnR1YWwtXG4vLyBzY3JvbGwgcmVtb3VudHMuIHVzZU1lbW8gZG9lc24ndCBzdXJ2aXZlIHVubW91bnTihpJyZW1vdW50LiBLZXllZCBieSBoYXNoXG4vLyBvZiBjb2RlK2xhbmd1YWdlIHRvIGF2b2lkIHJldGFpbmluZyBmdWxsIHNvdXJjZSBzdHJpbmdzICgjMjQxODAgUlNTIGZpeCkuXG5jb25zdCBITF9DQUNIRV9NQVggPSA1MDBcbmNvbnN0IGhsQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpXG5mdW5jdGlvbiBjYWNoZWRIaWdobGlnaHQoXG4gIGhsOiBOb25OdWxsYWJsZTxBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGdldENsaUhpZ2hsaWdodFByb21pc2U+Pj4sXG4gIGNvZGU6IHN0cmluZyxcbiAgbGFuZ3VhZ2U6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGtleSA9IGhhc2hQYWlyKGxhbmd1YWdlLCBjb2RlKVxuICBjb25zdCBoaXQgPSBobENhY2hlLmdldChrZXkpXG4gIGlmIChoaXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGhsQ2FjaGUuZGVsZXRlKGtleSlcbiAgICBobENhY2hlLnNldChrZXksIGhpdClcbiAgICByZXR1cm4gaGl0XG4gIH1cbiAgY29uc3Qgb3V0ID0gaGwuaGlnaGxpZ2h0KGNvZGUsIHsgbGFuZ3VhZ2UgfSlcbiAgaWYgKGhsQ2FjaGUuc2l6ZSA+PSBITF9DQUNIRV9NQVgpIHtcbiAgICBjb25zdCBmaXJzdCA9IGhsQ2FjaGUua2V5cygpLm5leHQoKS52YWx1ZVxuICAgIGlmIChmaXJzdCAhPT0gdW5kZWZpbmVkKSBobENhY2hlLmRlbGV0ZShmaXJzdClcbiAgfVxuICBobENhY2hlLnNldChrZXksIG91dClcbiAgcmV0dXJuIG91dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGlnaGxpZ2h0ZWRDb2RlRmFsbGJhY2soe1xuICBjb2RlLFxuICBmaWxlUGF0aCxcbiAgZGltID0gZmFsc2UsXG4gIHNraXBDb2xvcmluZyA9IGZhbHNlLFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBjb2RlV2l0aFNwYWNlcyA9IGNvbnZlcnRMZWFkaW5nVGFic1RvU3BhY2VzKGNvZGUpXG4gIGlmIChza2lwQ29sb3JpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFRleHQgZGltQ29sb3I9e2RpbX0+XG4gICAgICAgIDxBbnNpPntjb2RlV2l0aFNwYWNlc308L0Fuc2k+XG4gICAgICA8L1RleHQ+XG4gICAgKVxuICB9XG4gIGNvbnN0IGxhbmd1YWdlID0gZXh0bmFtZShmaWxlUGF0aCkuc2xpY2UoMSlcbiAgcmV0dXJuIChcbiAgICA8VGV4dCBkaW1Db2xvcj17ZGltfT5cbiAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17PEFuc2k+e2NvZGVXaXRoU3BhY2VzfTwvQW5zaT59PlxuICAgICAgICA8SGlnaGxpZ2h0ZWQgY29kZVdpdGhTcGFjZXM9e2NvZGVXaXRoU3BhY2VzfSBsYW5ndWFnZT17bGFuZ3VhZ2V9IC8+XG4gICAgICA8L1N1c3BlbnNlPlxuICAgIDwvVGV4dD5cbiAgKVxufVxuXG5mdW5jdGlvbiBIaWdobGlnaHRlZCh7XG4gIGNvZGVXaXRoU3BhY2VzLFxuICBsYW5ndWFnZSxcbn06IHtcbiAgY29kZVdpdGhTcGFjZXM6IHN0cmluZ1xuICBsYW5ndWFnZTogc3RyaW5nXG59KTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3QgaGwgPSB1c2UoZ2V0Q2xpSGlnaGxpZ2h0UHJvbWlzZSgpKVxuICBjb25zdCBvdXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWhsKSByZXR1cm4gY29kZVdpdGhTcGFjZXNcbiAgICBsZXQgaGlnaGxpZ2h0TGFuZyA9ICdtYXJrZG93bidcbiAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgIGlmIChobC5zdXBwb3J0c0xhbmd1YWdlKGxhbmd1YWdlKSkge1xuICAgICAgICBoaWdobGlnaHRMYW5nID0gbGFuZ3VhZ2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ0ZvckRlYnVnZ2luZyhcbiAgICAgICAgICBgTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCB3aGlsZSBoaWdobGlnaHRpbmcgY29kZSwgZmFsbGluZyBiYWNrIHRvIG1hcmtkb3duOiAke2xhbmd1YWdlfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZWRIaWdobGlnaHQoaGwsIGNvZGVXaXRoU3BhY2VzLCBoaWdobGlnaHRMYW5nKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5tZXNzYWdlLmluY2x1ZGVzKCdVbmtub3duIGxhbmd1YWdlJykpIHtcbiAgICAgICAgbG9nRm9yRGVidWdnaW5nKFxuICAgICAgICAgIGBMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIHdoaWxlIGhpZ2hsaWdodGluZyBjb2RlLCBmYWxsaW5nIGJhY2sgdG8gbWFya2Rvd246ICR7ZX1gLFxuICAgICAgICApXG4gICAgICAgIHJldHVybiBjYWNoZWRIaWdobGlnaHQoaGwsIGNvZGVXaXRoU3BhY2VzLCAnbWFya2Rvd24nKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvZGVXaXRoU3BhY2VzXG4gICAgfVxuICB9LCBbY29kZVdpdGhTcGFjZXMsIGxhbmd1YWdlLCBobF0pXG4gIHJldHVy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