fix: 修复长文档分页与滚动同步
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
export interface PageVerticalRange {
|
||||
top: number;
|
||||
bottom: number;
|
||||
}
|
||||
|
||||
export const PREVIEW_SCROLLBAR_WIDTH_PX = 14;
|
||||
|
||||
export function getNearestPageNumber(
|
||||
viewportCenter: number,
|
||||
pages: readonly PageVerticalRange[]
|
||||
) {
|
||||
if (pages.length === 0 || !Number.isFinite(viewportCenter)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
let nearestPage = 1;
|
||||
let nearestDistance = Number.POSITIVE_INFINITY;
|
||||
|
||||
for (const [index, page] of pages.entries()) {
|
||||
const distance =
|
||||
viewportCenter < page.top
|
||||
? page.top - viewportCenter
|
||||
: viewportCenter > page.bottom
|
||||
? viewportCenter - page.bottom
|
||||
: 0;
|
||||
|
||||
if (distance < nearestDistance) {
|
||||
nearestPage = index + 1;
|
||||
nearestDistance = distance;
|
||||
}
|
||||
}
|
||||
|
||||
return nearestPage;
|
||||
}
|
||||
Reference in New Issue
Block a user