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