Files
hyperframes/packages/studio/src/player/lib/thumbnailPolicy.ts
T
Miguel ÁngelandCodex 96861cbafc perf(studio-server): coordinate cancelable thumbnail generation (#2720)
* 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>
2026-08-05 20:41:35 -07:00

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;
}