@ima/react-page-renderer
Version:
IMA.js React page renderer.
57 lines (56 loc) • 2.03 kB
JavaScript
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