// ИЗМЕНЕНИЕ 2: храним предыдущий массив выбранных опций,
// чтобы не менять ссылку, если состав выбора не изменился
const prevMultipleValueRef = useRef<AutocompleteOption[]>([]);
const autocompleteValue = useMemo(() => {
if (multiple) {
const values = Array.isArray(value) ? value : [];
const next = options.filter((option) =>
values.includes(option.value),
);
const prev = prevMultipleValueRef.current;
const isSameSelection =
prev.length === next.length &&
next.every((option, index) => prev[index]?.value === option.value);
// Если выбранные значения те же — возвращаем СТАРУЮ ссылку.
// Иначе MUI Autocomplete на каждое обновление options считает,
// что value изменился, и сбрасывает inputValue в '' (reason: 'reset').
if (isSameSelection) {
return prev;
}
prevMultipleValueRef.current = next;
return next;
}
return getAutocompleteValue(options, value as string);
}, [getAutocompleteValue, multiple, options, value]);