@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,80 +1,47 @@
1
+ import { __decorate } from 'tslib';
2
+ import { ElementRef, Injector, ɵɵdefineInjectable, ɵɵinject, INJECTOR, Injectable, EventEmitter, Input, Output, HostListener, Directive, Component, NgModule } from '@angular/core';
1
3
  import { Overlay, ScrollStrategyOptions, OverlayModule } from '@angular/cdk/overlay';
2
4
  import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
3
- import { ElementRef, Injectable, Injector, NgModule, Component, HostListener, Directive, Input, Output, EventEmitter, defineInjectable, inject, INJECTOR } from '@angular/core';
4
5
  import { BehaviorSubject, Subject } from 'rxjs';
5
6
  import { filter, take } from 'rxjs/operators';
6
7
 
7
- /**
8
- * @fileoverview added by tsickle
9
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10
- */
11
8
  class MenuPackage {
12
- /**
13
- * @param {?} menu
14
- * @param {?} context
15
- */
16
9
  constructor(menu, context) {
17
10
  this.menu = menu;
18
11
  this.context = context;
19
12
  }
20
13
  }
21
14
  class MenuInjector {
22
- /**
23
- * @param {?} _activeContextMenu
24
- * @param {?} _parentInjector
25
- * @param {?} context
26
- */
27
- constructor(_activeContextMenu, _parentInjector, context) {
28
- this._activeContextMenu = _activeContextMenu;
29
- this._parentInjector = _parentInjector;
15
+ constructor(activeContextMenu, parentInjector, context) {
16
+ this.activeContextMenu = activeContextMenu;
17
+ this.parentInjector = parentInjector;
30
18
  this.context = context;
31
- this._menuContext = new MenuPackage(_activeContextMenu, context);
19
+ this.menuContext = new MenuPackage(activeContextMenu, context);
32
20
  }
33
- /**
34
- * @template T
35
- * @param {?} token
36
- * @param {?=} notFoundValue
37
- * @param {?=} flags
38
- * @return {?}
39
- */
40
21
  get(token, notFoundValue, flags) {
41
22
  if (token === MenuPackage) {
42
- return this._menuContext;
23
+ return this.menuContext;
43
24
  }
44
- return this._parentInjector.get(token, notFoundValue, flags);
25
+ return this.parentInjector.get(token, notFoundValue, flags);
45
26
  }
46
27
  }
47
28
 
48
- /**
49
- * @fileoverview added by tsickle
50
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
51
- */
52
- class ContextMenuService {
53
- /**
54
- * @param {?} overlay
55
- * @param {?} scrollStrategy
56
- * @param {?} _injector
57
- */
58
- constructor(overlay, scrollStrategy, _injector) {
29
+ let ContextMenuService = class ContextMenuService {
30
+ constructor(overlay, scrollStrategy, injector) {
59
31
  this.overlay = overlay;
60
32
  this.scrollStrategy = scrollStrategy;
61
- this._injector = _injector;
33
+ this.injector = injector;
62
34
  this.menus = [];
63
35
  this.id = 0;
64
36
  }
65
37
  /**
66
38
  *
67
- * @param {?} $event triggering event
68
- * @param {?} menuComponent the component to be shown
69
- * @param {?} context
70
- * @param {?} menuClose
71
- * @param {?} menuAction
72
- * @param {?=} submenu is a menu within a menu
73
- * @param {?=} level if submenu, what level
74
- * @return {?}
39
+ * @param $event triggering event
40
+ * @param menuComponent the component to be shown
41
+ * @param submenu is a menu within a menu
42
+ * @param level if submenu, what level
75
43
  */
76
44
  show($event, menuComponent, context, menuClose, menuAction, submenu = false, level) {
77
- /** @type {?} */
78
45
  let target;
79
46
  if (!submenu) {
80
47
  this.closeAll();
@@ -94,9 +61,7 @@ class ContextMenuService {
94
61
  this.closeAll(undefined, level);
95
62
  target = $event.target;
96
63
  }
97
- /** @type {?} */
98
64
  const el = new ElementRef(target);
99
- /** @type {?} */
100
65
  const positionStrategy = this.overlay
101
66
  .position()
102
67
  .flexibleConnectedTo(el)
@@ -169,54 +134,34 @@ class ContextMenuService {
169
134
  },
170
135
  ]);
171
136
  }
172
- /** @type {?} */
173
137
  const t = {
174
138
  submenu,
175
139
  id: this.id++,
176
140
  isMenuHovered: new BehaviorSubject(false),
177
141
  isTriggerHovered: new BehaviorSubject(false),
178
142
  };
179
- /** @type {?} */
180
- const menuInjector = new MenuInjector(t, this._injector, context);
181
- /** @type {?} */
143
+ const menuInjector = new MenuInjector(t, this.injector, context);
182
144
  const componentPortal = new ComponentPortal(menuComponent, undefined, menuInjector);
183
- /** @type {?} */
184
145
  const overlayRef = this.overlay.create({
185
146
  positionStrategy,
186
147
  panelClass: 'ngx-contextmenu',
187
148
  scrollStrategy: this.scrollStrategy.close(),
188
149
  });
189
- /** @type {?} */
190
150
  const component = overlayRef.attach(componentPortal);
191
- /** @type {?} */
192
- const res = Object.assign({ overlayRef, component }, t, { menuClose, menuAction });
151
+ const res = Object.assign(Object.assign({ overlayRef, component }, t), { menuClose, menuAction });
193
152
  this.menus.push(res);
194
153
  return res;
195
154
  }
196
- /**
197
- * @return {?}
198
- */
199
155
  getCurrentLevel() {
200
156
  return this.menus.length;
201
157
  }
202
- /**
203
- * @param {?=} context
204
- * @param {?=} idx
205
- * @return {?}
206
- */
207
158
  closeAll(context, idx = 0) {
208
159
  for (let index = idx; index < this.menus.length; index++) {
209
- /** @type {?} */
210
160
  const menu = this.menus[index];
211
161
  this.destroyMenu(menu, context);
212
162
  }
213
163
  this.menus.splice(idx, this.menus.length);
214
164
  }
215
- /**
216
- * @param {?} menu
217
- * @param {?=} context
218
- * @return {?}
219
- */
220
165
  destroyMenu(menu, context) {
221
166
  menu.component.instance._state = 'exit';
222
167
  if (menu.component.instance.lazy) {
@@ -236,23 +181,12 @@ class ContextMenuService {
236
181
  }
237
182
  menu.menuClose.next();
238
183
  }
239
- /**
240
- * @param {?} menu
241
- * @param {?} menuIndex
242
- * @param {?=} context
243
- * @return {?}
244
- */
245
184
  close(menu, menuIndex, context) {
246
185
  this.destroyMenu(menu, context);
247
186
  this.menus.splice(menuIndex, 1);
248
187
  }
249
- /**
250
- * @param {?} $event
251
- * @return {?}
252
- */
253
188
  checkOutsideClick($event) {
254
189
  for (const m of this.menus) {
255
- /** @type {?} */
256
190
  const clickedInside = m.component.location.nativeElement.contains($event.target);
257
191
  if (clickedInside) {
258
192
  $event.preventDefault();
@@ -262,25 +196,18 @@ class ContextMenuService {
262
196
  }
263
197
  this.closeAll();
264
198
  }
265
- /**
266
- * @param {?} id
267
- * @return {?}
268
- */
269
199
  closeSubMenu(id) {
270
- /** @type {?} */
271
200
  const menuIndex = this.menus.findIndex(n => n.id === id);
272
201
  if (menuIndex === -1 || menuIndex !== this.menus.length - 1) {
273
202
  return;
274
203
  }
275
204
  // make sure we can close the current menu
276
- /** @type {?} */
277
205
  const menu = this.menus[menuIndex];
278
206
  if (menu.isMenuHovered.getValue() || menu.isTriggerHovered.getValue()) {
279
207
  return;
280
208
  }
281
209
  // close all menus up if possible
282
210
  for (let index = this.menus.length - 1; index >= 1; index--) {
283
- /** @type {?} */
284
211
  const m = this.menus[index];
285
212
  if (!m.isMenuHovered.getValue() && !m.isTriggerHovered.getValue()) {
286
213
  this.close(m, index);
@@ -290,46 +217,42 @@ class ContextMenuService {
290
217
  }
291
218
  }
292
219
  }
293
- }
294
- ContextMenuService.decorators = [
295
- { type: Injectable, args: [{ providedIn: 'root' },] }
296
- ];
297
- /** @nocollapse */
220
+ };
298
221
  ContextMenuService.ctorParameters = () => [
299
222
  { type: Overlay },
300
223
  { type: ScrollStrategyOptions },
301
224
  { type: Injector }
302
225
  ];
303
- /** @nocollapse */ ContextMenuService.ngInjectableDef = defineInjectable({ factory: function ContextMenuService_Factory() { return new ContextMenuService(inject(Overlay), inject(ScrollStrategyOptions), inject(INJECTOR)); }, token: ContextMenuService, providedIn: "root" });
226
+ ContextMenuService.ɵprov = ɵɵdefineInjectable({ factory: function ContextMenuService_Factory() { return new ContextMenuService(ɵɵinject(Overlay), ɵɵinject(ScrollStrategyOptions), ɵɵinject(INJECTOR)); }, token: ContextMenuService, providedIn: "root" });
227
+ ContextMenuService = __decorate([
228
+ Injectable({ providedIn: 'root' })
229
+ ], ContextMenuService);
304
230
 
305
- /**
306
- * @fileoverview added by tsickle
307
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
308
- */
309
- class ContextMenuTriggerDirective {
310
- /**
311
- * @param {?} contextMenuService
312
- */
231
+ let ContextMenuTriggerDirective = class ContextMenuTriggerDirective {
313
232
  constructor(contextMenuService) {
314
233
  this.contextMenuService = contextMenuService;
315
234
  this.holdToDisplay = 1000;
316
235
  this.menuAction = new EventEmitter();
317
236
  this.menuClose = new EventEmitter();
237
+ this.beforeOpen = new EventEmitter();
318
238
  this.visible = false;
319
239
  }
320
- /**
321
- * @param {?} $event
322
- * @return {?}
323
- */
324
240
  handleMenu($event) {
241
+ let preventOpen = false;
242
+ this.beforeOpen.emit({
243
+ menuContext: this.menuContext,
244
+ event: $event,
245
+ preventOpen: () => {
246
+ preventOpen = true;
247
+ },
248
+ });
249
+ if (preventOpen) {
250
+ return;
251
+ }
325
252
  $event.preventDefault();
326
253
  this.menu = this.contextMenuService.show($event, this.contextMenuTrigger, this.menuContext, this.menuClose, this.menuAction);
327
254
  this.visible = true;
328
255
  }
329
- /**
330
- * @param {?} $event
331
- * @return {?}
332
- */
333
256
  handleMouseDown($event) {
334
257
  if (this.holdToDisplay >= 0) {
335
258
  $event.stopPropagation();
@@ -338,54 +261,54 @@ class ContextMenuTriggerDirective {
338
261
  this.mouseDownTimeoutId = setTimeout(() => this.handleMenu($event), this.holdToDisplay);
339
262
  }
340
263
  }
341
- /**
342
- * @return {?}
343
- */
344
264
  handleMouseUp() {
345
265
  clearTimeout(this.mouseDownTimeoutId);
346
266
  }
347
- /**
348
- * @return {?}
349
- */
350
267
  ngOnInit() {
351
- this.sub = this.menuClose.subscribe(() => this.visible = false);
268
+ this.sub = this.menuClose.subscribe(() => (this.visible = false));
352
269
  }
353
- /**
354
- * @return {?}
355
- */
356
270
  ngOnDestroy() {
357
271
  this.sub.unsubscribe();
358
272
  }
359
- }
360
- ContextMenuTriggerDirective.decorators = [
361
- { type: Directive, args: [{
362
- selector: '[contextMenuTrigger]',
363
- exportAs: 'contextMenuTrigger',
364
- },] }
365
- ];
366
- /** @nocollapse */
273
+ };
367
274
  ContextMenuTriggerDirective.ctorParameters = () => [
368
275
  { type: ContextMenuService }
369
276
  ];
370
- ContextMenuTriggerDirective.propDecorators = {
371
- contextMenuTrigger: [{ type: Input }],
372
- menuContext: [{ type: Input }],
373
- holdToDisplay: [{ type: Input }],
374
- menuAction: [{ type: Output }],
375
- menuClose: [{ type: Output }],
376
- handleMenu: [{ type: HostListener, args: ['contextmenu', ['$event'],] }],
377
- handleMouseDown: [{ type: HostListener, args: ['touchstart', ['$event'],] }],
378
- handleMouseUp: [{ type: HostListener, args: ['touchend',] }]
379
- };
277
+ __decorate([
278
+ Input()
279
+ ], ContextMenuTriggerDirective.prototype, "contextMenuTrigger", void 0);
280
+ __decorate([
281
+ Input()
282
+ ], ContextMenuTriggerDirective.prototype, "menuContext", void 0);
283
+ __decorate([
284
+ Input()
285
+ ], ContextMenuTriggerDirective.prototype, "holdToDisplay", void 0);
286
+ __decorate([
287
+ Output()
288
+ ], ContextMenuTriggerDirective.prototype, "menuAction", void 0);
289
+ __decorate([
290
+ Output()
291
+ ], ContextMenuTriggerDirective.prototype, "menuClose", void 0);
292
+ __decorate([
293
+ Output()
294
+ ], ContextMenuTriggerDirective.prototype, "beforeOpen", void 0);
295
+ __decorate([
296
+ HostListener('contextmenu', ['$event'])
297
+ ], ContextMenuTriggerDirective.prototype, "handleMenu", null);
298
+ __decorate([
299
+ HostListener('touchstart', ['$event'])
300
+ ], ContextMenuTriggerDirective.prototype, "handleMouseDown", null);
301
+ __decorate([
302
+ HostListener('touchend')
303
+ ], ContextMenuTriggerDirective.prototype, "handleMouseUp", null);
304
+ ContextMenuTriggerDirective = __decorate([
305
+ Directive({
306
+ selector: '[contextMenuTrigger]',
307
+ exportAs: 'contextMenuTrigger',
308
+ })
309
+ ], ContextMenuTriggerDirective);
380
310
 
381
- /**
382
- * @fileoverview added by tsickle
383
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
384
- */
385
- class ContextSubmenuTriggerDirective {
386
- /**
387
- * @param {?} contextMenuService
388
- */
311
+ let ContextSubmenuTriggerDirective = class ContextSubmenuTriggerDirective {
389
312
  constructor(contextMenuService) {
390
313
  this.contextMenuService = contextMenuService;
391
314
  this.hoverDelay = 500;
@@ -397,22 +320,14 @@ class ContextSubmenuTriggerDirective {
397
320
  // get current level
398
321
  setTimeout(() => (this.level = this.contextMenuService.getCurrentLevel()));
399
322
  }
400
- /**
401
- * @param {?} $event
402
- * @return {?}
403
- */
404
323
  handleSubMenuClick($event) {
405
- event.preventDefault();
406
- event.stopPropagation();
324
+ $event.preventDefault();
325
+ $event.stopPropagation();
407
326
  clearTimeout(this.opentimer);
408
327
  clearTimeout(this.closetimer);
409
328
  this.menu = this.contextMenuService.show($event, this.contextSubmenuTrigger, this.menuContext, this.menuClose, this.menuAction, true, this.level);
410
329
  this.visible = true;
411
330
  }
412
- /**
413
- * @param {?} $event
414
- * @return {?}
415
- */
416
331
  handleSubMenuEnter($event) {
417
332
  if (this.menu) {
418
333
  this.menu.isTriggerHovered.next(true);
@@ -426,7 +341,6 @@ class ContextSubmenuTriggerDirective {
426
341
  }
427
342
  /**
428
343
  * submenu hides after cursor has exited for a period of time
429
- * @return {?}
430
344
  */
431
345
  handleSubMenuExit() {
432
346
  clearTimeout(this.opentimer);
@@ -444,57 +358,56 @@ class ContextSubmenuTriggerDirective {
444
358
  }
445
359
  /**
446
360
  * if overwritten make sure to clear timeouts
447
- * @return {?}
448
361
  */
449
362
  ngOnDestroy() {
450
363
  clearTimeout(this.opentimer);
451
364
  clearTimeout(this.closetimer);
452
365
  }
453
- }
454
- ContextSubmenuTriggerDirective.decorators = [
455
- { type: Directive, args: [{ selector: '[contextSubmenuTrigger]' },] }
456
- ];
457
- /** @nocollapse */
366
+ };
458
367
  ContextSubmenuTriggerDirective.ctorParameters = () => [
459
368
  { type: ContextMenuService }
460
369
  ];
461
- ContextSubmenuTriggerDirective.propDecorators = {
462
- hoverDelay: [{ type: Input }],
463
- openDelay: [{ type: Input }],
464
- contextSubmenuTrigger: [{ type: Input }],
465
- menuContext: [{ type: Input }],
466
- menuAction: [{ type: Output }],
467
- menuClose: [{ type: Output }],
468
- handleSubMenuClick: [{ type: HostListener, args: ['click', ['$event', 'true'],] }],
469
- handleSubMenuEnter: [{ type: HostListener, args: ['mouseover', ['$event'],] }],
470
- handleSubMenuExit: [{ type: HostListener, args: ['mouseout', ['$event'],] }]
471
- };
370
+ __decorate([
371
+ Input()
372
+ ], ContextSubmenuTriggerDirective.prototype, "hoverDelay", void 0);
373
+ __decorate([
374
+ Input()
375
+ ], ContextSubmenuTriggerDirective.prototype, "openDelay", void 0);
376
+ __decorate([
377
+ Input()
378
+ ], ContextSubmenuTriggerDirective.prototype, "contextSubmenuTrigger", void 0);
379
+ __decorate([
380
+ Input()
381
+ ], ContextSubmenuTriggerDirective.prototype, "menuContext", void 0);
382
+ __decorate([
383
+ Output()
384
+ ], ContextSubmenuTriggerDirective.prototype, "menuAction", void 0);
385
+ __decorate([
386
+ Output()
387
+ ], ContextSubmenuTriggerDirective.prototype, "menuClose", void 0);
388
+ __decorate([
389
+ HostListener('click', ['$event'])
390
+ ], ContextSubmenuTriggerDirective.prototype, "handleSubMenuClick", null);
391
+ __decorate([
392
+ HostListener('mouseover', ['$event'])
393
+ ], ContextSubmenuTriggerDirective.prototype, "handleSubMenuEnter", null);
394
+ __decorate([
395
+ HostListener('mouseout')
396
+ ], ContextSubmenuTriggerDirective.prototype, "handleSubMenuExit", null);
397
+ ContextSubmenuTriggerDirective = __decorate([
398
+ Directive({ selector: '[contextSubmenuTrigger]' })
399
+ ], ContextSubmenuTriggerDirective);
472
400
 
473
- /**
474
- * @fileoverview added by tsickle
475
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
476
- */
477
- class MenuComponent {
478
- /**
479
- * @param {?} menuPackage
480
- * @param {?} contextMenuService
481
- */
401
+ let MenuComponent = class MenuComponent {
482
402
  constructor(menuPackage, contextMenuService) {
483
403
  this.menuPackage = menuPackage;
484
404
  this.contextMenuService = contextMenuService;
485
- /**
486
- * State of the dialog animation.
487
- */
405
+ /** State of the dialog animation. */
488
406
  this._state = 'enter';
489
407
  this._animationDone = new Subject();
490
- /**
491
- * set lazy to False if you do not have animations
492
- */
408
+ /** set lazy to False if you do not have animations */
493
409
  this.lazy = true;
494
410
  }
495
- /**
496
- * @return {?}
497
- */
498
411
  handleMouseover() {
499
412
  if (!this.menuPackage.menu.submenu) {
500
413
  return;
@@ -502,9 +415,6 @@ class MenuComponent {
502
415
  this.menuPackage.menu.isMenuHovered.next(true);
503
416
  clearTimeout(this.closetimer);
504
417
  }
505
- /**
506
- * @return {?}
507
- */
508
418
  handleMouseleave() {
509
419
  if (!this.menuPackage.menu.submenu) {
510
420
  return;
@@ -514,67 +424,54 @@ class MenuComponent {
514
424
  this.contextMenuService.closeSubMenu(this.menuPackage.menu.id);
515
425
  }, 500);
516
426
  }
517
- /**
518
- * @param {?} $event
519
- * @return {?}
520
- */
521
427
  handleWindowClick($event) {
522
428
  this.contextMenuService.checkOutsideClick($event);
523
429
  }
524
- /**
525
- * Callback that is invoked when the menu animation completes.
526
- * @param {?} event
527
- * @return {?}
528
- */
430
+ /** Callback that is invoked when the menu animation completes. */
529
431
  _onAnimationDone(event) {
530
432
  this._animationDone.next(event);
531
433
  }
532
- }
533
- MenuComponent.decorators = [
534
- { type: Component, args: [{
535
- selector: 'app-menu',
536
- template: ``
537
- }] }
538
- ];
539
- /** @nocollapse */
434
+ };
540
435
  MenuComponent.ctorParameters = () => [
541
436
  { type: MenuPackage },
542
437
  { type: ContextMenuService }
543
438
  ];
544
- MenuComponent.propDecorators = {
545
- handleMouseover: [{ type: HostListener, args: ['mouseover',] }],
546
- handleMouseleave: [{ type: HostListener, args: ['mouseleave',] }],
547
- handleWindowClick: [{ type: HostListener, args: ['document:click', ['$event'],] }]
548
- };
549
-
550
- /**
551
- * @fileoverview added by tsickle
552
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
553
- */
554
- class ContextMenuModule {
555
- }
556
- ContextMenuModule.decorators = [
557
- { type: NgModule, args: [{
558
- declarations: [
559
- ContextMenuTriggerDirective,
560
- ContextSubmenuTriggerDirective,
561
- MenuComponent,
562
- ],
563
- exports: [ContextMenuTriggerDirective, ContextSubmenuTriggerDirective],
564
- imports: [PortalModule, OverlayModule],
565
- },] }
566
- ];
439
+ __decorate([
440
+ HostListener('mouseover')
441
+ ], MenuComponent.prototype, "handleMouseover", null);
442
+ __decorate([
443
+ HostListener('mouseleave')
444
+ ], MenuComponent.prototype, "handleMouseleave", null);
445
+ __decorate([
446
+ HostListener('document:click', ['$event'])
447
+ ], MenuComponent.prototype, "handleWindowClick", null);
448
+ __decorate([
449
+ HostListener('@menu.done', ['$event'])
450
+ ], MenuComponent.prototype, "_onAnimationDone", null);
451
+ MenuComponent = __decorate([
452
+ Component({
453
+ selector: 'app-menu',
454
+ template: ``
455
+ })
456
+ ], MenuComponent);
567
457
 
568
- /**
569
- * @fileoverview added by tsickle
570
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
571
- */
458
+ let ContextMenuModule = class ContextMenuModule {
459
+ };
460
+ ContextMenuModule = __decorate([
461
+ NgModule({
462
+ declarations: [
463
+ ContextMenuTriggerDirective,
464
+ ContextSubmenuTriggerDirective,
465
+ MenuComponent,
466
+ ],
467
+ exports: [ContextMenuTriggerDirective, ContextSubmenuTriggerDirective],
468
+ imports: [PortalModule, OverlayModule],
469
+ })
470
+ ], ContextMenuModule);
572
471
 
573
472
  /**
574
- * @fileoverview added by tsickle
575
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
473
+ * Generated bundle index. Do not edit.
576
474
  */
577
475
 
578
- export { ContextMenuModule, MenuPackage, MenuInjector, MenuComponent, ContextSubmenuTriggerDirective, ContextMenuTriggerDirective, ContextMenuService };
579
-
580
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RybC1uZ3gtcmlnaHRjbGljay5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGN0cmwvbmd4LXJpZ2h0Y2xpY2svY29udGV4dC1tZW51LWluamVjdG9yLnRzIiwibmc6Ly9AY3RybC9uZ3gtcmlnaHRjbGljay9jb250ZXh0LW1lbnUuc2VydmljZS50cyIsIm5nOi8vQGN0cmwvbmd4LXJpZ2h0Y2xpY2svY29udGV4dC1tZW51LXRyaWdnZXIuZGlyZWN0aXZlLnRzIiwibmc6Ly9AY3RybC9uZ3gtcmlnaHRjbGljay9jb250ZXh0LXN1Ym1lbnUtdHJpZ2dlci5kaXJlY3RpdmUudHMiLCJuZzovL0BjdHJsL25neC1yaWdodGNsaWNrL21lbnUuY29tcG9uZW50LnRzIiwibmc6Ly9AY3RybC9uZ3gtcmlnaHRjbGljay9jb250ZXh0LW1lbnUubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBUeXBlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0RmxhZ3MgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aXZlQ29udGV4dE1lbnVTdWIgfSBmcm9tICcuL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIE1lbnVQYWNrYWdlIHtcbiAgY29uc3RydWN0b3IocHVibGljIG1lbnU6IEFjdGl2ZUNvbnRleHRNZW51U3ViLCBwdWJsaWMgY29udGV4dDogYW55KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgTWVudUluamVjdG9yIGltcGxlbWVudHMgSW5qZWN0b3Ige1xuICBfbWVudUNvbnRleHQ6IE1lbnVQYWNrYWdlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hY3RpdmVDb250ZXh0TWVudTogQWN0aXZlQ29udGV4dE1lbnVTdWIsXG4gICAgcHJpdmF0ZSBfcGFyZW50SW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY29udGV4dDogYW55LFxuICApIHtcbiAgICB0aGlzLl9tZW51Q29udGV4dCA9IG5ldyBNZW51UGFja2FnZShfYWN0aXZlQ29udGV4dE1lbnUsIGNvbnRleHQpO1xuICB9XG5cbiAgZ2V0PFQ+KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogVCB8IE1lbnVQYWNrYWdlIHtcbiAgICBpZiAodG9rZW4gPT09IE1lbnVQYWNrYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbWVudUNvbnRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wYXJlbnRJbmplY3Rvci5nZXQ8VD4odG9rZW4sIG5vdEZvdW5kVmFsdWUsIGZsYWdzKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheVJlZixcbiAgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1lbnVJbmplY3RvciB9IGZyb20gJy4vY29udGV4dC1tZW51LWluamVjdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVDb250ZXh0TWVudVN1YiB7XG4gIGlkOiBudW1iZXI7XG4gIGlzVHJpZ2dlckhvdmVyZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgaXNNZW51SG92ZXJlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBzdWJtZW51OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBBY3RpdmVDb250ZXh0TWVudSBleHRlbmRzIEFjdGl2ZUNvbnRleHRNZW51U3ViIHtcbiAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgY29tcG9uZW50OiBhbnk7XG4gIG1lbnVDbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICBtZW51QWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55Pjtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudVNlcnZpY2Uge1xuICBtZW51czogQWN0aXZlQ29udGV4dE1lbnVbXSA9IFtdO1xuICBpZCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICkge31cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtICRldmVudCB0cmlnZ2VyaW5nIGV2ZW50XG4gICAqIEBwYXJhbSBtZW51Q29tcG9uZW50IHRoZSBjb21wb25lbnQgdG8gYmUgc2hvd25cbiAgICogQHBhcmFtIHN1Ym1lbnUgaXMgYSBtZW51IHdpdGhpbiBhIG1lbnVcbiAgICogQHBhcmFtIGxldmVsIGlmIHN1Ym1lbnUsIHdoYXQgbGV2ZWxcbiAgICovXG4gIHNob3coXG4gICAgJGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIG1lbnVDb21wb25lbnQsXG4gICAgY29udGV4dDogYW55LFxuICAgIG1lbnVDbG9zZTogRXZlbnRFbWl0dGVyPGFueT4sXG4gICAgbWVudUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4sXG4gICAgc3VibWVudSA9IGZhbHNlLFxuICAgIGxldmVsPzogbnVtYmVyLFxuICApOiBBY3RpdmVDb250ZXh0TWVudSB7XG4gICAgbGV0IHRhcmdldDogYW55O1xuICAgIGlmICghc3VibWVudSkge1xuICAgICAgdGhpcy5jbG9zZUFsbCgpO1xuICAgICAgdGFyZ2V0ID0ge1xuICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6ICgpOiBDbGllbnRSZWN0ID0+ICh7XG4gICAgICAgICAgYm90dG9tOiAkZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgbGVmdDogJGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgcmlnaHQ6ICRldmVudC5jbGllbnRYLFxuICAgICAgICAgIHRvcDogJGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2xvc2Ugb3RoZXIgc3VibWVudXNcbiAgICAgIHRoaXMuY2xvc2VBbGwodW5kZWZpbmVkLCBsZXZlbCk7XG4gICAgICB0YXJnZXQgPSAkZXZlbnQudGFyZ2V0O1xuICAgIH1cbiAgICBjb25zdCBlbCA9IG5ldyBFbGVtZW50UmVmKHRhcmdldCk7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpO1xuXG4gICAgaWYgKCFzdWJtZW51KSB7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgfVxuICAgIGNvbnN0IHQ6IEFjdGl2ZUNvbnRleHRNZW51U3ViID0ge1xuICAgICAgc3VibWVudSxcbiAgICAgIGlkOiB0aGlzLmlkKyssXG4gICAgICBpc01lbnVIb3ZlcmVkOiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKSxcbiAgICAgIGlzVHJpZ2dlckhvdmVyZWQ6IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpLFxuICAgIH07XG4gICAgY29uc3QgbWVudUluamVjdG9yID0gbmV3IE1lbnVJbmplY3Rvcih0LCB0aGlzLl9pbmplY3RvciwgY29udGV4dCk7XG4gICAgY29uc3QgY29tcG9uZW50UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIG1lbnVDb21wb25lbnQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtZW51SW5qZWN0b3IsXG4gICAgKTtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgcGFuZWxDbGFzczogJ25neC1jb250ZXh0bWVudScsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneS5jbG9zZSgpLFxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IG92ZXJsYXlSZWYuYXR0YWNoPGFueT4oY29tcG9uZW50UG9ydGFsKTtcbiAgICBjb25zdCByZXMgPSB7IG92ZXJsYXlSZWYsIGNvbXBvbmVudCwgLi4udCwgbWVudUNsb3NlLCBtZW51QWN0aW9uIH07XG4gICAgdGhpcy5tZW51cy5wdXNoKHJlcyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBnZXRDdXJyZW50TGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudXMubGVuZ3RoO1xuICB9XG4gIGNsb3NlQWxsKGNvbnRleHQ/OiBhbnksIGlkeCA9IDApIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IGlkeDsgaW5kZXggPCB0aGlzLm1lbnVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbWVudSA9IHRoaXMubWVudXNbaW5kZXhdO1xuICAgICAgdGhpcy5kZXN0cm95TWVudShtZW51LCBjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5tZW51cy5zcGxpY2UoaWR4LCB0aGlzLm1lbnVzLmxlbmd0aCk7XG4gIH1cbiAgZGVzdHJveU1lbnUobWVudTogQWN0aXZlQ29udGV4dE1lbnUsIGNvbnRleHQ/OiBhbnkpIHtcbiAgICBtZW51LmNvbXBvbmVudC5pbnN0YW5jZS5fc3RhdGUgPSAnZXhpdCc7XG4gICAgaWYgKG1lbnUuY29tcG9uZW50Lmluc3RhbmNlLmxhenkpIHtcbiAgICAgIG1lbnUuY29tcG9uZW50Lmluc3RhbmNlLl9hbmltYXRpb25Eb25lXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoZXZlbnQ6IGFueSkgPT4gZXZlbnQudG9TdGF0ZSA9PT0gJ2V4aXQnKSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIG1lbnUub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICBtZW51Lm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVudS5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgbWVudS5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIG1lbnUubWVudUFjdGlvbi5uZXh0KGNvbnRleHQpO1xuICAgIH1cbiAgICBtZW51Lm1lbnVDbG9zZS5uZXh0KCk7XG4gIH1cbiAgY2xvc2UobWVudTogQWN0aXZlQ29udGV4dE1lbnUsIG1lbnVJbmRleDogbnVtYmVyLCBjb250ZXh0PzogYW55KSB7XG4gICAgdGhpcy5kZXN0cm95TWVudShtZW51LCBjb250ZXh0KTtcbiAgICB0aGlzLm1lbnVzLnNwbGljZShtZW51SW5kZXgsIDEpO1xuICB9XG4gIGNoZWNrT3V0c2lkZUNsaWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLm1lbnVzKSB7XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gbS5jb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhcbiAgICAgICAgJGV2ZW50LnRhcmdldCxcbiAgICAgICk7XG4gICAgICBpZiAoY2xpY2tlZEluc2lkZSkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VBbGwoKTtcbiAgfVxuICBjbG9zZVN1Yk1lbnUoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1lbnVJbmRleCA9IHRoaXMubWVudXMuZmluZEluZGV4KG4gPT4gbi5pZCA9PT0gaWQpO1xuICAgIGlmIChtZW51SW5kZXggPT09IC0xIHx8IG1lbnVJbmRleCAhPT0gdGhpcy5tZW51cy5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIG1ha2Ugc3VyZSB3ZSBjYW4gY2xvc2UgdGhlIGN1cnJlbnQgbWVudVxuICAgIGNvbnN0IG1lbnUgPSB0aGlzLm1lbnVzW21lbnVJbmRleF07XG4gICAgaWYgKG1lbnUuaXNNZW51SG92ZXJlZC5nZXRWYWx1ZSgpIHx8IG1lbnUuaXNUcmlnZ2VySG92ZXJlZC5nZXRWYWx1ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGNsb3NlIGFsbCBtZW51cyB1cCBpZiBwb3NzaWJsZVxuICAgIGZvciAobGV0IGluZGV4ID0gdGhpcy5tZW51cy5sZW5ndGggLSAxOyBpbmRleCA+PSAxOyBpbmRleC0tKSB7XG4gICAgICBjb25zdCBtID0gdGhpcy5tZW51c1tpbmRleF07XG4gICAgICBpZiAoIW0uaXNNZW51SG92ZXJlZC5nZXRWYWx1ZSgpICYmICFtLmlzVHJpZ2dlckhvdmVyZWQuZ2V0VmFsdWUoKSkge1xuICAgICAgICB0aGlzLmNsb3NlKG0sIGluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnRleHRNZW51U2VydmljZSwgQWN0aXZlQ29udGV4dE1lbnUgfSBmcm9tICcuL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NvbnRleHRNZW51VHJpZ2dlcl0nLFxuICBleHBvcnRBczogJ2NvbnRleHRNZW51VHJpZ2dlcicsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51VHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KCkgY29udGV4dE1lbnVUcmlnZ2VyOiBhbnk7XG4gIEBJbnB1dCgpIG1lbnVDb250ZXh0OiBhbnk7XG4gIEBJbnB1dCgpIGhvbGRUb0Rpc3BsYXkgPSAxMDAwO1xuICBAT3V0cHV0KCkgbWVudUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbWVudUNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBtZW51OiBBY3RpdmVDb250ZXh0TWVudTtcbiAgdmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIG1vdXNlRG93blRpbWVvdXRJZDogYW55O1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSlcbiAgaGFuZGxlTWVudSgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm1lbnUgPSB0aGlzLmNvbnRleHRNZW51U2VydmljZS5zaG93KFxuICAgICAgJGV2ZW50LFxuICAgICAgdGhpcy5jb250ZXh0TWVudVRyaWdnZXIsXG4gICAgICB0aGlzLm1lbnVDb250ZXh0LFxuICAgICAgdGhpcy5tZW51Q2xvc2UsXG4gICAgICB0aGlzLm1lbnVBY3Rpb24sXG4gICAgKTtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZU1vdXNlRG93bigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmhvbGRUb0Rpc3BsYXkgPj0gMCkge1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgJGV2ZW50LmNsaWVudFkgPSAkZXZlbnQudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgJGV2ZW50LmNsaWVudFggPSAkZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuXG4gICAgICB0aGlzLm1vdXNlRG93blRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMuaGFuZGxlTWVudSgkZXZlbnQpLFxuICAgICAgICB0aGlzLmhvbGRUb0Rpc3BsYXksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJylcbiAgaGFuZGxlTW91c2VVcCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5tb3VzZURvd25UaW1lb3V0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YiA9IHRoaXMubWVudUNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnZpc2libGUgPSBmYWxzZSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQWN0aXZlQ29udGV4dE1lbnUsXG4gIENvbnRleHRNZW51U2VydmljZSxcbn0gZnJvbSAnLi9jb250ZXh0LW1lbnUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjb250ZXh0U3VibWVudVRyaWdnZXJdJyB9KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTdWJtZW51VHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGhvdmVyRGVsYXkgPSA1MDA7XG4gIEBJbnB1dCgpIG9wZW5EZWxheSA9IDIwMDtcbiAgQElucHV0KCkgY29udGV4dFN1Ym1lbnVUcmlnZ2VyOiBhbnk7XG4gIEBJbnB1dCgpIG1lbnVDb250ZXh0OiBhbnk7XG4gIEBPdXRwdXQoKSBtZW51QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtZW51Q2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIG1lbnU6IEFjdGl2ZUNvbnRleHRNZW51O1xuICBvcGVudGltZXI6IGFueTtcbiAgY2xvc2V0aW1lcjogYW55O1xuICB2aXNpYmxlID0gZmFsc2U7XG4gIGxldmVsID0gMTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50JywgJ3RydWUnXSlcbiAgaGFuZGxlU3ViTWVudUNsaWNrKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMub3BlbnRpbWVyKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5jbG9zZXRpbWVyKTtcbiAgICB0aGlzLm1lbnUgPSB0aGlzLmNvbnRleHRNZW51U2VydmljZS5zaG93KFxuICAgICAgJGV2ZW50LFxuICAgICAgdGhpcy5jb250ZXh0U3VibWVudVRyaWdnZXIsXG4gICAgICB0aGlzLm1lbnVDb250ZXh0LFxuICAgICAgdGhpcy5tZW51Q2xvc2UsXG4gICAgICB0aGlzLm1lbnVBY3Rpb24sXG4gICAgICB0cnVlLFxuICAgICAgdGhpcy5sZXZlbCxcbiAgICApO1xuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVTdWJNZW51RW50ZXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMubWVudSkge1xuICAgICAgdGhpcy5tZW51LmlzVHJpZ2dlckhvdmVyZWQubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2V0aW1lcik7XG4gICAgdGhpcy5vcGVudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWVudSA9IHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLnNob3coXG4gICAgICAgICRldmVudCxcbiAgICAgICAgdGhpcy5jb250ZXh0U3VibWVudVRyaWdnZXIsXG4gICAgICAgIHRoaXMubWVudUNvbnRleHQsXG4gICAgICAgIHRoaXMubWVudUNsb3NlLFxuICAgICAgICB0aGlzLm1lbnVBY3Rpb24sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRoaXMubGV2ZWwsXG4gICAgICApO1xuICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlbnRpbWVyID0gbnVsbDtcbiAgICB9LCB0aGlzLm9wZW5EZWxheSk7XG4gIH1cblxuICAvKipcbiAgICogc3VibWVudSBoaWRlcyBhZnRlciBjdXJzb3IgaGFzIGV4aXRlZCBmb3IgYSBwZXJpb2Qgb2YgdGltZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnLCBbJyRldmVudCddKVxuICBoYW5kbGVTdWJNZW51RXhpdCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVudGltZXIpO1xuICAgIGlmICh0aGlzLm1lbnUpIHtcbiAgICAgIHRoaXMubWVudS5pc1RyaWdnZXJIb3ZlcmVkLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLmNsb3NldGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1lbnUpIHtcbiAgICAgICAgdGhpcy5tZW51LmlzVHJpZ2dlckhvdmVyZWQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNsb3NlU3ViTWVudSh0aGlzLm1lbnUuaWQpO1xuICAgICAgICB0aGlzLm1lbnUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB9LCB0aGlzLmhvdmVyRGVsYXkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSkge1xuICAgIC8vIGdldCBjdXJyZW50IGxldmVsXG4gICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5sZXZlbCA9IHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmdldEN1cnJlbnRMZXZlbCgpKSk7XG4gIH1cblxuICAvKipcbiAgICogaWYgb3ZlcndyaXR0ZW4gbWFrZSBzdXJlIHRvIGNsZWFyIHRpbWVvdXRzXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5vcGVudGltZXIpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmNsb3NldGltZXIpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHsgQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51UGFja2FnZSB9IGZyb20gJy4vY29udGV4dC1tZW51LWluamVjdG9yJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1lbnUnLFxuICB0ZW1wbGF0ZTogYGAsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQge1xuICAvKiogU3RhdGUgb2YgdGhlIGRpYWxvZyBhbmltYXRpb24uICovXG4gIF9zdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdleGl0JyA9ICdlbnRlcic7XG4gIF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KCk7XG4gIC8qKiBzZXQgbGF6eSB0byBGYWxzZSBpZiB5b3UgZG8gbm90IGhhdmUgYW5pbWF0aW9ucyAqL1xuICBsYXp5ID0gdHJ1ZTtcbiAgY2xvc2V0aW1lcjogYW55O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXG4gIGhhbmRsZU1vdXNlb3ZlcigpIHtcbiAgICBpZiAoIXRoaXMubWVudVBhY2thZ2UubWVudS5zdWJtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVudVBhY2thZ2UubWVudS5pc01lbnVIb3ZlcmVkLm5leHQodHJ1ZSk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xvc2V0aW1lcik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgaGFuZGxlTW91c2VsZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMubWVudVBhY2thZ2UubWVudS5zdWJtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVudVBhY2thZ2UubWVudS5pc01lbnVIb3ZlcmVkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuY2xvc2V0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY2xvc2VTdWJNZW51KHRoaXMubWVudVBhY2thZ2UubWVudS5pZCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlV2luZG93Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY2hlY2tPdXRzaWRlQ2xpY2soJGV2ZW50KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtZW51UGFja2FnZTogTWVudVBhY2thZ2UsXG4gICAgcHVibGljIGNvbnRleHRNZW51U2VydmljZTogQ29udGV4dE1lbnVTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqIENhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRoZSBtZW51IGFuaW1hdGlvbiBjb21wbGV0ZXMuICovXG4gIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHsgQ29udGV4dE1lbnVUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGV4dFN1Ym1lbnVUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0LXN1Ym1lbnUtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDb250ZXh0TWVudVRyaWdnZXJEaXJlY3RpdmUsXG4gICAgQ29udGV4dFN1Ym1lbnVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgIE1lbnVDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtDb250ZXh0TWVudVRyaWdnZXJEaXJlY3RpdmUsIENvbnRleHRTdWJtZW51VHJpZ2dlckRpcmVjdGl2ZV0sXG4gIGltcG9ydHM6IFtQb3J0YWxNb2R1bGUsIE92ZXJsYXlNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudU1vZHVsZSB7fVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFJQSxNQUFhLFdBQVc7Ozs7O0lBQ3RCLFlBQW1CLElBQTBCLEVBQVMsT0FBWTtRQUEvQyxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQUs7S0FBSTtDQUN2RTtNQUVZLFlBQVk7Ozs7OztJQUV2QixZQUNVLGtCQUF3QyxFQUN4QyxlQUF5QixFQUN6QixPQUFZO1FBRlosdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFzQjtRQUN4QyxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUN6QixZQUFPLEdB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
476
+ export { ContextMenuModule, ContextMenuService, ContextMenuTriggerDirective, ContextSubmenuTriggerDirective, MenuComponent, MenuInjector, MenuPackage };
477
+ //# sourceMappingURL=ctrl-ngx-rightclick.js.map