import { Type, Destoryable, IDestoryable, Express, TokenId } from '@tsdi/ioc'; import { IAnnoationContext, AnnoationOption } from '@tsdi/boot'; export declare const CTX_COMPONENT_DECTOR: TokenId; export declare const CTX_COMPONENT: TokenId; export declare const CTX_ELEMENT_REF: TokenId; export declare const CTX_TEMPLATE_REF: TokenId; export declare const CTX_TEMPLATE_SCOPE: TokenId; export declare const CTX_COMPONENT_REF: TokenId>>>; export declare const COMPONENT_REFS: TokenId>>>>; export declare const ELEMENT_REFS: TokenId>>>>; export interface IContextNode extends IDestoryable { readonly context: TCtx; } export declare class ContextNode extends Destoryable { private _context; readonly context:TCtx; constructor(context: TCtx); protected destroying(): void; static ρAnn(): any; } /** * element type. */ export interface IElement { destroy?(): any; } export declare const CONTEXT_REF: TokenId>>; export declare const ELEMENT_REF: TokenId>>>; export declare const NATIVE_ELEMENT: TokenId; export interface IElementRef extends IContextNode { readonly nativeElement: T; } export interface INodeRef extends IContextNode { readonly rootNodes: T[]; } export declare const TEMPLATE_REF: TokenId>>>; export declare const ROOT_NODES: TokenId; export interface ITemplateRef extends INodeRef { readonly template: any; } export declare const REFCHILD_SELECTOR: TokenId; export declare const COMPONENT_REF: TokenId>>>; export declare const COMPONENT_TYPE: TokenId>; export declare const COMPONENT_INST: TokenId; export interface IComponentRef extends IContextNode { readonly componentType: Type; readonly instance: T; readonly selector: string; readonly nodeRef: ITemplateRef; getNodeSelector(): NodeSelector; } export declare type NodeType = IElement | IElementRef | INodeRef | ITemplateRef; export declare class NodeRef extends ContextNode implements INodeRef { private _rootNodes; readonly rootNodes:T[]; constructor(context: TCtx, nodes: T[]); protected destroying(): void; static ρAnn(): any; } export declare class ElementRef extends ContextNode implements IElementRef { readonly nativeElement: T; constructor(context: TCtx, nativeElement: T); protected destroying(): void; static ρAnn(): any; } export declare class TemplateRef extends NodeRef implements ITemplateRef { readonly template:any; static ρAnn(): any; } export declare class ComponentRef extends ContextNode implements IComponentRef { readonly componentType: Type; readonly instance: T; readonly nodeRef: ITemplateRef; readonly selector:string; constructor(componentType: Type, instance: T, context: TCtx, nodeRef: ITemplateRef); getNodeSelector(): NodeSelector; protected destroying(): void; static ρAnn(): any; } /** * route: route up. iterate in parents. * children: iterate in children. * traverse: iterate as tree map. node first. * traverseLast: iterate as tree map. node last. */ export declare type Mode = 'route' | 'children' | 'traverse' | 'traverseLast'; /** * node selector. * * @export * @abstract * @class NodeSelector * @template T */ export declare class NodeSelector { protected node: INodeRef; constructor(node: INodeRef); find(express: Tc | Express, mode?: Mode): Tc; filter(express: Express, mode?: Mode): Tc[]; map(express: Express, mode?: Mode): TR[]; each(express: Express, mode?: Mode): any; protected eachChildren(node: INodeRef, express: Express): void; /** *do express work in routing. * *@param {Express} express * *@memberOf IComponent */ routeUp(node: INodeRef, express: Express): any; /** *translate all sub context to do express work. * *@param {Express} express * *@memberOf IComponent */ trans(node: INodeRef, express: Express): boolean; transAfter(node: INodeRef, express: Express): boolean; protected currNode(node: INodeRef, express: Express): boolean; protected getParent(node: INodeRef): NodeRef; protected getChildren(node: INodeRef): NodeRef[]; static ρAnn(): any; } export declare class NullSelector extends NodeSelector { protected getParent(node: NodeRef): NodeRef; protected getChildren(node: NodeRef): NodeRef[]; static ρAnn(): any; }