mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-07 10:06:21 +00:00
* perf(studio): schedule adaptive timeline thumbnails * perf(studio): bound thumbnail decoding resources * perf(studio): virtualize timeline thumbnail media * perf(studio): prioritize timeline thumbnail work * perf(studio-server): coordinate cancelable thumbnail generation --------- Co-authored-by: Codex <codex@local>
25 lines
999 B
TypeScript
25 lines
999 B
TypeScript
export type ThumbnailMode = "adaptive" | "hidden";
|
|
export type ThumbnailRuntimePolicy = "follow-preference" | "force-hidden" | "legacy-default";
|
|
|
|
// "Adaptive" currently means the scheduler pauses rich work while scrolling.
|
|
// The mode name leaves room for finer-grained runtime heuristics later.
|
|
|
|
const rawPolicy = import.meta.env.VITE_STUDIO_TIMELINE_THUMBNAIL_POLICY;
|
|
|
|
const studioThumbnailRuntimePolicy: ThumbnailRuntimePolicy =
|
|
rawPolicy === "force-hidden" || rawPolicy === "legacy-default" ? rawPolicy : "follow-preference";
|
|
|
|
export function defaultThumbnailMode(
|
|
storedMode: ThumbnailMode | undefined,
|
|
policy: ThumbnailRuntimePolicy = studioThumbnailRuntimePolicy,
|
|
): ThumbnailMode {
|
|
return storedMode ?? (policy === "legacy-default" ? "hidden" : "adaptive");
|
|
}
|
|
|
|
export function effectiveThumbnailMode(
|
|
preferredMode: ThumbnailMode,
|
|
policy: ThumbnailRuntimePolicy = studioThumbnailRuntimePolicy,
|
|
): ThumbnailMode {
|
|
return policy === "force-hidden" ? "hidden" : preferredMode;
|
|
}
|