πŸ“„ File detail

components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx

🧩 .tsxπŸ“ 89 linesπŸ’Ύ 9,672 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 FileWriteToolDiff β€” mainly types, interfaces, or factory objects. Dependencies touch React UI. It composes internal code from hooks, ink, utils, HighlightedCode, and StructuredDiff (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 * as React from 'react'; import { useMemo } from 'react'; import { useTerminalSize } from '../../../hooks/useTerminalSize.js'; import { Box, NoSelect, Text } from '../../../ink.js';

πŸ“€ Exports (heuristic)

  • FileWriteToolDiff

πŸ“š External import roots

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

  • react

πŸ–₯️ Source preview

import { c as _c } from "react/compiler-runtime";
import * as React from 'react';
import { useMemo } from 'react';
import { useTerminalSize } from '../../../hooks/useTerminalSize.js';
import { Box, NoSelect, Text } from '../../../ink.js';
import { intersperse } from '../../../utils/array.js';
import { getPatchForDisplay } from '../../../utils/diff.js';
import { HighlightedCode } from '../../HighlightedCode.js';
import { StructuredDiff } from '../../StructuredDiff.js';
type Props = {
  file_path: string;
  content: string;
  fileExists: boolean;
  oldContent: string;
};
export function FileWriteToolDiff(t0) {
  const $ = _c(15);
  const {
    file_path,
    content,
    fileExists,
    oldContent
  } = t0;
  const {
    columns
  } = useTerminalSize();
  let t1;
  bb0: {
    if (!fileExists) {
      t1 = null;
      break bb0;
    }
    let t2;
    if ($[0] !== content || $[1] !== file_path || $[2] !== oldContent) {
      t2 = getPatchForDisplay({
        filePath: file_path,
        fileContents: oldContent,
        edits: [{
          old_string: oldContent,
          new_string: content,
          replace_all: false
        }]
      });
      $[0] = content;
      $[1] = file_path;
      $[2] = oldContent;
      $[3] = t2;
    } else {
      t2 = $[3];
    }
    t1 = t2;
  }
  const hunks = t1;
  let t2;
  if ($[4] !== content) {
    t2 = content.split("\n")[0] ?? null;
    $[4] = content;
    $[5] = t2;
  } else {
    t2 = $[5];
  }
  const firstLine = t2;
  let t3;
  if ($[6] !== columns || $[7] !== content || $[8] !== file_path || $[9] !== firstLine || $[10] !== hunks || $[11] !== oldContent) {
    t3 = hunks ? intersperse(hunks.map(_ => <StructuredDiff key={_.newStart} patch={_} dim={false} filePath={file_path} firstLine={firstLine} fileContent={oldContent} width={columns - 2} />), _temp) : <HighlightedCode code={content || "(No content)"} filePath={file_path} />;
    $[6] = columns;
    $[7] = content;
    $[8] = file_path;
    $[9] = firstLine;
    $[10] = hunks;
    $[11] = oldContent;
    $[12] = t3;
  } else {
    t3 = $[12];
  }
  let t4;
  if ($[13] !== t3) {
    t4 = <Box flexDirection="column"><Box borderColor="subtle" borderStyle="dashed" flexDirection="column" borderLeft={false} borderRight={false} paddingX={1}>{t3}</Box></Box>;
    $[13] = t3;
    $[14] = t4;
  } else {
    t4 = $[14];
  }
  return t4;
}
function _temp(i) {
  return <NoSelect fromLeftEdge={true} key={`ellipsis-${i}`}><Text dimColor={true}>...</Text></NoSelect>;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJ1c2VUZXJtaW5hbFNpemUiLCJCb3giLCJOb1NlbGVjdCIsIlRleHQiLCJpbnRlcnNwZXJzZSIsImdldFBhdGNoRm9yRGlzcGxheSIsIkhpZ2hsaWdodGVkQ29kZSIsIlN0cnVjdHVyZWREaWZmIiwiUHJvcHMiLCJmaWxlX3BhdGgiLCJjb250ZW50IiwiZmlsZUV4aXN0cyIsIm9sZENvbnRlbnQiLCJGaWxlV3JpdGVUb29sRGlmZiIsInQwIiwiJCIsIl9jIiwiY29sdW1ucyIsInQxIiwiYmIwIiwidDIiLCJmaWxlUGF0aCIsImZpbGVDb250ZW50cyIsImVkaXRzIiwib2xkX3N0cmluZyIsIm5ld19zdHJpbmciLCJyZXBsYWNlX2FsbCIsImh1bmtzIiwic3BsaXQiLCJmaXJzdExpbmUiLCJ0MyIsIm1hcCIsIl8iLCJuZXdTdGFydCIsIl90ZW1wIiwidDQiLCJwYWRkaW5nWCIsImkiXSwic291cmNlcyI6WyJGaWxlV3JpdGVUb29sRGlmZi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUZXJtaW5hbFNpemUgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUZXJtaW5hbFNpemUuanMnXG5pbXBvcnQgeyBCb3gsIE5vU2VsZWN0LCBUZXh0IH0gZnJvbSAnLi4vLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgaW50ZXJzcGVyc2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hcnJheS5qcydcbmltcG9ydCB7IGdldFBhdGNoRm9yRGlzcGxheSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RpZmYuanMnXG5pbXBvcnQgeyBIaWdobGlnaHRlZENvZGUgfSBmcm9tICcuLi8uLi9IaWdobGlnaHRlZENvZGUuanMnXG5pbXBvcnQgeyBTdHJ1Y3R1cmVkRGlmZiB9IGZyb20gJy4uLy4uL1N0cnVjdHVyZWREaWZmLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBmaWxlX3BhdGg6IHN0cmluZ1xuICBjb250ZW50OiBzdHJpbmdcbiAgZmlsZUV4aXN0czogYm9vbGVhblxuICBvbGRDb250ZW50OiBzdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZpbGVXcml0ZVRvb2xEaWZmKHtcbiAgZmlsZV9wYXRoLFxuICBjb250ZW50LFxuICBmaWxlRXhpc3RzLFxuICBvbGRDb250ZW50LFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGNvbHVtbnMgfSA9IHVzZVRlcm1pbmFsU2l6ZSgpXG4gIGNvbnN0IGh1bmtzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFmaWxlRXhpc3RzKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gZ2V0UGF0Y2hGb3JEaXNwbGF5KHtcbiAgICAgIGZpbGVQYXRoOiBmaWxlX3BhdGgsXG4gICAgICBmaWxlQ29udGVudHM6IG9sZENvbnRlbnQsXG4gICAgICBlZGl0czogW1xuICAgICAgICB7XG4gICAgICAgICAgb2xkX3N0cmluZzogb2xkQ29udGVudCxcbiAgICAgICAgICBuZXdfc3RyaW5nOiBjb250ZW50LFxuICAgICAgICAgIHJlcGxhY2VfYWxsOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSwgW2ZpbGVFeGlzdHMsIGZpbGVfcGF0aCwgb2xkQ29udGVudCwgY29udGVudF0pXG5cbiAgY29uc3QgZmlyc3RMaW5lID0gY29udGVudC5zcGxpdCgnXFxuJylbMF0gPz8gbnVsbFxuICBjb25zdCBwYWRkaW5nWCA9IDFcblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgPEJveFxuICAgICAgICBib3JkZXJDb2xvcj1cInN1YnRsZVwiXG4gICAgICAgIGJvcmRlclN0eWxlPVwiZGFzaGVkXCJcbiAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgIGJvcmRlckxlZnQ9e2ZhbHNlfVxuICAgICAgICBib3JkZXJSaWdodD17ZmFsc2V9XG4gICAgICAgIHBhZGRpbmdYPXtwYWRkaW5nWH1cbiAgICAgID5cbiAgICAgICAge2h1bmtzID8gKFxuICAgICAgICAgIGludGVyc3BlcnNlKFxuICAgICAgICAgICAgaHVua3MubWFwKF8gPT4gKFxuICAgICAgICAgICAgICA8U3RydWN0dXJlZERpZmZcbiAgICAgICAgICAgICAgICBrZXk9e18ubmV3U3RhcnR9XG4gICAgICAgICAgICAgICAgcGF0Y2g9e199XG4gICAgICAgICAgICAgICAgZGltPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBmaWxlUGF0aD17ZmlsZV9wYXRofVxuICAgICAgICAgICAgICAgIGZpcnN0TGluZT17Zmlyc3RMaW5lfVxuICAgICAgICAgICAgICAgIGZpbGVDb250ZW50PXtvbGRDb250ZW50fVxuICAgICAgICAgICAgICAgIHdpZHRoPXtjb2x1bW5zIC0gMiAqIHBhZGRpbmdYfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBpID0+IChcbiAgICAgICAgICAgICAgPE5vU2VsZWN0IGZyb21MZWZ0RWRnZSBrZXk9e2BlbGxpcHNpcy0ke2l9YH0+XG4gICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+Li4uPC9UZXh0PlxuICAgICAgICAgICAgICA8L05vU2VsZWN0PlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEhpZ2hsaWdodGVkQ29kZVxuICAgICAgICAgICAgY29kZT17Y29udGVudCB8fCAnKE5vIGNvbnRlbnQpJ31cbiAgICAgICAgICAgIGZpbGVQYXRoPXtmaWxlX3BhdGh9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FB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