Files
paseo/packages/app/src/hooks/keyboard-shift-policy.ts
T

31 lines
861 B
TypeScript

export const DEFAULT_IOS_KEYBOARD_INSET_MIN_HEIGHT = 120;
export function shouldUseCompactExplorerKeyboardPadding(input: {
isGit: boolean;
explorerTab: "changes" | "files" | "pr";
}): boolean {
return !input.isGit || input.explorerTab !== "changes";
}
export function resolveKeyboardShift(input: {
rawKeyboardHeight: number;
keyboardProgress: number;
bottomInset: number;
isIos: boolean;
iosMinHeight: number;
}): number {
"worklet";
if (!(input.keyboardProgress > 0) || !(input.rawKeyboardHeight > 0)) {
return 0;
}
// iOS can report a small accessory/prediction bar height during touch focus.
// Treat that as non-keyboard so layouts don't "bounce" while interacting.
if (input.isIos && input.rawKeyboardHeight < input.iosMinHeight) {
return 0;
}
return Math.max(0, input.rawKeyboardHeight - input.bottomInset);
}