const PENDING_USER_INPUT_MAX_HEIGHT = 560;const PENDING_USER_INPUT_MIN_HEIGHT = 160;const PENDING_USER_INPUT_VERTICAL_GAP = 12;/** * Reserve for a portrait iPhone keyboard with the QuickType bar until a real * height has been observed. Overestimating only costs card height; an * underestimate would let the card overshoot on the first keyboard open. */export const ESTIMATED_KEYBOARD_HEIGHT = 336;/** * One clock for the questionnaire expand/collapse choreography: the card's * enter/exit and the feed-inset glide must share it or they visibly drift. * Sized for the near-full-height slide (the card travels its own height), * in the same class as the iOS keyboard's ~250ms. */export const USER_INPUT_TOGGLE_DURATION_MS = 220;export function derivePendingUserInputMaxHeight(input: { readonly windowHeight: number; readonly keyboardHeight: number; readonly navigationHeaderHeight: number; readonly composerOverlapHeight: number;}): number { const availableHeight = input.windowHeight - Math.max(0, input.keyboardHeight) - Math.max(0, input.navigationHeaderHeight) - Math.max(0, input.composerOverlapHeight) - PENDING_USER_INPUT_VERTICAL_GAP; return Math.min( PENDING_USER_INPUT_MAX_HEIGHT, Math.max(PENDING_USER_INPUT_MIN_HEIGHT, availableHeight), );}
const PENDING_USER_INPUT_MAX_HEIGHT = 560;
const PENDING_USER_INPUT_MIN_HEIGHT = 160;
const PENDING_USER_INPUT_VERTICAL_GAP = 12;
/**
* Reserve for a portrait iPhone keyboard with the QuickType bar until a real
* height has been observed. Overestimating only costs card height; an
* underestimate would let the card overshoot on the first keyboard open.
*/
export const ESTIMATED_KEYBOARD_HEIGHT = 336;
/**
* One clock for the questionnaire expand/collapse choreography: the card's
* enter/exit and the feed-inset glide must share it or they visibly drift.
* Sized for the near-full-height slide (the card travels its own height),
* in the same class as the iOS keyboard's ~250ms.
*/
export const USER_INPUT_TOGGLE_DURATION_MS = 220;
export function derivePendingUserInputMaxHeight(input: {
readonly windowHeight: number;
readonly keyboardHeight: number;
readonly navigationHeaderHeight: number;
readonly composerOverlapHeight: number;
}): number {
const availableHeight =
input.windowHeight -
Math.max(0, input.keyboardHeight) -
Math.max(0, input.navigationHeaderHeight) -
Math.max(0, input.composerOverlapHeight) -
PENDING_USER_INPUT_VERTICAL_GAP;
return Math.min(
PENDING_USER_INPUT_MAX_HEIGHT,
Math.max(PENDING_USER_INPUT_MIN_HEIGHT, availableHeight),
);
}