/** * FormDialog Portal 管理器 * * 负责管理 FormDialog Portal 的生命周期,避免 Portal ID 冲突 * 和内存泄漏问题 */ interface PortalRegistration { id: string; formId: string; prefix: string; createdAt: number; lastAccessedAt: number; isOpen: boolean; } declare class PortalManager { private static instance; private portals; private cleanupTimer; static getInstance(): PortalManager; private constructor(); /** * 生成唯一的 Portal ID * @param prefix Portal ID 前缀 * @param formId 表单 ID * @param entityId 实体 ID (可选) * @returns 唯一的 Portal ID */ generatePortalId(prefix: string, formId: string, entityId?: string | number): string; /** * 注册 Portal * @param id Portal ID * @param formId 表单 ID * @param prefix Portal 前缀 */ register(id: string, formId: string, prefix: string): void; /** * 更新 Portal 访问时间 * @param id Portal ID */ updateAccess(id: string): void; /** * 标记 Portal 为关闭状态 * @param id Portal ID */ markAsClosed(id: string): void; /** * 取消注册 Portal * @param id Portal ID */ unregister(id: string): void; /** * 检查 Portal 是否存在 * @param id Portal ID */ exists(id: string): boolean; /** * 获取 Portal 信息 * @param id Portal ID */ getPortal(id: string): PortalRegistration | undefined; /** * 获取所有 Portal 列表 */ getAllPortals(): PortalRegistration[]; /** * 清理过期的 Portal * 清理规则: * 1. 已关闭且超过 5 分钟未访问 * 2. 创建超过 30 分钟的 Portal */ cleanup(): void; /** * 启动定期清理定时器 */ private startCleanupTimer; /** * 停止清理定时器 */ stopCleanupTimer(): void; /** * 清空所有 Portal */ clear(): void; /** * 获取统计信息 */ getStats(): { total: number; open: number; closed: number; }; } export declare const portalManager: PortalManager; export default portalManager;