@ctrl/ngx-rightclick 1.1.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -16
  3. package/bundles/ctrl-ngx-rightclick.umd.js +622 -658
  4. package/bundles/ctrl-ngx-rightclick.umd.js.map +1 -1
  5. package/bundles/ctrl-ngx-rightclick.umd.min.js +15 -1
  6. package/bundles/ctrl-ngx-rightclick.umd.min.js.map +1 -1
  7. package/context-menu-injector.d.ts +4 -4
  8. package/context-menu-trigger.directive.d.ts +1 -0
  9. package/context-menu.service.d.ts +2 -2
  10. package/context-submenu-trigger.directive.d.ts +3 -3
  11. package/ctrl-ngx-rightclick.metadata.json +1 -1
  12. package/esm2015/context-menu-injector.js +7 -52
  13. package/esm2015/context-menu-trigger.directive.js +52 -77
  14. package/esm2015/context-menu.module.js +16 -18
  15. package/esm2015/context-menu.service.js +19 -121
  16. package/esm2015/context-submenu-trigger.directive.js +38 -67
  17. package/esm2015/ctrl-ngx-rightclick.js +2 -6
  18. package/esm2015/menu.component.js +26 -64
  19. package/esm2015/public_api.js +7 -11
  20. package/esm5/context-menu-injector.js +8 -51
  21. package/esm5/context-menu-trigger.directive.js +54 -94
  22. package/esm5/context-menu.module.js +13 -16
  23. package/esm5/context-menu.service.js +20 -164
  24. package/esm5/context-submenu-trigger.directive.js +39 -88
  25. package/esm5/ctrl-ngx-rightclick.js +2 -6
  26. package/esm5/menu.component.js +26 -77
  27. package/esm5/public_api.js +7 -11
  28. package/fesm2015/ctrl-ngx-rightclick.js +143 -246
  29. package/fesm2015/ctrl-ngx-rightclick.js.map +1 -1
  30. package/fesm5/ctrl-ngx-rightclick.js +149 -336
  31. package/fesm5/ctrl-ngx-rightclick.js.map +1 -1
  32. package/menu.component.d.ts +1 -1
  33. package/package.json +5 -9
@@ -1,14 +1,10 @@
1
- import { __assign, __values } from 'tslib';
1
+ import { __assign, __values, __decorate } from 'tslib';
2
+ import { ElementRef, Injector, ɵɵdefineInjectable, ɵɵinject, INJECTOR, Injectable, EventEmitter, Input, Output, HostListener, Directive, Component, NgModule } from '@angular/core';
2
3
  import { Overlay, ScrollStrategyOptions, OverlayModule } from '@angular/cdk/overlay';
3
4
  import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
4
- import { ElementRef, Injectable, Injector, NgModule, Component, HostListener, Directive, Input, Output, EventEmitter, defineInjectable, inject, INJECTOR } from '@angular/core';
5
5
  import { BehaviorSubject, Subject } from 'rxjs';
6
6
  import { filter, take } from 'rxjs/operators';
7
7
 
