UNPKG

@quartal/bridge-client

Version:

Universal client library for embedding applications with URL-configurable transport support (iframe, postMessage) and framework adapters for Angular and Vue

79 lines 2.51 kB
import { ParentClient, ParentCallbacks } from '../parent/parent-client'; import { ParentClientConfig } from '../types'; /** * Global Parent Client Manager * * This singleton manages the parent client lifecycle at the application level * instead of component level, preventing unnecessary destruction/recreation * when navigating between views. * * Benefits: * - Faster navigation (no reconnection overhead) * - No connection state issues * - Framework agnostic (works with Angular, Vue, React, etc.) * - Better resource management * - Scalable for multiple partners */ export declare class ParentClientManager { private static instance; private parentClient; private activeIframeCount; private config; private callbacks; private logger; private constructor(); /** * Get singleton instance */ static getInstance(): ParentClientManager; /** * Initialize or get existing parent client * This should be called when the first iframe component is created */ initializeParentClient(config: ParentClientConfig, callbacks?: ParentCallbacks): ParentClient; /** * Get existing parent client (if any) */ getParentClient(): ParentClient | null; /** * Update the iframe element for an existing parent client * This is useful when navigating back to a component with a new iframe element */ updateIframeElement(iframeElement: HTMLIFrameElement): boolean; /** * Register an iframe component (increases reference count) */ registerIframeComponent(): void; /** * Unregister an iframe component (decreases reference count) * Parent client is kept alive for reuse when navigating back */ unregisterIframeComponent(): void; /** * Update callbacks without recreating the client */ updateCallbacks(newCallbacks: Partial<ParentCallbacks>): void; /** * Force destroy the parent client (use sparingly) */ forceDestroy(): void; /** * Check if current config matches the stored config */ private configMatches; /** * Get current stats for debugging */ getStats(): { hasClient: boolean; activeIframeCount: number; isConnected: boolean; }; /** * Reset singleton instance for testing purposes * @internal */ static resetForTesting(): void; } export declare const parentClientManager: ParentClientManager; //# sourceMappingURL=parent-client-manager.d.ts.map