@ima/react-page-renderer
Version:
IMA.js React page renderer.
79 lines • 3.24 kB
TypeScript
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