8
- /**
9
- * @fileoverview added by tsickle
10
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11
- */
12
8
  var MenuPackage = /** @class */ (function () {
13
9
  function MenuPackage(menu, context) {
14
10
  this.menu = menu;
@@ -17,44 +13,26 @@ var MenuPackage = /** @class */ (function () {
17
13
  return MenuPackage;
18
14
  }());
19
15
  var MenuInjector = /** @class */ (function () {
20
- function MenuInjector(_activeContextMenu, _parentInjector, context) {
21
- this._activeContextMenu = _activeContextMenu;
22
- this._parentInjector = _parentInjector;
16
+ function MenuInjector(activeContextMenu, parentInjector, context) {
17
+ this.activeContextMenu = activeContextMenu;
18
+ this.parentInjector = parentInjector;
23
19
  this.context = context;
24
- this._menuContext = new MenuPackage(_activeContextMenu, context);
20
+ this.menuContext = new MenuPackage(activeContextMenu, context);
25
21
  }
26
- /**
27
- * @template T
28
- * @param {?} token
29
- * @param {?=} notFoundValue
30
- * @param {?=} flags
31
- * @return {?}
32
- */
33
- MenuInjector.prototype.get = /**
34
- * @template T
35
- * @param {?} token
36
- * @param {?=} notFoundValue
37
- * @param {?=} flags
38
- * @return {?}
39
- */
40
- function (token, notFoundValue, flags) {
22
+ MenuInjector.prototype.get = function (token, notFoundValue, flags) {
41
23
  if (token === MenuPackage) {
42
- return this._menuContext;
24
+ return this.menuContext;
43
25
  }
44
- return this._parentInjector.get(token, notFoundValue, flags);
26
+ return this.parentInjector.get(token, notFoundValue, flags);
45
27
  };
46
28
  return MenuInjector;
47
29
  }());
48
30
 
49
- /**
50
- * @fileoverview added by tsickle
51
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
52
- */
53
31
  var ContextMenuService = /** @class */ (function () {
54
- function ContextMenuService(overlay, scrollStrategy, _injector) {
32
+ function ContextMenuService(overlay, scrollStrategy, injector) {
55
33
  this.overlay = overlay;
56
34
  this.scrollStrategy = scrollStrategy;
57
- this._injector = _injector;
35
+ this.injector = injector;
58
36
  this.menus = [];
59
37
  this.id = 0;
60
38
  }
@@ -65,31 +43,8 @@ var ContextMenuService = /** @class */ (function () {
65
43
  * @param submenu is a menu within a menu
66
44
  * @param level if submenu, what level
67
45
  */
68
- /**
69
- *
70
- * @param {?} $event triggering event
71
- * @param {?} menuComponent the component to be shown
72
- * @param {?} context
73
- * @param {?} menuClose
74
- * @param {?} menuAction
75
- * @param {?=} submenu is a menu within a menu
76
- * @param {?=} level if submenu, what level
77
- * @return {?}
78
- */
79
- ContextMenuService.prototype.show = /**
80
- *
81
- * @param {?} $event triggering event
82
- * @param {?} menuComponent the component to be shown
83
- * @param {?} context
84
- * @param {?} menuClose
85
- * @param {?} menuAction
86
- * @param {?=} submenu is a menu within a menu
87
- * @param {?=} level if submenu, what level
88
- * @return {?}
89
- */
90
- function ($event, menuComponent, context, menuClose, menuAction, submenu, level) {
46
+ ContextMenuService.prototype.show = function ($event, menuComponent, context, menuClose, menuAction, submenu, level) {
91
47
  if (submenu === void 0) { submenu = false; }
92
- /** @type {?} */
93
48
  var target;
94
49
  if (!submenu) {
95
50
  this.closeAll();
@@ -109,9 +64,7 @@ var ContextMenuService = /** @class */ (function () {
109
64
  this.closeAll(undefined, level);
110
65
  target = $event.target;
111
66
  }
112
- /** @type {?} */
113
67
  var el = new ElementRef(target);
114
- /** @type {?} */
115
68
  var positionStrategy = this.overlay
116
69
  .position()
117
70
  .flexibleConnectedTo(el)
@@ -184,69 +137,36 @@ var ContextMenuService = /** @class */ (function () {
184
137
  },
185
138
  ]);
186
139
  }
187
- /** @type {?} */
188
140
  var t = {
189
141
  submenu: submenu,
190
142
  id: this.id++,
191
143
  isMenuHovered: new BehaviorSubject(false),
192
144
  isTriggerHovered: new BehaviorSubject(false),
193
145
  };
194
- /** @type {?} */
195
- var menuInjector = new MenuInjector(t, this._injector, context);
196
- /** @type {?} */
146
+ var menuInjector = new MenuInjector(t, this.injector, context);
197
147
  var componentPortal = new ComponentPortal(menuComponent, undefined, menuInjector);
198
- /** @type {?} */
199
148
  var overlayRef = this.overlay.create({
200
149
  positionStrategy: positionStrategy,
201
150
  panelClass: 'ngx-contextmenu',
202
151
  scrollStrategy: this.scrollStrategy.close(),
203
152
  });
204
- /** @type {?} */
205
153
  var component = overlayRef.attach(componentPortal);
206
- /** @type {?} */
207
- var res = __assign({ overlayRef: overlayRef, component: component }, t, { menuClose: menuClose, menuAction: menuAction });
154
+ var res = __assign(__assign({ overlayRef: overlayRef, component: component }, t), { menuClose: menuClose, menuAction: menuAction });
208
155
  this.menus.push(res);
209
156
  return res;
210
157
  };
211
- /**
212
- * @return {?}
213
- */
214
- ContextMenuService.prototype.getCurrentLevel = /**
215
- * @return {?}
216
- */
217
- function () {
158
+ ContextMenuService.prototype.getCurrentLevel = function () {
218
159
  return this.menus.length;
219
160
  };
220
- /**
221
- * @param {?=} context
222
- * @param {?=} idx
223
- * @return {?}
224
- */
225
- ContextMenuService.prototype.closeAll = /**
226
- * @param {?=} context
227
- * @param {?=} idx
228
- * @return {?}
229
- */
230
- function (context, idx) {
161
+ ContextMenuService.prototype.closeAll = function (context, idx) {
231
162
  if (idx === void 0) { idx = 0; }
232
163
  for (var index = idx; index < this.menus.length; index++) {
233
- /** @type {?} */
234
164
  var menu = this.menus[index];
235
165
  this.destroyMenu(menu, context);
236
166
  }
237
167
  this.menus.splice(idx, this.menus.length);
238
168
  };
239
- /**
240
- * @param {?} menu
241
- * @param {?=} context
242
- * @return {?}
243
- */
244
- ContextMenuService.prototype.destroyMenu = /**
245
- * @param {?} menu
246
- * @param {?=} context
247
- * @return {?}
248
- */
249
- function (menu, context) {
169
+ ContextMenuService.prototype.destroyMenu = function (menu, context) {
250
170
  menu.component.instance._state = 'exit';
251
171
  if (menu.component.instance.lazy) {
252
172
  menu.component.instance._animationDone
@@ -265,36 +185,15 @@ var ContextMenuService = /** @class */ (function () {
265
185
  }
266
186
  menu.menuClose.next();
267
187
  };
268
- /**
269
- * @param {?} menu
270
- * @param {?} menuIndex
271
- * @param {?=} context
272
- * @return {?}
273
- */
274
- ContextMenuService.prototype.close = /**
275
- * @param {?} menu
276
- * @param {?} menuIndex
277
- * @param {?=} context
278
- * @return {?}
279
- */
280
- function (menu, menuIndex, context) {
188
+ ContextMenuService.prototype.close = function (menu, menuIndex, context) {
281
189
  this.destroyMenu(menu, context);
282
190
  this.menus.splice(menuIndex, 1);
283
191
  };
284
- /**
285
- * @param {?} $event
286
- * @return {?}
287
- */
288
- ContextMenuService.prototype.checkOutsideClick = /**
289
- * @param {?} $event
290
- * @return {?}
291
- */
292
- function ($event) {
192
+ ContextMenuService.prototype.checkOutsideClick = function ($event) {
293
193
  var e_1, _a;
294
194
  try {
295
195
  for (var _b = __values(this.menus), _c = _b.next(); !_c.done; _c = _b.next()) {
296
196
  var m = _c.value;
297
- /** @type {?} */
298
197
  var clickedInside = m.component.location.nativeElement.contains($event.target);
299
198
  if (clickedInside) {
300
199
  $event.preventDefault();
@@ -312,29 +211,18 @@ var ContextMenuService = /** @class */ (function () {
312
211
  }
313
212
  this.closeAll();
314
213
  };
315
- /**
316
- * @param {?} id
317
- * @return {?}
318
- */
319
- ContextMenuService.prototype.closeSubMenu = /**
320
- * @param {?} id
321
- * @return {?}
322
- */
323
- function (id) {
324
- /** @type {?} */
214
+ ContextMenuService.prototype.closeSubMenu = function (id) {
325
215
  var menuIndex = this.menus.findIndex(function (n) { return n.id === id; });
326
216
  if (menuIndex === -1 || menuIndex !== this.menus.length - 1) {
327
217
  return;
328
218
  }
329
219
  // make sure we can close the current menu
330
- /** @type {?} */
331
220
  var menu = this.menus[menuIndex];
332
221
  if (menu.isMenuHovered.getValue() || menu.isTriggerHovered.getValue()) {
333
222
  return;
334
223
  }
335
224
  // close all menus up if possible
336
225
  for (var index = this.menus.length - 1; index >= 1; index--) {
337
- /** @type {?} */
338
226
  var m = this.menus[index];
339
227
  if (!m.isMenuHovered.getValue() && !m.isTriggerHovered.getValue()) {
340
228
  this.close(m, index);
@@ -344,53 +232,44 @@ var ContextMenuService = /** @class */ (function () {
344
232
  }
345
233
  }
346
234
  };
347
- ContextMenuService.decorators = [
348
- { type: Injectable, args: [{ providedIn: 'root' },] }
349
- ];
350
- /** @nocollapse */
351
235
  ContextMenuService.ctorParameters = function () { return [
352
236
  { type: Overlay },
353
237
  { type: ScrollStrategyOptions },
354
238
  { type: Injector }
355
239
  ]; };
356
- /** @nocollapse */ ContextMenuService.ngInjectableDef = defineInjectable({ factory: function ContextMenuService_Factory() { return new ContextMenuService(inject(Overlay), inject(ScrollStrategyOptions), inject(INJECTOR)); }, token: ContextMenuService, providedIn: "root" });
240
+ ContextMenuService.ɵprov = ɵɵdefineInjectable({ factory: function ContextMenuService_Factory() { return new ContextMenuService(ɵɵinject(Overlay), ɵɵinject(ScrollStrategyOptions), ɵɵinject(INJECTOR)); }, token: ContextMenuService, providedIn: "root" });
241
+ ContextMenuService = __decorate([
242
+ Injectable({ providedIn: 'root' })
243
+ ], ContextMenuService);
357
244
  return ContextMenuService;
358
245
  }());
359
246
 
360
- /**
361
- * @fileoverview added by tsickle
362
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
363
- */
364
247
  var ContextMenuTriggerDirective = /** @class */ (function () {
365
248
  function ContextMenuTriggerDirective(contextMenuService) {
366
249
  this.contextMenuService = contextMenuService;
367
250
  this.holdToDisplay = 1000;
368
251
  this.menuAction = new EventEmitter();
369
252
  this.menuClose = new EventEmitter();
253
+ this.beforeOpen = new EventEmitter();
370
254
  this.visible = false;
371
255
  }
372
- /**
373
- * @param {?} $event
374
- * @return {?}
375
- */
376
- ContextMenuTriggerDirective.prototype.handleMenu = /**
377
- * @param {?} $event
378
- * @return {?}
379
- */
380
- function ($event) {
256
+ ContextMenuTriggerDirective.prototype.handleMenu = function ($event) {
257
+ var preventOpen = false;
258
+ this.beforeOpen.emit({
259
+ menuContext: this.menuContext,
260
+ event: $event,
261
+ preventOpen: function () {
262
+ preventOpen = true;
263
+ },
264
+ });
265
+ if (preventOpen) {
266
+ return;
267
+ }
381
268
  $event.preventDefault();
382
269
  this.menu = this.contextMenuService.show($event, this.contextMenuTrigger, this.menuContext, this.menuClose, this.menuAction);
383
270
  this.visible = true;
384
271
  };
385
- /**
386
- * @param {?} $event
387
- * @return {?}
388
- */
389
- ContextMenuTriggerDirective.prototype.handleMouseDown = /**
390
- * @param {?} $event
391
- * @return {?}
392
- */
393
- function ($event) {
272
+ ContextMenuTriggerDirective.prototype.handleMouseDown = function ($event) {
394
273
  var _this = this;
395
274
  if (this.holdToDisplay >= 0) {
396
275
  $event.stopPropagation();
@@ -399,61 +278,55 @@ var ContextMenuTriggerDirective = /** @class */ (function () {
399
278
  this.mouseDownTimeoutId = setTimeout(function () { return _this.handleMenu($event); }, this.holdToDisplay);
400
279
  }
401
280
  };
402
- /**
403
- * @return {?}
404
- */
405
- ContextMenuTriggerDirective.prototype.handleMouseUp = /**
406
- * @return {?}
407
- */
408
- function () {
281
+ ContextMenuTriggerDirective.prototype.handleMouseUp = function () {
409
282
  clearTimeout(this.mouseDownTimeoutId);
410
283
  };
411
- /**
412
- * @return {?}
413
- */
414
- ContextMenuTriggerDirective.prototype.ngOnInit = /**
415
- * @return {?}
416
- */
417
- function () {
284
+ ContextMenuTriggerDirective.prototype.ngOnInit = function () {
418
285
  var _this = this;
419
- this.sub = this.menuClose.subscribe(function () { return _this.visible = false; });
286
+ this.sub = this.menuClose.subscribe(function () { return (_this.visible = false); });
420
287
  };
421
- /**
422
- * @return {?}
423
- */
424
- ContextMenuTriggerDirective.prototype.ngOnDestroy = /**
425
- * @return {?}
426
- */
427
- function () {
288
+ ContextMenuTriggerDirective.prototype.ngOnDestroy = function () {
428
289
  this.sub.unsubscribe();
429
290
  };
430
- ContextMenuTriggerDirective.decorators = [
431
- { type: Directive, args: [{
432
- selector: '[contextMenuTrigger]',
433
- exportAs: 'contextMenuTrigger',
434
- },] }
435
- ];
436
- /** @nocollapse */
437
291
  ContextMenuTriggerDirective.ctorParameters = function () { return [
438
292
  { type: ContextMenuService }
439
293
  ]; };
440
- ContextMenuTriggerDirective.propDecorators = {
441
- contextMenuTrigger: [{ type: Input }],
442
- menuContext: [{ type: Input }],
443
- holdToDisplay: [{ type: Input }],
444
- menuAction: [{ type: Output }],
445
- menuClose: [{ type: Output }],
446
- handleMenu: [{ type: HostListener, args: ['contextmenu', ['$event'],] }],
447
- handleMouseDown: [{ type: HostListener, args: ['touchstart', ['$event'],] }],
448
- handleMouseUp: [{ type: HostListener, args: ['touchend',] }]
449
- };
294
+ __decorate([
295
+ Input()
296
+ ], ContextMenuTriggerDirective.prototype, "contextMenuTrigger", void 0);
297
+ __decorate([
298
+ Input()
299
+ ], ContextMenuTriggerDirective.prototype, "menuContext", void 0);
300
+ __decorate([
301
+ Input()
302
+ ], ContextMenuTriggerDirective.prototype, "holdToDisplay", void 0);
303
+ __decorate([
304
+ Output()
305
+ ], ContextMenuTriggerDirective.prototype, "menuAction", void 0);
306
+ __decorate([
307
+ Output()
308
+ ], ContextMenuTriggerDirective.prototype, "menuClose", void 0);
309
+ __decorate([
310
+ Output()
311
+ ], ContextMenuTriggerDirective.prototype, "beforeOpen", void 0);
312
+ __decorate([
313
+ HostListener('contextmenu', ['$event'])
314
+ ], ContextMenuTriggerDirective.prototype, "handleMenu", null);
315
+ __decorate([
316
+ HostListener('touchstart', ['$event'])
317
+ ], ContextMenuTriggerDirective.prototype, "handleMouseDown", null);
318
+ __decorate([
319
+ HostListener('touchend')
320
+ ], ContextMenuTriggerDirective.prototype, "handleMouseUp", null);
321
+ ContextMenuTriggerDirective = __decorate([
322
+ Directive({
323
+ selector: '[contextMenuTrigger]',
324
+ exportAs: 'contextMenuTrigger',
325
+ })
326
+ ], ContextMenuTriggerDirective);
450
327
  return ContextMenuTriggerDirective;
451
328
  }());
452
329
 
453
- /**
454
- * @fileoverview added by tsickle
455
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
456
- */
457
330
  var ContextSubmenuTriggerDirective = /** @class */ (function () {
458
331
  function ContextSubmenuTriggerDirective(contextMenuService) {
459
332
  var _this = this;
@@ -467,31 +340,15 @@ var ContextSubmenuTriggerDirective = /** @class */ (function () {
467
340
  // get current level
468
341
  setTimeout(function () { return (_this.level = _this.contextMenuService.getCurrentLevel()); });
469
342
  }
470
- /**
471
- * @param {?} $event
472
- * @return {?}
473
- */
474
- ContextSubmenuTriggerDirective.prototype.handleSubMenuClick = /**
475
- * @param {?} $event
476
- * @return {?}
477
- */
478
- function ($event) {
479
- event.preventDefault();
480
- event.stopPropagation();
343
+ ContextSubmenuTriggerDirective.prototype.handleSubMenuClick = function ($event) {
344
+ $event.preventDefault();
345
+ $event.stopPropagation();
481
346
  clearTimeout(this.opentimer);
482
347
  clearTimeout(this.closetimer);
483
348
  this.menu = this.contextMenuService.show($event, this.contextSubmenuTrigger, this.menuContext, this.menuClose, this.menuAction, true, this.level);
484
349
  this.visible = true;
485
350
  };
486
- /**
487
- * @param {?} $event
488
- * @return {?}
489
- */
490
- ContextSubmenuTriggerDirective.prototype.handleSubMenuEnter = /**
491
- * @param {?} $event
492
- * @return {?}
493
- */
494
- function ($event) {
351
+ ContextSubmenuTriggerDirective.prototype.handleSubMenuEnter = function ($event) {
495
352
  var _this = this;
496
353
  if (this.menu) {
497
354
  this.menu.isTriggerHovered.next(true);
@@ -506,15 +363,7 @@ var ContextSubmenuTriggerDirective = /** @class */ (function () {
506
363
  /**
507
364
  * submenu hides after cursor has exited for a period of time
508
365
  */
509
- /**
510
- * submenu hides after cursor has exited for a period of time
511
- * @return {?}
512
- */
513
- ContextSubmenuTriggerDirective.prototype.handleSubMenuExit = /**
514
- * submenu hides after cursor has exited for a period of time
515
- * @return {?}
516
- */
517
- function () {
366
+ ContextSubmenuTriggerDirective.prototype.handleSubMenuExit = function () {
518
367
  var _this = this;
519
368
  clearTimeout(this.opentimer);
520
369
  if (this.menu) {
@@ -532,77 +381,64 @@ var ContextSubmenuTriggerDirective = /** @class */ (function () {
532
381
  /**
533
382
  * if overwritten make sure to clear timeouts
534
383
  */
535
- /**
536
- * if overwritten make sure to clear timeouts
537
- * @return {?}
538
- */
539
- ContextSubmenuTriggerDirective.prototype.ngOnDestroy = /**
540
- * if overwritten make sure to clear timeouts
541
- * @return {?}
542
- */
543
- function () {
384
+ ContextSubmenuTriggerDirective.prototype.ngOnDestroy = function () {
544
385
  clearTimeout(this.opentimer);
545
386
  clearTimeout(this.closetimer);
546
387
  };
547
- ContextSubmenuTriggerDirective.decorators = [
548
- { type: Directive, args: [{ selector: '[contextSubmenuTrigger]' },] }
549
- ];
550
- /** @nocollapse */
551
388
  ContextSubmenuTriggerDirective.ctorParameters = function () { return [
552
389
  { type: ContextMenuService }
553
390
  ]; };
554
- ContextSubmenuTriggerDirective.propDecorators = {
555
- hoverDelay: [{ type: Input }],
556
- openDelay: [{ type: Input }],
557
- contextSubmenuTrigger: [{ type: Input }],
558
- menuContext: [{ type: Input }],
559
- menuAction: [{ type: Output }],
560
- menuClose: [{ type: Output }],
561
- handleSubMenuClick: [{ type: HostListener, args: ['click', ['$event', 'true'],] }],
562
- handleSubMenuEnter: [{ type: HostListener, args: ['mouseover', ['$event'],] }],
563
- handleSubMenuExit: [{ type: HostListener, args: ['mouseout', ['$event'],] }]
564
- };
391
+ __decorate([
392
+ Input()
393
+ ], ContextSubmenuTriggerDirective.prototype, "hoverDelay", void 0);
394
+ __decorate([
395
+ Input()
396
+ ], ContextSubmenuTriggerDirective.prototype, "openDelay", void 0);
397
+ __decorate([
398
+ Input()
399
+ ], ContextSubmenuTriggerDirective.prototype, "contextSubmenuTrigger", void 0);
400
+ __decorate([
401
+ Input()
402
+ ], ContextSubmenuTriggerDirective.prototype, "menuContext", void 0);
403
+ __decorate([
404
+ Output()
405
+ ], ContextSubmenuTriggerDirective.prototype, "menuAction", void 0);
406
+ __decorate([
407
+ Output()
408
+ ], ContextSubmenuTriggerDirective.prototype, "menuClose", void 0);
409
+ __decorate([
410
+ HostListener('click', ['$event'])
411
+ ], ContextSubmenuTriggerDirective.prototype, "handleSubMenuClick", null);
412
+ __decorate([
413
+ HostListener('mouseover', ['$event'])
414
+ ], ContextSubmenuTriggerDirective.prototype, "handleSubMenuEnter", null);
415
+ __decorate([
416
+ HostListener('mouseout')
417
+ ], ContextSubmenuTriggerDirective.prototype, "handleSubMenuExit", null);
418
+ ContextSubmenuTriggerDirective = __decorate([
419
+ Directive({ selector: '[contextSubmenuTrigger]' })
420
+ ], ContextSubmenuTriggerDirective);
565
421
  return ContextSubmenuTriggerDirective;
566
422
  }());
567
423
 
568
- /**
569
- * @fileoverview added by tsickle
570
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
571
- */
572
424
  var MenuComponent = /** @class */ (function () {
573
425
  function MenuComponent(menuPackage, contextMenuService) {
574
426
  this.menuPackage = menuPackage;
575
427
  this.contextMenuService = contextMenuService;
576
- /**
577
- * State of the dialog animation.
578
- */
428
+ /** State of the dialog animation. */
579
429
  this._state = 'enter';
580
430
  this._animationDone = new Subject();
581
- /**
582
- * set lazy to False if you do not have animations
583
- */
431
+ /** set lazy to False if you do not have animations */
584
432
  this.lazy = true;
585
433
  }
586
- /**
587
- * @return {?}
588
- */
589
- MenuComponent.prototype.handleMouseover = /**
590
- * @return {?}
591
- */
592
- function () {
434
+ MenuComponent.prototype.handleMouseover = function () {
593
435
  if (!this.menuPackage.menu.submenu) {
594
436
  return;
595
437
  }
596
438
  this.menuPackage.menu.isMenuHovered.next(true);
597
439
  clearTimeout(this.closetimer);
598
440
  };
599
- /**
600
- * @return {?}
601
- */
602
- MenuComponent.prototype.handleMouseleave = /**
603
- * @return {?}
604
- */
605
- function () {
441
+ MenuComponent.prototype.handleMouseleave = function () {
606
442
  var _this = this;
607
443
  if (!this.menuPackage.menu.submenu) {
608
444
  return;
@@ -612,81 +448,58 @@ var MenuComponent = /** @class */ (function () {
612
448
  _this.contextMenuService.closeSubMenu(_this.menuPackage.menu.id);
613
449
  }, 500);
614
450
  };
615
- /**
616
- * @param {?} $event
617
- * @return {?}
618
- */
619
- MenuComponent.prototype.handleWindowClick = /**
620
- * @param {?} $event
621
- * @return {?}
622
- */
623
- function ($event) {
451
+ MenuComponent.prototype.handleWindowClick = function ($event) {
624
452
  this.contextMenuService.checkOutsideClick($event);
625
453
  };
626
454
  /** Callback that is invoked when the menu animation completes. */
627
- /**
628
- * Callback that is invoked when the menu animation completes.
629
- * @param {?} event
630
- * @return {?}
631
- */
632
- MenuComponent.prototype._onAnimationDone = /**
633
- * Callback that is invoked when the menu animation completes.
634
- * @param {?} event
635
- * @return {?}
636
- */
637
- function (event) {
455
+ MenuComponent.prototype._onAnimationDone = function (event) {
638
456
  this._animationDone.next(event);
639
457
  };
640
- MenuComponent.decorators = [
641
- { type: Component, args: [{
642
- selector: 'app-menu',
643
- template: ""
644
- }] }
645
- ];
646
- /** @nocollapse */
647
458
  MenuComponent.ctorParameters = function () { return [
648
459
  { type: MenuPackage },
649
460
  { type: ContextMenuService }
650
461
  ]; };
651
- MenuComponent.propDecorators = {
652
- handleMouseover: [{ type: HostListener, args: ['mouseover',] }],
653
- handleMouseleave: [{ type: HostListener, args: ['mouseleave',] }],
654
- handleWindowClick: [{ type: HostListener, args: ['document:click', ['$event'],] }]
655
- };
462
+ __decorate([
463
+ HostListener('mouseover')
464
+ ], MenuComponent.prototype, "handleMouseover", null);
465
+ __decorate([
466
+ HostListener('mouseleave')
467
+ ], MenuComponent.prototype, "handleMouseleave", null);
468
+ __decorate([
469
+ HostListener('document:click', ['$event'])
470
+ ], MenuComponent.prototype, "handleWindowClick", null);
471
+ __decorate([
472
+ HostListener('@menu.done', ['$event'])
473
+ ], MenuComponent.prototype, "_onAnimationDone", null);
474
+ MenuComponent = __decorate([
475
+ Component({
476
+ selector: 'app-menu',
477
+ template: ""
478
+ })
479
+ ], MenuComponent);
656
480
  return MenuComponent;
657
481
  }());
658
482
 
659
- /**
660
- * @fileoverview added by tsickle
661
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
662
- */
663
483
  var ContextMenuModule = /** @class */ (function () {
664
484
  function ContextMenuModule() {
665
485
  }
666
- ContextMenuModule.decorators = [
667
- { type: NgModule, args: [{
668
- declarations: [
669
- ContextMenuTriggerDirective,
670
- ContextSubmenuTriggerDirective,
671
- MenuComponent,
672
- ],
673
- exports: [ContextMenuTriggerDirective, ContextSubmenuTriggerDirective],
674
- imports: [PortalModule, OverlayModule],
675
- },] }
676
- ];
486
+ ContextMenuModule = __decorate([
487
+ NgModule({
488
+ declarations: [
489
+ ContextMenuTriggerDirective,
490
+ ContextSubmenuTriggerDirective,
491
+ MenuComponent,
492
+ ],
493
+ exports: [ContextMenuTriggerDirective, ContextSubmenuTriggerDirective],
494
+ imports: [PortalModule, OverlayModule],
495
+ })
496
+ ], ContextMenuModule);
677
497
  return ContextMenuModule;
678
498
  }());
679
499
 
680
500
  /**
681
- * @fileoverview added by tsickle
682
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
501
+ * Generated bundle index. Do not edit.
683
502
  */
684
503
 
685
- /**
686
- * @fileoverview added by tsickle
687
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
688
- */
689
-
690
- export { ContextMenuModule, MenuPackage, MenuInjector, MenuComponent, ContextSubmenuTriggerDirective, ContextMenuTriggerDirective, ContextMenuService };
691
-
692
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RybC1uZ3gtcmlnaHRjbGljay5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGN0cmwvbmd4LXJpZ2h0Y2xpY2svY29udGV4dC1tZW51LWluamVjdG9yLnRzIiwibmc6Ly9AY3RybC9uZ3gtcmlnaHRjbGljay9jb250ZXh0LW1lbnUuc2VydmljZS50cyIsIm5nOi8vQGN0cmwvbmd4LXJpZ2h0Y2xpY2svY29udGV4dC1tZW51LXRyaWdnZXIuZGlyZWN0aXZlLnRzIiwibmc6Ly9AY3RybC9uZ3gtcmlnaHRjbGljay9jb250ZXh0LXN1Ym1lbnUtdHJpZ2dlci5kaXJlY3RpdmUudHMiLCJuZzovL0BjdHJsL25neC1yaWdodGNsaWNrL21lbnUuY29tcG9uZW50LnRzIiwibmc6Ly9AY3RybC9uZ3gtcmlnaHRjbGljay9jb250ZXh0LW1lbnUubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBUeXBlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0RmxhZ3MgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aXZlQ29udGV4dE1lbnVTdWIgfSBmcm9tICcuL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIE1lbnVQYWNrYWdlIHtcbiAgY29uc3RydWN0b3IocHVibGljIG1lbnU6IEFjdGl2ZUNvbnRleHRNZW51U3ViLCBwdWJsaWMgY29udGV4dDogYW55KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgTWVudUluamVjdG9yIGltcGxlbWVudHMgSW5qZWN0b3Ige1xuICBfbWVudUNvbnRleHQ6IE1lbnVQYWNrYWdlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hY3RpdmVDb250ZXh0TWVudTogQWN0aXZlQ29udGV4dE1lbnVTdWIsXG4gICAgcHJpdmF0ZSBfcGFyZW50SW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY29udGV4dDogYW55LFxuICApIHtcbiAgICB0aGlzLl9tZW51Q29udGV4dCA9IG5ldyBNZW51UGFja2FnZShfYWN0aXZlQ29udGV4dE1lbnUsIGNvbnRleHQpO1xuICB9XG5cbiAgZ2V0PFQ+KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogVCB8IE1lbnVQYWNrYWdlIHtcbiAgICBpZiAodG9rZW4gPT09IE1lbnVQYWNrYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbWVudUNvbnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wYXJlbnRJbmplY3Rvci5nZXQ8VD4odG9rZW4sIG5vdEZvdW5kVmFsdWUsIGZsYWdzKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVJlZixcbiAgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1lbnVJbmplY3RvciB9IGZyb20gJy4vY29udGV4dC1tZW51LWluamVjdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVDb250ZXh0TWVudVN1YiB7XG4gIGlkOiBudW1iZXI7XG4gIGlzVHJpZ2dlckhvdmVyZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgaXNNZW51SG92ZXJlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBzdWJtZW51OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVDb250ZXh0TWVudSBleHRlbmRzIEFjdGl2ZUNvbnRleHRNZW51U3ViIHtcbiAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgY29tcG9uZW50OiBhbnk7XG4gIG1lbnVDbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICBtZW51QWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55Pjtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudVNlcnZpY2Uge1xuICBtZW51czogQWN0aXZlQ29udGV4dE1lbnVbXSA9IFtdO1xuICBpZCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICkge31cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtICRldmVudCB0cmlnZ2VyaW5nIGV2ZW50XG4gICAqIEBwYXJhbSBtZW51Q29tcG9uZW50IHRoZSBjb21wb25lbnQgdG8gYmUgc2hvd25cbiAgICogQHBhcmFtIHN1Ym1lbnUgaXMgYSBtZW51IHdpdGhpbiBhIG1lbnVcbiAgICogQHBhcmFtIGxldmVsIGlmIHN1Ym1lbnUsIHdoYXQgbGV2ZWxcbiAgICovXG4gIHNob3coXG4gICAgJGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIG1lbnVDb21wb25lbnQsXG4gICAgY29udGV4dDogYW55LFxuICAgIG1lbnVDbG9zZTogRXZlbnRFbWl0dGVyPGFueT4sXG4gICAgbWVudUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4sXG4gICAgc3VibWVudSA9IGZhbHNlLFxuICAgIGxldmVsPzogbnVtYmVyLFxuICApOiBBY3RpdmVDb250ZXh0TWVudSB7XG4gICAgbGV0IHRhcmdldDogYW55O1xuICAgIGlmICghc3VibWVudSkge1xuICAgICAgdGhpcy5jbG9zZUFsbCgpO1xuICAgICAgdGFyZ2V0ID0ge1xuICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6ICgpOiBDbGllbnRSZWN0ID0+ICh7XG4gICAgICAgICAgYm90dG9tOiAkZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgbGVmdDogJGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgcmlnaHQ6ICRldmVudC5jbGllbnRYLFxuICAgICAgICAgIHRvcDogJGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2xvc2Ugb3RoZXIgc3VibWVudXNcbiAgICAgIHRoaXMuY2xvc2VBbGwodW5kZWZpbmVkLCBsZXZlbCk7XG4gICAgICB0YXJnZXQgPSAkZXZlbnQudGFyZ2V0O1xuICAgIH1cbiAgICBjb25zdCBlbCA9IG5ldyBFbGVtZW50UmVmKHRhcmdldCk7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpO1xuXG4gICAgaWYgKCFzdWJtZW51KSB7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgfVxuICAgIGNvbnN0IHQ6IEFjdGl2ZUNvbnRleHRNZW51U3ViID0ge1xuICAgICAgc3VibWVudSxcbiAgICAgIGlkOiB0aGlzLmlkKyssXG4gICAgICBpc01lbnVIb3ZlcmVkOiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKSxcbiAgICAgIGlzVHJpZ2dlckhvdmVyZWQ6IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpLFxuICAgIH07XG4gICAgY29uc3QgbWVudUluamVjdG9yID0gbmV3IE1lbnVJbmplY3Rvcih0LCB0aGlzLl9pbmplY3RvciwgY29udGV4dCk7XG4gICAgY29uc3QgY29tcG9uZW50UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIG1lbnVDb21wb25lbnQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtZW51SW5qZWN0b3IsXG4gICAgKTtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgcGFuZWxDbGFzczogJ25neC1jb250ZXh0bWVudScsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneS5jbG9zZSgpLFxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IG92ZXJsYXlSZWYuYXR0YWNoPGFueT4oY29tcG9uZW50UG9ydGFsKTtcbiAgICBjb25zdCByZXMgPSB7IG92ZXJsYXlSZWYsIGNvbXBvbmVudCwgLi4udCwgbWVudUNsb3NlLCBtZW51QWN0aW9uIH07XG4gICAgdGhpcy5tZW51cy5wdXNoKHJlcyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBnZXRDdXJyZW50TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudXMubGVuZ3RoO1xuICB9XG4gIGNsb3NlQWxsKGNvbnRleHQ/OiBhbnksIGlkeCA9IDApIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IGlkeDsgaW5kZXggPCB0aGlzLm1lbnVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbWVudSA9IHRoaXMubWVudXNbaW5kZXhdO1xuICAgICAgdGhpcy5kZXN0cm95TWVudShtZW51LCBjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5tZW51cy5zcGxpY2UoaWR4LCB0aGlzLm1lbnVzLmxlbmd0aCk7XG4gIH1cbiAgZGVzdHJveU1lbnUobWVudTogQWN0aXZlQ29udGV4dE1lbnUsIGNvbnRleHQ/OiBhbnkpIHtcbiAgICBtZW51LmNvbXBvbmVudC5pbnN0YW5jZS5fc3RhdGUgPSAnZXhpdCc7XG4gICAgaWYgKG1lbnUuY29tcG9uZW50Lmluc3RhbmNlLmxhenkpIHtcbiAgICAgIG1lbnUuY29tcG9uZW50Lmluc3RhbmNlLl9hbmltYXRpb25Eb25lXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoZXZlbnQ6IGFueSkgPT4gZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG1lbnUub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICBtZW51Lm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVudS5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgbWVudS5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIG1lbnUubWVudUFjdGlvbi5uZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgICBtZW51Lm1lbnVDbG9zZS5uZXh0KCk7XG4gIH1cbiAgY2xvc2UobWVudTogQWN0aXZlQ29udGV4dE1lbnUsIG1lbnVJbmRleDogbnVtYmVyLCBjb250ZXh0PzogYW55KSB7XG4gICAgdGhpcy5kZXN0cm95TWVudShtZW51LCBjb250ZXh0KTtcbiAgICB0aGlzLm1lbnVzLnNwbGljZShtZW51SW5kZXgsIDEpO1xuICB9XG4gIGNoZWNrT3V0c2lkZUNsaWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLm1lbnVzKSB7XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gbS5jb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhcbiAgICAgICAgJGV2ZW50LnRhcmdldCxcbiAgICAgICk7XG4gICAgICBpZiAoY2xpY2tlZEluc2lkZSkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VBbGwoKTtcbiAgfVxuICBjbG9zZVN1Yk1lbnUoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1lbnVJbmRleCA9IHRoaXMubWVudXMuZmluZEluZGV4KG4gPT4gbi5pZCA9PT0gaWQpO1xuICAgIGlmIChtZW51SW5kZXggPT09IC0xIHx8IG1lbnVJbmRleCAhPT0gdGhpcy5tZW51cy5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIG1ha2Ugc3VyZSB3ZSBjYW4gY2xvc2UgdGhlIGN1cnJlbnQgbWVudVxuICAgIGNvbnN0IG1lbnUgPSB0aGlzLm1lbnVzW21lbnVJbmRleF07XG4gICAgaWYgKG1lbnUuaXNNZW51SG92ZXJlZC5nZXRWYWx1ZSgpIHx8IG1lbnUuaXNUcmlnZ2VySG92ZXJlZC5nZXRWYWx1ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGNsb3NlIGFsbCBtZW51cyB1cCBpZiBwb3NzaWJsZVxuICAgIGZvciAobGV0IGluZGV4ID0gdGhpcy5tZW51cy5sZW5ndGggLSAxOyBpbmRleCA+PSAxOyBpbmRleC0tKSB7XG4gICAgICBjb25zdCBtID0gdGhpcy5tZW51c1tpbmRleF07XG4gICAgICBpZiAoIW0uaXNNZW51SG92ZXJlZC5nZXRWYWx1ZSgpICYmICFtLmlzVHJpZ2dlckhvdmVyZWQuZ2V0VmFsdWUoKSkge1xuICAgICAgICB0aGlzLmNsb3NlKG0sIGluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnRleHRNZW51U2VydmljZSwgQWN0aXZlQ29udGV4dE1lbnUgfSBmcm9tICcuL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NvbnRleHRNZW51VHJpZ2dlcl0nLFxuICBleHBvcnRBczogJ2NvbnRleHRNZW51VHJpZ2dlcicsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51VHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KCkgY29udGV4dE1lbnVUcmlnZ2VyOiBhbnk7XG4gIEBJbnB1dCgpIG1lbnVDb250ZXh0OiBhbnk7XG4gIEBJbnB1dCgpIGhvbGRUb0Rpc3BsYXkgPSAxMDAwO1xuICBAT3V0cHV0KCkgbWVudUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbWVudUNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBtZW51OiBBY3RpdmVDb250ZXh0TWVudTtcbiAgdmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIG1vdXNlRG93blRpbWVvdXRJZDogYW55O1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSlcbiAgaGFuZGxlTWVudSgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm1lbnUgPSB0aGlzLmNvbnRleHRNZW51U2VydmljZS5zaG93KFxuICAgICAgJGV2ZW50LFxuICAgICAgdGhpcy5jb250ZXh0TWVudVRyaWdnZXIsXG4gICAgICB0aGlzLm1lbnVDb250ZXh0LFxuICAgICAgdGhpcy5tZW51Q2xvc2UsXG4gICAgICB0aGlzLm1lbnVBY3Rpb24sXG4gICAgKTtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZU1vdXNlRG93bigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmhvbGRUb0Rpc3BsYXkgPj0gMCkge1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgJGV2ZW50LmNsaWVudFkgPSAkZXZlbnQudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgJGV2ZW50LmNsaWVudFggPSAkZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuXG4gICAgICB0aGlzLm1vdXNlRG93blRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMuaGFuZGxlTWVudSgkZXZlbnQpLFxuICAgICAgICB0aGlzLmhvbGRUb0Rpc3BsYXksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJylcbiAgaGFuZGxlTW91c2VVcCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5tb3VzZURvd25UaW1lb3V0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YiA9IHRoaXMubWVudUNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnZpc2libGUgPSBmYWxzZSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQWN0aXZlQ29udGV4dE1lbnUsXG4gIENvbnRleHRNZW51U2VydmljZSxcbn0gZnJvbSAnLi9jb250ZXh0LW1lbnUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjb250ZXh0U3VibWVudVRyaWdnZXJdJyB9KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTdWJtZW51VHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGhvdmVyRGVsYXkgPSA1MDA7XG4gIEBJbnB1dCgpIG9wZW5EZWxheSA9IDIwMDtcbiAgQElucHV0KCkgY29udGV4dFN1Ym1lbnVUcmlnZ2VyOiBhbnk7XG4gIEBJbnB1dCgpIG1lbnVDb250ZXh0OiBhbnk7XG4gIEBPdXRwdXQoKSBtZW51QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtZW51Q2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIG1lbnU6IEFjdGl2ZUNvbnRleHRNZW51O1xuICBvcGVudGltZXI6IGFueTtcbiAgY2xvc2V0aW1lcjogYW55O1xuICB2aXNpYmxlID0gZmFsc2U7XG4gIGxldmVsID0gMTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50JywgJ3RydWUnXSlcbiAgaGFuZGxlU3ViTWVudUNsaWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMub3BlbnRpbWVyKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5jbG9zZXRpbWVyKTtcbiAgICB0aGlzLm1lbnUgPSB0aGlzLmNvbnRleHRNZW51U2VydmljZS5zaG93KFxuICAgICAgJGV2ZW50LFxuICAgICAgdGhpcy5jb250ZXh0U3VibWVudVRyaWdnZXIsXG4gICAgICB0aGlzLm1lbnVDb250ZXh0LFxuICAgICAgdGhpcy5tZW51Q2xvc2UsXG4gICAgICB0aGlzLm1lbnVBY3Rpb24sXG4gICAgICB0cnVlLFxuICAgICAgdGhpcy5sZXZlbCxcbiAgICApO1xuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVTdWJNZW51RW50ZXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMubWVudSkge1xuICAgICAgdGhpcy5tZW51LmlzVHJpZ2dlckhvdmVyZWQubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2V0aW1lcik7XG4gICAgdGhpcy5vcGVudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWVudSA9IHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLnNob3coXG4gICAgICAgICRldmVudCxcbiAgICAgICAgdGhpcy5jb250ZXh0U3VibWVudVRyaWdnZXIsXG4gICAgICAgIHRoaXMubWVudUNvbnRleHQsXG4gICAgICAgIHRoaXMubWVudUNsb3NlLFxuICAgICAgICB0aGlzLm1lbnVBY3Rpb24sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRoaXMubGV2ZWwsXG4gICAgICApO1xuICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlbnRpbWVyID0gbnVsbDtcbiAgICB9LCB0aGlzLm9wZW5EZWxheSk7XG4gIH1cblxuICAvKipcbiAgICogc3VibWVudSBoaWRlcyBhZnRlciBjdXJzb3IgaGFzIGV4aXRlZCBmb3IgYSBwZXJpb2Qgb2YgdGltZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnLCBbJyRldmVudCddKVxuICBoYW5kbGVTdWJNZW51RXhpdCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVudGltZXIpO1xuICAgIGlmICh0aGlzLm1lbnUpIHtcbiAgICAgIHRoaXMubWVudS5pc1RyaWdnZXJIb3ZlcmVkLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLmNsb3NldGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1lbnUpIHtcbiAgICAgICAgdGhpcy5tZW51LmlzVHJpZ2dlckhvdmVyZWQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNsb3NlU3ViTWVudSh0aGlzLm1lbnUuaWQpO1xuICAgICAgICB0aGlzLm1lbnUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9LCB0aGlzLmhvdmVyRGVsYXkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSkge1xuICAgIC8vIGdldCBjdXJyZW50IGxldmVsXG4gICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5sZXZlbCA9IHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmdldEN1cnJlbnRMZXZlbCgpKSk7XG4gIH1cblxuICAvKipcbiAgICogaWYgb3ZlcndyaXR0ZW4gbWFrZSBzdXJlIHRvIGNsZWFyIHRpbWVvdXRzXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVudGltZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmNsb3NldGltZXIpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHsgQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51UGFja2FnZSB9IGZyb20gJy4vY29udGV4dC1tZW51LWluamVjdG9yJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1lbnUnLFxuICB0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQge1xuICAvKiogU3RhdGUgb2YgdGhlIGRpYWxvZyBhbmltYXRpb24uICovXG4gIF9zdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdleGl0JyA9ICdlbnRlcic7XG4gIF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KCk7XG4gIC8qKiBzZXQgbGF6eSB0byBGYWxzZSBpZiB5b3UgZG8gbm90IGhhdmUgYW5pbWF0aW9ucyAqL1xuICBsYXp5ID0gdHJ1ZTtcbiAgY2xvc2V0aW1lcjogYW55O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXG4gIGhhbmRsZU1vdXNlb3ZlcigpIHtcbiAgICBpZiAoIXRoaXMubWVudVBhY2thZ2UubWVudS5zdWJtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVudVBhY2thZ2UubWVudS5pc01lbnVIb3ZlcmVkLm5leHQodHJ1ZSk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2V0aW1lcik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgaGFuZGxlTW91c2VsZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMubWVudVBhY2thZ2UubWVudS5zdWJtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVudVBhY2thZ2UubWVudS5pc01lbnVIb3ZlcmVkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuY2xvc2V0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY2xvc2VTdWJNZW51KHRoaXMubWVudVBhY2thZ2UubWVudS5pZCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlV2luZG93Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY2hlY2tPdXRzaWRlQ2xpY2soJGV2ZW50KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZW51UGFja2FnZTogTWVudVBhY2thZ2UsXG4gICAgcHVibGljIGNvbnRleHRNZW51U2VydmljZTogQ29udGV4dE1lbnVTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqIENhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRoZSBtZW51IGFuaW1hdGlvbiBjb21wbGV0ZXMuICovXG4gIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHsgQ29udGV4dE1lbnVUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGV4dFN1Ym1lbnVUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0LXN1Ym1lbnUtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDb250ZXh0TWVudVRyaWdnZXJEaXJlY3RpdmUsXG4gICAgQ29udGV4dFN1Ym1lbnVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgIE1lbnVDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtDb250ZXh0TWVudVRyaWdnZXJEaXJlY3RpdmUsIENvbnRleHRTdWJtZW51VHJpZ2dlckRpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtQb3J0YWxNb2R1bGUsIE92ZXJsYXlNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudU1vZHVsZSB7fVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX192YWx1ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBSUE7SUFDRSxxQkFBbUIsSUFBMEIsRUFBUyxPQUFZO1FBQS9DLFNBQUksR0FBSixJQUFJLENBQXNCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBSztLQUFJO0lBQ3hFLGtCQUFDO0NBQUEsSUFBQTs7SUFJQyxzQkFDVSxrQkFBd0MsRUFDeEMsZUFBeUIsRUFDekIsT0FBWTtRQUZaLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFDeEMsb0JBQWUsR0FBZixlQUFlLENBQVU7UUFDekIs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
504
+ export { ContextMenuModule, ContextMenuService, ContextMenuTriggerDirective, ContextSubmenuTriggerDirective, MenuComponent, MenuInjector, MenuPackage };
505
+ //# sourceMappingURL=ctrl-ngx-rightclick.js.map