πŸ“„ File detail

components/messages/UserChannelMessage.tsx

🧩 .tsxπŸ“ 137 linesπŸ’Ύ 11,325 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 UserChannelMessage β€” mainly types, interfaces, or factory objects. Dependencies touch React UI and @anthropic-ai. It composes internal code from constants, ink, and utils (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 type { TextBlockParam } from '@anthropic-ai/sdk/resources/index.mjs'; import * as React from 'react'; import { CHANNEL_ARROW } from '../../constants/figures.js'; import { CHANNEL_TAG } from '../../constants/xml.js';

πŸ“€ Exports (heuristic)

  • UserChannelMessage

πŸ“š External import roots

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

  • react
  • @anthropic-ai

πŸ–₯️ Source preview

import { c as _c } from "react/compiler-runtime";
import type { TextBlockParam } from '@anthropic-ai/sdk/resources/index.mjs';
import * as React from 'react';
import { CHANNEL_ARROW } from '../../constants/figures.js';
import { CHANNEL_TAG } from '../../constants/xml.js';
import { Box, Text } from '../../ink.js';
import { truncateToWidth } from '../../utils/format.js';
type Props = {
  addMargin: boolean;
  param: TextBlockParam;
};

// <channel source="..." user="..." chat_id="...">content</channel>
// source is always first (wrapChannelMessage writes it), user is optional.
const CHANNEL_RE = new RegExp(`<${CHANNEL_TAG}\\s+source="([^"]+)"([^>]*)>\\n?([\\s\\S]*?)\\n?</${CHANNEL_TAG}>`);
const USER_ATTR_RE = /\buser="([^"]+)"/;

