UNPKG

@ima/react-page-renderer

Version:

IMA.js React page renderer.

79 lines 3.24 kB
import { Controller, Dispatcher, MetaManager, PageRenderer, type Utils, type UnknownParameters, type UnknownPromiseParameters, type PageData as BasePageData, type RouteOptions, type Settings } from '@ima/core'; import * as Helpers from '@ima/helpers'; import { ComponentType, ReactElement } from 'react'; import * as react from 'react'; import * as reactDOM from 'react-dom/server'; import { PageRendererFactory } from './PageRendererFactory'; import { ViewAdapterProps } from '../component/ViewAdapter'; export type PageData = { documentView?: ComponentType; documentViewProps?: { $Utils: Utils; metaManager: MetaManager; }; react?: typeof react; reactDOM?: typeof reactDOM; viewAdapter?: ReactElement; } & BasePageData; /** * Base class for implementations of the {@linkcode PageRenderer} interface. */ export declare abstract class AbstractPageRenderer extends PageRenderer { protected _dispatcher: Dispatcher; protected _factory: PageRendererFactory; protected _helpers: typeof Helpers; protected _settings: Settings; protected _viewAdapter?: ComponentType; protected _viewAdapterProps: UnknownParameters; /** * Initializes the abstract page renderer. * * @param factory Factory for receive $Utils to view. * @param helpers The IMA.js helper methods. * to render the page. * @param dispatcher Dispatcher fires events to app. * @param settings Application settings for the current * application environment. */ constructor(factory: PageRendererFactory, helpers: typeof Helpers, dispatcher: Dispatcher, settings: Settings); /** * @inheritDoc */ abstract mount(controller: Controller, pageView: ComponentType, pageResources: UnknownPromiseParameters, routeOptions: RouteOptions): Promise<void | PageData>; /** * @inheritDoc */ abstract update(controller: Controller, pageView: ComponentType, pageResources: UnknownPromiseParameters): Promise<void | PageData>; /** * @inheritDoc */ abstract unmount(): void; /** * @inheritDoc */ abstract setState(pageState: UnknownParameters): Promise<void>; /** * @inheritDoc */ _getViewAdapterElement(props?: {}): ReactElement<{}, string | react.JSXElementConstructor<any>> | undefined; /** * Generate properties for view from state. * * @param view The page view React component to wrap. */ protected _generateViewAdapterProps(managedRootView: ComponentType, pageView: ComponentType, state?: UnknownParameters): ViewAdapterProps; /** * Returns wrapped page view component with managed root view and view adapter. * * @param routeOptions The current route options. */ protected _prepareViewAdapter(controller: Controller, pageView: ComponentType, routeOptions: RouteOptions): void; /** * Returns the class constructor of the specified document view component. * * @param routeOptions The current route options. * @return The constructor of the document view component. */ protected _getDocumentView(routeOptions: RouteOptions): ComponentType; } //# sourceMappingURL=AbstractPageRenderer.d.ts.map