UNPKG

14.7 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _regenerator = require('babel-runtime/regenerator');
8
9var _regenerator2 = _interopRequireDefault(_regenerator);
10
11var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
12
13var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
14
15var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
16
17var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
18
19var _createClass2 = require('babel-runtime/helpers/createClass');
20
21var _createClass3 = _interopRequireDefault(_createClass2);
22
23var _keys = require('babel-runtime/core-js/object/keys');
24
25var _keys2 = _interopRequireDefault(_keys);
26
27var _constants = require('./constants');
28
29var _constants2 = _interopRequireDefault(_constants);
30
31var _errors = require('./errors');
32
33var _errors2 = _interopRequireDefault(_errors);
34
35function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
37var MODIFIERS_KEYS_MAP = {
38 'shift': 'shiftKey',
39 'ctrl': 'ctrlKey',
40 'alt': 'altKey',
41 'meta': 'metaKey'
42};
43
44function addMenuPaths(menuItems) {
45 var prevPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
46
47 menuItems.forEach(function (menuItem) {
48 menuItem[_constants2.default.menuPathProperty] = prevPath;
49
50 if (menuItem.submenu) addMenuPaths(menuItem.submenu, prevPath.concat(menuItem.commandId));
51 });
52
53 return menuItems;
54}
55
56function findMenuItem(menuItems, menuItemSelector) {
57 var menuItem = null;
58
59 var _loop = function _loop(i) {
60 var index = menuItemSelector[i].index ? menuItemSelector[i].index - 1 : 0;
61 var label = typeof menuItemSelector[i] === 'string' ? menuItemSelector[i] : menuItemSelector[i].label;
62
63 menuItem = label ? menuItems.filter(function (item) {
64 return item.label === label;
65 })[index] : menuItems[index];
66
67 menuItems = menuItem && menuItem.submenu || null;
68 };
69
70 for (var i = 0; menuItems && i < menuItemSelector.length; i++) {
71 _loop(i);
72 }
73
74 return menuItem || null;
75}
76
77function ensureModifiers() {
78 var srcModifiers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
79
80 var result = {};
81
82 (0, _keys2.default)(MODIFIERS_KEYS_MAP).forEach(function (mod) {
83 return result[MODIFIERS_KEYS_MAP[mod]] = !!srcModifiers[mod];
84 });
85
86 return result;
87}
88
89var Helpers = function () {
90 function Helpers(ipc) {
91 (0, _classCallCheck3.default)(this, Helpers);
92
93 this.ipc = ipc;
94 }
95
96 (0, _createClass3.default)(Helpers, [{
97 key: '_getMenuItems',
98 value: function () {
99 var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(menuType) {
100 return _regenerator2.default.wrap(function _callee$(_context) {
101 while (1) {
102 switch (_context.prev = _context.next) {
103 case 0:
104 _context.t0 = addMenuPaths;
105 _context.next = 3;
106 return this.ipc.getMenuItems(menuType);
107
108 case 3:
109 _context.t1 = _context.sent;
110 return _context.abrupt('return', (0, _context.t0)(_context.t1));
111
112 case 5:
113 case 'end':
114 return _context.stop();
115 }
116 }
117 }, _callee, this);
118 }));
119
120 function _getMenuItems(_x3) {
121 return _ref.apply(this, arguments);
122 }
123
124 return _getMenuItems;
125 }()
126 }, {
127 key: '_getMenuItem',
128 value: function () {
129 var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(menuType, menuItemSelector) {
130 var menuItems;
131 return _regenerator2.default.wrap(function _callee2$(_context2) {
132 while (1) {
133 switch (_context2.prev = _context2.next) {
134 case 0:
135 _context2.next = 2;
136 return this._getMenuItems(menuType);
137
138 case 2:
139 menuItems = _context2.sent;
140 return _context2.abrupt('return', findMenuItem(menuItems, menuItemSelector));
141
142 case 4:
143 case 'end':
144 return _context2.stop();
145 }
146 }
147 }, _callee2, this);
148 }));
149
150 function _getMenuItem(_x4, _x5) {
151 return _ref2.apply(this, arguments);
152 }
153
154 return _getMenuItem;
155 }()
156 }, {
157 key: '_clickOnMenuItem',
158 value: function () {
159 var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(menuType, menuItem, modifiers) {
160 var menuItemSnapshot;
161 return _regenerator2.default.wrap(function _callee3$(_context3) {
162 while (1) {
163 switch (_context3.prev = _context3.next) {
164 case 0:
165 if (!menuItem.commandId) {
166 _context3.next = 4;
167 break;
168 }
169
170 _context3.t0 = menuItem;
171 _context3.next = 7;
172 break;
173
174 case 4:
175 _context3.next = 6;
176 return this._getMenuItem(menuType, menuItem);
177
178 case 6:
179 _context3.t0 = _context3.sent;
180
181 case 7:
182 menuItemSnapshot = _context3.t0;
183
184 if (menuItemSnapshot) {
185 _context3.next = 10;
186 break;
187 }
188
189 throw new Error(_errors2.default.invalidMenuItemArgument);
190
191 case 10:
192 _context3.next = 12;
193 return this.ipc.clickOnMenuItem(menuType, menuItemSnapshot, ensureModifiers(modifiers));
194
195 case 12:
196 case 'end':
197 return _context3.stop();
198 }
199 }
200 }, _callee3, this);
201 }));
202
203 function _clickOnMenuItem(_x6, _x7, _x8) {
204 return _ref3.apply(this, arguments);
205 }
206
207 return _clickOnMenuItem;
208 }()
209 }, {
210 key: 'getMainMenuItems',
211 value: function () {
212 var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {
213 return _regenerator2.default.wrap(function _callee4$(_context4) {
214 while (1) {
215 switch (_context4.prev = _context4.next) {
216 case 0:
217 _context4.next = 2;
218 return this._getMenuItems(_constants2.default.mainMenuType);
219
220 case 2:
221 return _context4.abrupt('return', _context4.sent);
222
223 case 3:
224 case 'end':
225 return _context4.stop();
226 }
227 }
228 }, _callee4, this);
229 }));
230
231 function getMainMenuItems() {
232 return _ref4.apply(this, arguments);
233 }
234
235 return getMainMenuItems;
236 }()
237 }, {
238 key: 'getContextMenuItems',
239 value: function () {
240 var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {
241 return _regenerator2.default.wrap(function _callee5$(_context5) {
242 while (1) {
243 switch (_context5.prev = _context5.next) {
244 case 0:
245 _context5.next = 2;
246 return this._getMenuItems(_constants2.default.contextMenuType);
247
248 case 2:
249 return _context5.abrupt('return', _context5.sent);
250
251 case 3:
252 case 'end':
253 return _context5.stop();
254 }
255 }
256 }, _callee5, this);
257 }));
258
259 function getContextMenuItems() {
260 return _ref5.apply(this, arguments);
261 }
262
263 return getContextMenuItems;
264 }()
265 }, {
266 key: 'getMainMenuItem',
267 value: function () {
268 var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(menuItemSelector) {
269 return _regenerator2.default.wrap(function _callee6$(_context6) {
270 while (1) {
271 switch (_context6.prev = _context6.next) {
272 case 0:
273 _context6.next = 2;
274 return this._getMenuItem(_constants2.default.mainMenuType, menuItemSelector);
275
276 case 2:
277 return _context6.abrupt('return', _context6.sent);
278
279 case 3:
280 case 'end':
281 return _context6.stop();
282 }
283 }
284 }, _callee6, this);
285 }));
286
287 function getMainMenuItem(_x9) {
288 return _ref6.apply(this, arguments);
289 }
290
291 return getMainMenuItem;
292 }()
293 }, {
294 key: 'getContextMenuItem',
295 value: function () {
296 var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(menuItemSelector) {
297 return _regenerator2.default.wrap(function _callee7$(_context7) {
298 while (1) {
299 switch (_context7.prev = _context7.next) {
300 case 0:
301 _context7.next = 2;
302 return this._getMenuItem(_constants2.default.contextMenuType, menuItemSelector);
303
304 case 2:
305 return _context7.abrupt('return', _context7.sent);
306
307 case 3:
308 case 'end':
309 return _context7.stop();
310 }
311 }
312 }, _callee7, this);
313 }));
314
315 function getContextMenuItem(_x10) {
316 return _ref7.apply(this, arguments);
317 }
318
319 return getContextMenuItem;
320 }()
321 }, {
322 key: 'clickOnMainMenuItem',
323 value: function () {
324 var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(menuItem) {
325 var modifiers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
326 return _regenerator2.default.wrap(function _callee8$(_context8) {
327 while (1) {
328 switch (_context8.prev = _context8.next) {
329 case 0:
330 _context8.next = 2;
331 return this._clickOnMenuItem(_constants2.default.mainMenuType, menuItem, modifiers);
332
333 case 2:
334 case 'end':
335 return _context8.stop();
336 }
337 }
338 }, _callee8, this);
339 }));
340
341 function clickOnMainMenuItem(_x12) {
342 return _ref8.apply(this, arguments);
343 }
344
345 return clickOnMainMenuItem;
346 }()
347 }, {
348 key: 'clickOnContextMenuItem',
349 value: function () {
350 var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(menuItem) {
351 var modifiers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
352 return _regenerator2.default.wrap(function _callee9$(_context9) {
353 while (1) {
354 switch (_context9.prev = _context9.next) {
355 case 0:
356 _context9.next = 2;
357 return this._clickOnMenuItem(_constants2.default.contextMenuType, menuItem, modifiers);
358
359 case 2:
360 case 'end':
361 return _context9.stop();
362 }
363 }
364 }, _callee9, this);
365 }));
366
367 function clickOnContextMenuItem(_x14) {
368 return _ref9.apply(this, arguments);
369 }
370
371 return clickOnContextMenuItem;
372 }()
373 }, {
374 key: 'setElectronDialogHandler',
375 value: function () {
376 var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(fn, context) {
377 return _regenerator2.default.wrap(function _callee10$(_context10) {
378 while (1) {
379 switch (_context10.prev = _context10.next) {
380 case 0:
381 _context10.next = 2;
382 return this.ipc.setDialogHandler(fn, context);
383
384 case 2:
385 case 'end':
386 return _context10.stop();
387 }
388 }
389 }, _callee10, this);
390 }));
391
392 function setElectronDialogHandler(_x15, _x16) {
393 return _ref10.apply(this, arguments);
394 }
395
396 return setElectronDialogHandler;
397 }()
398 }]);
399 return Helpers;
400}();
401
402exports.default = Helpers;
403module.exports = exports['default'];
\No newline at end of file