// Plugin-provided servers get names like plugin:slack-channel:slack via
// addPluginScopeToServers β€” show just the leaf. Matches the suffix-match
// logic in isServerInChannels.
function displayServerName(name: string): string {
  const i = name.lastIndexOf(':');
  return i === -1 ? name : name.slice(i + 1);
}
const TRUNCATE_AT = 60;
export function UserChannelMessage(t0) {
  const $ = _c(29);
  const {
    addMargin,
    param: t1
  } = t0;
  const {
    text
  } = t1;
  let T0;
  let T1;
  let T2;
  let t2;
  let t3;
  let t4;
  let t5;
  let t6;
  let t7;
  let truncated;
  let user;
  if ($[0] !== addMargin || $[1] !== text) {
    t7 = Symbol.for("react.early_return_sentinel");
    bb0: {
      const m = CHANNEL_RE.exec(text);
      if (!m) {
        t7 = null;
        break bb0;
      }
      const [, source, attrs, content] = m;
      user = USER_ATTR_RE.exec(attrs ?? "")?.[1];
      const body = (content ?? "").trim().replace(/\s+/g, " ");
      truncated = truncateToWidth(body, TRUNCATE_AT);
      T2 = Box;
      t6 = addMargin ? 1 : 0;
      T1 = Text;
      if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
        t4 = <Text color="suggestion">{CHANNEL_ARROW}</Text>;
        $[13] = t4;
      } else {
        t4 = $[13];
      }
      t5 = " ";
      T0 = Text;
      t2 = true;
      t3 = displayServerName(source ?? "");
    }
    $[0] = addMargin;
    $[1] = text;
    $[2] = T0;
    $[3] = T1;
    $[4] = T2;
    $[5] = t2;
    $[6] = t3;
    $[7] = t4;
    $[8] = t5;
    $[9] = t6;
    $[10] = t7;
    $[11] = truncated;
    $[12] = user;
  } else {
    T0 = $[2];
    T1 = $[3];
    T2 = $[4];
    t2 = $[5];
    t3 = $[6];
    t4 = $[7];
    t5 = $[8];
    t6 = $[9];
    t7 = $[10];
    truncated = $[11];
    user = $[12];
  }
  if (t7 !== Symbol.for("react.early_return_sentinel")) {
    return t7;
  }
  const t8 = user ? ` \u00b7 ${user}` : "";
  let t9;
  if ($[14] !== T0 || $[15] !== t2 || $[16] !== t3 || $[17] !== t8) {
    t9 = <T0 dimColor={t2}>{t3}{t8}:</T0>;
    $[14] = T0;
    $[15] = t2;
    $[16] = t3;
    $[17] = t8;
    $[18] = t9;
  } else {
    t9 = $[18];
  }
  let t10;
  if ($[19] !== T1 || $[20] !== t4 || $[21] !== t5 || $[22] !== t9 || $[23] !== truncated) {
    t10 = <T1>{t4}{t5}{t9}{" "}{truncated}</T1>;
    $[19] = T1;
    $[20] = t4;
    $[21] = t5;
    $[22] = t9;
    $[23] = truncated;
    $[24] = t10;
  } else {
    t10 = $[24];
  }
  let t11;
  if ($[25] !== T2 || $[26] !== t10 || $[27] !== t6) {
    t11 = <T2 marginTop={t6}>{t10}</T2>;
    $[25] = T2;
    $[26] = t10;
    $[27] = t6;
    $[28] = t11;
  } else {
    t11 = $[28];
  }
  return t11;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZXh0QmxvY2tQYXJhbSIsIlJlYWN0IiwiQ0hBTk5FTF9BUlJPVyIsIkNIQU5ORUxfVEFHIiwiQm94IiwiVGV4dCIsInRydW5jYXRlVG9XaWR0aCIsIlByb3BzIiwiYWRkTWFyZ2luIiwicGFyYW0iLCJDSEFOTkVMX1JFIiwiUmVnRXhwIiwiVVNFUl9BVFRSX1JFIiwiZGlzcGxheVNlcnZlck5hbWUiLCJuYW1lIiwiaSIsImxhc3RJbmRleE9mIiwic2xpY2UiLCJUUlVOQ0FURV9BVCIsIlVzZXJDaGFubmVsTWVzc2FnZSIsInQwIiwiJCIsIl9jIiwidDEiLCJ0ZXh0IiwiVDAiLCJUMSIsIlQyIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidHJ1bmNhdGVkIiwidXNlciIsIlN5bWJvbCIsImZvciIsImJiMCIsIm0iLCJleGVjIiwic291cmNlIiwiYXR0cnMiLCJjb250ZW50IiwiYm9keSIsInRyaW0iLCJyZXBsYWNlIiwidDgiLCJ0OSIsInQxMCIsInQxMSJdLCJzb3VyY2VzIjpbIlVzZXJDaGFubmVsTWVzc2FnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUZXh0QmxvY2tQYXJhbSB9IGZyb20gJ0BhbnRocm9waWMtYWkvc2RrL3Jlc291cmNlcy9pbmRleC5tanMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENIQU5ORUxfQVJST1cgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZmlndXJlcy5qcydcbmltcG9ydCB7IENIQU5ORUxfVEFHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3htbC5qcydcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7IHRydW5jYXRlVG9XaWR0aCB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdC5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgYWRkTWFyZ2luOiBib29sZWFuXG4gIHBhcmFtOiBUZXh0QmxvY2tQYXJhbVxufVxuXG4vLyA8Y2hhbm5lbCBzb3VyY2U9XCIuLi5cIiB1c2VyPVwiLi4uXCIgY2hhdF9pZD1cIi4uLlwiPmNvbnRlbnQ8L2NoYW5uZWw+XG4vLyBzb3VyY2UgaXMgYWx3YXlzIGZpcnN0ICh3cmFwQ2hhbm5lbE1lc3NhZ2Ugd3JpdGVzIGl0KSwgdXNlciBpcyBvcHRpb25hbC5cbmNvbnN0IENIQU5ORUxfUkUgPSBuZXcgUmVnRXhwKFxuICBgPCR7Q0hBTk5FTF9UQUd9XFxcXHMrc291cmNlPVwiKFteXCJdKylcIihbXj5dKik+XFxcXG4/KFtcXFxcc1xcXFxTXSo/KVxcXFxuPzwvJHtDSEFOTkVMX1RBR30+YCxcbilcbmNvbnN0IFVTRVJfQVRUUl9SRSA9IC9cXGJ1c2VyPVwiKFteXCJdKylcIi9cblxuLy8gUGx1Z2luLXByb3ZpZGVkIHNlcnZlcnMgZ2V0IG5hbWVzIGxpa2UgcGx1Z2luOnNsYWNrLWNoYW5uZWw6c2xhY2sgdmlhXG4vLyBhZGRQbHVnaW5TY29wZVRvU2VydmVycyDigJQgc2hvdyBqdXN0IHRoZSBsZWFmLiBNYXRjaGVzIHRoZSBzdWZmaXgtbWF0Y2hcbi8vIGxvZ2ljIGluIGlzU2VydmVySW5DaGFubmVscy5cbmZ1bmN0aW9uIGRpc3BsYXlTZXJ2ZXJOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGkgPSBuYW1lLmxhc3RJbmRleE9mKCc6JylcbiAgcmV0dXJuIGkgPT09IC0xID8gbmFtZSA6IG5hbWUuc2xpY2UoaSArIDEpXG59XG5cbmNvbnN0IFRSVU5DQVRFX0FUID0gNjBcblxuZXhwb3J0IGZ1bmN0aW9uIFVzZXJDaGFubmVsTWVzc2FnZSh7XG4gIGFkZE1hcmdpbixcbiAgcGFyYW06IHsgdGV4dCB9LFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBtID0gQ0hBTk5FTF9SRS5leGVjKHRleHQpXG4gIGlmICghbSkgcmV0dXJuIG51bGxcbiAgY29uc3QgWywgc291cmNlLCBhdHRycywgY29udGVudF0gPSBtXG4gIGNvbnN0IHVzZXIgPSBVU0VSX0FUVFJfUkUuZXhlYyhhdHRycyA/PyAnJyk/LlsxXVxuICBjb25zdCBib2R5ID0gKGNvbnRlbnQgPz8gJycpLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJylcbiAgY29uc3QgdHJ1bmNhdGVkID0gdHJ1bmNhdGVUb1dpZHRoKGJvZHksIFRSVU5DQVRFX0FUKVxuICByZXR1cm4gKFxuICAgIDxCb3ggbWFyZ2luVG9wPXthZGRNYXJnaW4gPyAxIDogMH0+XG4gICAgICA8VGV4dD5cbiAgICAgICAgPFRleHQgY29sb3I9XCJzdWdnZXN0aW9uXCI+e0NIQU5ORUxfQVJST1d9PC9UZXh0PnsnICd9XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgIHtkaXNwbGF5U2VydmVyTmFtZShzb3VyY2UgPz8gJycpfVxuICAgICAgICAgIHt1c2VyID8gYCBcXHUwMGI3ICR7dXNlcn1gIDogJyd9OlxuICAgICAgICA8L1RleHQ+eycgJ31cbiAgICAgICAge3RydW5jYXRlZH1cbiAgICAgIDwvVGV4dD5cbiAgICA8L0JveD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsY0FBY0EsY0FBYyxRQUFRLHVDQUF1QztBQUMzRSxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLGFBQWEsUUFBUSw0QkFBNEI7QUFDMUQsU0FBU0MsV0FBVyxRQUFRLHdCQUF3QjtBQUNwRCxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLFNBQVNDLGVBQWUsUUFBUSx1QkFBdUI7QUFFdkQsS0FBS0MsS0FBSyxHQUFHO0VBQ1hDLFNBQVMsRUFBRSxPQUFPO0VBQ2xCQyxLQUFLLEVBQUVULGNBQWM7QUFDdkIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsTUFBTVUsVUFBVSxHQUFHLElBQUlDLE1BQU0sQ0FDM0IsSUFBSVIsV0FBVyxxREFBcURBLFdBQVcsR0FDakYsQ0FBQztBQUNELE1BQU1TLFlBQVksR0FBRyxrQkFBa0I7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGlC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