import { c as _c } from "react/compiler-runtime"; import { relative } from 'path'; import * as React from 'react'; import { Suspense, use, useMemo } from 'react'; import { Box, NoSelect, Text } from '../../../ink.js'; import type { NotebookCellType, NotebookContent } from '../../../types/notebook.js'; import { intersperse } from '../../../utils/array.js'; import { getCwd } from '../../../utils/cwd.js'; import { getPatchForDisplay } from '../../../utils/diff.js'; import { getFsImplementation } from '../../../utils/fsOperations.js'; import { safeParseJSON } from '../../../utils/json.js'; import { parseCellId } from '../../../utils/notebook.js'; import { HighlightedCode } from '../../HighlightedCode.js'; import { StructuredDiff } from '../../StructuredDiff.js'; type Props = { notebook_path: string; cell_id: string | undefined; new_source: string; cell_type?: NotebookCellType; edit_mode?: string; verbose: boolean; width: number; }; type InnerProps = { notebook_path: string; cell_id: string | undefined; new_source: string; cell_type?: NotebookCellType; edit_mode?: string; verbose: boolean; width: number; promise: Promise; }; export function NotebookEditToolDiff(props) { const $ = _c(5); let t0; if ($[0] !== props.notebook_path) { t0 = getFsImplementation().readFile(props.notebook_path, { encoding: "utf-8" }).then(_temp).catch(_temp2); $[0] = props.notebook_path; $[1] = t0; } else { t0 = $[1]; } const notebookDataPromise = t0; let t1; if ($[2] !== notebookDataPromise || $[3] !== props) { t1 = ; $[2] = notebookDataPromise; $[3] = props; $[4] = t1; } else { t1 = $[4]; } return t1; } function _temp2() { return null; } function _temp(content) { return safeParseJSON(content) as NotebookContent | null; } function NotebookEditToolDiffInner(t0) { const $ = _c(34); const { notebook_path, cell_id, new_source, cell_type, edit_mode: t1, verbose, width, promise } = t0; const edit_mode = t1 === undefined ? "replace" : t1; const notebookData = use(promise); let t2; if ($[0] !== cell_id || $[1] !== notebookData) { bb0: { if (!notebookData || !cell_id) { t2 = ""; break bb0; } const cellIndex = parseCellId(cell_id); if (cellIndex !== undefined) { if (notebookData.cells[cellIndex]) { const source = notebookData.cells[cellIndex].source; let t3; if ($[3] !== source) { t3 = Array.isArray(source) ? source.join("") : source; $[3] = source; $[4] = t3; } else { t3 = $[4]; } t2 = t3; break bb0; } t2 = ""; break bb0; } let t3; if ($[5] !== cell_id) { t3 = cell => cell.id === cell_id; $[5] = cell_id; $[6] = t3; } else { t3 = $[6]; } const cell_0 = notebookData.cells.find(t3); if (!cell_0) { t2 = ""; break bb0; } t2 = Array.isArray(cell_0.source) ? cell_0.source.join("") : cell_0.source; } $[0] = cell_id; $[1] = notebookData; $[2] = t2; } else { t2 = $[2]; } const oldSource = t2; let t3; bb1: { if (!notebookData || edit_mode === "insert" || edit_mode === "delete") { t3 = null; break bb1; } let t4; if ($[7] !== new_source || $[8] !== notebook_path || $[9] !== oldSource) { t4 = getPatchForDisplay({ filePath: notebook_path, fileContents: oldSource, edits: [{ old_string: oldSource, new_string: new_source, replace_all: false }], ignoreWhitespace: false }); $[7] = new_source; $[8] = notebook_path; $[9] = oldSource; $[10] = t4; } else { t4 = $[10]; } t3 = t4; } const hunks = t3; let editTypeDescription; bb2: switch (edit_mode) { case "insert": { editTypeDescription = "Insert new cell"; break bb2; } case "delete": { editTypeDescription = "Delete cell"; break bb2; } default: { editTypeDescription = "Replace cell contents"; } } let t4; if ($[11] !== notebook_path || $[12] !== verbose) { t4 = verbose ? notebook_path : relative(getCwd(), notebook_path); $[11] = notebook_path; $[12] = verbose; $[13] = t4; } else { t4 = $[13]; } let t5; if ($[14] !== t4) { t5 = {t4}; $[14] = t4; $[15] = t5; } else { t5 = $[15]; } const t6 = cell_type ? ` (${cell_type})` : ""; let t7; if ($[16] !== cell_id || $[17] !== editTypeDescription || $[18] !== t6) { t7 = {editTypeDescription} for cell {cell_id}{t6}; $[16] = cell_id; $[17] = editTypeDescription; $[18] = t6; $[19] = t7; } else { t7 = $[19]; } let t8; if ($[20] !== t5 || $[21] !== t7) { t8 = {t5}{t7}; $[20] = t5; $[21] = t7; $[22] = t8; } else { t8 = $[22]; } let t9; if ($[23] !== cell_type || $[24] !== edit_mode || $[25] !== hunks || $[26] !== new_source || $[27] !== notebook_path || $[28] !== oldSource || $[29] !== width) { t9 = edit_mode === "delete" ? : edit_mode === "insert" ? : hunks ? intersperse(hunks.map(_ => ), _temp3) : ; $[23] = cell_type; $[24] = edit_mode; $[25] = hunks; $[26] = new_source; $[27] = notebook_path; $[28] = oldSource; $[29] = width; $[30] = t9; } else { t9 = $[30]; } let t10; if ($[31] !== t8 || $[32] !== t9) { t10 = {t8}{t9}; $[31] = t8; $[32] = t9; $[33] = t10; } else { t10 = $[33]; } return t10; } function _temp3(i) { return ...; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWxhdGl2ZSIsIlJlYWN0IiwiU3VzcGVuc2UiLCJ1c2UiLCJ1c2VNZW1vIiwiQm94IiwiTm9TZWxlY3QiLCJUZXh0IiwiTm90ZWJvb2tDZWxsVHlwZSIsIk5vdGVib29rQ29udGVudCIsImludGVyc3BlcnNlIiwiZ2V0Q3dkIiwiZ2V0UGF0Y2hGb3JEaXNwbGF5IiwiZ2V0RnNJbXBsZW1lbnRhdGlvbiIsInNhZmVQYXJzZUpTT04iLCJwYXJzZUNlbGxJZCIsIkhpZ2hsaWdodGVkQ29kZSIsIlN0cnVjdHVyZWREaWZmIiwiUHJvcHMiLCJub3RlYm9va19wYXRoIiwiY2VsbF9pZCIsIm5ld19zb3VyY2UiLCJjZWxsX3R5cGUiLCJlZGl0X21vZGUiLCJ2ZXJib3NlIiwid2lkdGgiLCJJbm5lclByb3BzIiwicHJvbWlzZSIsIlByb21pc2UiLCJOb3RlYm9va0VkaXRUb29sRGlmZiIsInByb3BzIiwiJCIsIl9jIiwidDAiLCJyZWFkRmlsZSIsImVuY29kaW5nIiwidGhlbiIsIl90ZW1wIiwiY2F0Y2giLCJfdGVtcDIiLCJub3RlYm9va0RhdGFQcm9taXNlIiwidDEiLCJjb250ZW50IiwiTm90ZWJvb2tFZGl0VG9vbERpZmZJbm5lciIsInVuZGVmaW5lZCIsIm5vdGVib29rRGF0YSIsInQyIiwiYmIwIiwiY2VsbEluZGV4IiwiY2VsbHMiLCJzb3VyY2UiLCJ0MyIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJjZWxsIiwiaWQiLCJjZWxsXzAiLCJmaW5kIiwib2xkU291cmNlIiwiYmIxIiwidDQiLCJmaWxlUGF0aCIsImZpbGVDb250ZW50cyIsImVkaXRzIiwib2xkX3N0cmluZyIsIm5ld19zdHJpbmciLCJyZXBsYWNlX2FsbCIsImlnbm9yZVdoaXRlc3BhY2UiLCJodW5rcyIsImVkaXRUeXBlRGVzY3JpcHRpb24iLCJiYjIiLCJ0NSIsInQ2IiwidDciLCJ0OCIsInQ5IiwibWFwIiwiXyIsIm5ld1N0YXJ0Iiwic3BsaXQiLCJfdGVtcDMiLCJ0MTAiLCJpIl0sInNvdXJjZXMiOlsiTm90ZWJvb2tFZGl0VG9vbERpZmYudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSAncGF0aCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3VzcGVuc2UsIHVzZSwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQm94LCBOb1NlbGVjdCwgVGV4dCB9IGZyb20gJy4uLy4uLy4uL2luay5qcydcbmltcG9ydCB0eXBlIHtcbiAgTm90ZWJvb2tDZWxsVHlwZSxcbiAgTm90ZWJvb2tDb250ZW50LFxufSBmcm9tICcuLi8uLi8uLi90eXBlcy9ub3RlYm9vay5qcydcbmltcG9ydCB7IGludGVyc3BlcnNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXkuanMnXG5pbXBvcnQgeyBnZXRDd2QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jd2QuanMnXG5pbXBvcnQgeyBnZXRQYXRjaEZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi8uLi91dGlscy9kaWZmLmpzJ1xuaW1wb3J0IHsgZ2V0RnNJbXBsZW1lbnRhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZzT3BlcmF0aW9ucy5qcydcbmltcG9ydCB7IHNhZmVQYXJzZUpTT04gfSBmcm9tICcuLi8uLi8uLi91dGlscy9qc29uLmpzJ1xuaW1wb3J0IHsgcGFyc2VDZWxsSWQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ub3RlYm9vay5qcydcbmltcG9ydCB7IEhpZ2hsaWdodGVkQ29kZSB9IGZyb20gJy4uLy4uL0hpZ2hsaWdodGVkQ29kZS5qcydcbmltcG9ydCB7IFN0cnVjdHVyZWREaWZmIH0gZnJvbSAnLi4vLi4vU3RydWN0dXJlZERpZmYuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIG5vdGVib29rX3BhdGg6IHN0cmluZ1xuICBjZWxsX2lkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgbmV3X3NvdXJjZTogc3RyaW5nXG4gIGNlbGxfdHlwZT86IE5vdGVib29rQ2VsbFR5cGVcbiAgZWRpdF9tb2RlPzogc3RyaW5nXG4gIHZlcmJvc2U6IGJvb2xlYW5cbiAgd2lkdGg6IG51bWJlclxufVxuXG50eXBlIElubmVyUHJvcHMgPSB7XG4gIG5vdGVib29rX3BhdGg6IHN0cmluZ1xuICBjZWxsX2lkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgbmV3X3NvdXJjZTogc3RyaW5nXG4gIGNlbGxfdHlwZT86IE5vdGVib29rQ2VsbFR5cGVcbiAgZWRpdF9tb2RlPzogc3RyaW5nXG4gIHZlcmJvc2U6IGJvb2xlYW5cbiAgd2lkdGg6IG51bWJlclxuICBwcm9taXNlOiBQcm9taXNlPE5vdGVib29rQ29udGVudCB8IG51bGw+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBOb3RlYm9va0VkaXRUb29sRGlmZihwcm9wczogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAvLyBDcmVhdGUgYSBwcm9taXNlIHRoYXQgbmV2ZXIgcmVqZWN0cyBzbyB3ZSBjYW4gaGFuZGxlIGVycm9ycyBpbmxpbmUuXG4gIC8vIE1lbW9pemVkIG9uIG5vdGVib29rX3BhdGggc28gd2UgZG9uJ3QgcmUtcmVhZCBvbiBldmVyeSByZW5kZXIuXG4gIGNvbnN0IG5vdGVib29rRGF0YVByb21pc2UgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBnZXRGc0ltcGxlbWVudGF0aW9uKClcbiAgICAgICAgLnJlYWRGaWxlKHByb3BzLm5vdGVib29rX3BhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSlcbiAgICAgICAgLnRoZW4oY29udGVudCA9PiBzYWZlUGFyc2VKU09OKGNvbnRlbnQpIGFzIE5vdGVib29rQ29udGVudCB8IG51bGwpXG4gICAgICAgIC5jYXRjaCgoKSA9PiBudWxsKSxcbiAgICBbcHJvcHMubm90ZWJvb2tfcGF0aF0sXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17bnVsbH0+XG4gICAgICA8Tm90ZWJvb2tFZGl0VG9vbERpZmZJbm5lciB7Li4ucHJvcHN9IHByb21pc2U9e25vdGVib29rRGF0YVByb21pc2V9IC8+XG4gICAgPC9TdXNwZW5zZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBOb3RlYm9va0VkaXRUb29sRGlmZklubmVyKHtcbiAgbm90ZWJvb2tfcGF0aCxcbiAgY2VsbF9pZCxcbiAgbmV3X3NvdXJjZSxcbiAgY2VsbF90eXBlLFxuICBlZGl0X21vZGUgPSAncmVwbGFjZScsXG4gIHZlcmJvc2UsXG4gIHdpZHRoLFxuICBwcm9taXNlLFxufTogSW5uZXJQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IG5vdGVib29rRGF0YSA9IHVzZShwcm9taXNlKVxuXG4gIGNvbnN0IG9sZFNvdXJjZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbm90ZWJvb2tEYXRhIHx8ICFjZWxsX2lkKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgY29uc3QgY2VsbEluZGV4ID0gcGFyc2VDZWxsSWQoY2VsbF9pZClcbiAgICBpZiAoY2VsbEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChub3RlYm9va0RhdGEuY2VsbHNbY2VsbEluZGV4XSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBub3RlYm9va0RhdGEuY2VsbHNbY2VsbEluZGV4XS5zb3VyY2VcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc291cmNlKSA/IHNvdXJjZS5qb2luKCcnKSA6IHNvdXJjZVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGNvbnN0IGNlbGwgPSBub3RlYm9va0RhdGEuY2VsbHMuZmluZChjZWxsID0+IGNlbGwuaWQgPT09IGNlbGxfaWQpXG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY2VsbC5zb3VyY2UpID8gY2VsbC5zb3VyY2Uuam9pbignJykgOiBjZWxsLnNvdXJjZVxuICB9LCBbbm90ZWJvb2tEYXRhLCBjZWxsX2lkXSlcblxuICBjb25zdCBodW5rcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghbm90ZWJvb2tEYXRhIHx8IGVkaXRfbW9kZSA9PT0gJ2luc2VydCcgfHwgZWRpdF9tb2RlID09PSAnZGVsZXRlJykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLy8gQ3JlYXRlIGEgXCJmYWtlXCIgZmlsZSBjb250ZW50IHdpdGgganVzdCB0aGUgY2VsbCBzb3VyY2VcbiAgICAvLyBUaGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIHJlZ3VsYXIgZGlmZiBtZWNoYW5pc21cbiAgICByZXR1cm4gZ2V0UGF0Y2hGb3JEaXNwbGF5KHtcbiAgICAgIGZpbGVQYXRoOiBub3RlYm9va19wYXRoLFxuICAgICAgZmlsZUNvbnRlbnRzOiBvbGRTb3VyY2UsXG4gICAgICBlZGl0czogW1xuICAgICAgICB7XG4gICAgICAgICAgb2xkX3N0cmluZzogb2xkU291cmNlLFxuICAgICAgICAgIG5ld19zdHJpbmc6IG5ld19zb3VyY2UsXG4gICAgICAgICAgcmVwbGFjZV9hbGw6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGlnbm9yZVdoaXRlc3BhY2U6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtub3RlYm9va0RhdGEsIG5vdGVib29rX3BhdGgsIG9sZFNvdXJjZSwgbmV3X3NvdXJjZSwgZWRpdF9tb2RlXSlcblxuICBsZXQgZWRpdFR5cGVEZXNjcmlwdGlvbjogc3RyaW5nXG4gIHN3aXRjaCAoZWRpdF9tb2RlKSB7XG4gICAgY2FzZSAnaW5zZXJ0JzpcbiAgICAgIGVkaXRUeXBlRGVzY3JpcHRpb24gPSAnSW5zZXJ0IG5ldyBjZWxsJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdkZWxldGUnOlxuICAgICAgZWRpdFR5cGVEZXNjcmlwdGlvbiA9ICdEZWxldGUgY2VsbCdcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGVkaXRUeXBlRGVzY3JpcHRpb24gPSAnUmVwbGFjZSBjZWxsIGNvbnRlbnRzJ1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgIDxCb3ggYm9yZGVyU3R5bGU9XCJyb3VuZFwiIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBwYWRkaW5nWD17MX0+XG4gICAgICAgIDxCb3ggcGFkZGluZ0JvdHRvbT17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIDxUZXh0IGJvbGQ+XG4gICAgICAgICAgICB7dmVyYm9zZSA/IG5vdGVib29rX3BhdGggOiByZWxhdGl2ZShnZXRDd2QoKSwgbm90ZWJvb2tfcGF0aCl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAge2VkaXRUeXBlRGVzY3JpcHRpb259IGZvciBjZWxsIHtjZWxsX2lkfVxuICAgICAgICAgICAge2NlbGxfdHlwZSA/IGAgKCR7Y2VsbF90eXBlfSlgIDogJyd9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAge2VkaXRfbW9kZSA9PT0gJ2RlbGV0ZScgPyAoXG4gICAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgcGFkZGluZ0xlZnQ9ezJ9PlxuICAgICAgICAgICAgPEhpZ2hsaWdodGVkQ29kZSBjb2RlPXtvbGRTb3VyY2V9IGZpbGVQYXRoPXtub3RlYm9va19wYXRofSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApIDogZWRpdF9tb2RlID09PSAnaW5zZXJ0JyA/IChcbiAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBwYWRkaW5nTGVmdD17Mn0+XG4gICAgICAgICAgICA8SGlnaGxpZ2h0ZWRDb2RlXG4gICAgICAgICAgICAgIGNvZGU9e25ld19zb3VyY2V9XG4gICAgICAgICAgICAgIGZpbGVQYXRoPXtjZWxsX3R5cGUgPT09ICdtYXJrZG93bicgPyAnZmlsZS5tZCcgOiBub3RlYm9va19wYXRofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKSA6IGh1bmtzID8gKFxuICAgICAgICAgIGludGVyc3BlcnNlKFxuICAgICAgICAgICAgaHVua3MubWFwKF8gPT4gKFxuICAgICAgICAgICAgICA8U3RydWN0dXJlZERpZmZcbiAgICAgICAgICAgICAgICBrZXk9e18ubmV3U3RhcnR9XG4gICAgICAgICAgICAgICAgcGF0Y2g9e199XG4gICAgICAgICAgICAgICAgZGltPXtmYWxzZX1cbiAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgZmlsZVBhdGg9e25vdGVib29rX3BhdGh9XG4gICAgICAgICAgICAgICAgZmlyc3RMaW5lPXtuZXdfc291cmNlLnNwbGl0KCdcXG4nKVswXSA/PyBudWxsfVxuICAgICAgICAgICAgICAgIGZpbGVDb250ZW50PXtvbGRTb3VyY2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGkgPT4gKFxuICAgICAgICAgICAgICA8Tm9TZWxlY3QgZnJvbUxlZnRFZGdlIGtleT17YGVsbGlwc2lzLSR7aX1gfT5cbiAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj4uLi48L1RleHQ+XG4gICAgICAgICAgICAgIDwvTm9TZWxlY3Q+XG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8SGlnaGxpZ2h0ZWRDb2RlXG4gICAgICAgICAgICBjb2RlPXtuZXdfc291cmNlfVxuICAgICAgICAgICAgZmlsZVBhdGg9e2NlbGxfdHlwZSA9PT0gJ21hcmtkb3duJyA/ICdmaWxlLm1kJyA6IG5vdGVib29rX3BhdGh9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxRQUFRLFFBQVEsTUFBTTtBQUMvQixPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFP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