@angular/cdk-experimental 14.0.0-next.11 → 14.0.0-next.12
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/column-resize/column-resize-directives/column-resize-flex.d.ts +1 -1
- package/column-resize/column-resize-directives/column-resize.d.ts +1 -1
- package/column-resize/column-resize-directives/default-enabled-column-resize-flex.d.ts +1 -1
- package/column-resize/column-resize-directives/default-enabled-column-resize.d.ts +1 -1
- package/column-resize/column-resize.d.ts +1 -1
- package/column-resize/overlay-handle.d.ts +1 -1
- package/column-resize/resizable.d.ts +1 -1
- package/combobox/combobox-popup.d.ts +1 -1
- package/combobox/combobox.d.ts +1 -1
- package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
- package/esm2020/column-resize/column-resize-directives/column-resize.mjs +3 -3
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +3 -3
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +3 -3
- package/esm2020/column-resize/column-resize-module.mjs +8 -8
- package/esm2020/column-resize/column-resize-notifier.mjs +6 -6
- package/esm2020/column-resize/column-resize.mjs +3 -3
- package/esm2020/column-resize/column-size-store.mjs +3 -3
- package/esm2020/column-resize/event-dispatcher.mjs +3 -3
- package/esm2020/column-resize/overlay-handle.mjs +3 -3
- package/esm2020/column-resize/resizable.mjs +3 -3
- package/esm2020/column-resize/resize-strategy.mjs +9 -9
- package/esm2020/combobox/combobox-module.mjs +4 -4
- package/esm2020/combobox/combobox-popup.mjs +3 -3
- package/esm2020/combobox/combobox.mjs +3 -3
- package/esm2020/listbox/listbox-module.mjs +4 -4
- package/esm2020/listbox/listbox.mjs +6 -6
- package/esm2020/popover-edit/edit-event-dispatcher.mjs +3 -3
- package/esm2020/popover-edit/edit-ref.mjs +3 -3
- package/esm2020/popover-edit/edit-services.mjs +3 -3
- package/esm2020/popover-edit/focus-dispatcher.mjs +3 -3
- package/esm2020/popover-edit/focus-escape-notifier.mjs +3 -3
- package/esm2020/popover-edit/lens-directives.mjs +9 -9
- package/esm2020/popover-edit/popover-edit-module.mjs +4 -4
- package/esm2020/popover-edit/popover-edit-position-strategy-factory.mjs +6 -6
- package/esm2020/popover-edit/table-directives.mjs +15 -15
- package/esm2020/scrolling/auto-size-virtual-scroll.mjs +3 -3
- package/esm2020/scrolling/scrolling-module.mjs +4 -4
- package/esm2020/selection/row-selection.mjs +3 -3
- package/esm2020/selection/select-all.mjs +3 -3
- package/esm2020/selection/selection-column.mjs +9 -9
- package/esm2020/selection/selection-module.mjs +4 -4
- package/esm2020/selection/selection-toggle.mjs +3 -3
- package/esm2020/selection/selection.mjs +3 -3
- package/esm2020/table-scroll-container/table-scroll-container-module.mjs +4 -4
- package/esm2020/table-scroll-container/table-scroll-container.mjs +3 -3
- package/esm2020/version.mjs +1 -1
- package/fesm2015/cdk-experimental.mjs +1 -1
- package/fesm2015/cdk-experimental.mjs.map +1 -1
- package/fesm2015/column-resize.mjs +50 -50
- package/fesm2015/combobox.mjs +10 -10
- package/fesm2015/listbox.mjs +10 -10
- package/fesm2015/popover-edit.mjs +49 -49
- package/fesm2015/scrolling.mjs +7 -7
- package/fesm2015/selection.mjs +23 -23
- package/fesm2015/selection.mjs.map +1 -1
- package/fesm2015/table-scroll-container.mjs +7 -7
- package/fesm2020/cdk-experimental.mjs +1 -1
- package/fesm2020/cdk-experimental.mjs.map +1 -1
- package/fesm2020/column-resize.mjs +50 -50
- package/fesm2020/combobox.mjs +10 -10
- package/fesm2020/listbox.mjs +10 -10
- package/fesm2020/popover-edit.mjs +49 -49
- package/fesm2020/scrolling.mjs +7 -7
- package/fesm2020/selection.mjs +23 -23
- package/fesm2020/selection.mjs.map +1 -1
- package/fesm2020/table-scroll-container.mjs +7 -7
- package/listbox/listbox.d.ts +2 -2
- package/package.json +2 -18
- package/popover-edit/lens-directives.d.ts +3 -3
- package/popover-edit/table-directives.d.ts +5 -5
- package/scrolling/auto-size-virtual-scroll.d.ts +1 -1
- package/selection/row-selection.d.ts +1 -1
- package/selection/select-all.d.ts +1 -1
- package/selection/selection-column.d.ts +1 -1
- package/selection/selection-toggle.d.ts +1 -1
- package/selection/selection.d.ts +1 -1
- package/table-scroll-container/table-scroll-container.d.ts +1 -1
- package/dialog/dialog-config.d.ts +0 -111
- package/dialog/dialog-container.d.ts +0 -95
- package/dialog/dialog-injectors.d.ts +0 -24
- package/dialog/dialog-module.d.ts +0 -10
- package/dialog/dialog-ref.d.ts +0 -64
- package/dialog/dialog.d.ts +0 -103
- package/dialog/dialog_public_index.d.ts +0 -4
- package/dialog/index.d.ts +0 -8
- package/dialog/package.json +0 -9
- package/dialog/public-api.d.ts +0 -13
- package/esm2020/dialog/dialog-config.mjs +0 -54
- package/esm2020/dialog/dialog-container.mjs +0 -255
- package/esm2020/dialog/dialog-injectors.mjs +0 -26
- package/esm2020/dialog/dialog-module.mjs +0 -42
- package/esm2020/dialog/dialog-ref.mjs +0 -77
- package/esm2020/dialog/dialog.mjs +0 -285
- package/esm2020/dialog/dialog_public_index.mjs +0 -5
- package/esm2020/dialog/index.mjs +0 -9
- package/esm2020/dialog/public-api.mjs +0 -14
- package/esm2020/menu/context-menu-trigger.mjs +0 -227
- package/esm2020/menu/index.mjs +0 -9
- package/esm2020/menu/menu-aim.mjs +0 -204
- package/esm2020/menu/menu-bar.mjs +0 -159
- package/esm2020/menu/menu-base.mjs +0 -203
- package/esm2020/menu/menu-errors.mjs +0 -22
- package/esm2020/menu/menu-group.mjs +0 -30
- package/esm2020/menu/menu-interface.mjs +0 -11
- package/esm2020/menu/menu-item-checkbox.mjs +0 -48
- package/esm2020/menu/menu-item-radio.mjs +0 -114
- package/esm2020/menu/menu-item-selectable.mjs +0 -42
- package/esm2020/menu/menu-item.mjs +0 -289
- package/esm2020/menu/menu-module.mjs +0 -62
- package/esm2020/menu/menu-stack.mjs +0 -156
- package/esm2020/menu/menu-trigger-base.mjs +0 -114
- package/esm2020/menu/menu-trigger.mjs +0 -302
- package/esm2020/menu/menu.mjs +0 -168
- package/esm2020/menu/menu_public_index.mjs +0 -5
- package/esm2020/menu/pointer-focus-tracker.mjs +0 -51
- package/esm2020/menu/public-api.mjs +0 -24
- package/fesm2015/dialog.mjs +0 -736
- package/fesm2015/dialog.mjs.map +0 -1
- package/fesm2015/menu.mjs +0 -2131
- package/fesm2015/menu.mjs.map +0 -1
- package/fesm2020/dialog.mjs +0 -740
- package/fesm2020/dialog.mjs.map +0 -1
- package/fesm2020/menu.mjs +0 -2104
- package/fesm2020/menu.mjs.map +0 -1
- package/menu/context-menu-trigger.d.ts +0 -98
- package/menu/index.d.ts +0 -8
- package/menu/menu-aim.d.ts +0 -107
- package/menu/menu-bar.d.ts +0 -52
- package/menu/menu-base.d.ts +0 -104
- package/menu/menu-errors.d.ts +0 -17
- package/menu/menu-group.d.ts +0 -8
- package/menu/menu-interface.d.ts +0 -25
- package/menu/menu-item-checkbox.d.ts +0 -18
- package/menu/menu-item-radio.d.ts +0 -59
- package/menu/menu-item-selectable.d.ts +0 -21
- package/menu/menu-item.d.ts +0 -140
- package/menu/menu-module.d.ts +0 -17
- package/menu/menu-stack.d.ts +0 -122
- package/menu/menu-trigger-base.d.ts +0 -77
- package/menu/menu-trigger.d.ts +0 -104
- package/menu/menu.d.ts +0 -60
- package/menu/menu_public_index.d.ts +0 -4
- package/menu/package.json +0 -9
- package/menu/pointer-focus-tracker.d.ts +0 -47
- package/menu/public-api.d.ts +0 -23
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { Directive, ElementRef, EventEmitter, Inject, Input, NgZone, Optional, Output, Self, } from '@angular/core';
|
|
9
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
-
import { ENTER, hasModifierKey, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';
|
|
11
|
-
import { Directionality } from '@angular/cdk/bidi';
|
|
12
|
-
import { fromEvent, Subject } from 'rxjs';
|
|
13
|
-
import { filter, takeUntil } from 'rxjs/operators';
|
|
14
|
-
import { CdkMenuTrigger } from './menu-trigger';
|
|
15
|
-
import { CDK_MENU } from './menu-interface';
|
|
16
|
-
import { MENU_STACK, MenuStack } from './menu-stack';
|
|
17
|
-
import { MENU_AIM } from './menu-aim';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "@angular/cdk/bidi";
|
|
20
|
-
import * as i2 from "./menu-trigger";
|
|
21
|
-
import * as i3 from "./menu-stack";
|
|
22
|
-
/**
|
|
23
|
-
* Directive which provides the ability for an element to be focused and navigated to using the
|
|
24
|
-
* keyboard when residing in a CdkMenu, CdkMenuBar, or CdkMenuGroup. It performs user defined
|
|
25
|
-
* behavior when clicked.
|
|
26
|
-
*/
|
|
27
|
-
export class CdkMenuItem {
|
|
28
|
-
constructor(
|
|
29
|
-
/** The host element for this item. */
|
|
30
|
-
_elementRef,
|
|
31
|
-
/** The Angular zone. */
|
|
32
|
-
_ngZone,
|
|
33
|
-
/** The menu stack this item belongs to. */
|
|
34
|
-
_menuStack,
|
|
35
|
-
/** The parent menu this item belongs to. */
|
|
36
|
-
_parentMenu,
|
|
37
|
-
/** The menu aim service used for this item. */
|
|
38
|
-
_menuAim,
|
|
39
|
-
/** The directionality of the page. */
|
|
40
|
-
_dir,
|
|
41
|
-
/** Reference to the CdkMenuItemTrigger directive if one is added to the same element */
|
|
42
|
-
// tslint:disable-next-line: lightweight-tokens
|
|
43
|
-
_menuTrigger) {
|
|
44
|
-
this._elementRef = _elementRef;
|
|
45
|
-
this._ngZone = _ngZone;
|
|
46
|
-
this._menuStack = _menuStack;
|
|
47
|
-
this._parentMenu = _parentMenu;
|
|
48
|
-
this._menuAim = _menuAim;
|
|
49
|
-
this._dir = _dir;
|
|
50
|
-
this._menuTrigger = _menuTrigger;
|
|
51
|
-
this._disabled = false;
|
|
52
|
-
/**
|
|
53
|
-
* If this MenuItem is a regular MenuItem, outputs when it is triggered by a keyboard or mouse
|
|
54
|
-
* event.
|
|
55
|
-
*/
|
|
56
|
-
this.triggered = new EventEmitter();
|
|
57
|
-
/** Whether the menu item opens a menu. */
|
|
58
|
-
this.hasMenu = !!this._menuTrigger;
|
|
59
|
-
/**
|
|
60
|
-
* The tabindex for this menu item managed internally and used for implementing roving a
|
|
61
|
-
* tab index.
|
|
62
|
-
*/
|
|
63
|
-
this._tabindex = -1;
|
|
64
|
-
/** Whether the item should close the menu if triggered by the spacebar. */
|
|
65
|
-
this.closeOnSpacebarTrigger = true;
|
|
66
|
-
/** Emits when the menu item is destroyed. */
|
|
67
|
-
this.destroyed = new Subject();
|
|
68
|
-
this._setupMouseEnter();
|
|
69
|
-
if (this._isStandaloneItem()) {
|
|
70
|
-
this._tabindex = 0;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/** Whether the CdkMenuItem is disabled - defaults to false */
|
|
74
|
-
get disabled() {
|
|
75
|
-
return this._disabled;
|
|
76
|
-
}
|
|
77
|
-
set disabled(value) {
|
|
78
|
-
this._disabled = coerceBooleanProperty(value);
|
|
79
|
-
}
|
|
80
|
-
ngOnDestroy() {
|
|
81
|
-
this.destroyed.next();
|
|
82
|
-
this.destroyed.complete();
|
|
83
|
-
}
|
|
84
|
-
/** Place focus on the element. */
|
|
85
|
-
focus() {
|
|
86
|
-
this._elementRef.nativeElement.focus();
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* If the menu item is not disabled and the element does not have a menu trigger attached, emit
|
|
90
|
-
* on the cdkMenuItemTriggered emitter and close all open menus.
|
|
91
|
-
* @param options Options the configure how the item is triggered
|
|
92
|
-
* - keepOpen: specifies that the menu should be kept open after triggering the item.
|
|
93
|
-
*/
|
|
94
|
-
trigger(options) {
|
|
95
|
-
const { keepOpen } = { ...options };
|
|
96
|
-
if (!this.disabled && !this.hasMenu) {
|
|
97
|
-
this.triggered.next();
|
|
98
|
-
if (!keepOpen) {
|
|
99
|
-
this._menuStack.closeAll({ focusParentTrigger: true });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/** Return true if this MenuItem has an attached menu and it is open. */
|
|
104
|
-
isMenuOpen() {
|
|
105
|
-
return !!this._menuTrigger?.isOpen();
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get a reference to the rendered Menu if the Menu is open and it is visible in the DOM.
|
|
109
|
-
* @return the menu if it is open, otherwise undefined.
|
|
110
|
-
*/
|
|
111
|
-
getMenu() {
|
|
112
|
-
return this._menuTrigger?.getMenu();
|
|
113
|
-
}
|
|
114
|
-
/** Get the CdkMenuTrigger associated with this element. */
|
|
115
|
-
getMenuTrigger() {
|
|
116
|
-
return this._menuTrigger;
|
|
117
|
-
}
|
|
118
|
-
/** Get the label for this element which is required by the FocusableOption interface. */
|
|
119
|
-
getLabel() {
|
|
120
|
-
return this.typeaheadLabel || this._elementRef.nativeElement.textContent?.trim() || '';
|
|
121
|
-
}
|
|
122
|
-
/** Reset the tabindex to -1. */
|
|
123
|
-
_resetTabIndex() {
|
|
124
|
-
if (!this._isStandaloneItem()) {
|
|
125
|
-
this._tabindex = -1;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element
|
|
130
|
-
* is not in a menu bar.
|
|
131
|
-
*/
|
|
132
|
-
_setTabIndex(event) {
|
|
133
|
-
if (this.disabled) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
// don't set the tabindex if there are no open sibling or parent menus
|
|
137
|
-
if (!event || !this._menuStack.isEmpty()) {
|
|
138
|
-
this._tabindex = 0;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Handles keyboard events for the menu item, specifically either triggering the user defined
|
|
143
|
-
* callback or opening/closing the current menu based on whether the left or right arrow key was
|
|
144
|
-
* pressed.
|
|
145
|
-
* @param event the keyboard event to handle
|
|
146
|
-
*/
|
|
147
|
-
_onKeydown(event) {
|
|
148
|
-
switch (event.keyCode) {
|
|
149
|
-
case SPACE:
|
|
150
|
-
case ENTER:
|
|
151
|
-
if (!hasModifierKey(event)) {
|
|
152
|
-
event.preventDefault();
|
|
153
|
-
this.trigger({ keepOpen: event.keyCode === SPACE && !this.closeOnSpacebarTrigger });
|
|
154
|
-
}
|
|
155
|
-
break;
|
|
156
|
-
case RIGHT_ARROW:
|
|
157
|
-
if (!hasModifierKey(event)) {
|
|
158
|
-
if (this._parentMenu && this._isParentVertical()) {
|
|
159
|
-
if (this._dir?.value !== 'rtl') {
|
|
160
|
-
this._forwardArrowPressed(event);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
this._backArrowPressed(event);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
case LEFT_ARROW:
|
|
169
|
-
if (!hasModifierKey(event)) {
|
|
170
|
-
if (this._parentMenu && this._isParentVertical()) {
|
|
171
|
-
if (this._dir?.value !== 'rtl') {
|
|
172
|
-
this._backArrowPressed(event);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
this._forwardArrowPressed(event);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
/** Whether this menu item is standalone or within a menu or menu bar. */
|
|
183
|
-
_isStandaloneItem() {
|
|
184
|
-
return !this._parentMenu;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Handles the user pressing the back arrow key.
|
|
188
|
-
* @param event The keyboard event.
|
|
189
|
-
*/
|
|
190
|
-
_backArrowPressed(event) {
|
|
191
|
-
const parentMenu = this._parentMenu;
|
|
192
|
-
if (this._menuStack.hasInlineMenu() || this._menuStack.length() > 1) {
|
|
193
|
-
event.preventDefault();
|
|
194
|
-
this._menuStack.close(parentMenu, {
|
|
195
|
-
focusNextOnEmpty: this._menuStack.inlineMenuOrientation() === 'horizontal'
|
|
196
|
-
? 1 /* previousItem */
|
|
197
|
-
: 2 /* currentItem */,
|
|
198
|
-
focusParentTrigger: true,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Handles the user pressing the forward arrow key.
|
|
204
|
-
* @param event The keyboard event.
|
|
205
|
-
*/
|
|
206
|
-
_forwardArrowPressed(event) {
|
|
207
|
-
if (!this.hasMenu && this._menuStack.inlineMenuOrientation() === 'horizontal') {
|
|
208
|
-
event.preventDefault();
|
|
209
|
-
this._menuStack.closeAll({
|
|
210
|
-
focusNextOnEmpty: 0 /* nextItem */,
|
|
211
|
-
focusParentTrigger: true,
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Subscribe to the mouseenter events and close any sibling menu items if this element is moused
|
|
217
|
-
* into.
|
|
218
|
-
*/
|
|
219
|
-
_setupMouseEnter() {
|
|
220
|
-
if (!this._isStandaloneItem()) {
|
|
221
|
-
const closeOpenSiblings = () => this._ngZone.run(() => this._menuStack.closeSubMenuOf(this._parentMenu));
|
|
222
|
-
this._ngZone.runOutsideAngular(() => fromEvent(this._elementRef.nativeElement, 'mouseenter')
|
|
223
|
-
.pipe(filter(() => !this._menuStack.isEmpty() && !this.hasMenu), takeUntil(this.destroyed))
|
|
224
|
-
.subscribe(() => {
|
|
225
|
-
if (this._menuAim) {
|
|
226
|
-
this._menuAim.toggle(closeOpenSiblings);
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
closeOpenSiblings();
|
|
230
|
-
}
|
|
231
|
-
}));
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Return true if the enclosing parent menu is configured in a horizontal orientation, false
|
|
236
|
-
* otherwise or if no parent.
|
|
237
|
-
*/
|
|
238
|
-
_isParentVertical() {
|
|
239
|
-
return this._parentMenu?.orientation === 'vertical';
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
CdkMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuItem, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MENU_STACK }, { token: CDK_MENU, optional: true }, { token: MENU_AIM, optional: true }, { token: i1.Directionality, optional: true }, { token: i2.CdkMenuTrigger, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
243
|
-
CdkMenuItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: CdkMenuItem, selector: "[cdkMenuItem]", inputs: { disabled: ["cdkMenuItemDisabled", "disabled"], typeaheadLabel: ["cdkMenuitemTypeaheadLabel", "typeaheadLabel"] }, outputs: { triggered: "cdkMenuItemTriggered" }, host: { attributes: { "role": "menuitem" }, listeners: { "blur": "_resetTabIndex()", "focus": "_setTabIndex()", "click": "trigger()", "keydown": "_onKeydown($event)" }, properties: { "tabindex": "_tabindex", "attr.aria-disabled": "disabled || null" }, classAttribute: "cdk-menu-item" }, exportAs: ["cdkMenuItem"], ngImport: i0 });
|
|
244
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuItem, decorators: [{
|
|
245
|
-
type: Directive,
|
|
246
|
-
args: [{
|
|
247
|
-
selector: '[cdkMenuItem]',
|
|
248
|
-
exportAs: 'cdkMenuItem',
|
|
249
|
-
host: {
|
|
250
|
-
'role': 'menuitem',
|
|
251
|
-
'class': 'cdk-menu-item',
|
|
252
|
-
'[tabindex]': '_tabindex',
|
|
253
|
-
'[attr.aria-disabled]': 'disabled || null',
|
|
254
|
-
'(blur)': '_resetTabIndex()',
|
|
255
|
-
'(focus)': '_setTabIndex()',
|
|
256
|
-
'(click)': 'trigger()',
|
|
257
|
-
'(keydown)': '_onKeydown($event)',
|
|
258
|
-
},
|
|
259
|
-
}]
|
|
260
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.MenuStack, decorators: [{
|
|
261
|
-
type: Inject,
|
|
262
|
-
args: [MENU_STACK]
|
|
263
|
-
}] }, { type: undefined, decorators: [{
|
|
264
|
-
type: Optional
|
|
265
|
-
}, {
|
|
266
|
-
type: Inject,
|
|
267
|
-
args: [CDK_MENU]
|
|
268
|
-
}] }, { type: undefined, decorators: [{
|
|
269
|
-
type: Optional
|
|
270
|
-
}, {
|
|
271
|
-
type: Inject,
|
|
272
|
-
args: [MENU_AIM]
|
|
273
|
-
}] }, { type: i1.Directionality, decorators: [{
|
|
274
|
-
type: Optional
|
|
275
|
-
}] }, { type: i2.CdkMenuTrigger, decorators: [{
|
|
276
|
-
type: Self
|
|
277
|
-
}, {
|
|
278
|
-
type: Optional
|
|
279
|
-
}] }]; }, propDecorators: { disabled: [{
|
|
280
|
-
type: Input,
|
|
281
|
-
args: ['cdkMenuItemDisabled']
|
|
282
|
-
}], typeaheadLabel: [{
|
|
283
|
-
type: Input,
|
|
284
|
-
args: ['cdkMenuitemTypeaheadLabel']
|
|
285
|
-
}], triggered: [{
|
|
286
|
-
type: Output,
|
|
287
|
-
args: ['cdkMenuItemTriggered']
|
|
288
|
-
}] } });
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay1leHBlcmltZW50YWwvbWVudS9tZW51LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRTFFLE9BQU8sRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQVksVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUMsUUFBUSxFQUFtQixNQUFNLFlBQVksQ0FBQzs7Ozs7QUFFdEQ7Ozs7R0FJRztBQWVILE1BQU0sT0FBTyxXQUFXO0lBc0N0QjtJQUNFLHNDQUFzQztJQUM3QixXQUFvQztJQUM3Qyx3QkFBd0I7SUFDUCxPQUFlO0lBQ2hDLDJDQUEyQztJQUNOLFVBQXFCO0lBQzFELDRDQUE0QztJQUNHLFdBQWtCO0lBQ2pFLCtDQUErQztJQUNBLFFBQWtCO0lB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QUN2QixJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLFVBQVU7d0JBQ2xCLE9BQU8sRUFBRSxlQUFlO3dCQUN4QixZQUFZLEVBQUUsV0FBVzt3QkFDekIsc0JBQXNCLEVBQUUsa0JBQWtCO3dCQUMxQyxRQUFRLEVBQUUsa0JBQWtCO3dCQUM1QixTQUFTLEVBQUUsZ0JBQWdCO3dCQUMzQixTQUFTLEVBQUUsV0FBVzt3QkFDdEIsV0FBVyxFQUFFLG9CQUFvQjtxQkFDbEM7aUJBQ0Y7OzBCQTZDSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUVqQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUUzQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFFBQVE7OzBCQUUzQixRQUFROzswQkFHUixJQUFJOzswQkFBSSxRQUFROzRDQWxEZixRQUFRO3NCQURYLEtBQUs7dUJBQUMscUJBQXFCO2dCQWFRLGNBQWM7c0JBQWpELEtBQUs7dUJBQUMsMkJBQTJCO2dCQU1PLFNBQVM7c0JBQWpELE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtGb2N1c2FibGVPcHRpb259IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7RU5URVIsIGhhc01vZGlmaWVyS2V5LCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0V9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge2Zyb21FdmVudCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0Nka01lbnVUcmlnZ2VyfSBmcm9tICcuL21lbnUtdHJpZ2dlcic7XG5pbXBvcnQge0NES19NRU5VLCBNZW51fSBmcm9tICcuL21lbnUtaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9jdXNOZXh0LCBNRU5VX1NUQUNLLCBNZW51U3RhY2t9IGZyb20gJy4vbWVudS1zdGFjayc7XG5pbXBvcnQge0ZvY3VzYWJsZUVsZW1lbnR9IGZyb20gJy4vcG9pbnRlci1mb2N1cy10cmFja2VyJztcbmltcG9ydCB7TUVOVV9BSU0sIE1lbnVBaW0sIFRvZ2dsZXJ9IGZyb20gJy4vbWVudS1haW0nO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB3aGljaCBwcm92aWRlcyB0aGUgYWJpbGl0eSBmb3IgYW4gZWxlbWVudCB0byBiZSBmb2N1c2VkIGFuZCBuYXZpZ2F0ZWQgdG8gdXNpbmcgdGhlXG4gKiBrZXlib2FyZCB3aGVuIHJlc2lkaW5nIGluIGEgQ2RrTWVudSwgQ2RrTWVudUJhciwgb3IgQ2RrTWVudUdyb3VwLiBJdCBwZXJmb3JtcyB1c2VyIGRlZmluZWRcbiAqIGJlaGF2aW9yIHdoZW4gY2xpY2tlZC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nka01lbnVJdGVtXScsXG4gIGV4cG9ydEFzOiAnY2RrTWVudUl0ZW0nLFxuICBob3N0OiB7XG4gICAgJ3JvbGUnOiAnbWVudWl0ZW0nLFxuICAgICdjbGFzcyc6ICdjZGstbWVudS1pdGVtJyxcbiAgICAnW3RhYmluZGV4XSc6ICdfdGFiaW5kZXgnLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAnKGJsdXIpJzogJ19yZXNldFRhYkluZGV4KCknLFxuICAgICcoZm9jdXMpJzogJ19zZXRUYWJJbmRleCgpJyxcbiAgICAnKGNsaWNrKSc6ICd0cmlnZ2VyKCknLFxuICAgICcoa2V5ZG93biknOiAnX29uS2V5ZG93bigkZXZlbnQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2RrTWVudUl0ZW0gaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIEZvY3VzYWJsZUVsZW1lbnQsIFRvZ2dsZXIsIE9uRGVzdHJveSB7XG4gIC8qKiAgV2hldGhlciB0aGUgQ2RrTWVudUl0ZW0gaXMgZGlzYWJsZWQgLSBkZWZhdWx0cyB0byBmYWxzZSAqL1xuICBASW5wdXQoJ2Nka01lbnVJdGVtRGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHVzZWQgdG8gbG9jYXRlIHRoaXMgaXRlbSBkdXJpbmcgbWVudSB0eXBlYWhlYWQuIElmIG5vdCBzcGVjaWZpZWQsXG4gICAqIHRoZSBgdGV4dENvbnRlbnRgIG9mIHRoZSBpdGVtIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgnY2RrTWVudWl0ZW1UeXBlYWhlYWRMYWJlbCcpIHR5cGVhaGVhZExhYmVsOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIE1lbnVJdGVtIGlzIGEgcmVndWxhciBNZW51SXRlbSwgb3V0cHV0cyB3aGVuIGl0IGlzIHRyaWdnZXJlZCBieSBhIGtleWJvYXJkIG9yIG1vdXNlXG4gICAqIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgnY2RrTWVudUl0ZW1UcmlnZ2VyZWQnKSByZWFkb25seSB0cmlnZ2VyZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKiogV2hldGhlciB0aGUgbWVudSBpdGVtIG9wZW5zIGEgbWVudS4gKi9cbiAgcmVhZG9ubHkgaGFzTWVudSA9ICEhdGhpcy5fbWVudVRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJpbmRleCBmb3IgdGhpcyBtZW51IGl0ZW0gbWFuYWdlZCBpbnRlcm5hbGx5IGFuZCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgcm92aW5nIGFcbiAgICogdGFiIGluZGV4LlxuICAgKi9cbiAgX3RhYmluZGV4OiAwIHwgLTEgPSAtMTtcblxuICAvKiogV2hldGhlciB0aGUgaXRlbSBzaG91bGQgY2xvc2UgdGhlIG1lbnUgaWYgdHJpZ2dlcmVkIGJ5IHRoZSBzcGFjZWJhci4gKi9cbiAgcHJvdGVjdGVkIGNsb3NlT25TcGFjZWJhclRyaWdnZXIgPSB0cnVlO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBtZW51IGl0ZW0gaXMgZGVzdHJveWVkLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogVGhlIGhvc3QgZWxlbWVudCBmb3IgdGhpcyBpdGVtLiAqL1xuICAgIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAvKiogVGhlIEFuZ3VsYXIgem9uZS4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAvKiogVGhlIG1lbnUgc3RhY2sgdGhpcyBpdGVtIGJlbG9uZ3MgdG8uICovXG4gICAgQEluamVjdChNRU5VX1NUQUNLKSBwcml2YXRlIHJlYWRvbmx5IF9tZW51U3RhY2s6IE1lbnVTdGFjayxcbiAgICAvKiogVGhlIHBhcmVudCBtZW51IHRoaXMgaXRlbSBiZWxvbmdzIHRvLiAqL1xuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ0RLX01FTlUpIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudE1lbnU/OiBNZW51LFxuICAgIC8qKiBUaGUgbWVudSBhaW0gc2VydmljZSB1c2VkIGZvciB0aGlzIGl0ZW0uICovXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX0FJTSkgcHJpdmF0ZSByZWFkb25seSBfbWVudUFpbT86IE1lbnVBaW0sXG4gICAgLyoqIFRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgcGFnZS4gKi9cbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9kaXI/OiBEaXJlY3Rpb25hbGl0eSxcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBDZGtNZW51SXRlbVRyaWdnZXIgZGlyZWN0aXZlIGlmIG9uZSBpcyBhZGRlZCB0byB0aGUgc2FtZSBlbGVtZW50ICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBsaWdodHdlaWdodC10b2tlbnNcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX21lbnVUcmlnZ2VyPzogQ2RrTWVudVRyaWdnZXIsXG4gICkge1xuICAgIHRoaXMuX3NldHVwTW91c2VFbnRlcigpO1xuXG4gICAgaWYgKHRoaXMuX2lzU3RhbmRhbG9uZUl0ZW0oKSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSAwO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFBsYWNlIGZvY3VzIG9uIHRoZSBlbGVtZW50LiAqL1xuICBmb2N1cygpIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbWVudSBpdGVtIGlzIG5vdCBkaXNhYmxlZCBhbmQgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIG1lbnUgdHJpZ2dlciBhdHRhY2hlZCwgZW1pdFxuICAgKiBvbiB0aGUgY2RrTWVudUl0ZW1UcmlnZ2VyZWQgZW1pdHRlciBhbmQgY2xvc2UgYWxsIG9wZW4gbWVudXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdGhlIGNvbmZpZ3VyZSBob3cgdGhlIGl0ZW0gaXMgdHJpZ2dlcmVkXG4gICAqICAgLSBrZWVwT3Blbjogc3BlY2lmaWVzIHRoYXQgdGhlIG1lbnUgc2hvdWxkIGJlIGtlcHQgb3BlbiBhZnRlciB0cmlnZ2VyaW5nIHRoZSBpdGVtLlxuICAgKi9cbiAgdHJpZ2dlcihvcHRpb25zPzoge2tlZXBPcGVuOiBib29sZWFufSkge1xuICAgIGNvbnN0IHtrZWVwT3Blbn0gPSB7Li4ub3B0aW9uc307XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmhhc01lbnUpIHtcbiAgICAgIHRoaXMudHJpZ2dlcmVkLm5leHQoKTtcbiAgICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgICAgdGhpcy5fbWVudVN0YWNrLmNsb3NlQWxsKHtmb2N1c1BhcmVudFRyaWdnZXI6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRydWUgaWYgdGhpcyBNZW51SXRlbSBoYXMgYW4gYXR0YWNoZWQgbWVudSBhbmQgaXQgaXMgb3Blbi4gKi9cbiAgaXNNZW51T3BlbigpIHtcbiAgICByZXR1cm4gISF0aGlzLl9tZW51VHJpZ2dlcj8uaXNPcGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZW5kZXJlZCBNZW51IGlmIHRoZSBNZW51IGlzIG9wZW4gYW5kIGl0IGlzIHZpc2libGUgaW4gdGhlIERPTS5cbiAgICogQHJldHVybiB0aGUgbWVudSBpZiBpdCBpcyBvcGVuLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICAgKi9cbiAgZ2V0TWVudSgpOiBNZW51IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudVRyaWdnZXI/LmdldE1lbnUoKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIENka01lbnVUcmlnZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVsZW1lbnQuICovXG4gIGdldE1lbnVUcmlnZ2VyKCk6IENka01lbnVUcmlnZ2VyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudVRyaWdnZXI7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsYWJlbCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBGb2N1c2FibGVPcHRpb24gaW50ZXJmYWNlLiAqL1xuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGVhaGVhZExhYmVsIHx8IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnO1xuICB9XG5cbiAgLyoqIFJlc2V0IHRoZSB0YWJpbmRleCB0byAtMS4gKi9cbiAgX3Jlc2V0VGFiSW5kZXgoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1N0YW5kYWxvbmVJdGVtKCkpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gLTE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGFiIGluZGV4IHRvIDAgaWYgbm90IGRpc2FibGVkIGFuZCBpdCdzIGEgZm9jdXMgZXZlbnQsIG9yIGEgbW91c2UgZW50ZXIgaWYgdGhpcyBlbGVtZW50XG4gICAqIGlzIG5vdCBpbiBhIG1lbnUgYmFyLlxuICAgKi9cbiAgX3NldFRhYkluZGV4KGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZG9uJ3Qgc2V0IHRoZSB0YWJpbmRleCBpZiB0aGVyZSBhcmUgbm8gb3BlbiBzaWJsaW5nIG9yIHBhcmVudCBtZW51c1xuICAgIGlmICghZXZlbnQgfHwgIXRoaXMuX21lbnVTdGFjay5pc0VtcHR5KCkpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgZm9yIHRoZSBtZW51IGl0ZW0sIHNwZWNpZmljYWxseSBlaXRoZXIgdHJpZ2dlcmluZyB0aGUgdXNlciBkZWZpbmVkXG4gICAqIGNhbGxiYWNrIG9yIG9wZW5pbmcvY2xvc2luZyB0aGUgY3VycmVudCBtZW51IGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxlZnQgb3IgcmlnaHQgYXJyb3cga2V5IHdhc1xuICAgKiBwcmVzc2VkLlxuICAgKiBAcGFyYW0gZXZlbnQgdGhlIGtleWJvYXJkIGV2ZW50IHRvIGhhbmRsZVxuICAgKi9cbiAgX29uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTUEFDRTpcbiAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIoe2tlZXBPcGVuOiBldmVudC5rZXlDb2RlID09PSBTUEFDRSAmJiAhdGhpcy5jbG9zZU9uU3BhY2ViYXJUcmlnZ2VyfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1lbnUgJiYgdGhpcy5faXNQYXJlbnRWZXJ0aWNhbCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZGlyPy52YWx1ZSAhPT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEFycm93UHJlc3NlZChldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl9iYWNrQXJyb3dQcmVzc2VkKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTEVGVF9BUlJPVzpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFyZW50TWVudSAmJiB0aGlzLl9pc1BhcmVudFZlcnRpY2FsKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kaXI/LnZhbHVlICE9PSAncnRsJykge1xuICAgICAgICAgICAgICB0aGlzLl9iYWNrQXJyb3dQcmVzc2VkKGV2ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2ZvcndhcmRBcnJvd1ByZXNzZWQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGlzIG1lbnUgaXRlbSBpcyBzdGFuZGFsb25lIG9yIHdpdGhpbiBhIG1lbnUgb3IgbWVudSBiYXIuICovXG4gIHByaXZhdGUgX2lzU3RhbmRhbG9uZUl0ZW0oKSB7XG4gICAgcmV0dXJuICF0aGlzLl9wYXJlbnRNZW51O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHVzZXIgcHJlc3NpbmcgdGhlIGJhY2sgYXJyb3cga2V5LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfYmFja0Fycm93UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IHBhcmVudE1lbnUgPSB0aGlzLl9wYXJlbnRNZW51ITtcbiAgICBpZiAodGhpcy5fbWVudVN0YWNrLmhhc0lubGluZU1lbnUoKSB8fCB0aGlzLl9tZW51U3RhY2subGVuZ3RoKCkgPiAxKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fbWVudVN0YWNrLmNsb3NlKHBhcmVudE1lbnUsIHtcbiAgICAgICAgZm9jdXNOZXh0T25FbXB0eTpcbiAgICAgICAgICB0aGlzLl9tZW51U3RhY2suaW5saW5lTWVudU9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJ1xuICAgICAgICAgICAgPyBGb2N1c05leHQucHJldmlvdXNJdGVtXG4gICAgICAgICAgICA6IEZvY3VzTmV4dC5jdXJyZW50SXRlbSxcbiAgICAgICAgZm9jdXNQYXJlbnRUcmlnZ2VyOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIHVzZXIgcHJlc3NpbmcgdGhlIGZvcndhcmQgYXJyb3cga2V5LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleWJvYXJkIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9yd2FyZEFycm93UHJlc3NlZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5oYXNNZW51ICYmIHRoaXMuX21lbnVTdGFjay5pbmxpbmVNZW51T3JpZW50YXRpb24oKSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fbWVudVN0YWNrLmNsb3NlQWxsKHtcbiAgICAgICAgZm9jdXNOZXh0T25FbXB0eTogRm9jdXNOZXh0Lm5leHRJdGVtLFxuICAgICAgICBmb2N1c1BhcmVudFRyaWdnZXI6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHRoZSBtb3VzZWVudGVyIGV2ZW50cyBhbmQgY2xvc2UgYW55IHNpYmxpbmcgbWVudSBpdGVtcyBpZiB0aGlzIGVsZW1lbnQgaXMgbW91c2VkXG4gICAqIGludG8uXG4gICAqL1xuICBwcml2YXRlIF9zZXR1cE1vdXNlRW50ZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1N0YW5kYWxvbmVJdGVtKCkpIHtcbiAgICAgIGNvbnN0IGNsb3NlT3BlblNpYmxpbmdzID0gKCkgPT5cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLl9tZW51U3RhY2suY2xvc2VTdWJNZW51T2YodGhpcy5fcGFyZW50TWVudSEpKTtcblxuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5fbWVudVN0YWNrLmlzRW1wdHkoKSAmJiAhdGhpcy5oYXNNZW51KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX21lbnVBaW0pIHtcbiAgICAgICAgICAgICAgdGhpcy5fbWVudUFpbS50b2dnbGUoY2xvc2VPcGVuU2libGluZ3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2xvc2VPcGVuU2libGluZ3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSBlbmNsb3NpbmcgcGFyZW50IG1lbnUgaXMgY29uZmlndXJlZCBpbiBhIGhvcml6b250YWwgb3JpZW50YXRpb24sIGZhbHNlXG4gICAqIG90aGVyd2lzZSBvciBpZiBubyBwYXJlbnQuXG4gICAqL1xuICBwcml2YXRlIF9pc1BhcmVudFZlcnRpY2FsKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRNZW51Py5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgfVxufVxuIl19
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { NgModule } from '@angular/core';
|
|
9
|
-
import { OverlayModule } from '@angular/cdk/overlay';
|
|
10
|
-
import { CdkMenu } from './menu';
|
|
11
|
-
import { CdkMenuBar } from './menu-bar';
|
|
12
|
-
import { CdkMenuItem } from './menu-item';
|
|
13
|
-
import { CdkMenuGroup } from './menu-group';
|
|
14
|
-
import { CdkMenuItemRadio } from './menu-item-radio';
|
|
15
|
-
import { CdkMenuItemCheckbox } from './menu-item-checkbox';
|
|
16
|
-
import { CdkMenuTrigger } from './menu-trigger';
|
|
17
|
-
import { CdkContextMenuTrigger } from './context-menu-trigger';
|
|
18
|
-
import { CdkTargetMenuAim } from './menu-aim';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
/** The list of components and directives that should be declared and exported from this module. */
|
|
21
|
-
const EXPORTED_DECLARATIONS = [
|
|
22
|
-
CdkMenuBar,
|
|
23
|
-
CdkMenu,
|
|
24
|
-
CdkMenuItem,
|
|
25
|
-
CdkMenuItemRadio,
|
|
26
|
-
CdkMenuItemCheckbox,
|
|
27
|
-
CdkMenuTrigger,
|
|
28
|
-
CdkMenuGroup,
|
|
29
|
-
CdkContextMenuTrigger,
|
|
30
|
-
CdkTargetMenuAim,
|
|
31
|
-
];
|
|
32
|
-
/** Module that declares components and directives for the CDK menu. */
|
|
33
|
-
export class CdkMenuModule {
|
|
34
|
-
}
|
|
35
|
-
CdkMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
36
|
-
CdkMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, declarations: [CdkMenuBar,
|
|
37
|
-
CdkMenu,
|
|
38
|
-
CdkMenuItem,
|
|
39
|
-
CdkMenuItemRadio,
|
|
40
|
-
CdkMenuItemCheckbox,
|
|
41
|
-
CdkMenuTrigger,
|
|
42
|
-
CdkMenuGroup,
|
|
43
|
-
CdkContextMenuTrigger,
|
|
44
|
-
CdkTargetMenuAim], imports: [OverlayModule], exports: [CdkMenuBar,
|
|
45
|
-
CdkMenu,
|
|
46
|
-
CdkMenuItem,
|
|
47
|
-
CdkMenuItemRadio,
|
|
48
|
-
CdkMenuItemCheckbox,
|
|
49
|
-
CdkMenuTrigger,
|
|
50
|
-
CdkMenuGroup,
|
|
51
|
-
CdkContextMenuTrigger,
|
|
52
|
-
CdkTargetMenuAim] });
|
|
53
|
-
CdkMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, imports: [[OverlayModule]] });
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: CdkMenuModule, decorators: [{
|
|
55
|
-
type: NgModule,
|
|
56
|
-
args: [{
|
|
57
|
-
imports: [OverlayModule],
|
|
58
|
-
exports: EXPORTED_DECLARATIONS,
|
|
59
|
-
declarations: EXPORTED_DECLARATIONS,
|
|
60
|
-
}]
|
|
61
|
-
}] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrLWV4cGVyaW1lbnRhbC9tZW51L21lbnUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFlBQVksQ0FBQzs7QUFFNUMsbUdBQW1HO0FBQ25HLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsVUFBVTtJQUNWLE9BQU87SUFDUCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsWUFBWTtJQUNaLHFCQUFxQjtJQUNyQixnQkFBZ0I7Q0FDakIsQ0FBQztBQUVGLHVFQUF1RTtBQU12RSxNQUFNLE9BQU8sYUFBYTs7a0hBQWIsYUFBYTttSEFBYixhQUFhLGlCQWpCeEIsVUFBVTtRQUNWLE9BQU87UUFDUCxXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixnQkFBZ0IsYUFLTixhQUFhLGFBYnZCLFVBQVU7UUFDVixPQUFPO1FBQ1AsV0FBVztRQUNYLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLFlBQVk7UUFDWixxQkFBcUI7UUFDckIsZ0JBQWdCO21IQVNMLGFBQWEsWUFKZixDQUFDLGFBQWEsQ0FBQzttR0FJYixhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLHFCQUFxQjtvQkFDOUIsWUFBWSxFQUFFLHFCQUFxQjtpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge092ZXJsYXlNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7Q2RrTWVudX0gZnJvbSAnLi9tZW51JztcbmltcG9ydCB7Q2RrTWVudUJhcn0gZnJvbSAnLi9tZW51LWJhcic7XG5pbXBvcnQge0Nka01lbnVJdGVtfSBmcm9tICcuL21lbnUtaXRlbSc7XG5pbXBvcnQge0Nka01lbnVHcm91cH0gZnJvbSAnLi9tZW51LWdyb3VwJztcbmltcG9ydCB7Q2RrTWVudUl0ZW1SYWRpb30gZnJvbSAnLi9tZW51LWl0ZW0tcmFkaW8nO1xuaW1wb3J0IHtDZGtNZW51SXRlbUNoZWNrYm94fSBmcm9tICcuL21lbnUtaXRlbS1jaGVja2JveCc7XG5pbXBvcnQge0Nka01lbnVUcmlnZ2VyfSBmcm9tICcuL21lbnUtdHJpZ2dlcic7XG5pbXBvcnQge0Nka0NvbnRleHRNZW51VHJpZ2dlcn0gZnJvbSAnLi9jb250ZXh0LW1lbnUtdHJpZ2dlcic7XG5pbXBvcnQge0Nka1RhcmdldE1lbnVBaW19IGZyb20gJy4vbWVudS1haW0nO1xuXG4vKiogVGhlIGxpc3Qgb2YgY29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyB0aGF0IHNob3VsZCBiZSBkZWNsYXJlZCBhbmQgZXhwb3J0ZWQgZnJvbSB0aGlzIG1vZHVsZS4gKi9cbmNvbnN0IEVYUE9SVEVEX0RFQ0xBUkFUSU9OUyA9IFtcbiAgQ2RrTWVudUJhcixcbiAgQ2RrTWVudSxcbiAgQ2RrTWVudUl0ZW0sXG4gIENka01lbnVJdGVtUmFkaW8sXG4gIENka01lbnVJdGVtQ2hlY2tib3gsXG4gIENka01lbnVUcmlnZ2VyLFxuICBDZGtNZW51R3JvdXAsXG4gIENka0NvbnRleHRNZW51VHJpZ2dlcixcbiAgQ2RrVGFyZ2V0TWVudUFpbSxcbl07XG5cbi8qKiBNb2R1bGUgdGhhdCBkZWNsYXJlcyBjb21wb25lbnRzIGFuZCBkaXJlY3RpdmVzIGZvciB0aGUgQ0RLIG1lbnUuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbT3ZlcmxheU1vZHVsZV0sXG4gIGV4cG9ydHM6IEVYUE9SVEVEX0RFQ0xBUkFUSU9OUyxcbiAgZGVjbGFyYXRpb25zOiBFWFBPUlRFRF9ERUNMQVJBVElPTlMsXG59KVxuZXhwb3J0IGNsYXNzIENka01lbnVNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';
|
|
9
|
-
import { Subject } from 'rxjs';
|
|
10
|
-
import { debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
/** Injection token used for an implementation of MenuStack. */
|
|
13
|
-
export const MENU_STACK = new InjectionToken('cdk-menu-stack');
|
|
14
|
-
/** Provider that provides the parent menu stack, or a new menu stack if there is no parent one. */
|
|
15
|
-
export const PARENT_OR_NEW_MENU_STACK_PROVIDER = {
|
|
16
|
-
provide: MENU_STACK,
|
|
17
|
-
deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
|
|
18
|
-
useFactory: (parentMenuStack) => parentMenuStack || new MenuStack(),
|
|
19
|
-
};
|
|
20
|
-
/** Provider that provides the parent menu stack, or a new inline menu stack if there is no parent one. */
|
|
21
|
-
export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER = (orientation) => ({
|
|
22
|
-
provide: MENU_STACK,
|
|
23
|
-
deps: [[new Optional(), new SkipSelf(), new Inject(MENU_STACK)]],
|
|
24
|
-
useFactory: (parentMenuStack) => parentMenuStack || MenuStack.inline(orientation),
|
|
25
|
-
});
|
|
26
|
-
/** The next available menu stack ID. */
|
|
27
|
-
let nextId = 0;
|
|
28
|
-
/**
|
|
29
|
-
* MenuStack allows subscribers to listen for close events (when a MenuStackItem is popped off
|
|
30
|
-
* of the stack) in order to perform closing actions. Upon the MenuStack being empty it emits
|
|
31
|
-
* from the `empty` observable specifying the next focus action which the listener should perform
|
|
32
|
-
* as requested by the closer.
|
|
33
|
-
*/
|
|
34
|
-
export class MenuStack {
|
|
35
|
-
constructor() {
|
|
36
|
-
/** The ID of this menu stack. */
|
|
37
|
-
this.id = `${nextId++}`;
|
|
38
|
-
/** All MenuStackItems tracked by this MenuStack. */
|
|
39
|
-
this._elements = [];
|
|
40
|
-
/** Emits the element which was popped off of the stack when requested by a closer. */
|
|
41
|
-
this._close = new Subject();
|
|
42
|
-
/** Emits once the MenuStack has become empty after popping off elements. */
|
|
43
|
-
this._empty = new Subject();
|
|
44
|
-
/** Emits whether any menu in the menu stack has focus. */
|
|
45
|
-
this._hasFocus = new Subject();
|
|
46
|
-
/** Observable which emits the MenuStackItem which has been requested to close. */
|
|
47
|
-
this.closed = this._close;
|
|
48
|
-
/** Observable which emits whether any menu in the menu stack has focus. */
|
|
49
|
-
this.hasFocus = this._hasFocus.pipe(startWith(false), debounceTime(0), distinctUntilChanged());
|
|
50
|
-
/**
|
|
51
|
-
* Observable which emits when the MenuStack is empty after popping off the last element. It
|
|
52
|
-
* emits a FocusNext event which specifies the action the closer has requested the listener
|
|
53
|
-
* perform.
|
|
54
|
-
*/
|
|
55
|
-
this.emptied = this._empty;
|
|
56
|
-
/**
|
|
57
|
-
* Whether the inline menu associated with this menu stack is vertical or horizontal.
|
|
58
|
-
* `null` indicates there is no inline menu associated with this menu stack.
|
|
59
|
-
*/
|
|
60
|
-
this._inlineMenuOrientation = null;
|
|
61
|
-
}
|
|
62
|
-
/** Creates a menu stack that originates from an inline menu. */
|
|
63
|
-
static inline(orientation) {
|
|
64
|
-
const stack = new MenuStack();
|
|
65
|
-
stack._inlineMenuOrientation = orientation;
|
|
66
|
-
return stack;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Adds an item to the menu stack.
|
|
70
|
-
* @param menu the MenuStackItem to put on the stack.
|
|
71
|
-
*/
|
|
72
|
-
push(menu) {
|
|
73
|
-
this._elements.push(menu);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Pop items off of the stack up to and including `lastItem` and emit each on the close
|
|
77
|
-
* observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
|
|
78
|
-
* @param lastItem the last item to pop off the stack.
|
|
79
|
-
* @param options Options that configure behavior on close.
|
|
80
|
-
*/
|
|
81
|
-
close(lastItem, options) {
|
|
82
|
-
const { focusNextOnEmpty, focusParentTrigger } = { ...options };
|
|
83
|
-
if (this._elements.indexOf(lastItem) >= 0) {
|
|
84
|
-
let poppedElement;
|
|
85
|
-
do {
|
|
86
|
-
poppedElement = this._elements.pop();
|
|
87
|
-
this._close.next({ item: poppedElement, focusParentTrigger });
|
|
88
|
-
} while (poppedElement !== lastItem);
|
|
89
|
-
if (this.isEmpty()) {
|
|
90
|
-
this._empty.next(focusNextOnEmpty);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Pop items off of the stack up to but excluding `lastItem` and emit each on the close
|
|
96
|
-
* observable. If the stack is empty or `lastItem` is not on the stack it does nothing.
|
|
97
|
-
* @param lastItem the element which should be left on the stack
|
|
98
|
-
* @return whether or not an item was removed from the stack
|
|
99
|
-
*/
|
|
100
|
-
closeSubMenuOf(lastItem) {
|
|
101
|
-
let removed = false;
|
|
102
|
-
if (this._elements.indexOf(lastItem) >= 0) {
|
|
103
|
-
removed = this.peek() !== lastItem;
|
|
104
|
-
while (this.peek() !== lastItem) {
|
|
105
|
-
this._close.next({ item: this._elements.pop() });
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return removed;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Pop off all MenuStackItems and emit each one on the `close` observable one by one.
|
|
112
|
-
* @param options Options that configure behavior on close.
|
|
113
|
-
*/
|
|
114
|
-
closeAll(options) {
|
|
115
|
-
const { focusNextOnEmpty, focusParentTrigger } = { ...options };
|
|
116
|
-
if (!this.isEmpty()) {
|
|
117
|
-
while (!this.isEmpty()) {
|
|
118
|
-
const menuStackItem = this._elements.pop();
|
|
119
|
-
if (menuStackItem) {
|
|
120
|
-
this._close.next({ item: menuStackItem, focusParentTrigger });
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
this._empty.next(focusNextOnEmpty);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/** Return true if this stack is empty. */
|
|
127
|
-
isEmpty() {
|
|
128
|
-
return !this._elements.length;
|
|
129
|
-
}
|
|
130
|
-
/** Return the length of the stack. */
|
|
131
|
-
length() {
|
|
132
|
-
return this._elements.length;
|
|
133
|
-
}
|
|
134
|
-
/** Get the top most element on the stack. */
|
|
135
|
-
peek() {
|
|
136
|
-
return this._elements[this._elements.length - 1];
|
|
137
|
-
}
|
|
138
|
-
/** Whether the menu stack is associated with an inline menu. */
|
|
139
|
-
hasInlineMenu() {
|
|
140
|
-
return this._inlineMenuOrientation != null;
|
|
141
|
-
}
|
|
142
|
-
/** The orientation of the associated inline menu. */
|
|
143
|
-
inlineMenuOrientation() {
|
|
144
|
-
return this._inlineMenuOrientation;
|
|
145
|
-
}
|
|
146
|
-
/** Sets whether the menu stack contains the focused element. */
|
|
147
|
-
setHasFocus(hasFocus) {
|
|
148
|
-
this._hasFocus.next(hasFocus);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
MenuStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MenuStack, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
152
|
-
MenuStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MenuStack });
|
|
153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MenuStack, decorators: [{
|
|
154
|
-
type: Injectable
|
|
155
|
-
}] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL21lbnUvbWVudS1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBZTdFLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQVksZ0JBQWdCLENBQUMsQ0FBQztBQUUxRSxtR0FBbUc7QUFDbkcsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUc7SUFDL0MsT0FBTyxFQUFFLFVBQVU7SUFDbkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNoRSxVQUFVLEVBQUUsQ0FBQyxlQUEyQixFQUFFLEVBQUUsQ0FBQyxlQUFlLElBQUksSUFBSSxTQUFTLEVBQUU7Q0FDaEYsQ0FBQztBQUVGLDBHQUEwRztBQUMxRyxNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxDQUN0RCxXQUFzQyxFQUN0QyxFQUFFLENBQUMsQ0FBQztJQUNKLE9BQU8sRUFBRSxVQUFVO0lBQ25CLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsVUFBVSxFQUFFLENBQUMsZUFBMkIsRUFB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Q0FBQztJQUNoQyxDQUFDOzs4R0F6SVUsU0FBUztrSEFBVCxTQUFTO21HQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgU2tpcFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKiBUaGUgcmVsYXRpdmUgaXRlbSBpbiB0aGUgaW5saW5lIG1lbnUgdG8gZm9jdXMgYWZ0ZXIgY2xvc2luZyBhbGwgcG9wdXAgbWVudXMuICovXG5leHBvcnQgY29uc3QgZW51bSBGb2N1c05leHQge1xuICBuZXh0SXRlbSxcbiAgcHJldmlvdXNJdGVtLFxuICBjdXJyZW50SXRlbSxcbn1cblxuLyoqIEEgc2luZ2xlIGl0ZW0gKG1lbnUpIGluIHRoZSBtZW51IHN0YWNrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51U3RhY2tJdGVtIHtcbiAgLyoqIEEgcmVmZXJlbmNlIHRvIHRoZSBtZW51IHN0YWNrIHRoaXMgbWVudSBzdGFjayBpdGVtIGJlbG9uZ3MgdG8uICovXG4gIG1lbnVTdGFjaz86IE1lbnVTdGFjaztcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB1c2VkIGZvciBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNZW51U3RhY2suICovXG5leHBvcnQgY29uc3QgTUVOVV9TVEFDSyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZW51U3RhY2s+KCdjZGstbWVudS1zdGFjaycpO1xuXG4vKiogUHJvdmlkZXIgdGhhdCBwcm92aWRlcyB0aGUgcGFyZW50IG1lbnUgc3RhY2ssIG9yIGEgbmV3IG1lbnUgc3RhY2sgaWYgdGhlcmUgaXMgbm8gcGFyZW50IG9uZS4gKi9cbmV4cG9ydCBjb25zdCBQQVJFTlRfT1JfTkVXX01FTlVfU1RBQ0tfUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IE1FTlVfU1RBQ0ssXG4gIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBuZXcgSW5qZWN0KE1FTlVfU1RBQ0spXV0sXG4gIHVzZUZhY3Rvcnk6IChwYXJlbnRNZW51U3RhY2s/OiBNZW51U3RhY2spID0+IHBhcmVudE1lbnVTdGFjayB8fCBuZXcgTWVudVN0YWNrKCksXG59O1xuXG4vKiogUHJvdmlkZXIgdGhhdCBwcm92aWRlcyB0aGUgcGFyZW50IG1lbnUgc3RhY2ssIG9yIGEgbmV3IGlubGluZSBtZW51IHN0YWNrIGlmIHRoZXJlIGlzIG5vIHBhcmVudCBvbmUuICovXG5leHBvcnQgY29uc3QgUEFSRU5UX09SX05FV19JTkxJTkVfTUVOVV9TVEFDS19QUk9WSURFUiA9IChcbiAgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcsXG4pID0+ICh7XG4gIHByb3ZpZGU6IE1FTlVfU1RBQ0ssXG4gIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBuZXcgSW5qZWN0KE1FTlVfU1RBQ0spXV0sXG4gIHVzZUZhY3Rvcnk6IChwYXJlbnRNZW51U3RhY2s/OiBNZW51U3RhY2spID0+IHBhcmVudE1lbnVTdGFjayB8fCBNZW51U3RhY2suaW5saW5lKG9yaWVudGF0aW9uKSxcbn0pO1xuXG4vKiogT3B0aW9ucyB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byB0aGUgY2xvc2Ugb3IgY2xvc2VBbGwgbWV0aG9kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvc2VPcHRpb25zIHtcbiAgLyoqIFRoZSBlbGVtZW50IHRvIGZvY3VzIG5leHQgaWYgdGhlIGNsb3NlIG9wZXJhdGlvbiBjYXVzZXMgdGhlIG1lbnUgc3RhY2sgdG8gYmVjb21lIGVtcHR5LiAqL1xuICBmb2N1c05leHRPbkVtcHR5PzogRm9jdXNOZXh0O1xuICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgcGFyZW50IHRyaWdnZXIgYWZ0ZXIgY2xvc2luZyB0aGUgbWVudS4gKi9cbiAgZm9jdXNQYXJlbnRUcmlnZ2VyPzogYm9vbGVhbjtcbn1cblxuLyoqIEV2ZW50IGRpc3BhdGNoZWQgd2hlbiBhIG1lbnUgaXMgY2xvc2VkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51U3RhY2tDbG9zZUV2ZW50IHtcbiAgLyoqIFRoZSBtZW51IGJlaW5nIGNsb3NlZC4gKi9cbiAgaXRlbTogTWVudVN0YWNrSXRlbTtcbiAgLyoqIFdoZXRoZXIgdG8gZm9jdXMgdGhlIHBhcmVudCB0cmlnZ2VyIGFmdGVyIGNsb3NpbmcgdGhlIG1lbnUuICovXG4gIGZvY3VzUGFyZW50VHJpZ2dlcj86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgbmV4dCBhdmFpbGFibGUgbWVudSBzdGFjayBJRC4gKi9cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIE1lbnVTdGFjayBhbGxvd3Mgc3Vic2NyaWJlcnMgdG8gbGlzdGVuIGZvciBjbG9zZSBldmVudHMgKHdoZW4gYSBNZW51U3RhY2tJdGVtIGlzIHBvcHBlZCBvZmZcbiAqIG9mIHRoZSBzdGFjaykgaW4gb3JkZXIgdG8gcGVyZm9ybSBjbG9zaW5nIGFjdGlvbnMuIFVwb24gdGhlIE1lbnVTdGFjayBiZWluZyBlbXB0eSBpdCBlbWl0c1xuICogZnJvbSB0aGUgYGVtcHR5YCBvYnNlcnZhYmxlIHNwZWNpZnlpbmcgdGhlIG5leHQgZm9jdXMgYWN0aW9uIHdoaWNoIHRoZSBsaXN0ZW5lciBzaG91bGQgcGVyZm9ybVxuICogYXMgcmVxdWVzdGVkIGJ5IHRoZSBjbG9zZXIuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZW51U3RhY2sge1xuICAvKiogVGhlIElEIG9mIHRoaXMgbWVudSBzdGFjay4gKi9cbiAgcmVhZG9ubHkgaWQgPSBgJHtuZXh0SWQrK31gO1xuXG4gIC8qKiBBbGwgTWVudVN0YWNrSXRlbXMgdHJhY2tlZCBieSB0aGlzIE1lbnVTdGFjay4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudHM6IE1lbnVTdGFja0l0ZW1bXSA9IFtdO1xuXG4gIC8qKiBFbWl0cyB0aGUgZWxlbWVudCB3aGljaCB3YXMgcG9wcGVkIG9mZiBvZiB0aGUgc3RhY2sgd2hlbiByZXF1ZXN0ZWQgYnkgYSBjbG9zZXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nsb3NlID0gbmV3IFN1YmplY3Q8TWVudVN0YWNrQ2xvc2VFdmVudD4oKTtcblxuICAvKiogRW1pdHMgb25jZSB0aGUgTWVudVN0YWNrIGhhcyBiZWNvbWUgZW1wdHkgYWZ0ZXIgcG9wcGluZyBvZmYgZWxlbWVudHMuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VtcHR5ID0gbmV3IFN1YmplY3Q8Rm9jdXNOZXh0IHwgdW5kZWZpbmVkPigpO1xuXG4gIC8qKiBFbWl0cyB3aGV0aGVyIGFueSBtZW51IGluIHRoZSBtZW51IHN0YWNrIGhhcyBmb2N1cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaGFzRm9jdXMgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIC8qKiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBNZW51U3RhY2tJdGVtIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCB0byBjbG9zZS4gKi9cbiAgcmVhZG9ubHkgY2xvc2VkOiBPYnNlcnZhYmxlPE1lbnVTdGFja0Nsb3NlRXZlbnQ+ID0gdGhpcy5fY2xvc2U7XG5cbiAgLyoqIE9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hldGhlciBhbnkgbWVudSBpbiB0aGUgbWVudSBzdGFjayBoYXMgZm9jdXMuICovXG4gIHJlYWRvbmx5IGhhc0ZvY3VzOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faGFzRm9jdXMucGlwZShcbiAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW4gdGhlIE1lbnVTdGFjayBpcyBlbXB0eSBhZnRlciBwb3BwaW5nIG9mZiB0aGUgbGFzdCBlbGVtZW50LiBJdFxuICAgKiBlbWl0cyBhIEZvY3VzTmV4dCBldmVudCB3aGljaCBzcGVjaWZpZXMgdGhlIGFjdGlvbiB0aGUgY2xvc2VyIGhhcyByZXF1ZXN0ZWQgdGhlIGxpc3RlbmVyXG4gICAqIHBlcmZvcm0uXG4gICAqL1xuICByZWFkb25seSBlbXB0aWVkOiBPYnNlcnZhYmxlPEZvY3VzTmV4dCB8IHVuZGVmaW5lZD4gPSB0aGlzLl9lbXB0eTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5saW5lIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWVudSBzdGFjayBpcyB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLlxuICAgKiBgbnVsbGAgaW5kaWNhdGVzIHRoZXJlIGlzIG5vIGlubGluZSBtZW51IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1lbnUgc3RhY2suXG4gICAqL1xuICBwcml2YXRlIF9pbmxpbmVNZW51T3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgfCBudWxsID0gbnVsbDtcblxuICAvKiogQ3JlYXRlcyBhIG1lbnUgc3RhY2sgdGhhdCBvcmlnaW5hdGVzIGZyb20gYW4gaW5saW5lIG1lbnUuICovXG4gIHN0YXRpYyBpbmxpbmUob3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBNZW51U3RhY2soKTtcbiAgICBzdGFjay5faW5saW5lTWVudU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaXRlbSB0byB0aGUgbWVudSBzdGFjay5cbiAgICogQHBhcmFtIG1lbnUgdGhlIE1lbnVTdGFja0l0ZW0gdG8gcHV0IG9uIHRoZSBzdGFjay5cbiAgICovXG4gIHB1c2gobWVudTogTWVudVN0YWNrSXRlbSkge1xuICAgIHRoaXMuX2VsZW1lbnRzLnB1c2gobWVudSk7XG4gIH1cblxuICAvKipcbiAgICogUG9wIGl0ZW1zIG9mZiBvZiB0aGUgc3RhY2sgdXAgdG8gYW5kIGluY2x1ZGluZyBgbGFzdEl0ZW1gIGFuZCBlbWl0IGVhY2ggb24gdGhlIGNsb3NlXG4gICAqIG9ic2VydmFibGUuIElmIHRoZSBzdGFjayBpcyBlbXB0eSBvciBgbGFzdEl0ZW1gIGlzIG5vdCBvbiB0aGUgc3RhY2sgaXQgZG9lcyBub3RoaW5nLlxuICAgKiBAcGFyYW0gbGFzdEl0ZW0gdGhlIGxhc3QgaXRlbSB0byBwb3Agb2ZmIHRoZSBzdGFjay5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGF0IGNvbmZpZ3VyZSBiZWhhdmlvciBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlKGxhc3RJdGVtOiBNZW51U3RhY2tJdGVtLCBvcHRpb25zPzogQ2xvc2VPcHRpb25zKSB7XG4gICAgY29uc3Qge2ZvY3VzTmV4dE9uRW1wdHksIGZvY3VzUGFyZW50VHJpZ2dlcn0gPSB7Li4ub3B0aW9uc307XG4gICAgaWYgKHRoaXMuX2VsZW1lbnRzLmluZGV4T2YobGFzdEl0ZW0pID49IDApIHtcbiAgICAgIGxldCBwb3BwZWRFbGVtZW50O1xuICAgICAgZG8ge1xuICAgICAgICBwb3BwZWRFbGVtZW50ID0gdGhpcy5fZWxlbWVudHMucG9wKCkhO1xuICAgICAgICB0aGlzLl9jbG9zZS5uZXh0KHtpdGVtOiBwb3BwZWRFbGVtZW50LCBmb2N1c1BhcmVudFRyaWdnZXJ9KTtcbiAgICAgIH0gd2hpbGUgKHBvcHBlZEVsZW1lbnQgIT09IGxhc3RJdGVtKTtcblxuICAgICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMuX2VtcHR5Lm5leHQoZm9jdXNOZXh0T25FbXB0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBvcCBpdGVtcyBvZmYgb2YgdGhlIHN0YWNrIHVwIHRvIGJ1dCBleGNsdWRpbmcgYGxhc3RJdGVtYCBhbmQgZW1pdCBlYWNoIG9uIHRoZSBjbG9zZVxuICAgKiBvYnNlcnZhYmxlLiBJZiB0aGUgc3RhY2sgaXMgZW1wdHkgb3IgYGxhc3RJdGVtYCBpcyBub3Qgb24gdGhlIHN0YWNrIGl0IGRvZXMgbm90aGluZy5cbiAgICogQHBhcmFtIGxhc3RJdGVtIHRoZSBlbGVtZW50IHdoaWNoIHNob3VsZCBiZSBsZWZ0IG9uIHRoZSBzdGFja1xuICAgKiBAcmV0dXJuIHdoZXRoZXIgb3Igbm90IGFuIGl0ZW0gd2FzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2tcbiAgICovXG4gIGNsb3NlU3ViTWVudU9mKGxhc3RJdGVtOiBNZW51U3RhY2tJdGVtKSB7XG4gICAgbGV0IHJlbW92ZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5fZWxlbWVudHMuaW5kZXhPZihsYXN0SXRlbSkgPj0gMCkge1xuICAgICAgcmVtb3ZlZCA9IHRoaXMucGVlaygpICE9PSBsYXN0SXRlbTtcbiAgICAgIHdoaWxlICh0aGlzLnBlZWsoKSAhPT0gbGFzdEl0ZW0pIHtcbiAgICAgICAgdGhpcy5fY2xvc2UubmV4dCh7aXRlbTogdGhpcy5fZWxlbWVudHMucG9wKCkhfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZW1vdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcCBvZmYgYWxsIE1lbnVTdGFja0l0ZW1zIGFuZCBlbWl0IGVhY2ggb25lIG9uIHRoZSBgY2xvc2VgIG9ic2VydmFibGUgb25lIGJ5IG9uZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGF0IGNvbmZpZ3VyZSBiZWhhdmlvciBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlQWxsKG9wdGlvbnM/OiBDbG9zZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7Zm9jdXNOZXh0T25FbXB0eSwgZm9jdXNQYXJlbnRUcmlnZ2VyfSA9IHsuLi5vcHRpb25zfTtcbiAgICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICB3aGlsZSAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgIGNvbnN0IG1lbnVTdGFja0l0ZW0gPSB0aGlzLl9lbGVtZW50cy5wb3AoKTtcbiAgICAgICAgaWYgKG1lbnVTdGFja0l0ZW0pIHtcbiAgICAgICAgICB0aGlzLl9jbG9zZS5uZXh0KHtpdGVtOiBtZW51U3RhY2tJdGVtLCBmb2N1c1BhcmVudFRyaWdnZXJ9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fZW1wdHkubmV4dChmb2N1c05leHRPbkVtcHR5KTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRydWUgaWYgdGhpcyBzdGFjayBpcyBlbXB0eS4gKi9cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gIXRoaXMuX2VsZW1lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc3RhY2suICovXG4gIGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgdG9wIG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2suICovXG4gIHBlZWsoKTogTWVudVN0YWNrSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzW3RoaXMuX2VsZW1lbnRzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1lbnUgc3RhY2sgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGlubGluZSBtZW51LiAqL1xuICBoYXNJbmxpbmVNZW51KCkge1xuICAgIHJldHVybiB0aGlzLl9pbmxpbmVNZW51T3JpZW50YXRpb24gIT0gbnVsbDtcbiAgfVxuXG4gIC8qKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGFzc29jaWF0ZWQgaW5saW5lIG1lbnUuICovXG4gIGlubGluZU1lbnVPcmllbnRhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5saW5lTWVudU9yaWVudGF0aW9uO1xuICB9XG5cbiAgLyoqIFNldHMgd2hldGhlciB0aGUgbWVudSBzdGFjayBjb250YWlucyB0aGUgZm9jdXNlZCBlbGVtZW50LiAqL1xuICBzZXRIYXNGb2N1cyhoYXNGb2N1czogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc0ZvY3VzLm5leHQoaGFzRm9jdXMpO1xuICB9XG59XG4iXX0=
|