@opentui/core
Version:
OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)
43 lines (42 loc) • 2.06 kB
TypeScript
import type { CliRenderer } from "../renderer.js";
import type { Plugin, PluginContext, PluginErrorEvent, PluginErrorReport, ResolvedSlotRenderer, SlotRenderer } from "./types.js";
export interface SlotRegistryOptions {
onPluginError?: (event: PluginErrorEvent) => void;
debugPluginErrors?: boolean;
maxPluginErrors?: number;
}
export declare class SlotRegistry<TNode, TSlots extends object, TContext extends PluginContext = PluginContext> {
private plugins;
private sortedPluginsCache;
private listeners;
private errorListeners;
private pluginErrors;
private registrationOrder;
private batchDepth;
private batchedNotify;
private rendererInstance;
private hostContext;
private options;
constructor(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions);
get renderer(): CliRenderer;
get context(): Readonly<TContext>;
configure(options: SlotRegistryOptions): void;
register(plugin: Plugin<TNode, TSlots, TContext>): () => void;
unregister(id: string): boolean;
updateOrder(id: string, order: number): boolean;
clear(): void;
subscribe(listener: () => void): () => void;
onPluginError(listener: (event: PluginErrorEvent) => void): () => void;
batch<T>(run: () => T): T;
getPluginErrors(): readonly PluginErrorEvent[];
clearPluginErrors(): void;
reportPluginError(report: PluginErrorReport): PluginErrorEvent;
resolve<K extends keyof TSlots>(slot: K): Array<SlotRenderer<TNode, TSlots[K], TContext>>;
resolveEntries<K extends keyof TSlots>(slot: K): Array<ResolvedSlotRenderer<TNode, TSlots[K], TContext>>;
private getSortedPlugins;
private syncPluginSortMetadata;
private invalidateSortedPluginsCache;
private notifyListeners;
private flushListeners;
}
export declare function createSlotRegistry<TNode, TSlots extends object, TContext extends PluginContext = PluginContext>(renderer: CliRenderer, key: string, context: TContext, options?: SlotRegistryOptions): SlotRegistry<TNode, TSlots, TContext>;