/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, Optional, Output, QueryList, ViewChild, ViewEncapsulation, } from '@angular/core'; import { Subscription } from 'rxjs'; import { first } from 'rxjs/operators'; import { ContextMenuItemDirective } from './contextMenu.item.directive'; import { ContextMenuService } from './contextMenu.service'; import { CONTEXT_MENU_OPTIONS } from './contextMenu.tokens'; /** * @record */ export function ILinkConfig() { } if (false) { /** @type {?} */ ILinkConfig.prototype.click; /** @type {?|undefined} */ ILinkConfig.prototype.enabled; /** @type {?} */ ILinkConfig.prototype.html; } /** * @record */ export function MouseLocation() { } if (false) { /** @type {?|undefined} */ MouseLocation.prototype.left; /** @type {?|undefined} */ MouseLocation.prototype.marginLeft; /** @type {?|undefined} */ MouseLocation.prototype.marginTop; /** @type {?|undefined} */ MouseLocation.prototype.top; } export class ContextMenuComponent { /** * @param {?} _contextMenuService * @param {?} changeDetector * @param {?} elementRef * @param {?} options */ constructor(_contextMenuService, changeDetector, elementRef, options) { this._contextMenuService = _contextMenuService; this.changeDetector = changeDetector; this.elementRef = elementRef; this.options = options; this.menuClass = ""; this.autoFocus = false; this.useBootstrap4 = false; this.disabled = false; this.close = new EventEmitter(); this.open = new EventEmitter(); this.visibleMenuItems = []; this.links = []; this.subscription = new Subscription(); if (options) { this.autoFocus = options.autoFocus; this.useBootstrap4 = options.useBootstrap4; } this.subscription.add(_contextMenuService.show.subscribe((/** * @param {?} menuEvent * @return {?} */ menuEvent => { this.onMenuEvent(menuEvent); }))); } /** * @return {?} */ ngOnDestroy() { this.subscription.unsubscribe(); } /** * @param {?} menuEvent * @return {?} */ onMenuEvent(menuEvent) { if (this.disabled) { return; } const { contextMenu, event, item } = menuEvent; if (contextMenu && contextMenu !== this) { return; } this.event = event; this.item = item; this.setVisibleMenuItems(); this._contextMenuService.openContextMenu(Object.assign({}, menuEvent, { menuItems: this.visibleMenuItems, menuClass: this.menuClass })); this._contextMenuService.close.asObservable().pipe(first()).subscribe((/** * @param {?} closeEvent * @return {?} */ closeEvent => this.close.emit(closeEvent))); this.open.next(menuEvent); } /** * @param {?} menuItem * @return {?} */ isMenuItemVisible(menuItem) { return this.evaluateIfFunction(menuItem.visible); } /** * @return {?} */ setVisibleMenuItems() { this.visibleMenuItems = this.menuItems.filter((/** * @param {?} menuItem * @return {?} */ menuItem => this.isMenuItemVisible(menuItem))); } /** * @param {?} value * @return {?} */ evaluateIfFunction(value) { if (value instanceof Function) { return value(this.item); } return value; } } ContextMenuComponent.decorators = [ { type: Component, args: [{ encapsulation: ViewEncapsulation.None, selector: 'context-menu', template: ` `, styles: [` .cdk-overlay-container { position: fixed; z-index: 1000; pointer-events: none; top: 0; left: 0; width: 100%; height: 100%; } .ngx-contextmenu.cdk-overlay-pane { position: absolute; pointer-events: auto; box-sizing: border-box; } `] }] } ]; /** @nocollapse */ ContextMenuComponent.ctorParameters = () => [ { type: ContextMenuService }, { type: ChangeDetectorRef }, { type: ElementRef }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CONTEXT_MENU_OPTIONS,] }] } ]; ContextMenuComponent.propDecorators = { menuClass: [{ type: Input }], autoFocus: [{ type: Input }], useBootstrap4: [{ type: Input }], disabled: [{ type: Input }], close: [{ type: Output }], open: [{ type: Output }], menuItems: [{ type: ContentChildren, args: [ContextMenuItemDirective,] }], menuElement: [{ type: ViewChild, args: ['menu', { static: false },] }] }; if (false) { /** @type {?} */ ContextMenuComponent.prototype.menuClass; /** @type {?} */ ContextMenuComponent.prototype.autoFocus; /** @type {?} */ ContextMenuComponent.prototype.useBootstrap4; /** @type {?} */ ContextMenuComponent.prototype.disabled; /** @type {?} */ ContextMenuComponent.prototype.close; /** @type {?} */ ContextMenuComponent.prototype.open; /** @type {?} */ ContextMenuComponent.prototype.menuItems; /** @type {?} */ ContextMenuComponent.prototype.menuElement; /** @type {?} */ ContextMenuComponent.prototype.visibleMenuItems; /** @type {?} */ ContextMenuComponent.prototype.links; /** @type {?} */ ContextMenuComponent.prototype.item; /** @type {?} */ ContextMenuComponent.prototype.event; /** * @type {?} * @private */ ContextMenuComponent.prototype.subscription; /** * @type {?} * @private */ ContextMenuComponent.prototype._contextMenuService; /** * @type {?} * @private */ ContextMenuComponent.prototype.changeDetector; /** * @type {?} * @private */ ContextMenuComponent.prototype.elementRef; /** * @type {?} * @private */ ContextMenuComponent.prototype.options; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dE1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNvbnRleHRtZW51LyIsInNvdXJjZXMiOlsibGliL2NvbnRleHRNZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBRVosTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBaUQsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUU1RCxpQ0FJQzs7O0lBSEMsNEJBQWdEOztJQUNoRCw4QkFBaUM7O0lBQ2pDLDJCQUE0Qjs7Ozs7QUFFOUIsbUNBS0M7OztJQUpDLDZCQUFjOztJQUNkLG1DQUFvQjs7SUFDcEIsa0NBQW1COztJQUNuQiw0QkFBYTs7QUF3QmYsTUFBTSxPQUFPLG9CQUFvQjs7Ozs7OztJQWdCL0IsWUFDVSxtQkFBdUMsRUFDdkMsY0FBaUMsRUFDakMsVUFBc0IsRUFFUSxPQUE0QjtRQUoxRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRVEsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFwQnBELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixjQUFTLEdBQUcsS0FBSyxD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QUNMLEtBQUs7NEJBQ0wsS0FBSzt1QkFDTCxLQUFLO29CQUNMLE1BQU07bUJBQ04sTUFBTTt3QkFDTixlQUFlLFNBQUMsd0JBQXdCOzBCQUN4QyxTQUFTLFNBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7OztJQVBwQyx5Q0FBK0I7O0lBQy9CLHlDQUFrQzs7SUFDbEMsNkNBQXNDOztJQUN0Qyx3Q0FBaUM7O0lBQ2pDLHFDQUFpRjs7SUFDakYsb0NBQWlGOztJQUNqRix5Q0FBaUc7O0lBQ2pHLDJDQUFxRTs7SUFDckUsZ0RBQXlEOztJQUV6RCxxQ0FBaUM7O0lBQ2pDLG9DQUFpQjs7SUFDakIscUNBQXlDOzs7OztJQUN6Qyw0Q0FBd0Q7Ozs7O0lBR3RELG1EQUErQzs7Ozs7SUFDL0MsOENBQXlDOzs7OztJQUN6QywwQ0FBOEI7Ozs7O0lBQzlCLHVDQUNrRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRleHRNZW51Lml0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IElDb250ZXh0TWVudU9wdGlvbnMgfSBmcm9tICcuL2NvbnRleHRNZW51Lm9wdGlvbnMnO1xuaW1wb3J0IHsgQ29udGV4dE1lbnVTZXJ2aWNlLCBJQ29udGV4dE1lbnVDbGlja0V2ZW50LCBDbG9zZUNvbnRleHRNZW51RXZlbnQgfSBmcm9tICcuL2NvbnRleHRNZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09OVEVYVF9NRU5VX09QVElPTlMgfSBmcm9tICcuL2NvbnRleHRNZW51LnRva2Vucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmtDb25maWcge1xuICBjbGljazogKGl0ZW06IGFueSwgJGV2ZW50PzogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgZW5hYmxlZD86IChpdGVtOiBhbnkpID0+IGJvb2xlYW47XG4gIGh0bWw6IChpdGVtOiBhbnkpID0+IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTW91c2VMb2NhdGlvbiB7XG4gIGxlZnQ/OiBzdHJpbmc7XG4gIG1hcmdpbkxlZnQ/OiBzdHJpbmc7XG4gIG1hcmdpblRvcD86IHN0cmluZztcbiAgdG9wPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICdjb250ZXh0LW1lbnUnLFxuICBzdHlsZXM6IFtgXG4gICAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICAgIC5uZ3gtY29udGV4dG1lbnUuY2RrLW92ZXJsYXktcGFuZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICBgXSxcbiAgdGVtcGxhdGU6IGAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgbWVudUNsYXNzID0gXCJcIjtcbiAgQElucHV0KCkgcHVibGljIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgdXNlQm9vdHN0cmFwNCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZTogRXZlbnRFbWl0dGVyPENsb3NlQ29udGV4dE1lbnVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb3BlbjogRXZlbnRFbWl0dGVyPElDb250ZXh0TWVudUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAQ29udGVudENoaWxkcmVuKENvbnRleHRNZW51SXRlbURpcmVjdGl2ZSkgcHVibGljIG1lbnVJdGVtczogUXVlcnlMaXN0PENvbnRleHRNZW51SXRlbURpcmVjdGl2ZT47XG4gIEBWaWV3Q2hpbGQoJ21lbnUnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIG1lbnVFbGVtZW50OiBFbGVtZW50UmVmO1xuICBwdWJsaWMgdmlzaWJsZU1lbnVJdGVtczogQ29udGV4dE1lbnVJdGVtRGlyZWN0aXZlW10gPSBbXTtcblxuICBwdWJsaWMgbGlua3M6IElMaW5rQ29uZmlnW10gPSBbXTtcbiAgcHVibGljIGl0ZW06IGFueTtcbiAgcHVibGljIGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENPTlRFWFRfTUVOVV9PUFRJT05TKSBwcml2YXRlIG9wdGlvbnM6IElDb250ZXh0TWVudU9wdGlvbnMsXG4gICkge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB0aGlzLmF1dG9Gb2N1cyA9IG9wdGlvbnMuYXV0b0ZvY3VzO1xuICAgICAgdGhpcy51c2VCb290c3RyYXA0ID0gb3B0aW9ucy51c2VCb290c3RyYXA0O1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoX2NvbnRleHRNZW51U2VydmljZS5zaG93LnN1YnNjcmliZShtZW51RXZlbnQgPT4ge1xuICAgICAgdGhpcy5vbk1lbnVFdmVudChtZW51RXZlbnQpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uTWVudUV2ZW50KG1lbnVFdmVudDogSUNvbnRleHRNZW51Q2xpY2tFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHsgY29udGV4dE1lbnUsIGV2ZW50LCBpdGVtIH0gPSBtZW51RXZlbnQ7XG4gICAgaWYgKGNvbnRleHRNZW51ICYmIGNvbnRleHRNZW51ICE9PSB0aGlzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZXZlbnQgPSBldmVudDtcbiAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgIHRoaXMuc2V0VmlzaWJsZU1lbnVJdGVtcygpO1xuICAgIHRoaXMuX2NvbnRleHRNZW51U2VydmljZS5vcGVuQ29udGV4dE1lbnUoeyAuLi5tZW51RXZlbnQsIG1lbnVJdGVtczogdGhpcy52aXNpYmxlTWVudUl0ZW1zLCBtZW51Q2xhc3M6IHRoaXMubWVudUNsYXNzIH0pO1xuICAgIHRoaXMuX2NvbnRleHRNZW51U2VydmljZS5jbG9zZS5hc09ic2VydmFibGUoKS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZShjbG9zZUV2ZW50ID0+IHRoaXMuY2xvc2UuZW1pdChjbG9zZUV2ZW50KSk7XG4gICAgdGhpcy5vcGVuLm5leHQobWVudUV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBpc01lbnVJdGVtVmlzaWJsZShtZW51SXRlbTogQ29udGV4dE1lbnVJdGVtRGlyZWN0aXZlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVJZkZ1bmN0aW9uKG1lbnVJdGVtLnZpc2libGUpO1xuICB9XG5cbiAgcHVibGljIHNldFZpc2libGVNZW51SXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlTWVudUl0ZW1zID0gdGhpcy5tZW51SXRlbXMuZmlsdGVyKG1lbnVJdGVtID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUobWVudUl0ZW0pKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsdWF0ZUlmRnVuY3Rpb24odmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB2YWx1ZSh0aGlzLml0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==