flash555588_ai-model-workbench/src/render/preview/load-control.ts
flash555588 d362c5d1ec Default previews to Babylon compatibility mode
Add load interruption handling, camera zoom controls, refreshed measurement UI, diagnostics/default-route coverage, and aligned docs for the Babylon-default renderer contract.
2026-06-27 19:17:52 +08:00

29 lines
852 B
TypeScript

export interface PreviewLoadOptions {
signal?: AbortSignal;
isCurrent?: () => boolean;
}
export class PreviewLoadInterruptedError extends Error {
constructor(message = "Preview load interrupted") {
super(message);
this.name = "PreviewLoadInterruptedError";
}
}
export function isPreviewLoadInterrupted(options?: PreviewLoadOptions): boolean {
if (!options) {
return false;
}
return options.signal?.aborted === true || options.isCurrent?.() === false;
}
export function throwIfPreviewLoadInterrupted(options?: PreviewLoadOptions): void {
if (isPreviewLoadInterrupted(options)) {
throw new PreviewLoadInterruptedError();
}
}
export function isPreviewLoadInterruptedError(error: unknown): boolean {
return error instanceof PreviewLoadInterruptedError
|| error instanceof Error && error.name === "AbortError";
}