UNPKG

3.3 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _Dispatcher = require('../event/Dispatcher');
8
9var _Dispatcher2 = _interopRequireDefault(_Dispatcher);
10
11var _EventBus = require('../event/EventBus');
12
13var _EventBus2 = _interopRequireDefault(_EventBus);
14
15var _PageManager = require('../page/manager/PageManager');
16
17var _PageManager2 = _interopRequireDefault(_PageManager);
18
19var _PageStateManager = require('../page/state/PageStateManager');
20
21var _PageStateManager2 = _interopRequireDefault(_PageStateManager);
22
23var _Window = require('../window/Window');
24
25var _Window2 = _interopRequireDefault(_Window);
26
27function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29/**
30 * Developer tools, used mostly for navigating the page state history.
31 */
32class DevTool {
33 static get $dependencies() {
34 return [_PageManager2.default, _PageStateManager2.default, _Window2.default, _Dispatcher2.default, _EventBus2.default];
35 }
36
37 /**
38 * Initializes the developer tools.
39 *
40 * @param {PageManager} pageManager Application page manager.
41 * @param {PageStateManager} stateManager Application state manager.
42 * @param {Window} window IMA window wrapper.
43 * @param {Dispatcher} dispatcher IMA event dispatcher.
44 * @param {EventBus} eventBus IMA DOM event bus.
45 */
46 constructor(pageManager, stateManager, window, dispatcher, eventBus) {
47 /**
48 * Application page manager.
49 *
50 * @type {PageManager}
51 */
52 this._pageManager = pageManager;
53
54 /**
55 * Application state manager.
56 *
57 * @type {PageStateManager}
58 */
59 this._stateManager = stateManager;
60
61 /**
62 * IMA window wrapper.
63 *
64 * @type {Window}
65 */
66 this._window = window;
67
68 /**
69 * IMA event dispatcher.
70 *
71 * @type {Dispatcher}
72 */
73 this._dispatcher = dispatcher;
74
75 /**
76 * IMA DOM event bus.
77 *
78 * @type {EventBus}
79 */
80 this._eventBus = eventBus;
81 }
82
83 /**
84 * Initializes the developer tools.
85 */
86 init() {
87 if ($Debug) {
88 if (this._window.isClient()) {
89 this._window.getWindow().$IMA.$DevTool = this;
90 }
91
92 let window = this._window.getWindow();
93 this._window.bindEventListener(window, 'keydown', e => {
94 if (e.altKey && e.keyCode === 83) {
95 // Alt + S
96 console.log(this._stateManager.getState()); //eslint-disable-line no-console
97 }
98 });
99 }
100 }
101
102 /**
103 * Sets the provided state to the state manager.
104 *
105 * @param {Object<string, *>} statePatch A patch of the current page state.
106 */
107 setState(statePatch) {
108 this._stateManager.setState(statePatch);
109 }
110
111 /**
112 * Returns the current page state.
113 *
114 * @return {Object<string, *>} The current page state.
115 */
116 getState() {
117 return this._stateManager.getState();
118 }
119
120 /**
121 * Clears the current application state.
122 */
123 clearAppSource() {
124 this._pageManager.destroy();
125 this._dispatcher.clear();
126 }
127}
128exports.default = DevTool; // @client-side
129
130typeof $IMA !== 'undefined' && $IMA !== null && $IMA.Loader && $IMA.Loader.register('ima/debug/DevTool', [], function (_export, _context) {
131 'use strict';
132 return {
133 setters: [],
134 execute: function () {
135 _export('default', exports.default);
136 }
137 };
138});