π File detail
components/FeedbackSurvey/FeedbackSurveyView.tsx
π§© .tsxπ 108 linesπΎ 10,660 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 isValidResponseInput and FeedbackSurveyView β mainly functions, hooks, or classes. Dependencies touch React UI. It composes internal code from ink, useDebouncedDigitInput, 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 React from 'react'; import { Box, Text } from '../../ink.js'; import { useDebouncedDigitInput } from './useDebouncedDigitInput.js'; import type { FeedbackSurveyResponse } from './utils.js';
π€ Exports (heuristic)
isValidResponseInputFeedbackSurveyView
π External import roots
Package roots from from "β¦" (relative paths omitted).
react
π₯οΈ Source preview
import { c as _c } from "react/compiler-runtime";
import React from 'react';
import { Box, Text } from '../../ink.js';
import { useDebouncedDigitInput } from './useDebouncedDigitInput.js';
import type { FeedbackSurveyResponse } from './utils.js';
type Props = {
onSelect: (option: FeedbackSurveyResponse) => void;
inputValue: string;
setInputValue: (value: string) => void;
message?: string;
};
const RESPONSE_INPUTS = ['0', '1', '2', '3'] as const;
type ResponseInput = (typeof RESPONSE_INPUTS)[number];
const inputToResponse: Record<ResponseInput, FeedbackSurveyResponse> = {
'0': 'dismissed',
'1': 'bad',
'2': 'fine',
'3': 'good'
} as const;
export const isValidResponseInput = (input: string): input is ResponseInput => (RESPONSE_INPUTS as readonly string[]).includes(input);
const DEFAULT_MESSAGE = 'How is Claude doing this session? (optional)';
export function FeedbackSurveyView(t0) {
const $ = _c(15);
const {
onSelect,
inputValue,
setInputValue,
message: t1
} = t0;
const message = t1 === undefined ? DEFAULT_MESSAGE : t1;
let t2;
if ($[0] !== onSelect) {
t2 = digit => onSelect(inputToResponse[digit]);
$[0] = onSelect;
$[1] = t2;
} else {
t2 = $[1];
}
let t3;
if ($[2] !== inputValue || $[3] !== setInputValue || $[4] !== t2) {
t3 = {
inputValue,
setInputValue,
isValidDigit: isValidResponseInput,
onDigit: t2
};
$[2] = inputValue;
$[3] = setInputValue;
$[4] = t2;
$[5] = t3;
} else {
t3 = $[5];
}
useDebouncedDigitInput(t3);
let t4;
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
t4 = <Text color="ansi:cyan">β </Text>;
$[6] = t4;
} else {
t4 = $[6];
}
let t5;
if ($[7] !== message) {
t5 = <Box>{t4}<Text bold={true}>{message}</Text></Box>;
$[7] = message;
$[8] = t5;
} else {
t5 = $[8];
}
let t6;
if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
t6 = <Box width={10}><Text><Text color="ansi:cyan">1</Text>: Bad</Text></Box>;
$[9] = t6;
} else {
t6 = $[9];
}
let t7;
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
t7 = <Box width={10}><Text><Text color="ansi:cyan">2</Text>: Fine</Text></Box>;
$[10] = t7;
} else {
t7 = $[10];
}
let t8;
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
t8 = <Box width={10}><Text><Text color="ansi:cyan">3</Text>: Good</Text></Box>;
$[11] = t8;
} else {
t8 = $[11];
}
let t9;
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
t9 = <Box marginLeft={2}>{t6}{t7}{t8}<Box><Text><Text color="ansi:cyan">0</Text>: Dismiss</Text></Box></Box>;
$[12] = t9;
} else {
t9 = $[12];
}
let t10;
if ($[13] !== t5) {
t10 = <Box flexDirection="column" marginTop={1}>{t5}{t9}</Box>;
$[13] = t5;
$[14] = t10;
} else {
t10 = $[14];
}
return t10;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkJveCIsIlRleHQiLCJ1c2VEZWJvdW5jZWREaWdpdElucHV0IiwiRmVlZGJhY2tTdXJ2ZXlSZXNwb25zZSIsIlByb3BzIiwib25TZWxlY3QiLCJvcHRpb24iLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsInZhbHVlIiwibWVzc2FnZSIsIlJFU1BPTlNFX0lOUFVUUyIsImNvbnN0IiwiUmVzcG9uc2VJbnB1dCIsImlucHV0VG9SZXNwb25zZSIsIlJlY29yZCIsImlzVmFsaWRSZXNwb25zZUlucHV0IiwiaW5wdXQiLCJpbmNsdWRlcyIsIkRFRkFVTFRfTUVTU0FHRSIsIkZlZWRiYWNrU3VydmV5VmlldyIsInQwIiwiJCIsIl9jIiwidDEiLCJ1bmRlZmluZWQiLCJ0MiIsImRpZ2l0IiwidDMiLCJpc1ZhbGlkRGlnaXQiLCJvbkRpZ2l0IiwidDQiLCJTeW1ib2wiLCJmb3IiLCJ0NSIsInQ2IiwidDciLCJ0OCIsInQ5IiwidDEwIl0sInNvdXJjZXMiOlsiRmVlZGJhY2tTdXJ2ZXlWaWV3LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWREaWdpdElucHV0IH0gZnJvbSAnLi91c2VEZWJvdW5jZWREaWdpdElucHV0LmpzJ1xuaW1wb3J0IHR5cGUgeyBGZWVkYmFja1N1cnZleVJlc3BvbnNlIH0gZnJvbSAnLi91dGlscy5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgb25TZWxlY3Q6IChvcHRpb246IEZlZWRiYWNrU3VydmV5UmVzcG9uc2UpID0+IHZvaWRcbiAgaW5wdXRWYWx1ZTogc3RyaW5nXG4gIHNldElucHV0VmFsdWU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkXG4gIG1lc3NhZ2U/OiBzdHJpbmdcbn1cblxuY29uc3QgUkVTUE9OU0VfSU5QVVRTID0gWycwJywgJzEnLCAnMicsICczJ10gYXMgY29uc3RcbnR5cGUgUmVzcG9uc2VJbnB1dCA9ICh0eXBlb2YgUkVTUE9OU0VfSU5QVVRTKVtudW1iZXJdXG5cbmNvbnN0IGlucHV0VG9SZXNwb25zZTogUmVjb3JkPFJlc3BvbnNlSW5wdXQsIEZlZWRiYWNrU3VydmV5UmVzcG9uc2U+ID0ge1xuICAnMCc6ICdkaXNtaXNzZWQnLFxuICAnMSc6ICdiYWQnLFxuICAnMic6ICdmaW5lJyxcbiAgJzMnOiAnZ29vZCcsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkUmVzcG9uc2VJbnB1dCA9IChpbnB1dDogc3RyaW5nKTogaW5wdXQgaXMgUmVzcG9uc2VJbnB1dCA9PlxuICAoUkVTUE9OU0VfSU5QVVRTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhpbnB1dClcblxuY29uc3QgREVGQVVMVF9NRVNTQUdFID0gJ0hvdyBpcyBDbGF1ZGUgZG9pbmcgdGhpcyBzZXNzaW9uPyAob3B0aW9uYWwpJ1xuXG5leHBvcnQgZnVuY3Rpb24gRmVlZGJhY2tTdXJ2ZXlWaWV3KHtcbiAgb25TZWxlY3QsXG4gIGlucHV0VmFsdWUsXG4gIHNldElucHV0VmFsdWUsXG4gIG1lc3NhZ2UgPSBERUZBVUxUX01FU1NBR0UsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHVzZURlYm91bmNlZERpZ2l0SW5wdXQoe1xuICAgIGlucHV0VmFsdWUsXG4gICAgc2V0SW5wdXRWYWx1ZSxcbiAgICBpc1ZhbGlkRGlnaXQ6IGlzVmFsaWRSZXNwb25zZUlucHV0LFxuICAgIG9uRGlnaXQ6IGRpZ2l0ID0+IG9uU2VsZWN0KGlucHV0VG9SZXNwb25zZVtkaWdpdF0pLFxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgbWFyZ2luVG9wPXsxfT5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxUZXh0IGNvbG9yPVwiYW5zaTpjeWFuXCI+4pePIDwvVGV4dD5cbiAgICAgICAgPFRleHQgYm9sZD57bWVzc2FnZX08L1RleHQ+XG4gICAgICA8L0JveD5cblxuICAgICAgPEJveCBtYXJnaW5MZWZ0PXsyfT5cbiAgICAgICAgPEJveCB3aWR0aD17MTB9PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJhbnNpOmN5YW5cIj4xPC9UZXh0PjogQmFkXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEJveCB3aWR0aD17MTB9PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJhbnNpOmN5YW5cIj4yPC9UZXh0PjogRmluZVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxCb3ggd2lkdGg9ezEwfT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwiYW5zaTpjeWFuXCI+MzwvVGV4dD46IEdvb2RcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJhbnNpOmN5YW5cIj4wPC9UZXh0PjogRGlzbWlzc1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsY0FBYztBQUN4QyxTQUFTQyxzQkFBc0IsUUFBUSw2QkFBNkI7QUFDcEUsY0FBY0Msc0JBQXNCLFFBQVEsWUFBWTtBQUV4RCxLQUFLQyxLQUFLLEdBQUc7RUFDWEMsUUFBUSxFQUFFLENBQUNDLE1BQU0sRUFBRUgsc0JBQXNCLEVBQUUsR0FBRyxJQUFJO0VBQ2xESSxVQUFVLEVBQUUsTUFBTTtFQUNsQkMsYUFBYSxFQUFFLENBQUNDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FB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