UNPKG

2.81 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _GenericError = require('../error/GenericError');
8
9var _GenericError2 = _interopRequireDefault(_GenericError);
10
11function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
13/**
14 * Factory for page.
15 */
16class PageFactory {
17 /**
18 * Factory used by page management classes.
19 *
20 * @param {ObjectContainer} oc
21 */
22 constructor(oc) {
23 /**
24 * The current application object container.
25 *
26 * @type {ObjectContainer}
27 */
28 this._oc = oc;
29 }
30
31 /**
32 * Create new instance of {@linkcode Controller}.
33 *
34 * @param {(string|function(new:Controller))} controller
35 * @return {Controller}
36 */
37 createController(controller) {
38 let controllerInstance = this._oc.create(controller);
39
40 return controllerInstance;
41 }
42
43 /**
44 * Retrieves the specified react component class.
45 *
46 * @param {(string|function(new: React.Component))} view The namespace
47 * referring to a react component class, or a react component class
48 * constructor.
49 * @return {function(new: React.Component)} The react component class
50 * constructor.
51 */
52 createView(view) {
53 if (typeof view === 'function') {
54 return view;
55 }
56 let classConstructor = this._oc.getConstructorOf(view);
57
58 if (classConstructor) {
59 return classConstructor;
60 } else {
61 throw new _GenericError2.default(`ima.page.Factory:createView hasn't name of view "${view}".`);
62 }
63 }
64
65 /**
66 * Returns decorated controller for ease setting seo params in controller.
67 *
68 * @param {Controller} controller
69 * @return {Controller}
70 */
71 decorateController(controller) {
72 let metaManager = this._oc.get('$MetaManager');
73 let router = this._oc.get('$Router');
74 let dictionary = this._oc.get('$Dictionary');
75 let settings = this._oc.get('$Settings');
76
77 let decoratedController = this._oc.create('$ControllerDecorator', [controller, metaManager, router, dictionary, settings]);
78
79 return decoratedController;
80 }
81
82 /**
83 * Returns decorated page state manager for extension.
84 *
85 * @param {PageStateManager} pageStateManager
86 * @param {string[]} allowedStateKeys
87 * @return {PageStateManager}
88 */
89 decoratePageStateManager(pageStateManager, allowedStateKeys) {
90 let decoratedPageStateManager = this._oc.create('$PageStateManagerDecorator', [pageStateManager, allowedStateKeys]);
91
92 return decoratedPageStateManager;
93 }
94}
95exports.default = PageFactory;
96
97typeof $IMA !== 'undefined' && $IMA !== null && $IMA.Loader && $IMA.Loader.register('ima/page/PageFactory', [], function (_export, _context) {
98 'use strict';
99 return {
100 setters: [],
101 execute: function () {
102 _export('default', exports.default);
103 }
104 };
105});