mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 19:46:58 +10:00
104 lines
13 KiB
TypeScript
104 lines
13 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
||
|
|
import React, { useCallback, useState } from 'react';
|
||
|
|
import { Box, Text } from '../ink.js';
|
||
|
|
import { getDisplayPath } from '../utils/file.js';
|
||
|
|
import { removePathFromRepo, validateRepoAtPath } from '../utils/githubRepoPathMapping.js';
|
||
|
|
import { Select } from './CustomSelect/index.js';
|
||
|
|
import { Dialog } from './design-system/Dialog.js';
|
||
|
|
import { Spinner } from './Spinner.js';
|
||
|
|
type Props = {
|
||
|
|
targetRepo: string;
|
||
|
|
initialPaths: string[];
|
||
|
|
onSelectPath: (path: string) => void;
|
||
|
|
onCancel: () => void;
|
||
|
|
};
|
||
|
|
export function TeleportRepoMismatchDialog(t0) {
|
||
|
|
const $ = _c(18);
|
||
|
|
const {
|
||
|
|
targetRepo,
|
||
|
|
initialPaths,
|
||
|
|
onSelectPath,
|
||
|
|
onCancel
|
||
|
|
} = t0;
|
||
|
|
const [availablePaths, setAvailablePaths] = useState(initialPaths);
|
||
|
|
const [errorMessage, setErrorMessage] = useState(null);
|
||
|
|
const [validating, setValidating] = useState(false);
|
||
|
|
let t1;
|
||
|
|
if ($[0] !== availablePaths || $[1] !== onCancel || $[2] !== onSelectPath || $[3] !== targetRepo) {
|
||
|
|
t1 = async value => {
|
||
|
|
if (value === "cancel") {
|
||
|
|
onCancel();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
setValidating(true);
|
||
|
|
setErrorMessage(null);
|
||
|
|
const isValid = await validateRepoAtPath(value, targetRepo);
|
||
|
|
if (isValid) {
|
||
|
|
onSelectPath(value);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
removePathFromRepo(targetRepo, value);
|
||
|
|
const updatedPaths = availablePaths.filter(p => p !== value);
|
||
|
|
setAvailablePaths(updatedPaths);
|
||
|
|
setValidating(false);
|
||
|
|
setErrorMessage(`${getDisplayPath(value)} no longer contains the correct repository. Select another path.`);
|
||
|
|
};
|
||
|
|
$[0] = availablePaths;
|
||
|
|
$[1] = onCancel;
|
||
|
|
$[2] = onSelectPath;
|
||
|
|
$[3] = targetRepo;
|
||
|
|
$[4] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[4];
|
||
|
|
}
|
||
|
|
const handleChange = t1;
|
||
|
|
let t2;
|
||
|
|
if ($[5] !== availablePaths) {
|
||
|
|
let t3;
|
||
|
|
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t3 = {
|
||
|
|
label: "Cancel",
|
||
|
|
value: "cancel"
|
||
|
|
};
|
||
|
|
$[7] = t3;
|
||
|
|
} else {
|
||
|
|
t3 = $[7];
|
||
|
|
}
|
||
|
|
t2 = [...availablePaths.map(_temp), t3];
|
||
|
|
$[5] = availablePaths;
|
||
|
|
$[6] = t2;
|
||
|
|
} else {
|
||
|
|
t2 = $[6];
|
||
|
|
}
|
||
|
|
const options = t2;
|
||
|
|
let t3;
|
||
|
|
if ($[8] !== availablePaths.length || $[9] !== errorMessage || $[10] !== handleChange || $[11] !== options || $[12] !== targetRepo || $[13] !== validating) {
|
||
|
|
t3 = availablePaths.length > 0 ? <><Box flexDirection="column" gap={1}>{errorMessage && <Text color="error">{errorMessage}</Text>}<Text>Open Claude Code in <Text bold={true}>{targetRepo}</Text>:</Text></Box>{validating ? <Box><Spinner /><Text> Validating repository…</Text></Box> : <Select options={options} onChange={value_0 => void handleChange(value_0)} />}</> : <Box flexDirection="column" gap={1}>{errorMessage && <Text color="error">{errorMessage}</Text>}<Text dimColor={true}>Run claude --teleport from a checkout of {targetRepo}</Text></Box>;
|
||
|
|
$[8] = availablePaths.length;
|
||
|
|
$[9] = errorMessage;
|
||
|
|
$[10] = handleChange;
|
||
|
|
$[11] = options;
|
||
|
|
$[12] = targetRepo;
|
||
|
|
$[13] = validating;
|
||
|
|
$[14] = t3;
|
||
|
|
} else {
|
||
|
|
t3 = $[14];
|
||
|
|
}
|
||
|
|
let t4;
|
||
|
|
if ($[15] !== onCancel || $[16] !== t3) {
|
||
|
|
t4 = <Dialog title="Teleport to Repo" onCancel={onCancel} color="background">{t3}</Dialog>;
|
||
|
|
$[15] = onCancel;
|
||
|
|
$[16] = t3;
|
||
|
|
$[17] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[17];
|
||
|
|
}
|
||
|
|
return t4;
|
||
|
|
}
|
||
|
|
function _temp(path) {
|
||
|
|
return {
|
||
|
|
label: <Text>Use <Text bold={true}>{getDisplayPath(path)}</Text></Text>,
|
||
|
|
value: path
|
||
|
|
};
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlU3RhdGUiLCJCb3giLCJUZXh0IiwiZ2V0RGlzcGxheVBhdGgiLCJyZW1vdmVQYXRoRnJvbVJlcG8iLCJ2YWxpZGF0ZVJlcG9BdFBhdGgiLCJTZWxlY3QiLCJEaWFsb2ciLCJTcGlubmVyIiwiUHJvcHMiLCJ0YXJnZXRSZXBvIiwiaW5pdGlhbFBhdGhzIiwib25TZWxlY3RQYXRoIiwicGF0aCIsIm9uQ2FuY2VsIiwiVGVsZXBvcnRSZXBvTWlzbWF0Y2hEaWFsb2ciLCJ0MCIsIiQiLCJfYyIsImF2YWlsYWJsZVBhdGhzIiwic2V0QXZhaWxhYmxlUGF0aHMiLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJ2YWxpZGF0aW5nIiwic2V0VmFsaWRhdGluZyIsInQxIiwidmFsdWUiLCJpc1ZhbGlkIiwidXBkYXRlZFBhdGhzIiwiZmlsdGVyIiwicCIsImhhbmRsZUNoYW5nZSIsInQyIiwidDMiLCJTeW1ib2wiLCJmb3IiLCJsYWJlbCIsIm1hcCIsIl90ZW1wIiwib3B0aW9ucyIsImxlbmd0aCIsInZhbHVlXzAiLCJ0NCJdLCJzb3VyY2VzIjpbIlRlbGVwb3J0UmVwb01pc21hdGNoRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi9pbmsuanMnXG5pbXBvcnQgeyBnZXREaXNwbGF5UGF0aCB9IGZyb20gJy4uL3V0aWxzL2ZpbGUuanMnXG5pbXBvcnQge1xuICByZW1vdmVQYXRoRnJvbVJlcG8sXG4gIHZhbGlkYXRlUmVwb0F0UGF0aCxcbn0gZnJvbSAnLi4vdXRpbHMvZ2l0aHViUmVwb1BhdGhNYXBwaW5nLmpzJ1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi9DdXN0b21TZWxlY3QvaW5kZXguanMnXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vRGlhbG9nLmpzJ1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4vU3Bpbm5lci5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFyZ2V0UmVwbzogc3RyaW5nXG4gIGluaXRpYWxQYXRoczogc3RyaW5nW11cbiAgb25TZWxlY3RQYXRoOiAocGF0aDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUZWxlcG9ydFJlcG9NaXNtYXRjaERpYWxvZyh7XG4gIHRhcmdldFJlcG8sXG4gIGluaXRpYWxQYXRocyxcbiAgb25TZWxlY3RQYXRoLFxuICBvbkNhbmNlbCxcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW2F2YWlsYWJsZVBhdGhzLCBzZXRBdmFpbGFibGVQYXRoc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oaW5pdGlhbFBhdGhzKVxuICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3ZhbGlkYXRpbmcsIHNldFZhbGlkYXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgb25DYW5jZWwoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0VmFsaWRhdGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3JNZXNzYWdlKG51bGwpXG5cbiAgICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCB2YWxpZGF0ZVJlcG9BdFBhdGgodmFsdWUsIHRhcmdldFJlcG8pXG5cbiAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgIG9uU2VsZWN0UGF0aCh2YWx1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFBhdGggaXMgaW52YWxpZCAtIHJlbW92ZSBpdCBmcm9tIGNvbmZpZyBhbmQgdXBkYXRlIHN0YXRlXG4gICAgICByZW1vdmVQYXRoRnJvbVJlcG8odGFyZ2V0UmVwbywgdmFsdWUpXG4gICAgICBjb25zdCB1cGRhdGVkUGF0aHMgPSBhdmFpbGFibGVQYXRocy5maWx0ZXIocCA9PiBwICE9PSB2YWx1ZSlcbiAgICAgIHNldEF2YWlsYWJsZVBhdGhzKHVwZGF0ZWRQYXRocylcbiAgICAgIHNldFZhbGlkYXRpbmcoZmFsc2UpXG5cbiAgICAgIHNldEVycm9yTWVzc2FnZShcbiAgICAgICAgYCR7Z2V0RGlzcGxheVBhdGgodmFsdWUpfSBubyBsb25nZXIgY29udGFpbnMgdGhlIGNvcnJlY3QgcmVwb3NpdG9yeS4gU2VsZWN0IGFub3RoZXIgcGF0aC5gLFxuICAgICAgKVxuICAgIH0sXG4gICAgW3RhcmdldFJlcG8sIGF2YWlsYWJsZVBhdGhzLCBvblNlbGVjdFBhdGgsIG9uQ2FuY2VsXSxcbiAgKVxuXG4gIGNvbnN0IG9wdGlvbnMgPSBbXG4gICAgLi4uYXZhaWxhYmxlUGF0aHMubWFwKHBhdGggPT4gKHtcbiAgICAgIGxhYmVsOiAoXG4gICAgICAgIDxUZXh0PlxuICAgICAgICAgIFVzZSA8VGV4dCBib2xkPntnZXREaXNwbGF5UGF0aChwYXRoKX08L1RleHQ+XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICksXG4gICAgICB2YWx1ZTogcGF0aCxcbiAgICB9KSksXG4gICAgeyBsYWJlbDogJ0NhbmNlbCcsIHZhbHVlOiAnY2FuY2VsJyB9LFxuICBdXG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nIHRpdGxlPVwiVGVsZXBvcnQgdG8gUmVwb1wiIG9uQ2FuY2VsPXtvbkNhbmNlbH0gY29sb3I9XCJiYWNrZ3JvdW5kXCI+XG4gICAgICB7YXZhaWxhYmxlUGF0aHMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBnYXA9ezF9PlxuICAgICAgICAgICAge2Vycm9yTWVzc2FnZSAmJiA8VGV4dCBjb2xvcj1cImVycm9yXCI+e2Vycm9yTWVzc2FnZX08L1RleHQ+fVxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgIE9wZW4gQ2xhdWRlIENvZGUgaW4gPFRleHQgYm9sZD57dGFyZ2V0UmVwb308L1RleHQ+OlxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuXG4gICAgICAgICAge3ZhbGlkYXRpbmcgPyAoXG4gICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICA8U3Bpbm5lciAvPlxuICAgICAgICAgICAgICA8VGV4dD4gVmFsaWR
|