@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.
- package/LICENSE +1 -1
- package/README.md +5 -16
- package/bundles/ctrl-ngx-rightclick.umd.js +622 -658
- package/bundles/ctrl-ngx-rightclick.umd.js.map +1 -1
- package/bundles/ctrl-ngx-rightclick.umd.min.js +15 -1
- package/bundles/ctrl-ngx-rightclick.umd.min.js.map +1 -1
- package/context-menu-injector.d.ts +4 -4
- package/context-menu-trigger.directive.d.ts +1 -0
- package/context-menu.service.d.ts +2 -2
- package/context-submenu-trigger.directive.d.ts +3 -3
- package/ctrl-ngx-rightclick.metadata.json +1 -1
- package/esm2015/context-menu-injector.js +7 -52
- package/esm2015/context-menu-trigger.directive.js +52 -77
- package/esm2015/context-menu.module.js +16 -18
- package/esm2015/context-menu.service.js +19 -121
- package/esm2015/context-submenu-trigger.directive.js +38 -67
- package/esm2015/ctrl-ngx-rightclick.js +2 -6
- package/esm2015/menu.component.js +26 -64
- package/esm2015/public_api.js +7 -11
- package/esm5/context-menu-injector.js +8 -51
- package/esm5/context-menu-trigger.directive.js +54 -94
- package/esm5/context-menu.module.js +13 -16
- package/esm5/context-menu.service.js +20 -164
- package/esm5/context-submenu-trigger.directive.js +39 -88
- package/esm5/ctrl-ngx-rightclick.js +2 -6
- package/esm5/menu.component.js +26 -77
- package/esm5/public_api.js +7 -11
- package/fesm2015/ctrl-ngx-rightclick.js +143 -246
- package/fesm2015/ctrl-ngx-rightclick.js.map +1 -1
- package/fesm5/ctrl-ngx-rightclick.js +149 -336
- package/fesm5/ctrl-ngx-rightclick.js.map +1 -1
- package/menu.component.d.ts +1 -1
- 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(
|
21
|
-
this.
|
22
|
-
this.
|
16
|
+
function MenuInjector(activeContextMenu, parentInjector, context) {
|
17
|
+
this.activeContextMenu = activeContextMenu;
|
18
|
+
this.parentInjector = parentInjector;
|
23
19
|
this.context = context;
|
24
|
-
this.
|
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.
|
24
|
+
return this.menuContext;
|
43
25
|
}
|
44
|
-
return this.
|
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,
|
32
|
+
function ContextMenuService(overlay, scrollStrategy, injector) {
|
55
33
|
this.overlay = overlay;
|
56
34
|
this.scrollStrategy = scrollStrategy;
|
57
|
-
this.
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
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
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
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
|
-
|
472
|
-
|
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
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
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
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
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
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
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
|
-
*
|
682
|
-
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
501
|
+
* Generated bundle index. Do not edit.
|
683
502
|
*/
|
684
503
|
|
685
|
-
|
686
|
-
|
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
|