UNPKG

@ima/react-page-renderer

Version:

IMA.js React page renderer.

87 lines (86 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "AbstractPageRenderer", { enumerable: true, get: function() { return AbstractPageRenderer; } }); const _core = require("@ima/core"); const _react = require("react"); const _BlankManagedRootView = require("../component/BlankManagedRootView"); const _ViewAdapter = require("../component/ViewAdapter"); class AbstractPageRenderer extends _core.PageRenderer { _dispatcher; _factory; _helpers; _settings; _viewAdapter; _viewAdapterProps = {}; /** * 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, helpers, dispatcher, settings){ super(); /** * Factory for receive $Utils to view. */ this._factory = factory; /** * The IMA.js helper methods. */ this._helpers = helpers; /** * Dispatcher fires events to app. */ this._dispatcher = dispatcher; /** * Application setting for the current application environment. */ this._settings = settings; } /** * @inheritDoc */ _getViewAdapterElement(props = {}) { if (this._viewAdapter) { this._viewAdapterProps = Object.assign(this._viewAdapterProps, props); return /*#__PURE__*/ (0, _react.createElement)(this._viewAdapter, this._viewAdapterProps); } } /** * Generate properties for view from state. * * @param view The page view React component to wrap. */ _generateViewAdapterProps(managedRootView, pageView, state = {}) { const props = { $Utils: this._factory.getUtils(), managedRootView, pageView, state }; return props; } /** * Returns wrapped page view component with managed root view and view adapter. * * @param routeOptions The current route options. */ _prepareViewAdapter(controller, pageView, routeOptions) { const managedRootView = this._factory.getManagedRootView(routeOptions.managedRootView || this._settings.$Page.$Render.managedRootView || _BlankManagedRootView.BlankManagedRootView); const props = this._generateViewAdapterProps(managedRootView, pageView, Object.assign({}, controller.getState())); this._viewAdapter = routeOptions.viewAdapter || this._settings.$Page.$Render.viewAdapter || _ViewAdapter.ViewAdapter; this._viewAdapterProps = Object.assign(this._viewAdapterProps, props); } /** * Returns the class constructor of the specified document view component. * * @param routeOptions The current route options. * @return The constructor of the document view component. */ _getDocumentView(routeOptions) { return this._factory.getDocumentView(routeOptions.documentView || this._settings.$Page.$Render.documentView); } } //# sourceMappingURL=AbstractPageRenderer.js.map