a84e481d20
* feat: refresh task surfaces on foreground and pull * fix: address task surface refresh review feedback * fix: prevent task list render loop
23 lines
693 B
TypeScript
23 lines
693 B
TypeScript
export const PULL_TO_REFRESH_THRESHOLD = 72;
|
|
|
|
export function isAtVerticalScrollTop(
|
|
target: EventTarget | null,
|
|
root: HTMLElement | null,
|
|
): boolean {
|
|
let current = target instanceof HTMLElement ? target : null;
|
|
while (current) {
|
|
if (current.scrollHeight > current.clientHeight && current.scrollTop > 0) return false;
|
|
if (current === root) break;
|
|
current = current.parentElement;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
export function pullDistance(verticalDistance: number): number {
|
|
return Math.min(Math.max(verticalDistance, 0) * 0.55, PULL_TO_REFRESH_THRESHOLD);
|
|
}
|
|
|
|
export function shouldRefreshAfterPull(distance: number): boolean {
|
|
return distance >= PULL_TO_REFRESH_THRESHOLD;
|
|
}
|