UNPKG

@ima/react-page-renderer

Version:

IMA.js React page renderer.

57 lines (56 loc) 2.03 kB
import { GenericError } from '@ima/core'; import * as react from 'react'; import * as reactDOM from 'react-dom/server'; import { AbstractPageRenderer } from './AbstractPageRenderer'; /** * Server-side page renderer. The renderer renders the page into the HTML * markup and sends it to the client. */ export class ServerPageRenderer extends AbstractPageRenderer { /** * Initializes the server-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 Application setting for the current * application environment. * @param cache Resource cache caching the results of HTTP requests * made by services used by the rendered page. */ constructor(factory, helpers, dispatcher, settings){ super(factory, helpers, dispatcher, settings); } /** * @inheritDoc */ mount(controller, pageView, pageResources, routeOptions) { return this._helpers.allPromiseHash(pageResources).then((pageState)=>{ controller.setState(pageState); controller.setMetaParams(pageState); this._prepareViewAdapter(controller, pageView, routeOptions); return { documentView: this._getDocumentView(routeOptions), documentViewProps: { $Utils: this._factory.getUtils(), metaManager: controller.getMetaManager() }, react, reactDOM, status: controller.getHttpStatus(), viewAdapter: this._getViewAdapterElement() }; }); } setState() { return Promise.resolve(); } /** * @inheritDoc */ update() { return Promise.reject(new GenericError('The update() is denied on server side.')); } /** * @inheritDoc */ unmount() { // nothing to do } } //# sourceMappingURL=ServerPageRenderer.js.map