UNPKG

@ima/react-page-renderer

Version:

IMA.js React page renderer.

89 lines 3.4 kB
import { ControllerDecorator, Dispatcher, Window, type UnknownPromiseParameters, type RouteOptions, type Settings } from '@ima/core'; import * as Helpers from '@ima/helpers'; import { ComponentType } from 'react'; import { AbstractPageRenderer, PageData } from './AbstractPageRenderer'; import { PageRendererFactory } from './PageRendererFactory'; /** * Client-side page renderer. The renderer attempts to reuse the markup sent by * server if possible. */ export declare abstract class AbstractClientPageRenderer extends AbstractPageRenderer { private _hydrated; private _mounted; private _syncMounted; private _renderedOnChange; private _lastRendered; /** * Flag signalling that the page is being rendered for the first time. */ private _window; /** * The HTML element containing the current application view for the * current route. */ protected _viewContainer?: Element; /** * Initializes the client-side page renderer. * * @param factory Factory for receive $Utils to view. * @param helpers The IMA.js helper methods. * @param dispatcher Dispatcher fires events to app. * @param settings The application setting for the * current application environment. * @param window Helper for manipulating the global object * (`window`) regardless of the client/server-side * environment. */ constructor(factory: PageRendererFactory, helpers: typeof Helpers, dispatcher: Dispatcher, settings: Settings, window: Window); /** * @inheritDoc */ mount(controller: ControllerDecorator, pageView: ComponentType, pageResources: { [key: string]: Promise<unknown>; }, routeOptions: RouteOptions): Promise<void | PageData>; /** * @inheritDoc */ update(controller: ControllerDecorator, pageView: ComponentType, resourcesUpdate: UnknownPromiseParameters): Promise<void | PageData>; unmount(): void; setState(pageState?: {}): Promise<void>; protected _getHydrateCallback(): () => Dispatcher; protected _getRenderCallback(): () => Dispatcher; protected _getUpdateCallback(pageState: unknown): () => void; /** * Show error to console in $Debug mode and re-throw that error * for other error handler. * * @throws {Error} Re-throws the handled error. */ private _handleError; protected abstract _hydrateViewAdapter(): void; private _createMountedPromise; private _createRenderPromise; /** * Patch promise values to controller state. */ private _patchPromisesToState; protected _runUnmountCallback(): void; /** * Batch patch promise values to controller state. */ private _startBatchTransactions; protected abstract _renderViewAdapter(callback?: () => void, props?: unknown): void; /** * Renders the current route to DOM. * * @param routeOptions The current route options. */ private _renderPageViewToDOM; /** * Separate promises and values from provided data map. Values will be use * for default page state. Promises will be patched to state after their * resolve. * * @param dataMap A map of data. * @return Return separated promises and other values. */ private _separatePromisesAndValues; } //# sourceMappingURL=AbstractClientPageRenderer.d.ts.map