import ts from "typescript"; import { BasicComponent, BasicState, IAfterChildrenRender, IAfterCreate, IAfterDirectivesAttach, IAfterInit, IComplexLogicDefine, IComponentProp, IPureObject, JsxAttributeGenerator, JsxElementGenerator, JsxExpressionGenerator, Observer, StatementGenerator, VariableGenerator, VariableRef } from "../../core"; import { ReactHelper, ReactRender } from "../entity-helper"; export declare type VariableRefName = string | VariableRef | Observer; export declare type JsxAttributeValueType = number | string | boolean | ts.Expression; export declare type JsxAttributeSyntaxTextType = VariableRefName | ts.Expression; export declare type JsxAttributeType = JsxAttributeValueType | Record; export declare type JsxAttributeSyntaxType = JsxAttributeSyntaxTextType | Record; export interface IVisitResult { newElement?: JsxElementGenerator; newDisplayRule?: any; } export interface IChildrenHook { key: string; func: (node: any) => any; } export interface IContextInfo { name: string; emit: boolean; } export interface IObserverUse { value: VariableGenerator; type: "subject" | "behavior"; } export interface IAttrUse { name: string; type: "object" | "value"; value: Function | Record; node: JsxAttributeGenerator; } export interface IBasicReactContainerState { [BasicState.RenderTagName]: string; [BasicState.RenderTagAttrs]: IAttrUse[]; [BasicState.RenderChildrenMap]: Map; [BasicState.RenderChildrenRuleMap]: Map; [BasicState.UnshiftNodes]: (JsxElementGenerator | JsxExpressionGenerator)[]; [BasicState.PushedNodes]: (JsxElementGenerator | JsxExpressionGenerator)[]; [BasicState.UseStates]: VariableGenerator[]; [BasicState.UseObservers]: IObserverUse[]; [BasicState.UseObservables]: StatementGenerator[]; [BasicState.UseRxjsWatches]: StatementGenerator[]; [BasicState.UseCallbacks]: VariableGenerator[]; [BasicState.UseEffects]: (StatementGenerator | VariableGenerator)[]; [BasicState.UseRefs]: VariableGenerator[]; [BasicState.UseMemos]: VariableGenerator[]; [BasicState.ContextInfo]: IContextInfo; [BasicState.PushedVariables]: StatementGenerator[]; [BasicState.UnshiftVariables]: StatementGenerator[]; [BasicState.FnsBeforeRender]: Function[]; [BasicState.RootElementChangeFns]: ((gen: JsxElementGenerator) => JsxElementGenerator)[]; [BasicState.AppendChildrenHooks]: IChildrenHook[]; } export declare abstract class ReactComponent = IPureObject> extends BasicComponent implements IAfterCreate, IAfterInit, IAfterChildrenRender, IAfterDirectivesAttach { protected readonly helper: ReactHelper; protected readonly render: ReactRender; protected get isRoot(): boolean; protected get unshiftVariables(): (IBasicReactContainerState & T)[BasicState.UnshiftVariables]; protected get pushedVariables(): (IBasicReactContainerState & T)[BasicState.PushedVariables]; protected get useStates(): (IBasicReactContainerState & T)[BasicState.UseStates]; protected get useCallbacks(): (IBasicReactContainerState & T)[BasicState.UseCallbacks]; protected get useEffects(): (IBasicReactContainerState & T)[BasicState.UseEffects]; protected get useRefs(): (IBasicReactContainerState & T)[BasicState.UseRefs]; protected get useMemos(): (IBasicReactContainerState & T)[BasicState.UseMemos]; protected get useObservers(): (IBasicReactContainerState & T)[BasicState.UseObservers]; protected get useObservables(): (IBasicReactContainerState & T)[BasicState.UseObservables]; protected get useRxjsWatches(): (IBasicReactContainerState & T)[BasicState.UseRxjsWatches]; protected get renderTagName(): (IBasicReactContainerState & T)[BasicState.RenderTagName]; protected get renderAttributes(): (IBasicReactContainerState & T)[BasicState.RenderTagAttrs]; protected get renderChildMap(): (IBasicReactContainerState & T)[BasicState.RenderChildrenMap]; protected get renderChildNodes(): [string | symbol, JsxElementGenerator][]; protected get renderChildNodeRules(): [string | symbol, string][]; protected get appendChildrenHooks(): (IBasicReactContainerState & T)[BasicState.AppendChildrenHooks]; protected get renderUnshiftChildNodes(): (IBasicReactContainerState & T)[BasicState.UnshiftNodes]; protected get renderPushedChildNodes(): (IBasicReactContainerState & T)[BasicState.PushedNodes]; constructor(helper: ReactHelper, render: ReactRender); afterCreate(): void; protected onInit(): Promise; afterInit(): void; protected onRender(): Promise; /** @override */ afterDirectivesAttach(): void | Promise; /** @override */ afterChildrenRender(): void; protected getNamedObserver(name: VariableRefName, target?: "observable" | "next" | "data"): string; protected setTagName(tagName: VariableRefName): void; private createUpdateAttrUse; protected addAttributeWithObject(name: VariableRefName, obj: Record): void; protected addAttributeWithValue(name: VariableRefName, value: JsxAttributeValueType): void; protected addAttributeWithSyntaxText(name: VariableRefName, value: JsxAttributeSyntaxTextType): void; protected addAttributesWithMap(map: Record): void; protected addAttributesWithSyntaxMap(map: Record): void; protected useAttr(i: IAttrUse): JsxAttributeGenerator; protected addRenderChildren(id: VariableRefName, element: JsxElementGenerator): void; protected addRenderPushedChild(element: JsxElementGenerator | JsxExpressionGenerator): void; protected addRenderUnshiftChild(element: JsxElementGenerator | JsxExpressionGenerator): void; protected addUseState(name: VariableRefName, value: unknown, setStateName?: VariableRefName): void; protected addUseCallback(name: VariableRefName, expression: unknown, deps?: VariableRefName[]): void; protected addUseEffect(name: VariableRefName | null, expression: unknown, deps?: VariableRefName[]): number | undefined; protected addUseMemo(name: VariableRefName, expression: unknown, deps?: VariableRefName[]): void; protected addUseRef(name: VariableRefName, defaultValue: unknown): void; protected addUseObserver(name: VariableRefName, defaultValue?: unknown): void; protected addUseObservables(name: VariableRefName, target: VariableRefName): void; protected addUseRxjsWatch(name: VariableRefName, callback: VariableRefName, useInit?: boolean): void; protected addUnshiftVariable(name: VariableRefName, initilizer?: ts.Expression): void; protected addPushedVariable(name: VariableRefName, initilizer?: ts.Expression): void; protected createComplexLogicExpression(exp: IComplexLogicDefine): string; protected getSetState(name: VariableRefName): string; protected nextObserverData(target: string | Observer, payload: string | Record): string; protected getRefName(ref: T): string; private getExpression; private createFunctionRender; protected onRootElementVisit(root: JsxElementGenerator): JsxElementGenerator | JsxExpressionGenerator; protected onChildrenVisit(_: string | symbol, __: JsxElementGenerator): IVisitResult | void; protected onChildrenPropResolved(name: string, prop: IComponentProp, element: JsxElementGenerator): boolean; protected resolveChildNodeRender(): (JsxElementGenerator | JsxExpressionGenerator)[]; private initFnsBeforeRender; private initFrameworkImports; private createComponentBlock; private createComponentRenderReturn; private createRootContext; private createRootContextStates; private createRootContextObservers; }