fix: back/forward navigation won't reset scroll in timeline

This commit is contained in:
midzelis
2025-09-26 00:08:44 +00:00
parent 25dbb60574
commit 0a18d9c35e
9 changed files with 122 additions and 80 deletions
@@ -21,19 +21,26 @@ export const focusPreviousAsset = () =>
const queryHTMLElement = (query: string) => document.querySelector(query) as HTMLElement;
export const setFocusToAsset = (scrollToAsset: (asset: TimelineAsset) => boolean, asset: TimelineAsset) => {
const scrolled = scrollToAsset(asset);
export const setFocusToAsset = async (
scrollToAsset: (asset: TimelineAsset) => Promise<boolean>,
asset: TimelineAsset,
) => {
const scrolled = await scrollToAsset(asset);
if (scrolled) {
const element = queryHTMLElement(`[data-thumbnail-focus-container][data-asset="${asset.id}"]`);
element?.focus();
}
};
export type FocusDirection = 'earlier' | 'later';
export type FocusInterval = 'day' | 'month' | 'year' | 'asset';
export const setFocusTo = async (
scrollToAsset: (asset: TimelineAsset) => boolean,
scrollToAsset: (asset: TimelineAsset) => Promise<boolean>,
store: TimelineManager,
direction: 'earlier' | 'later',
interval: 'day' | 'month' | 'year' | 'asset',
direction: FocusDirection,
interval: FocusInterval,
) => {
if (tracker.isActive()) {
// there are unfinished running invocations, so return early
@@ -65,7 +72,10 @@ export const setFocusTo = async (
return;
}
const scrolled = scrollToAsset(asset);
const scrolled = await scrollToAsset(asset);
if (!invocation.isStillValid()) {
return;
}
if (scrolled) {
await tick();
if (!invocation.isStillValid()) {