@gravity-ui/graph
Version:
Modern graph editor component
61 lines (60 loc) • 1.81 kB
TypeScript
import { Tree } from "./Tree";
interface IScheduler {
performUpdate: (time: number) => void;
}
export declare enum ESchedulerPriority {
HIGHEST = 0,
HIGH = 1,
MEDIUM = 2,
LOW = 3,
LOWEST = 4
}
export declare class GlobalScheduler {
private schedulers;
private _cAFID;
private toRemove;
private visibilityChangeHandler;
constructor();
/**
* Setup listener for page visibility changes.
* When tab becomes visible after being hidden, force immediate update.
* This fixes the issue where tabs opened in background don't render HTML until interaction.
*/
private setupVisibilityListener;
/**
* Handle page visibility changes.
* When page becomes visible, perform immediate update if scheduler is running.
*/
private handleVisibilityChange;
/**
* Cleanup visibility listener
*/
private cleanupVisibilityListener;
getSchedulers(): [IScheduler[], IScheduler[], IScheduler[], IScheduler[], IScheduler[]];
addScheduler(scheduler: IScheduler, index?: ESchedulerPriority): () => void;
removeScheduler(scheduler: IScheduler, index?: ESchedulerPriority): void;
start(): void;
stop(): void;
/**
* Cleanup method to be called when GlobalScheduler is no longer needed.
* Stops the scheduler and removes event listeners.
*/
destroy(): void;
tick(): void;
performUpdate(): void;
}
export declare const globalScheduler: GlobalScheduler;
export declare const scheduler: GlobalScheduler;
export declare class Scheduler {
private sheduled;
private root;
constructor();
setRoot(root: Tree): void;
start(): void;
stop(): void;
update(): void;
iterator(node: Tree): boolean;
scheduleUpdate(): void;
performUpdate(): void;
}
export {};