一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
28 行
739 B
TypeScript
28 行
739 B
TypeScript
import { useRef, useEffect, MutableRefObject } from 'react';
|
|
|
|
export interface VisibleOnSelect {
|
|
container: MutableRefObject<HTMLElement>;
|
|
wrapperRef: MutableRefObject<HTMLElement>;
|
|
isVisible: boolean;
|
|
isSelected: boolean;
|
|
}
|
|
|
|
// Used in thumbnail view, to scroll to the newly selected page.
|
|
|
|
const useVisibleOnSelect = ({ container, wrapperRef, isVisible, isSelected }: VisibleOnSelect) => {
|
|
const isVisibleRef = useRef(isVisible);
|
|
|
|
useEffect(() => {
|
|
if (isSelected && !isVisibleRef.current) {
|
|
container.current.scrollTop = wrapperRef.current.offsetTop;
|
|
}
|
|
}, [isSelected, isVisibleRef, container, wrapperRef]);
|
|
|
|
useEffect(() => {
|
|
isVisibleRef.current = isVisible;
|
|
}, [isVisible]);
|
|
|
|
};
|
|
|
|
export default useVisibleOnSelect;
|