@happy-table/vue3
Version:
A high-performance Vue 3 table component for B2B systems with TypeScript support
59 lines (58 loc) • 2.55 kB
TypeScript
import { CellContext, AnyRenderer, RenderResult, RenderConfig, RendererRegistry, RenderEventListener, RenderEvents } from '../types/slots';
import { TableColumn, TableRow } from '../types/table';
export declare class SuperRenderEngine implements RendererRegistry {
private static instance;
private renderers;
private cache;
private events;
private middlewares;
static getInstance(): SuperRenderEngine;
register(name: string, renderer: AnyRenderer, config?: RenderConfig): void;
registerBatch(renderers: Record<string, AnyRenderer>): void;
unregister(name: string): void;
get(name: string): AnyRenderer | undefined;
has(name: string): boolean;
clear(): void;
on<K extends keyof RenderEvents>(event: K, listener: RenderEventListener<K>): void;
off<K extends keyof RenderEvents>(event: K, listener: RenderEventListener<K>): void;
use(middleware: (context: CellContext, next: () => any) => any): void;
renderCell(column: TableColumn, row: TableRow, value: unknown, rowIndex: number, columnIndex: number, tableInstance?: any): Promise<RenderResult>;
private executeRender;
private selectRenderer;
private resolveConditionalRenderer;
private executeRenderer;
private executeWithMiddleware;
private generateCacheKey;
private getRendererKey;
private handleRenderError;
renderBatch(items: Array<{
column: TableColumn;
row: TableRow;
value: unknown;
rowIndex: number;
columnIndex: number;
}>): Promise<RenderResult[]>;
getStats(): {
registeredCount: number;
cacheStats: {
size: number;
totalHits: number;
};
middlewareCount: number;
};
preload(rendererNames: string[]): void;
}
export declare const renderEngine: SuperRenderEngine;
export declare function registerRenderer(name: string, renderer: AnyRenderer, config?: RenderConfig): void;
export declare function registerRenderers(renderers: Record<string, AnyRenderer>): void;
export declare function renderCell(column: TableColumn, row: TableRow, value: unknown, rowIndex: number, columnIndex: number): Promise<RenderResult>;
export declare function getRenderStats(): {
registeredCount: number;
cacheStats: {
size: number;
totalHits: number;
};
middlewareCount: number;
};
export declare const performanceMiddleware: (context: CellContext, next: () => any) => any;
export declare const errorBoundaryMiddleware: (context: CellContext, next: () => any) => any;