@ima/react-page-renderer
Version:
IMA.js React page renderer.
87 lines (86 loc) • 3.21 kB
JavaScript
"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