UNPKG

2.82 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 * Create new instance of {@linkcode Controller}.
32 *
33 * @param {(string|function(new:Controller))} controller
34 * @return {Controller}
35 */
36
37
38 createController(controller) {
39 let controllerInstance = this._oc.create(controller);
40
41 return controllerInstance;
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
53
54 createView(view) {
55 if (typeof view === 'function') {
56 return view;
57 }
58
59 let classConstructor = this._oc.getConstructorOf(view);
60
61 if (classConstructor) {
62 return classConstructor;
63 } else {
64 throw new _GenericError2.default(`ima.page.Factory:createView hasn't name of view "${view}".`);
65 }
66 }
67 /**
68 * Returns decorated controller for ease setting seo params in controller.
69 *
70 * @param {Controller} controller
71 * @return {Controller}
72 */
73
74
75 decorateController(controller) {
76 let metaManager = this._oc.get('$MetaManager');
77
78 let router = this._oc.get('$Router');
79
80 let dictionary = this._oc.get('$Dictionary');
81
82 let settings = this._oc.get('$Settings');
83
84 let decoratedController = this._oc.create('$ControllerDecorator', [controller, metaManager, router, dictionary, settings]);
85
86 return decoratedController;
87 }
88 /**
89 * Returns decorated page state manager for extension.
90 *
91 * @param {PageStateManager} pageStateManager
92 * @param {string[]} allowedStateKeys
93 * @return {PageStateManager}
94 */
95
96
97 decoratePageStateManager(pageStateManager, allowedStateKeys) {
98 let decoratedPageStateManager = this._oc.create('$PageStateManagerDecorator', [pageStateManager, allowedStateKeys]);
99
100 return decoratedPageStateManager;
101 }
102
103}
104
105exports.default = PageFactory;
106
107typeof $IMA !== 'undefined' && $IMA !== null && $IMA.Loader && $IMA.Loader.register('ima/page/PageFactory', [], function (_export, _context) {
108 'use strict';
109 return {
110 setters: [],
111 execute: function () {
112 _export('default', exports.default);
113 }
114 };
115});