import { Bento } from '../../Bento'; import { ComponentReference } from '../../references'; import { Component } from '../interfaces'; import { ComponentEvents } from './ComponentEvents'; export interface PendingComponentInfo { name: string; component: Component; missing: Array; } export declare class ComponentManager { private readonly bento; private readonly references; private readonly components; private readonly pending; private readonly events; constructor(bento: Bento); /** * Delegate for the resolveName function * * @param reference Component instance, name or reference * * @see ReferenceManager#resolveName * @returns resolved component name */ resolveName(reference: ComponentReference): string; /** * Check if a given component exists * * @param reference Component instance, name or reference * * @returns boolean */ hasComponent(reference: ComponentReference): boolean; /** * Get component instance * @param reference - Component name or reference * * @returns Component instance */ getComponent(reference: ComponentReference): T; /** * Get instances of all currently loaded componets * * @returns Array of component instances */ getComponents(): Array; /** * Get component events instance * @param component - Component name or reference * * @returns Component events instance */ getComponentEvents(component: ComponentReference): ComponentEvents; /** * Fetches all child components of a given parent component * @param parent - parent component name or reference * * @returns Array of child components */ getComponentChildren(parent: ComponentReference): Array; /** * Returns an array of dependencies requested but not loaded yet. * * @param component The requested dependencies * * @returns An array of dependencies requested but not loaded */ getMissingDependencies(component: ComponentReference): Array; /** * @see PendingComponentInfo * @returns - All currently pending bento components and their info */ getPendingComponents(): Array; /** * Add a Component to Bento * @param component - Component * * @returns Component name */ addComponent(component: Component): Promise; /** * Remove a Component from Bento * @param name - Name of component */ removeComponent(name: string): Promise; /** * Handles the parent of a component if it exists. * This includes setting the parent as a dependency * * @param component The component to be handled */ private handleParent; /** * Enforces Bento API and prepares component to be loaded * @param component - Component to be prepared */ private prepareComponent; private loadComponent; private handlePendingComponents; }