@theseam/ui-common 0.3.12-beta.0 → 0.3.13-beta.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.
@@ -1,36 +1,23 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
2
  import { BehaviorSubject, Subject } from 'rxjs';
3
- import { map } from 'rxjs/operators';
4
- import { areSameHorizontalNavItem } from '../nav-utils';
3
+ import { shareReplay, switchMap } from 'rxjs/operators';
5
4
  import { TheSeamNavService } from '../nav.service';
6
5
  export class HorizontalNavComponent {
7
- constructor() {
6
+ constructor(_nav) {
7
+ this._nav = _nav;
8
8
  this._ngUnsubscribe = new Subject();
9
9
  this._items = new BehaviorSubject([]);
10
10
  this.hideEmptyIcon = true;
11
11
  this.hierLevel = 0;
12
12
  this.childAction = 'menu';
13
13
  this.expandAction = 'toggle';
14
- this._focusedNavItem = new BehaviorSubject(undefined);
15
- this.focusedNavItem$ = this._focusedNavItem.asObservable();
16
14
  this.navItemExpanded = new EventEmitter();
17
- this.items$ = this._items.asObservable();
15
+ this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
18
16
  }
19
17
  get items() { return this._items.value; }
20
18
  set items(value) {
21
19
  this._items.next(value);
22
20
  }
23
- /**
24
- * The 'focused' nav item refers to the item in
25
- * the list that was most recently expanded or activated.
26
- * // TODO: make all this better
27
- */
28
- get focusedNavItem() {
29
- return this._focusedNavItem.value;
30
- }
31
- set focusedNavItem(value) {
32
- this._focusedNavItem.next(value);
33
- }
34
21
  ngOnInit() { }
35
22
  ngOnDestroy() {
36
23
  this._ngUnsubscribe.next();
@@ -39,14 +26,11 @@ export class HorizontalNavComponent {
39
26
  _navItemExpanded(item, expanded) {
40
27
  this.navItemExpanded.emit({ navItem: item, expanded });
41
28
  }
42
- _navItemIsFocused(item) {
43
- return this.focusedNavItem$.pipe(map(focusedNavItem => areSameHorizontalNavItem(focusedNavItem, item)));
44
- }
45
29
  }
46
30
  HorizontalNavComponent.decorators = [
47
31
  { type: Component, args: [{
48
32
  selector: 'seam-horizontal-nav',
49
- template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [class.seam-nav-item--focused]=\"_navItemIsFocused(item) | async\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n",
33
+ template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n",
50
34
  providers: [
51
35
  TheSeamNavService
52
36
  ],
@@ -55,14 +39,15 @@ HorizontalNavComponent.decorators = [
55
39
  styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"]
56
40
  },] }
57
41
  ];
58
- HorizontalNavComponent.ctorParameters = () => [];
42
+ HorizontalNavComponent.ctorParameters = () => [
43
+ { type: TheSeamNavService }
44
+ ];
59
45
  HorizontalNavComponent.propDecorators = {
60
46
  items: [{ type: Input }],
61
47
  hideEmptyIcon: [{ type: Input }],
62
48
  hierLevel: [{ type: Input }],
63
49
  childAction: [{ type: Input }],
64
50
  expandAction: [{ type: Input }],
65
- focusedNavItem: [{ type: Input }],
66
51
  navItemExpanded: [{ type: Output }]
67
52
  };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvaG9yaXpvbnRhbC1uYXYvaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFZbEQsTUFBTSxPQUFPLHNCQUFzQjtJQXFDakM7UUFsQ2lCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQU92QyxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUE7UUFHM0Msa0JBQWEsR0FBK0IsSUFBSSxDQUFBO1FBRWhELGNBQVMsR0FBVyxDQUFDLENBQUE7UUFFckIsZ0JBQVcsR0FBdUIsTUFBTSxDQUFBO1FBRXhDLGlCQUFZLEdBQXdCLFFBQVEsQ0FBQTtRQWE3QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF1QixTQUFTLENBQUMsQ0FBQTtRQUN2RSxvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFbEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQTtRQUdsRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQWxDRCxJQUNJLEtBQUssS0FBaUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFDcEQsSUFBSSxLQUFLLENBQUMsS0FBaUI7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQVlEOzs7O09BSUc7SUFDSCxJQUFhLGNBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQTtJQUNuQyxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBMkI7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQVVELFFBQVEsS0FBSyxDQUFDO0lBRWQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBYyxFQUFFLFFBQWlCO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFjO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUN0RSxDQUFBO0lBQ0gsQ0FBQzs7O1lBbEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQiw2bENBQThDO2dCQUU5QyxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO2lCQUNsQjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7O29CQU1FLEtBQUs7NEJBUUwsS0FBSzt3QkFFTCxLQUFLOzBCQUVMLEtBQUs7MkJBRUwsS0FBSzs2QkFPTCxLQUFLOzhCQVNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBhcmVTYW1lSG9yaXpvbnRhbE5hdkl0ZW0gfSBmcm9tICcuLi9uYXYtdXRpbHMnXG5cbmltcG9ydCB7IElOYXZJdGVtLCBOYXZJdGVtQ2hpbGRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRlZEV2ZW50IH0gZnJvbSAnLi4vbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1OYXZTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2LnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0taG9yaXpvbnRhbC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ob3Jpem9udGFsLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUaGVTZWFtTmF2U2VydmljZVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBIb3Jpem9udGFsTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGFzSGVhZGVyVG9nZ2xlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpOiBJTmF2SXRlbVtdIHsgcmV0dXJuIHRoaXMuX2l0ZW1zLnZhbHVlIH1cbiAgc2V0IGl0ZW1zKHZhbHVlOiBJTmF2SXRlbVtdKSB7XG4gICAgdGhpcy5faXRlbXMubmV4dCh2YWx1ZSlcbiAgfVxuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5hdkl0ZW1bXT4oW10pXG4gIHB1YmxpYyByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8SU5hdkl0ZW1bXT5cblxuICBASW5wdXQoKSBoaWRlRW1wdHlJY29uOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHRydWVcblxuICBASW5wdXQoKSBoaWVyTGV2ZWw6IG51bWJlciA9IDBcblxuICBASW5wdXQoKSBjaGlsZEFjdGlvbjogTmF2SXRlbUNoaWxkQWN0aW9uID0gJ21lbnUnXG5cbiAgQElucHV0KCkgZXhwYW5kQWN0aW9uOiBOYXZJdGVtRXhwYW5kQWN0aW9uID0gJ3RvZ2dsZSdcblxuICAvKipcbiAgICogVGhlICdmb2N1c2VkJyBuYXYgaXRlbSByZWZlcnMgdG8gdGhlIGl0ZW0gaW5cbiAgICogdGhlIGxpc3QgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBleHBhbmRlZCBvciBhY3RpdmF0ZWQuXG4gICAqIC8vIFRPRE86IG1ha2UgYWxsIHRoaXMgYmV0dGVyXG4gICAqL1xuICBASW5wdXQoKSBnZXQgZm9jdXNlZE5hdkl0ZW0oKTogSU5hdkl0ZW0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkTmF2SXRlbS52YWx1ZVxuICB9XG4gIHNldCBmb2N1c2VkTmF2SXRlbSh2YWx1ZTogSU5hdkl0ZW0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9mb2N1c2VkTmF2SXRlbS5uZXh0KHZhbHVlKVxuICB9XG4gIHByaXZhdGUgX2ZvY3VzZWROYXZJdGVtID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTmF2SXRlbSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgZm9jdXNlZE5hdkl0ZW0kID0gdGhpcy5fZm9jdXNlZE5hdkl0ZW0uYXNPYnNlcnZhYmxlKClcblxuICBAT3V0cHV0KCkgbmF2SXRlbUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOYXZJdGVtRXhwYW5kZWRFdmVudD4oKVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXRlbXMkID0gdGhpcy5faXRlbXMuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIF9uYXZJdGVtRXhwYW5kZWQoaXRlbTogSU5hdkl0ZW0sIGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5uYXZJdGVtRXhwYW5kZWQuZW1pdCh7IG5hdkl0ZW06IGl0ZW0sIGV4cGFuZGVkIH0pXG4gIH1cblxuICBfbmF2SXRlbUlzRm9jdXNlZChpdGVtOiBJTmF2SXRlbSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZvY3VzZWROYXZJdGVtJC5waXBlKFxuICAgICAgbWFwKGZvY3VzZWROYXZJdGVtID0+IGFyZVNhbWVIb3Jpem9udGFsTmF2SXRlbShmb2N1c2VkTmF2SXRlbSwgaXRlbSkpXG4gICAgKVxuICB9XG5cbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvaG9yaXpvbnRhbC1uYXYvaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFZbEQsTUFBTSxPQUFPLHNCQUFzQjtJQXVCakMsWUFDbUIsSUFBdUI7UUFBdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFyQnpCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQU92QyxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUE7UUFHM0Msa0JBQWEsR0FBK0IsSUFBSSxDQUFBO1FBRWhELGNBQVMsR0FBVyxDQUFDLENBQUE7UUFFckIsZ0JBQVcsR0FBdUIsTUFBTSxDQUFBO1FBRXhDLGlCQUFZLEdBQXdCLFFBQVEsQ0FBQTtRQUUzQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFBO1FBS2xFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzNDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ3ZFLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUE7SUFDSCxDQUFDO0lBekJELElBQ0ksS0FBSyxLQUFpQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUNwRCxJQUFJLEtBQUssQ0FBQyxLQUFpQjtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBdUJELFFBQVEsS0FBSyxDQUFDO0lBRWQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBYyxFQUFFLFFBQWlCO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELENBQUM7OztZQW5ERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0Isb2tDQUE4QztnQkFFOUMsU0FBUyxFQUFFO29CQUNULGlCQUFpQjtpQkFDbEI7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBWFEsaUJBQWlCOzs7b0JBaUJ2QixLQUFLOzRCQVFMLEtBQUs7d0JBRUwsS0FBSzswQkFFTCxLQUFLOzJCQUVMLEtBQUs7OEJBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IElOYXZJdGVtLCBOYXZJdGVtQ2hpbGRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRlZEV2ZW50IH0gZnJvbSAnLi4vbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1OYXZTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2LnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0taG9yaXpvbnRhbC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ob3Jpem9udGFsLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUaGVTZWFtTmF2U2VydmljZVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBIb3Jpem9udGFsTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGFzSGVhZGVyVG9nZ2xlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpOiBJTmF2SXRlbVtdIHsgcmV0dXJuIHRoaXMuX2l0ZW1zLnZhbHVlIH1cbiAgc2V0IGl0ZW1zKHZhbHVlOiBJTmF2SXRlbVtdKSB7XG4gICAgdGhpcy5faXRlbXMubmV4dCh2YWx1ZSlcbiAgfVxuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5hdkl0ZW1bXT4oW10pXG4gIHB1YmxpYyByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8SU5hdkl0ZW1bXT5cblxuICBASW5wdXQoKSBoaWRlRW1wdHlJY29uOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHRydWVcblxuICBASW5wdXQoKSBoaWVyTGV2ZWw6IG51bWJlciA9IDBcblxuICBASW5wdXQoKSBjaGlsZEFjdGlvbjogTmF2SXRlbUNoaWxkQWN0aW9uID0gJ21lbnUnXG5cbiAgQElucHV0KCkgZXhwYW5kQWN0aW9uOiBOYXZJdGVtRXhwYW5kQWN0aW9uID0gJ3RvZ2dsZSdcblxuICBAT3V0cHV0KCkgbmF2SXRlbUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOYXZJdGVtRXhwYW5kZWRFdmVudD4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hdjogVGhlU2VhbU5hdlNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pdGVtcyQgPSB0aGlzLl9pdGVtcy5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGl0ZW1zID0+IGl0ZW1zID8gdGhpcy5fbmF2LmNyZWF0ZUl0ZW1zT2JzZXJ2YWJsZShpdGVtcykgOiBbXSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgIClcbiAgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIF9uYXZJdGVtRXhwYW5kZWQoaXRlbTogSU5hdkl0ZW0sIGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5uYXZJdGVtRXhwYW5kZWQuZW1pdCh7IG5hdkl0ZW06IGl0ZW0sIGV4cGFuZGVkIH0pXG4gIH1cblxufVxuIl19
@@ -8,8 +8,10 @@ import { InputBoolean, InputNumber } from '@theseam/ui-common/core';
8
8
  import { MenuComponent } from '@theseam/ui-common/menu';
9
9
  import { notNullOrUndefined } from '@theseam/ui-common/utils';
10
10
  import { horizontalNavItemHasActiveChild } from '../nav-utils';
11
+ import { TheSeamNavService } from '../nav.service';
11
12
  export class NavItemComponent {
12
- constructor() {
13
+ constructor(_nav) {
14
+ this._nav = _nav;
13
15
  this._ngUnsubscribe = new Subject();
14
16
  this.faAngleLeft = faAngleLeft;
15
17
  this.active = false;
@@ -21,6 +23,7 @@ export class NavItemComponent {
21
23
  this.expanded$ = this._expanded.asObservable();
22
24
  this._compact = new BehaviorSubject(false);
23
25
  this.compact$ = this._compact.asObservable();
26
+ this.focused = false;
24
27
  this.badgeTheme = 'danger';
25
28
  this.childAction = 'menu';
26
29
  this.expandAction = 'toggle';
@@ -57,6 +60,7 @@ export class NavItemComponent {
57
60
  get _isActiveCssClass() { return this.active; }
58
61
  get _isChildActiveCssClass() { return this.hasActiveChild; }
59
62
  get _isExpandedCssClass() { return this.expanded; }
63
+ get _isFocusedCssClass() { return this.focused; }
60
64
  get _attrDataHierLevel() { return this.hierLevel; }
61
65
  ngOnDestroy() {
62
66
  this._ngUnsubscribe.next();
@@ -87,6 +91,9 @@ export class NavItemComponent {
87
91
  }
88
92
  this.expanded = ex;
89
93
  this.navItemExpanded.emit(this.expanded);
94
+ if (this.item && this.expanded) {
95
+ this._nav.setItemStateProp(this.item, 'focused', this.expanded);
96
+ }
90
97
  // Prevents seam-menu from closing out when toggling child expand
91
98
  event.stopPropagation();
92
99
  }
@@ -109,7 +116,7 @@ export class NavItemComponent {
109
116
  NavItemComponent.decorators = [
110
117
  { type: Component, args: [{
111
118
  selector: 'seam-nav-item',
112
- template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n",
119
+ template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n",
113
120
  exportAs: 'seamNavItem',
114
121
  animations: [
115
122
  trigger('childGroupAnim', [
@@ -128,7 +135,9 @@ NavItemComponent.decorators = [
128
135
  styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0px;right:0px}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid #dae0e5;width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"]
129
136
  },] }
130
137
  ];
131
- NavItemComponent.ctorParameters = () => [];
138
+ NavItemComponent.ctorParameters = () => [
139
+ { type: TheSeamNavService }
140
+ ];
132
141
  NavItemComponent.propDecorators = {
133
142
  item: [{ type: Input }],
134
143
  itemType: [{ type: Input }],
@@ -143,6 +152,7 @@ NavItemComponent.propDecorators = {
143
152
  indentSize: [{ type: Input }],
144
153
  expanded: [{ type: Input }],
145
154
  compact: [{ type: Input }],
155
+ focused: [{ type: Input }],
146
156
  badgeText: [{ type: Input }],
147
157
  badgeTheme: [{ type: Input }],
148
158
  badgeSrContent: [{ type: Input }],
@@ -153,6 +163,7 @@ NavItemComponent.propDecorators = {
153
163
  _isActiveCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--active',] }],
154
164
  _isChildActiveCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--child-active',] }],
155
165
  _isExpandedCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--expanded',] }],
166
+ _isFocusedCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--focused',] }],
156
167
  _attrDataHierLevel: [{ type: HostBinding, args: ['attr.data-hier-level',] }],
157
168
  _menu: [{ type: ViewChild, args: [MenuComponent,] }],
158
169
  _navItems: [{ type: ViewChildren, args: [NavItemComponent,] }]
@@ -166,4 +177,4 @@ __decorate([
166
177
  __decorate([
167
178
  InputNumber(10)
168
179
  ], NavItemComponent.prototype, "indentSize", void 0);
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvbmF2LWl0ZW0vbmF2LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFnQixxQkFBcUIsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQ3hGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBdUI5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0czQjtRQS9GaUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBRXRDLGdCQUFXLEdBQUcsV0FBVyxDQUFBO1FBWVQsV0FBTSxHQUFZLEtBQUssQ0FBQTtRQUsvQixVQUFLLEdBQUcsSUFBSSxlQUFlLENBQTRCLFNBQVMsQ0FBQyxDQUFBO1FBQ2xFLFVBQUssR0FBRyxJQUFJLENBQUMsS0FB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QUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7Ozs7bUJBWUUsS0FBSzt1QkFFTCxLQUFLO21CQUVMLEtBQUs7NEJBRUwsS0FBSztvQkFFTCxLQUFLO3FCQUVMLEtBQUs7bUJBRUwsS0FBSzswQkFNTCxLQUFLO3VCQUVMLEtBQUs7d0JBRUwsS0FBSzt5QkFFTCxLQUFLO3VCQUVMLEtBQUs7c0JBUUwsS0FBSzt3QkFNTCxLQUFLO3lCQUNMLEtBQUs7NkJBS0wsS0FBSzsyQkFFTCxLQUFLOzBCQXlCTCxLQUFLOzJCQUVMLEtBQUs7OEJBRUwsTUFBTTtnQ0FFTixXQUFXLFNBQUMsNkJBQTZCO3FDQUV6QyxXQUFXLFNBQUMsbUNBQW1DO2tDQUUvQyxXQUFXLFNBQUMsK0JBQStCO2lDQUUzQyxXQUFXLFNBQUMsc0JBQXNCO29CQUVsQyxTQUFTLFNBQUMsYUFBYTt3QkFFdkIsWUFBWSxTQUFDLGdCQUFnQjs7QUEvRUw7SUFBZixZQUFZLEVBQUU7Z0RBQXdCO0FBWXZCO0lBQWYsV0FBVyxDQUFDLENBQUMsQ0FBQzttREFBc0I7QUFFcEI7SUFBaEIsV0FBVyxDQUFDLEVBQUUsQ0FBQztvREFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucydcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tZW51J1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuaW1wb3J0IHsgaG9yaXpvbnRhbE5hdkl0ZW1IYXNBY3RpdmVDaGlsZCB9IGZyb20gJy4uL25hdi11dGlscydcbmltcG9ydCB7IElOYXZJdGVtLCBOYXZJdGVtQmFkZ2VUb29sdGlwLCBOYXZJdGVtQ2hpbGRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRBY3Rpb24gfSBmcm9tICcuLi9uYXYubW9kZWxzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLW5hdi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmF2LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdzZWFtTmF2SXRlbScsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdjaGlsZEdyb3VwQW5pbScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IGhlaWdodDogMCB9KSlcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTmF2SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oaWVyTGV2ZWw6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbmRlbnRTaXplOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXhwYW5kZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY29tcGFjdDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9hY3RpdmU6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpXG5cbiAgcmVhZG9ubHkgZmFBbmdsZUxlZnQgPSBmYUFuZ2xlTGVmdFxuXG4gIEBJbnB1dCgpIGl0ZW06IElOYXZJdGVtIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGl0ZW1UeXBlOiAnZGl2aWRlcicgfCAnYmFzaWMnIHwgJ2xpbmsnIHwgJ2J1dHRvbicgfCAndGl0bGUnIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGljb246IFNlYW1JY29uIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGhpZGVFbXB0eUljb246IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgYWN0aXZlOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBzZXQgbGluayh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkgeyB0aGlzLl9saW5rLm5leHQodmFsdWUpIH1cbiAgZ2V0IGxpbmsoKSB7IHJldHVybiB0aGlzLl9saW5rLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfbGluayA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgbGluayQgPSB0aGlzLl9saW5rLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQElucHV0KCkgcXVlcnlQYXJhbXM6IHsgW2s6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGNoaWxkcmVuOiBJTmF2SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBoaWVyTGV2ZWw6IG51bWJlciA9IDBcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMTApIGluZGVudFNpemU6IG51bWJlciA9IDEwXG5cbiAgQElucHV0KClcbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZXhwYW5kZWQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKVxuICB9XG4gIGdldCBleHBhbmRlZCgpIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBzZXQgY29tcGFjdCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9jb21wYWN0Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBnZXQgY29tcGFjdCgpIHsgcmV0dXJuIHRoaXMuX2NvbXBhY3QudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3QkID0gdGhpcy5fY29tcGFjdC5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBiYWRnZVRoZW1lOiBUaGVtZVR5cGVzIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdkYW5nZXInXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlU3JDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGJhZGdlVG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX2JhZGdlVG9vbHRpcCB9XG4gIHNldCBiYWRnZVRvb2x0aXAodmFsdWU6IHN0cmluZyB8IE5hdkl0ZW1CYWRnZVRvb2x0aXAgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICB0b29sdGlwOiB2YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdhdXRvJyxcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYmFkZ2VUb29sdGlwID0ge1xuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgIHBsYWNlbWVudDogdmFsdWUucGxhY2VtZW50IHx8ICdhdXRvJyxcbiAgICAgICAgICBkaXNhYmxlZDogdHlwZW9mIHZhbHVlPy5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgICA/IHZhbHVlLmRpc2FibGVkXG4gICAgICAgICAgICA6IHR5cGVvZiB2YWx1ZS50b29sdGlwID09PSAnc3RyaW5nJyA/IGZhbHNlIDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9iYWRnZVRvb2x0aXA6IE5hdkl0ZW1CYWRnZVRvb2x0aXAgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgY2hpbGRBY3Rpb246IE5hdkl0ZW1DaGlsZEFjdGlvbiA9ICdtZW51J1xuXG4gIEBJbnB1dCgpIGV4cGFuZEFjdGlvbjogTmF2SXRlbUV4cGFuZEFjdGlvbiA9ICd0b2dnbGUnXG5cbiAgQE91dHB1dCgpIG5hdkl0ZW1FeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VhbS1uYXYtaXRlbS0tYWN0aXZlJykgZ2V0IF9pc0FjdGl2ZUNzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5hY3RpdmUgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VhbS1uYXYtaXRlbS0tY2hpbGQtYWN0aXZlJykgZ2V0IF9pc0NoaWxkQWN0aXZlQ3NzQ2xhc3MoKSB7IHJldHVybiB0aGlzLmhhc0FjdGl2ZUNoaWxkIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tbmF2LWl0ZW0tLWV4cGFuZGVkJykgZ2V0IF9pc0V4cGFuZGVkQ3NzQ2xhc3MoKSB7IHJldHVybiB0aGlzLmV4cGFuZGVkIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1oaWVyLWxldmVsJykgZ2V0IF9hdHRyRGF0YUhpZXJMZXZlbCgpIHsgcmV0dXJuIHRoaXMuaGllckxldmVsIH1cblxuICBAVmlld0NoaWxkKE1lbnVDb21wb25lbnQpIF9tZW51PzogTWVudUNvbXBvbmVudFxuXG4gIEBWaWV3Q2hpbGRyZW4oTmF2SXRlbUNvbXBvbmVudCkgX25hdkl0ZW1zPzogTmF2SXRlbUNvbXBvbmVudFtdXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgZ2V0IGhhc0NoaWxkcmVuKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuY2hpbGRyZW4pICYmIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICB9XG5cbiAgZ2V0IGhhc0FjdGl2ZUNoaWxkKCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5pdGVtKSkge1xuICAgICAgcmV0dXJuIGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQodGhpcy5pdGVtKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBoYXNNZW51VG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuICYmIHRoaXMuY2hpbGRBY3Rpb24gPT09ICdtZW51J1xuICB9XG5cbiAgZ2V0IG1lbnVUcGwoKTogTWVudUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaGFzTWVudVRvZ2dsZSA/IHRoaXMuX21lbnUgOiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldCBoYXNFeHBhbmRpbmdDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiAmJiB0aGlzLmNoaWxkQWN0aW9uID09PSAnZXhwYW5kJ1xuICB9XG5cbiAgcHVibGljIF90b2dnbGVDaGlsZHJlbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZXggPSAhdGhpcy5leHBhbmRlZFxuICAgIGlmICh0aGlzLmV4cGFuZEFjdGlvbiA9PT0gJ2V4cGFuZE9ubHknKSB7XG4gICAgICBleCA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLmV4cGFuZGVkID0gZXhcbiAgICB0aGlzLm5hdkl0ZW1FeHBhbmRlZC5lbWl0KHRoaXMuZXhwYW5kZWQpXG5cbiAgICAvLyBQcmV2ZW50cyBzZWFtLW1lbnUgZnJvbSBjbG9zaW5nIG91dCB3aGVuIHRvZ2dsaW5nIGNoaWxkIGV4cGFuZFxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICAvLyBVcGRhdGVzIGV4cGFuZGVkIHN0YXRlIHdoZW4gdXNlciBleGl0cyBzZWFtLW1lbnVcbiAgX21lbnVFdmVudChtZW51RXhwYW5kZWQ6IGFueSkge1xuICAgIGlmIChtZW51RXhwYW5kZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2VcblxuICAgICAgLy8gVE9ETzogZmlndXJlIG91dCB3aHkgY2xvc2luZyBzZWFtLW1lbnUgd2l0aCBleHBhbmRlZCBzdWJtZW51IG1lc3NlcyB1cCBhbmltYXRpb25cbiAgICAgIGlmICh0aGlzLl9uYXZJdGVtcyAmJiB0aGlzLl9uYXZJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5fbmF2SXRlbXMuZm9yRWFjaChuYXZJdGVtID0+IHtcbiAgICAgICAgICBuYXZJdGVtLmV4cGFuZGVkID0gZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0ljb25CbG9jaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuaWNvbikgfHwgdGhpcy5oaWRlRW1wdHlJY29uICE9PSB0cnVlXG4gIH1cblxuXG59XG4iXX0=
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvbmF2LWl0ZW0vbmF2LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFnQixxQkFBcUIsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQ3hGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBc0JsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBMEczQixZQUNtQixJQUF1QjtRQUF2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXBHekIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBRXRDLGdCQUFXLEdBQUcsV0FBVyxDQUFBO1FBWVQsV0FBTSxHQUFZLEtB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bXBvcnQge1xuICBhbmltYXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucydcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tZW51J1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuaW1wb3J0IHsgaG9yaXpvbnRhbE5hdkl0ZW1IYXNBY3RpdmVDaGlsZCB9IGZyb20gJy4uL25hdi11dGlscydcbmltcG9ydCB7IElOYXZJdGVtLCBOYXZJdGVtQmFkZ2VUb29sdGlwLCBOYXZJdGVtQ2hpbGRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRBY3Rpb24gfSBmcm9tICcuLi9uYXYubW9kZWxzJ1xuaW1wb3J0IHsgVGhlU2VhbU5hdlNlcnZpY2UgfSBmcm9tICcuLi9uYXYuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1uYXYtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25hdi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnc2VhbU5hdkl0ZW0nLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignY2hpbGRHcm91cEFuaW0nLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IGhlaWdodDogJyonIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE5hdkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGllckxldmVsOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5kZW50U2l6ZTogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4cGFuZGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NvbXBhY3Q6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWN0aXZlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuXG4gIHJlYWRvbmx5IGZhQW5nbGVMZWZ0ID0gZmFBbmdsZUxlZnRcblxuICBASW5wdXQoKSBpdGVtOiBJTmF2SXRlbSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpdGVtVHlwZTogJ2RpdmlkZXInIHwgJ2Jhc2ljJyB8ICdsaW5rJyB8ICdidXR0b24nIHwgJ3RpdGxlJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBoaWRlRW1wdHlJY29uOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgc2V0IGxpbmsodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHsgdGhpcy5fbGluay5uZXh0KHZhbHVlKSB9XG4gIGdldCBsaW5rKCkgeyByZXR1cm4gdGhpcy5fbGluay52YWx1ZSB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpbmsgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IGxpbmskID0gdGhpcy5fbGluay5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiB7IFtrOiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBjaGlsZHJlbjogSU5hdkl0ZW1bXSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMCkgaGllckxldmVsOiBudW1iZXIgPSAwXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDEwKSBpbmRlbnRTaXplOiBudW1iZXIgPSAxMFxuXG4gIEBJbnB1dCgpXG4gIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGVkLm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSlcbiAgfVxuICBnZXQgZXhwYW5kZWQoKSB7IHJldHVybiB0aGlzLl9leHBhbmRlZC52YWx1ZSB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cGFuZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGV4cGFuZGVkJCA9IHRoaXMuX2V4cGFuZGVkLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQElucHV0KClcbiAgc2V0IGNvbXBhY3QodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fY29tcGFjdC5uZXh0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpIH1cbiAgZ2V0IGNvbXBhY3QoKSB7IHJldHVybiB0aGlzLl9jb21wYWN0LnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcGFjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0JCA9IHRoaXMuX2NvbXBhY3QuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKSBmb2N1c2VkOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKSBiYWRnZVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcbiAgQElucHV0KCkgYmFkZ2VUaGVtZTogVGhlbWVUeXBlcyB8IHVuZGVmaW5lZCB8IG51bGwgPSAnZGFuZ2VyJ1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHRvIHByb3ZpZGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ3ksIHN1Y2ggYXMgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICBASW5wdXQoKSBiYWRnZVNyQ29udGVudDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCBiYWRnZVRvb2x0aXAoKSB7IHJldHVybiB0aGlzLl9iYWRnZVRvb2x0aXAgfVxuICBzZXQgYmFkZ2VUb29sdGlwKHZhbHVlOiBzdHJpbmcgfCBOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB7XG4gICAgICAgICAgdG9vbHRpcDogdmFsdWUsXG4gICAgICAgICAgcGxhY2VtZW50OiAnYXV0bycsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHZhbHVlLnBsYWNlbWVudCB8fCAnYXV0bycsXG4gICAgICAgICAgZGlzYWJsZWQ6IHR5cGVvZiB2YWx1ZT8uZGlzYWJsZWQgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgPyB2YWx1ZS5kaXNhYmxlZFxuICAgICAgICAgICAgOiB0eXBlb2YgdmFsdWUudG9vbHRpcCA9PT0gJ3N0cmluZycgPyBmYWxzZSA6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYmFkZ2VUb29sdGlwOiBOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGNoaWxkQWN0aW9uOiBOYXZJdGVtQ2hpbGRBY3Rpb24gPSAnbWVudSdcblxuICBASW5wdXQoKSBleHBhbmRBY3Rpb246IE5hdkl0ZW1FeHBhbmRBY3Rpb24gPSAndG9nZ2xlJ1xuXG4gIEBPdXRwdXQoKSBuYXZJdGVtRXhwYW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tbmF2LWl0ZW0tLWFjdGl2ZScpIGdldCBfaXNBY3RpdmVDc3NDbGFzcygpIHsgcmV0dXJuIHRoaXMuYWN0aXZlIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tbmF2LWl0ZW0tLWNoaWxkLWFjdGl2ZScpIGdldCBfaXNDaGlsZEFjdGl2ZUNzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5oYXNBY3RpdmVDaGlsZCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWFtLW5hdi1pdGVtLS1leHBhbmRlZCcpIGdldCBfaXNFeHBhbmRlZENzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5leHBhbmRlZCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWFtLW5hdi1pdGVtLS1mb2N1c2VkJykgZ2V0IF9pc0ZvY3VzZWRDc3NDbGFzcygpIHsgcmV0dXJuIHRoaXMuZm9jdXNlZCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtaGllci1sZXZlbCcpIGdldCBfYXR0ckRhdGFIaWVyTGV2ZWwoKSB7IHJldHVybiB0aGlzLmhpZXJMZXZlbCB9XG5cbiAgQFZpZXdDaGlsZChNZW51Q29tcG9uZW50KSBfbWVudT86IE1lbnVDb21wb25lbnRcblxuICBAVmlld0NoaWxkcmVuKE5hdkl0ZW1Db21wb25lbnQpIF9uYXZJdGVtcz86IE5hdkl0ZW1Db21wb25lbnRbXVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hdjogVGhlU2VhbU5hdlNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgZ2V0IGhhc0NoaWxkcmVuKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuY2hpbGRyZW4pICYmIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICB9XG5cbiAgZ2V0IGhhc0FjdGl2ZUNoaWxkKCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5pdGVtKSkge1xuICAgICAgcmV0dXJuIGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQodGhpcy5pdGVtKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBoYXNNZW51VG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuICYmIHRoaXMuY2hpbGRBY3Rpb24gPT09ICdtZW51J1xuICB9XG5cbiAgZ2V0IG1lbnVUcGwoKTogTWVudUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaGFzTWVudVRvZ2dsZSA/IHRoaXMuX21lbnUgOiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldCBoYXNFeHBhbmRpbmdDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiAmJiB0aGlzLmNoaWxkQWN0aW9uID09PSAnZXhwYW5kJ1xuICB9XG5cbiAgcHVibGljIF90b2dnbGVDaGlsZHJlbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZXggPSAhdGhpcy5leHBhbmRlZFxuICAgIGlmICh0aGlzLmV4cGFuZEFjdGlvbiA9PT0gJ2V4cGFuZE9ubHknKSB7XG4gICAgICBleCA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLmV4cGFuZGVkID0gZXhcbiAgICB0aGlzLm5hdkl0ZW1FeHBhbmRlZC5lbWl0KHRoaXMuZXhwYW5kZWQpXG4gICAgaWYgKHRoaXMuaXRlbSAmJiB0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9uYXYuc2V0SXRlbVN0YXRlUHJvcCh0aGlzLml0ZW0sICdmb2N1c2VkJywgdGhpcy5leHBhbmRlZClcbiAgICB9XG5cbiAgICAvLyBQcmV2ZW50cyBzZWFtLW1lbnUgZnJvbSBjbG9zaW5nIG91dCB3aGVuIHRvZ2dsaW5nIGNoaWxkIGV4cGFuZFxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICAvLyBVcGRhdGVzIGV4cGFuZGVkIHN0YXRlIHdoZW4gdXNlciBleGl0cyBzZWFtLW1lbnVcbiAgX21lbnVFdmVudChtZW51RXhwYW5kZWQ6IGFueSkge1xuICAgIGlmIChtZW51RXhwYW5kZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2VcblxuICAgICAgLy8gVE9ETzogZmlndXJlIG91dCB3aHkgY2xvc2luZyBzZWFtLW1lbnUgd2l0aCBleHBhbmRlZCBzdWJtZW51IG1lc3NlcyB1cCBhbmltYXRpb25cbiAgICAgIGlmICh0aGlzLl9uYXZJdGVtcyAmJiB0aGlzLl9uYXZJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5fbmF2SXRlbXMuZm9yRWFjaChuYXZJdGVtID0+IHtcbiAgICAgICAgICBuYXZJdGVtLmV4cGFuZGVkID0gZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0ljb25CbG9jaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuaWNvbikgfHwgdGhpcy5oaWRlRW1wdHlJY29uICE9PSB0cnVlXG4gIH1cblxuXG59XG4iXX0=
@@ -10,6 +10,10 @@ export function isHorizontalNavItemExpanded(item) {
10
10
  var _a, _b;
11
11
  return (_b = (_a = item.__state) === null || _a === void 0 ? void 0 : _a.expanded) !== null && _b !== void 0 ? _b : false;
12
12
  }
13
+ export function isHorizontalNavItemFocused(item) {
14
+ var _a, _b;
15
+ return (_b = (_a = item.__state) === null || _a === void 0 ? void 0 : _a.focused) !== null && _b !== void 0 ? _b : false;
16
+ }
13
17
  export function horizontalNavItemHasChildren(item) {
14
18
  return horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0;
15
19
  }
@@ -73,7 +77,8 @@ export function setDefaultHorizontalNavItemState(item) {
73
77
  }
74
78
  item.__state = {
75
79
  active: false,
76
- expanded: false
80
+ expanded: false,
81
+ focused: false
77
82
  };
78
83
  // TODO: See if there is a nice way to fix the typing for this.
79
84
  return item;
@@ -102,4 +107,4 @@ export function areSameHorizontalNavItem(item1, item2) {
102
107
  }
103
108
  return false;
104
109
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvbmF2LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQW1CekUsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQWMsRUFBRSxJQUFZO0lBQ2xFLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUE7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFjOztJQUN0RCxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxNQUFNLG1DQUFJLEtBQUssQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLElBQWM7O0lBQ3hELE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLFFBQVEsbUNBQUksS0FBSyxDQUFBO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsSUFBYztJQUN6RCxPQUFPLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0FBQzVHLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsSUFBYztJQUM3RCxPQUFPLHVCQUF1QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDeEYsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxJQUFjO0lBQzVELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2QyxPQUFPLEtBQUssQ0FBQTtLQUNiO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pDLElBQUksNkJBQTZCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLCtCQUErQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVGLE9BQU8sSUFBSSxDQUFBO1NBQ1o7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxJQUFjO0lBQzlELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2QyxPQUFPLEtBQUssQ0FBQTtLQUNiO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pDLElBQUksNkJBQTZCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFBO1NBQ1o7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxJQUFjO0lBQ3pELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLHVCQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUN4RixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLElBQWM7SUFDdkQsT0FBTyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEtBQWlCO0lBQzFELE1BQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQTtJQUVoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQWtCLEVBQUUsRUFBRTtRQUNqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUN6QixJQUFJLHVCQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUNyQjtZQUNELElBQUksZ0NBQWdDLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDM0UsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUNuQjtTQUNGO0lBQ0gsQ0FBQyxDQUFBO0lBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRVYsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBZ0MsSUFBYyxFQUFFLElBQU8sRUFBRSxLQUF1QjtJQUMzSCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUE7S0FDM0I7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUFnQyxJQUFjLEVBQUUsSUFBTztJQUNsRyxPQUFPLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM3RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLElBQWM7SUFDN0QsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sSUFBSSxDQUFBO0tBQ1o7SUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHO1FBQ2IsTUFBTSxFQUFFLEtBQUs7UUFDYixRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFBO0lBRUQsK0RBQStEO0lBQy9ELE9BQU8sSUFBVyxDQUFBO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBMkIsRUFBRSxLQUEyQjtJQUMvRixJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3hELE9BQU8sS0FBSyxDQUFBO0tBQ2I7SUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUNyQyxPQUFPLEtBQUssQ0FBQTtLQUNiO0lBRUQsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ3RGLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFBO0tBQ25DO1NBQU0sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1FBQ2pHLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFBO0tBQ25DO1NBQU0sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQzdGLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFBO0tBQ25DO1NBQU0sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQzNGLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQTtLQUNoRTtTQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtRQUMvRixPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQTtLQUN2QztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhc1Byb3BlcnR5LCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHtcbiAgSU5hdkJhc2ljLFxuICBJTmF2QnV0dG9uLFxuICBJTmF2RGl2aWRlcixcbiAgSU5hdkl0ZW0sXG4gIElOYXZJdGVtU3RhdGUsXG4gIElOYXZMaW5rLFxuICBJTmF2VGl0bGUsXG4gIE5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4sXG4gIE5hdkl0ZW1DYW5IYXZlU3RhdGVcbn0gZnJvbSAnLi9uYXYubW9kZWxzJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTogSU5hdkl0ZW0sIHR5cGU6ICd0aXRsZScpOiBpdGVtIGlzIElOYXZUaXRsZVxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW06IElOYXZJdGVtLCB0eXBlOiAnZGl2aWRlcicpOiBpdGVtIGlzIElOYXZEaXZpZGVyXG5leHBvcnQgZnVuY3Rpb24gaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTogSU5hdkl0ZW0sIHR5cGU6ICdiYXNpYycpOiBpdGVtIGlzIElOYXZCYXNpY1xuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW06IElOYXZJdGVtLCB0eXBlOiAnbGluaycpOiBpdGVtIGlzIElOYXZMaW5rXG5leHBvcnQgZnVuY3Rpb24gaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTogSU5hdkl0ZW0sIHR5cGU6ICdidXR0b24nKTogaXRlbSBpcyBJTmF2QnV0dG9uXG5leHBvcnQgZnVuY3Rpb24gaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTogSU5hdkl0ZW0sIHR5cGU6IHN0cmluZyk6IGl0ZW0gaXMgSU5hdkl0ZW0ge1xuICByZXR1cm4gaXRlbS5pdGVtVHlwZSA9PT0gdHlwZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3Jpem9udGFsTmF2SXRlbUFjdGl2ZShpdGVtOiBJTmF2SXRlbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXRlbS5fX3N0YXRlPy5hY3RpdmUgPz8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1FeHBhbmRlZChpdGVtOiBJTmF2SXRlbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXRlbS5fX3N0YXRlPy5leHBhbmRlZCA/PyBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbihpdGVtOiBJTmF2SXRlbSk6IGl0ZW0gaXMgKElOYXZCYXNpYyB8IElOYXZMaW5rKSAmIFJlcXVpcmVkPE5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4+IHtcbiAgcmV0dXJuIGhvcml6b250YWxOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuKGl0ZW0pICYmIGhhc1Byb3BlcnR5KGl0ZW0sICdjaGlsZHJlbicpICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9yaXpvbnRhbE5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4oaXRlbTogSU5hdkl0ZW0pOiBpdGVtIGlzIChJTmF2QmFzaWMgfCBJTmF2TGluaykge1xuICByZXR1cm4gaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbSwgJ2Jhc2ljJykgfHwgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbSwgJ2xpbmsnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9yaXpvbnRhbE5hdkl0ZW1IYXNBY3RpdmVDaGlsZChpdGVtOiBJTmF2SXRlbSk6IGJvb2xlYW4ge1xuICBpZiAoIWhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgaXRlbS5jaGlsZHJlbikge1xuICAgIGlmIChnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChjaGlsZCwgJ2FjdGl2ZScpIHx8IGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQoY2hpbGQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9yaXpvbnRhbE5hdkl0ZW1IYXNFeHBhbmRlZENoaWxkKGl0ZW06IElOYXZJdGVtKTogYm9vbGVhbiB7XG4gIGlmICghaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbihpdGVtKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuKSB7XG4gICAgaWYgKGdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGNoaWxkLCAnZXhwYW5kZWQnKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhvcml6b250YWxOYXZJdGVtQ2FuQmVBY3RpdmUoaXRlbTogSU5hdkl0ZW0pOiBpdGVtIGlzIChJTmF2QmFzaWMgfCBJTmF2TGluaykge1xuICByZXR1cm4gaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbSwgJ2Jhc2ljJykgfHwgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbSwgJ2xpbmsnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaG9yaXpvbnRhbE5hdkl0ZW1DYW5FeHBhbmQoaXRlbTogSU5hdkl0ZW0pOiBpdGVtIGlzIChJTmF2QmFzaWMgfCBJTmF2TGluaykge1xuICByZXR1cm4gaG9yaXpvbnRhbE5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4oaXRlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRIb3Jpem9udGFsTmF2TGlua0l0ZW1zKGl0ZW1zOiBJTmF2SXRlbVtdKTogSU5hdkxpbmtbXSB7XG4gIGNvbnN0IGxpbmtJdGVtczogSU5hdkxpbmtbXSA9IFtdXG5cbiAgY29uc3QgX2ZuID0gKF9pdGVtczogSU5hdkl0ZW1bXSkgPT4ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBfaXRlbXMpIHtcbiAgICAgIGlmIChpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtLCAnbGluaycpKSB7XG4gICAgICAgIGxpbmtJdGVtcy5wdXNoKGl0ZW0pXG4gICAgICB9XG4gICAgICBpZiAoaG9yaXpvbnRhbE5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4oaXRlbSkgJiYgaGFzUHJvcGVydHkoaXRlbSwgJ2NoaWxkcmVuJykpIHtcbiAgICAgICAgX2ZuKGl0ZW0uY2hpbGRyZW4pXG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9mbihpdGVtcylcblxuICByZXR1cm4gbGlua0l0ZW1zXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcDxLIGV4dGVuZHMga2V5b2YgSU5hdkl0ZW1TdGF0ZT4oaXRlbTogSU5hdkl0ZW0sIHByb3A6IEssIHZhbHVlOiBJTmF2SXRlbVN0YXRlW0tdKTogdm9pZCB7XG4gIGlmIChoYXNQcm9wZXJ0eShpdGVtLCAnX19zdGF0ZScpKSB7XG4gICAgaXRlbS5fX3N0YXRlW3Byb3BdID0gdmFsdWVcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3A8SyBleHRlbmRzIGtleW9mIElOYXZJdGVtU3RhdGU+KGl0ZW06IElOYXZJdGVtLCBwcm9wOiBLKTogSU5hdkl0ZW1TdGF0ZVtLXSB7XG4gIHJldHVybiBzZXREZWZhdWx0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZShpdGVtKS5fX3N0YXRlW3Byb3BdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZShpdGVtOiBJTmF2SXRlbSk6IElOYXZJdGVtICYgUmVxdWlyZWQ8TmF2SXRlbUNhbkhhdmVTdGF0ZT4ge1xuICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ19fc3RhdGUnKSkge1xuICAgIHJldHVybiBpdGVtXG4gIH1cblxuICBpdGVtLl9fc3RhdGUgPSB7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICBleHBhbmRlZDogZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IFNlZSBpZiB0aGVyZSBpcyBhIG5pY2Ugd2F5IHRvIGZpeCB0aGUgdHlwaW5nIGZvciB0aGlzLlxuICByZXR1cm4gaXRlbSBhcyBhbnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyZVNhbWVIb3Jpem9udGFsTmF2SXRlbShpdGVtMTogSU5hdkl0ZW0gfCB1bmRlZmluZWQsIGl0ZW0yOiBJTmF2SXRlbSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXRlbTEpIHx8IGlzTnVsbE9yVW5kZWZpbmVkKGl0ZW0yKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGl0ZW0xLml0ZW1UeXBlICE9PSBpdGVtMi5pdGVtVHlwZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0xLCAndGl0bGUnKSAmJiBpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtMiwgJ3RpdGxlJykpIHtcbiAgICByZXR1cm4gaXRlbTEubGFiZWwgPT09IGl0ZW0yLmxhYmVsXG4gIH0gZWxzZSBpZiAoaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTEsICdkaXZpZGVyJykgJiYgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTIsICdkaXZpZGVyJykpIHtcbiAgICByZXR1cm4gaXRlbTEubGFiZWwgPT09IGl0ZW0yLmxhYmVsXG4gIH0gZWxzZSBpZiAoaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTEsICdiYXNpYycpICYmIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0yLCAnYmFzaWMnKSkge1xuICAgIHJldHVybiBpdGVtMS5sYWJlbCA9PT0gaXRlbTIubGFiZWxcbiAgfSBlbHNlIGlmIChpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtMSwgJ2xpbmsnKSAmJiBpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtMiwgJ2xpbmsnKSkge1xuICAgIHJldHVybiBpdGVtMS5sYWJlbCA9PT0gaXRlbTIubGFiZWwgJiYgaXRlbTEubGluayA9PT0gaXRlbTIubGlua1xuICB9IGVsc2UgaWYgKGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0xLCAnYnV0dG9uJykgJiYgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTIsICdidXR0b24nKSkge1xuICAgIHJldHVybiBpdGVtMS5vbkNsaWNrID09PSBpdGVtMi5vbkNsaWNrXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvbmF2LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQW1CekUsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQWMsRUFBRSxJQUFZO0lBQ2xFLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUE7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFjOztJQUN0RCxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxNQUFNLG1DQUFJLEtBQUssQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLElBQWM7O0lBQ3hELE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLFFBQVEsbUNBQUksS0FBSyxDQUFBO0FBQ3hDLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsSUFBYzs7SUFDdkQsT0FBTyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsT0FBTyxtQ0FBSSxLQUFLLENBQUE7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxJQUFjO0lBQ3pELE9BQU8sZ0NBQWdDLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7QUFDNUcsQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxJQUFjO0lBQzdELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLHVCQUF1QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUN4RixD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QUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNQcm9wZXJ0eSwgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7XG4gIElOYXZCYXNpYyxcbiAgSU5hdkJ1dHRvbixcbiAgSU5hdkRpdmlkZXIsXG4gIElOYXZJdGVtLFxuICBJTmF2SXRlbVN0YXRlLFxuICBJTmF2TGluayxcbiAgSU5hdlRpdGxlLFxuICBOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuLFxuICBOYXZJdGVtQ2FuSGF2ZVN0YXRlXG59IGZyb20gJy4vbmF2Lm1vZGVscydcblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW06IElOYXZJdGVtLCB0eXBlOiAndGl0bGUnKTogaXRlbSBpcyBJTmF2VGl0bGVcbmV4cG9ydCBmdW5jdGlvbiBpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtOiBJTmF2SXRlbSwgdHlwZTogJ2RpdmlkZXInKTogaXRlbSBpcyBJTmF2RGl2aWRlclxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW06IElOYXZJdGVtLCB0eXBlOiAnYmFzaWMnKTogaXRlbSBpcyBJTmF2QmFzaWNcbmV4cG9ydCBmdW5jdGlvbiBpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtOiBJTmF2SXRlbSwgdHlwZTogJ2xpbmsnKTogaXRlbSBpcyBJTmF2TGlua1xuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW06IElOYXZJdGVtLCB0eXBlOiAnYnV0dG9uJyk6IGl0ZW0gaXMgSU5hdkJ1dHRvblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW06IElOYXZJdGVtLCB0eXBlOiBzdHJpbmcpOiBpdGVtIGlzIElOYXZJdGVtIHtcbiAgcmV0dXJuIGl0ZW0uaXRlbVR5cGUgPT09IHR5cGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1BY3RpdmUoaXRlbTogSU5hdkl0ZW0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGl0ZW0uX19zdGF0ZT8uYWN0aXZlID8/IGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hvcml6b250YWxOYXZJdGVtRXhwYW5kZWQoaXRlbTogSU5hdkl0ZW0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGl0ZW0uX19zdGF0ZT8uZXhwYW5kZWQgPz8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbE5hdkl0ZW1Gb2N1c2VkKGl0ZW06IElOYXZJdGVtKTogYm9vbGVhbiB7XG4gIHJldHVybiBpdGVtLl9fc3RhdGU/LmZvY3VzZWQgPz8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4oaXRlbTogSU5hdkl0ZW0pOiBpdGVtIGlzIChJTmF2QmFzaWMgfCBJTmF2TGluaykgJiBSZXF1aXJlZDxOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuPiB7XG4gIHJldHVybiBob3Jpem9udGFsTmF2SXRlbUNhbkhhdmVDaGlsZHJlbihpdGVtKSAmJiBoYXNQcm9wZXJ0eShpdGVtLCAnY2hpbGRyZW4nKSAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhvcml6b250YWxOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuKGl0ZW06IElOYXZJdGVtKTogaXRlbSBpcyAoSU5hdkJhc2ljIHwgSU5hdkxpbmspIHtcbiAgcmV0dXJuIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0sICdiYXNpYycpIHx8IGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0sICdsaW5rJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQoaXRlbTogSU5hdkl0ZW0pOiBib29sZWFuIHtcbiAgaWYgKCFob3Jpem9udGFsTmF2SXRlbUhhc0NoaWxkcmVuKGl0ZW0pKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICBpZiAoZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AoY2hpbGQsICdhY3RpdmUnKSB8fCBob3Jpem9udGFsTmF2SXRlbUhhc0FjdGl2ZUNoaWxkKGNoaWxkKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhvcml6b250YWxOYXZJdGVtSGFzRXhwYW5kZWRDaGlsZChpdGVtOiBJTmF2SXRlbSk6IGJvb2xlYW4ge1xuICBpZiAoIWhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgaXRlbS5jaGlsZHJlbikge1xuICAgIGlmIChnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChjaGlsZCwgJ2V4cGFuZGVkJykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBob3Jpem9udGFsTmF2SXRlbUNhbkJlQWN0aXZlKGl0ZW06IElOYXZJdGVtKTogaXRlbSBpcyAoSU5hdkJhc2ljIHwgSU5hdkxpbmspIHtcbiAgcmV0dXJuIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0sICdiYXNpYycpIHx8IGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0sICdsaW5rJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhvcml6b250YWxOYXZJdGVtQ2FuRXhwYW5kKGl0ZW06IElOYXZJdGVtKTogaXRlbSBpcyAoSU5hdkJhc2ljIHwgSU5hdkxpbmspIHtcbiAgcmV0dXJuIGhvcml6b250YWxOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuKGl0ZW0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSG9yaXpvbnRhbE5hdkxpbmtJdGVtcyhpdGVtczogSU5hdkl0ZW1bXSk6IElOYXZMaW5rW10ge1xuICBjb25zdCBsaW5rSXRlbXM6IElOYXZMaW5rW10gPSBbXVxuXG4gIGNvbnN0IF9mbiA9IChfaXRlbXM6IElOYXZJdGVtW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX2l0ZW1zKSB7XG4gICAgICBpZiAoaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbSwgJ2xpbmsnKSkge1xuICAgICAgICBsaW5rSXRlbXMucHVzaChpdGVtKVxuICAgICAgfVxuICAgICAgaWYgKGhvcml6b250YWxOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuKGl0ZW0pICYmIGhhc1Byb3BlcnR5KGl0ZW0sICdjaGlsZHJlbicpKSB7XG4gICAgICAgIF9mbihpdGVtLmNoaWxkcmVuKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBfZm4oaXRlbXMpXG5cbiAgcmV0dXJuIGxpbmtJdGVtc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3A8SyBleHRlbmRzIGtleW9mIElOYXZJdGVtU3RhdGU+KGl0ZW06IElOYXZJdGVtLCBwcm9wOiBLLCB2YWx1ZTogSU5hdkl0ZW1TdGF0ZVtLXSk6IHZvaWQge1xuICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ19fc3RhdGUnKSkge1xuICAgIGl0ZW0uX19zdGF0ZVtwcm9wXSA9IHZhbHVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wPEsgZXh0ZW5kcyBrZXlvZiBJTmF2SXRlbVN0YXRlPihpdGVtOiBJTmF2SXRlbSwgcHJvcDogSyk6IElOYXZJdGVtU3RhdGVbS10ge1xuICByZXR1cm4gc2V0RGVmYXVsdEhvcml6b250YWxOYXZJdGVtU3RhdGUoaXRlbSkuX19zdGF0ZVtwcm9wXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdEhvcml6b250YWxOYXZJdGVtU3RhdGUoaXRlbTogSU5hdkl0ZW0pOiBJTmF2SXRlbSAmIFJlcXVpcmVkPE5hdkl0ZW1DYW5IYXZlU3RhdGU+IHtcbiAgaWYgKGhhc1Byb3BlcnR5KGl0ZW0sICdfX3N0YXRlJykpIHtcbiAgICByZXR1cm4gaXRlbVxuICB9XG5cbiAgaXRlbS5fX3N0YXRlID0ge1xuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgIGZvY3VzZWQ6IGZhbHNlXG4gIH0gYXMgSU5hdkl0ZW1TdGF0ZVxuXG4gIC8vIFRPRE86IFNlZSBpZiB0aGVyZSBpcyBhIG5pY2Ugd2F5IHRvIGZpeCB0aGUgdHlwaW5nIGZvciB0aGlzLlxuICByZXR1cm4gaXRlbSBhcyBhbnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyZVNhbWVIb3Jpem9udGFsTmF2SXRlbShpdGVtMTogSU5hdkl0ZW0gfCB1bmRlZmluZWQsIGl0ZW0yOiBJTmF2SXRlbSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXRlbTEpIHx8IGlzTnVsbE9yVW5kZWZpbmVkKGl0ZW0yKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGl0ZW0xLml0ZW1UeXBlICE9PSBpdGVtMi5pdGVtVHlwZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0xLCAndGl0bGUnKSAmJiBpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtMiwgJ3RpdGxlJykpIHtcbiAgICByZXR1cm4gaXRlbTEubGFiZWwgPT09IGl0ZW0yLmxhYmVsXG4gIH0gZWxzZSBpZiAoaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTEsICdkaXZpZGVyJykgJiYgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTIsICdkaXZpZGVyJykpIHtcbiAgICByZXR1cm4gaXRlbTEubGFiZWwgPT09IGl0ZW0yLmxhYmVsXG4gIH0gZWxzZSBpZiAoaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTEsICdiYXNpYycpICYmIGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0yLCAnYmFzaWMnKSkge1xuICAgIHJldHVybiBpdGVtMS5sYWJlbCA9PT0gaXRlbTIubGFiZWxcbiAgfSBlbHNlIGlmIChpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtMSwgJ2xpbmsnKSAmJiBpc0hvcml6b250YWxOYXZJdGVtVHlwZShpdGVtMiwgJ2xpbmsnKSkge1xuICAgIHJldHVybiBpdGVtMS5sYWJlbCA9PT0gaXRlbTIubGFiZWwgJiYgaXRlbTEubGluayA9PT0gaXRlbTIubGlua1xuICB9IGVsc2UgaWYgKGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0xLCAnYnV0dG9uJykgJiYgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbTIsICdidXR0b24nKSkge1xuICAgIHJldHVybiBpdGVtMS5vbkNsaWNrID09PSBpdGVtMi5vbkNsaWNrXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2Lm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvbmF2L25hdi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuZXhwb3J0IGludGVyZmFjZSBJTmF2SXRlbVN0YXRlIHtcbiAgLy8gcGFyZW50PzogSU5hdkl0ZW1cbiAgYWN0aXZlOiBib29sZWFuXG4gIGV4cGFuZGVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbUNhbkhhdmVTdGF0ZSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3AgaXMgbWFuYWdlZCBieSB0aGUgTmF2LiBJZiBtYW51YWxseSBzZXQgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiAgICpcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgIF9fc3RhdGU/OiBJTmF2SXRlbVN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbUNhbkhhdmVDaGlsZHJlbiB7XG4gIGNoaWxkcmVuPzogSU5hdkl0ZW1bXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZJdGVtQmFzZTxUIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIE5hdkl0ZW1DYW5IYXZlU3RhdGUge1xuICAvKipcbiAgICogZGVmYXVsdDogJ3JvdXRlJ1xuICAgKi9cbiAgaXRlbVR5cGU/OiBUXG5cbiAgYmFkZ2U/OiBJTmF2QmFkZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTmF2VGl0bGUgZXh0ZW5kcyBJTmF2SXRlbUJhc2U8J3RpdGxlJz4ge1xuICBsYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZEaXZpZGVyIGV4dGVuZHMgSU5hdkl0ZW1CYXNlPCdkaXZpZGVyJz4ge1xuICBsYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZCYWRnZSB7XG5cbiAgdGV4dD86IHN0cmluZ1xuXG4gIHRoZW1lPzogVGhlbWVUeXBlc1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHRvIHByb3ZpZGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ3ksIHN1Y2ggYXMgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICBzckNvbnRlbnQ/OiBzdHJpbmdcblxuICB0b29sdGlwPzogc3RyaW5nIHwgTmF2SXRlbUJhZGdlVG9vbHRpcFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZCYXNpYyBleHRlbmRzIElOYXZJdGVtQmFzZTwnYmFzaWMnPiwgTmF2SXRlbUNhbkhhdmVDaGlsZHJlbiB7XG4gIGljb24/OiBTZWFtSWNvblxuICBsYWJlbDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdkxpbmsgZXh0ZW5kcyBJTmF2SXRlbUJhc2U8J2xpbmsnPixcbiAgUGFydGlhbDxQaWNrPFVybENyZWF0aW9uT3B0aW9ucywgJ3F1ZXJ5UGFyYW1zJyB8ICdmcmFnbWVudCcgfCAncXVlcnlQYXJhbXNIYW5kbGluZycgfCAncHJlc2VydmVGcmFnbWVudCc+PixcbiAgTmF2SXRlbUNhbkhhdmVDaGlsZHJlbiB7XG4gIGljb24/OiBTZWFtSWNvblxuICBsYWJlbDogc3RyaW5nXG5cbiAgbGluaz86IGFueVtdIHwgc3RyaW5nXG5cbiAgLyoqXG4gICAqIERlZmF1bHQ6IHsgcGF0aHM6ICdzdWJzZXQnLCBxdWVyeVBhcmFtczogJ3N1YnNldCcsIGZyYWdtZW50OiAnaWdub3JlZCcsIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnIH1cbiAgICovXG4gIG1hdGNoT3B0aW9ucz86IFBhcnRpYWw8SXNBY3RpdmVNYXRjaE9wdGlvbnM+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdkJ1dHRvbiBleHRlbmRzIElOYXZJdGVtQmFzZTwnYnV0dG9uJz4ge1xuICBvbkNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgSU5hdkl0ZW0gPSBJTmF2VGl0bGUgfCBJTmF2RGl2aWRlciB8IElOYXZCYXNpYyB8IElOYXZMaW5rIHwgSU5hdkJ1dHRvblxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdkl0ZW1TdGF0ZUNoYW5nZWQge1xuICBpdGVtOiBJTmF2SXRlbVxuICBwcm9wOiBzdHJpbmdcbiAgcHJldlZhbHVlOiBhbnlcbiAgbmV3VmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdkl0ZW1CYWRnZVRvb2x0aXAge1xuICB0b29sdGlwPzogc3RyaW5nXG4gIGNsYXNzPzogc3RyaW5nXG4gIHBsYWNlbWVudD86IHN0cmluZ1xuICBjb250YWluZXI/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIE5hdkl0ZW1DaGlsZEFjdGlvbiA9ICdtZW51JyB8ICdleHBhbmQnIHwgJ25vbmUnIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG5leHBvcnQgdHlwZSBOYXZJdGVtRXhwYW5kQWN0aW9uID0gJ3RvZ2dsZScgfCAnZXhwYW5kT25seScgfCBudWxsIHwgdW5kZWZpbmVkXG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbUV4cGFuZGVkRXZlbnQge1xuICBuYXZJdGVtOiBJTmF2SXRlbSxcbiAgZXhwYW5kZWQ6IGJvb2xlYW5cbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2Lm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvbmF2L25hdi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuZXhwb3J0IGludGVyZmFjZSBJTmF2SXRlbVN0YXRlIHtcbiAgLy8gcGFyZW50PzogSU5hdkl0ZW1cbiAgYWN0aXZlOiBib29sZWFuXG4gIGV4cGFuZGVkOiBib29sZWFuXG4gIGZvY3VzZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXZJdGVtQ2FuSGF2ZVN0YXRlIHtcbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBpcyBtYW5hZ2VkIGJ5IHRoZSBOYXYuIElmIG1hbnVhbGx5IHNldCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAgX19zdGF0ZT86IElOYXZJdGVtU3RhdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgY2hpbGRyZW4/OiBJTmF2SXRlbVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdkl0ZW1CYXNlPFQgZXh0ZW5kcyBzdHJpbmc+IGV4dGVuZHMgTmF2SXRlbUNhbkhhdmVTdGF0ZSB7XG4gIC8qKlxuICAgKiBkZWZhdWx0OiAncm91dGUnXG4gICAqL1xuICBpdGVtVHlwZT86IFRcblxuICBiYWRnZT86IElOYXZCYWRnZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZUaXRsZSBleHRlbmRzIElOYXZJdGVtQmFzZTwndGl0bGUnPiB7XG4gIGxhYmVsPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdkRpdmlkZXIgZXh0ZW5kcyBJTmF2SXRlbUJhc2U8J2RpdmlkZXInPiB7XG4gIGxhYmVsPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdkJhZGdlIHtcblxuICB0ZXh0Pzogc3RyaW5nXG5cbiAgdGhlbWU/OiBUaGVtZVR5cGVzXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHNyQ29udGVudD86IHN0cmluZ1xuXG4gIHRvb2x0aXA/OiBzdHJpbmcgfCBOYXZJdGVtQmFkZ2VUb29sdGlwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdkJhc2ljIGV4dGVuZHMgSU5hdkl0ZW1CYXNlPCdiYXNpYyc+LCBOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTmF2TGluayBleHRlbmRzIElOYXZJdGVtQmFzZTwnbGluayc+LFxuICBQYXJ0aWFsPFBpY2s8VXJsQ3JlYXRpb25PcHRpb25zLCAncXVlcnlQYXJhbXMnIHwgJ2ZyYWdtZW50JyB8ICdxdWVyeVBhcmFtc0hhbmRsaW5nJyB8ICdwcmVzZXJ2ZUZyYWdtZW50Jz4+LFxuICBOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcblxuICBsaW5rPzogYW55W10gfCBzdHJpbmdcblxuICAvKipcbiAgICogRGVmYXVsdDogeyBwYXRoczogJ3N1YnNldCcsIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0JywgZnJhZ21lbnQ6ICdpZ25vcmVkJywgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcgfVxuICAgKi9cbiAgbWF0Y2hPcHRpb25zPzogUGFydGlhbDxJc0FjdGl2ZU1hdGNoT3B0aW9ucz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTmF2QnV0dG9uIGV4dGVuZHMgSU5hdkl0ZW1CYXNlPCdidXR0b24nPiB7XG4gIG9uQ2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBJTmF2SXRlbSA9IElOYXZUaXRsZSB8IElOYXZEaXZpZGVyIHwgSU5hdkJhc2ljIHwgSU5hdkxpbmsgfCBJTmF2QnV0dG9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbVN0YXRlQ2hhbmdlZCB7XG4gIGl0ZW06IElOYXZJdGVtXG4gIHByb3A6IGtleW9mIElOYXZJdGVtU3RhdGVcbiAgcHJldlZhbHVlOiBhbnlcbiAgbmV3VmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hdkl0ZW1CYWRnZVRvb2x0aXAge1xuICB0b29sdGlwPzogc3RyaW5nXG4gIGNsYXNzPzogc3RyaW5nXG4gIHBsYWNlbWVudD86IHN0cmluZ1xuICBjb250YWluZXI/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIE5hdkl0ZW1DaGlsZEFjdGlvbiA9ICdtZW51JyB8ICdleHBhbmQnIHwgJ25vbmUnIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG5leHBvcnQgdHlwZSBOYXZJdGVtRXhwYW5kQWN0aW9uID0gJ3RvZ2dsZScgfCAnZXhwYW5kT25seScgfCBudWxsIHwgdW5kZWZpbmVkXG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2SXRlbUV4cGFuZGVkRXZlbnQge1xuICBuYXZJdGVtOiBJTmF2SXRlbSxcbiAgZXhwYW5kZWQ6IGJvb2xlYW5cbn1cbiJdfQ==
@@ -3,7 +3,7 @@ import { NavigationEnd, Router } from '@angular/router';
3
3
  import { BehaviorSubject, defer, Observable, Subject } from 'rxjs';
4
4
  import { distinctUntilChanged, filter, map, shareReplay, startWith, switchMap } from 'rxjs/operators';
5
5
  import { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils';
6
- import { horizontalNavItemCanExpand, getHorizontalNavItemStateProp, horizontalNavItemHasActiveChild, horizontalNavItemHasChildren, horizontalNavItemHasExpandedChild, isHorizontalNavItemType, setDefaultHorizontalNavItemState, setHorizontalNavItemStateProp } from './nav-utils';
6
+ import { getHorizontalNavItemStateProp, horizontalNavItemCanExpand, horizontalNavItemHasActiveChild, horizontalNavItemHasChildren, horizontalNavItemHasExpandedChild, isHorizontalNavItemActive, isHorizontalNavItemType, setDefaultHorizontalNavItemState, setHorizontalNavItemStateProp } from './nav-utils';
7
7
  export class TheSeamNavService {
8
8
  constructor(_router) {
9
9
  this._router = _router;
@@ -16,6 +16,9 @@ export class TheSeamNavService {
16
16
  this.updateItemsStates(items);
17
17
  return new Observable((subscriber) => {
18
18
  const stateChangeSub = this.itemChanged.pipe(switchMap(change => {
19
+ if (change.prop === 'focused' && change.newValue) {
20
+ this.updateFocusedItem(items, change.item);
21
+ }
19
22
  return this.loading$.pipe(filter(loading => !loading));
20
23
  })).subscribe(() => {
21
24
  subscriber.next(items);
@@ -26,7 +29,7 @@ export class TheSeamNavService {
26
29
  catch (err) {
27
30
  subscriber.error(err);
28
31
  }
29
- const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
32
+ const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
30
33
  try {
31
34
  this.updateItemsStates(items);
32
35
  }
@@ -49,6 +52,7 @@ export class TheSeamNavService {
49
52
  }
50
53
  updateItemsStates(items) {
51
54
  this._incUpdatingCount();
55
+ this.updateRouterFocusedItem(items);
52
56
  try {
53
57
  for (const item of items) {
54
58
  if (horizontalNavItemHasChildren(item)) {
@@ -67,13 +71,7 @@ export class TheSeamNavService {
67
71
  this._incUpdatingCount();
68
72
  try {
69
73
  setDefaultHorizontalNavItemState(item);
70
- if (isHorizontalNavItemType(item, 'link')) {
71
- const url = this._getUrl(item);
72
- if (notNullOrUndefined(url)) {
73
- const opts = this._getMatchOptions(item);
74
- this.setItemStateProp(item, 'active', this._router.isActive(url, opts));
75
- }
76
- }
74
+ this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item));
77
75
  // TODO: Implement this in a more optimized way. Unless our apps start
78
76
  // having large navs constantly updating their state, this shouldn't
79
77
  // have much impact on performance.
@@ -85,6 +83,16 @@ export class TheSeamNavService {
85
83
  throw err;
86
84
  }
87
85
  }
86
+ horizontalNavLinkActive(item) {
87
+ if (isHorizontalNavItemType(item, 'link')) {
88
+ const url = this._getUrl(item);
89
+ if (notNullOrUndefined(url)) {
90
+ const opts = this._getMatchOptions(item);
91
+ return this._router.isActive(url, opts);
92
+ }
93
+ }
94
+ return false;
95
+ }
88
96
  _updateItemsExpandedState(items) {
89
97
  for (const item of items) {
90
98
  if (horizontalNavItemHasChildren(item)) {
@@ -114,6 +122,20 @@ export class TheSeamNavService {
114
122
  }
115
123
  }
116
124
  }
125
+ updateRouterFocusedItem(items) {
126
+ const focusedItem = items.find(i => isHorizontalNavItemActive(i)) || items.find(i => horizontalNavItemHasActiveChild(i));
127
+ this.updateFocusedItem(items, focusedItem);
128
+ }
129
+ updateFocusedItem(items, focusedItem) {
130
+ for (const item of items) {
131
+ if (item === focusedItem) {
132
+ setHorizontalNavItemStateProp(item, 'focused', true);
133
+ }
134
+ else {
135
+ setHorizontalNavItemStateProp(item, 'focused', false);
136
+ }
137
+ }
138
+ }
117
139
  _getNavExtras(item) {
118
140
  const navigationExtras = {};
119
141
  if (hasProperty(item, 'queryParams')) {
@@ -172,4 +194,4 @@ TheSeamNavService.decorators = [
172
194
  TheSeamNavService.ctorParameters = () => [
173
195
  { type: Router }
174
196
  ];
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL25hdi9uYXYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTFFLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsNkJBQTZCLEVBQzdCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsNkJBQTZCLEVBQzlCLE1BQU0sYUFBYSxDQUFBO0FBSXBCLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFQakIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQTtRQUloRCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFBO1FBSzlELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdkIsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLEVBQUUs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RSxLQUFLLENBQUMsQ0FBQTtZQUVoRCxNQUFNLE9BQU8sR0FBd0I7Z0JBQ25DLElBQUk7Z0JBQ0osSUFBSTtnQkFDSixTQUFTLEVBQUUsWUFBWTtnQkFDdkIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQy9CO0lBQ0gsQ0FBQzs7O1lBeE1GLFVBQVU7OztZQWxCbUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgSXNBY3RpdmVNYXRjaE9wdGlvbnMsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsQ3JlYXRpb25PcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWZlciwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBoYXNQcm9wZXJ0eSwgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQge1xuICBob3Jpem9udGFsTmF2SXRlbUNhbkV4cGFuZCxcbiAgZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AsXG4gIGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQsXG4gIGhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4sXG4gIGhvcml6b250YWxOYXZJdGVtSGFzRXhwYW5kZWRDaGlsZCxcbiAgaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUsXG4gIHNldERlZmF1bHRIb3Jpem9udGFsTmF2SXRlbVN0YXRlLFxuICBzZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcFxufSBmcm9tICcuL25hdi11dGlscydcbmltcG9ydCB7IElOYXZJdGVtLCBJTmF2SXRlbVN0YXRlLCBJTmF2TGluaywgTmF2SXRlbVN0YXRlQ2hhbmdlZCB9IGZyb20gJy4vbmF2Lm1vZGVscydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1OYXZTZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGluZ0NvdW50ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApXG5cbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgcHVibGljIHJlYWRvbmx5IGl0ZW1DaGFuZ2VkID0gbmV3IFN1YmplY3Q8TmF2SXRlbVN0YXRlQ2hhbmdlZD4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLl91cGRhdGluZ0NvdW50LnBpcGUoXG4gICAgICBtYXAoY291bnQgPT4gY291bnQgPiAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUl0ZW1zT2JzZXJ2YWJsZShpdGVtczogSU5hdkl0ZW1bXSk6IE9ic2VydmFibGU8SU5hdkl0ZW1bXT4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUl0ZW1zU3RhdGVzKGl0ZW1zKVxuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPElOYXZJdGVtW10+KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlQ2hhbmdlU3ViID0gdGhpcy5pdGVtQ2hhbmdlZC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZyQucGlwZShmaWx0ZXIobG9hZGluZyA9PiAhbG9hZGluZykpXG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChpdGVtcylcbiAgICAgICAgfSlcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMudXBkYXRlSXRlbXNTdGF0ZXMoaXRlbXMpXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgcm91dGVDaGFuZ2VTdWIgPSB0aGlzLl9yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJdGVtc1N0YXRlcyhpdGVtcylcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIHN0YXRlQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKClcbiAgICAgICAgICByb3V0ZUNoYW5nZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgICAgIH1cbiAgICAgIH0pLnBpcGUoc3RhcnRXaXRoKGl0ZW1zKSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5jVXBkYXRpbmdDb3VudCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGluZ0NvdW50Lm5leHQodGhpcy5fdXBkYXRpbmdDb3VudC52YWx1ZSArIDEpXG4gIH1cblxuICBwcml2YXRlIF9kZWNyVXBkYXRpbmdDb3VudCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGluZ0NvdW50Lm5leHQodGhpcy5fdXBkYXRpbmdDb3VudC52YWx1ZSAtIDEpXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSXRlbXNTdGF0ZXMoaXRlbXM6IElOYXZJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLl9pbmNVcGRhdGluZ0NvdW50KClcblxuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaWYgKGhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1zU3RhdGVzKGl0ZW0uY2hpbGRyZW4pXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1TdGF0ZShpdGVtKVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9kZWNyVXBkYXRpbmdDb3VudCgpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9kZWNyVXBkYXRpbmdDb3VudCgpXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSXRlbVN0YXRlKGl0ZW06IElOYXZJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5faW5jVXBkYXRpbmdDb3VudCgpXG5cbiAgICB0cnkge1xuICAgICAgc2V0RGVmYXVsdEhvcml6b250YWxOYXZJdGVtU3RhdGUoaXRlbSlcblxuICAgICAgaWYgKGlzSG9yaXpvbnRhbE5hdkl0ZW1UeXBlKGl0ZW0sICdsaW5rJykpIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5fZ2V0VXJsKGl0ZW0pXG4gICAgICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodXJsKSkge1xuICAgICAgICAgIGNvbnN0IG9wdHMgPSB0aGlzLl9nZXRNYXRjaE9wdGlvbnMoaXRlbSlcbiAgICAgICAgICB0aGlzLnNldEl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2FjdGl2ZScsIHRoaXMuX3JvdXRlci5pc0FjdGl2ZSh1cmwsIG9wdHMpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCB0aGlzIGluIGEgbW9yZSBvcHRpbWl6ZWQgd2F5LiBVbmxlc3Mgb3VyIGFwcHMgc3RhcnRcbiAgICAgIC8vIGhhdmluZyBsYXJnZSBuYXZzIGNvbnN0YW50bHkgdXBkYXRpbmcgdGhlaXIgc3RhdGUsIHRoaXMgc2hvdWxkbid0XG4gICAgICAvLyBoYXZlIG11Y2ggaW1wYWN0IG9uIHBlcmZvcm1hbmNlLlxuICAgICAgdGhpcy5fdXBkYXRlSXRlbUV4cGFuZGVkU3RhdGUoaXRlbSlcblxuICAgICAgdGhpcy5fZGVjclVwZGF0aW5nQ291bnQoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fZGVjclVwZGF0aW5nQ291bnQoKVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSXRlbXNFeHBhbmRlZFN0YXRlKGl0ZW1zOiBJTmF2SXRlbVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVJdGVtc0V4cGFuZGVkU3RhdGUoaXRlbS5jaGlsZHJlbilcbiAgICAgIH1cbiAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1FeHBhbmRlZFN0YXRlKGl0ZW0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSXRlbUV4cGFuZGVkU3RhdGUoaXRlbTogSU5hdkl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIWhvcml6b250YWxOYXZJdGVtQ2FuRXhwYW5kKGl0ZW0pKSB7XG4gICAgICBpZiAoZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2V4cGFuZGVkJykpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtU3RhdGVQcm9wKGl0ZW0sICdleHBhbmRlZCcsIGZhbHNlKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGhvcml6b250YWxOYXZJdGVtSGFzQ2hpbGRyZW4oaXRlbSkpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zRXhwYW5kZWRTdGF0ZShpdGVtLmNoaWxkcmVuKVxuICAgIH1cblxuICAgIGlmIChob3Jpem9udGFsTmF2SXRlbUhhc0FjdGl2ZUNoaWxkKGl0ZW0pIHx8IGhvcml6b250YWxOYXZJdGVtSGFzRXhwYW5kZWRDaGlsZChpdGVtKSkge1xuICAgICAgaWYgKCFnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCAnZXhwYW5kZWQnKSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2V4cGFuZGVkJywgdHJ1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sICdleHBhbmRlZCcpKSB7XG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXRlUHJvcChpdGVtLCAnZXhwYW5kZWQnLCBmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXROYXZFeHRyYXMoaXRlbTogSU5hdkxpbmspOiBVcmxDcmVhdGlvbk9wdGlvbnMge1xuICAgIGNvbnN0IG5hdmlnYXRpb25FeHRyYXM6IFVybENyZWF0aW9uT3B0aW9ucyA9IHsgfVxuICAgIGlmIChoYXNQcm9wZXJ0eShpdGVtLCAncXVlcnlQYXJhbXMnKSkge1xuICAgICAgbmF2aWdhdGlvbkV4dHJhcy5xdWVyeVBhcmFtcyA9IGl0ZW0ucXVlcnlQYXJhbXNcbiAgICB9XG4gICAgaWYgKGhhc1Byb3BlcnR5KGl0ZW0sICdmcmFnbWVudCcpKSB7XG4gICAgICBuYXZpZ2F0aW9uRXh0cmFzLmZyYWdtZW50ID0gaXRlbS5mcmFnbWVudFxuICAgIH1cbiAgICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnKSkge1xuICAgICAgbmF2aWdhdGlvbkV4dHJhcy5xdWVyeVBhcmFtc0hhbmRsaW5nID0gaXRlbS5xdWVyeVBhcmFtc0hhbmRsaW5nXG4gICAgfVxuICAgIGlmIChoYXNQcm9wZXJ0eShpdGVtLCAncHJlc2VydmVGcmFnbWVudCcpKSB7XG4gICAgICBuYXZpZ2F0aW9uRXh0cmFzLnByZXNlcnZlRnJhZ21lbnQgPSBpdGVtLnByZXNlcnZlRnJhZ21lbnRcbiAgICB9XG4gICAgcmV0dXJuIG5hdmlnYXRpb25FeHRyYXNcbiAgfVxuXG4gIHByaXZhdGUgX2dldFVybChpdGVtOiBJTmF2TGluayk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGxpbmsgPSBpdGVtLmxpbmtcblxuICAgIGlmICh0eXBlb2YgbGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShbIGxpbmsgXSwgdGhpcy5fZ2V0TmF2RXh0cmFzKGl0ZW0pKS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGxpbmspKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcm91dGVyLmNyZWF0ZVVybFRyZWUobGluaywgdGhpcy5fZ2V0TmF2RXh0cmFzKGl0ZW0pKS50b1N0cmluZygpXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2dldE1hdGNoT3B0aW9ucyhpdGVtOiBJTmF2TGluayk6IElzQWN0aXZlTWF0Y2hPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0TWF0Y2hPcHRzOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcbiAgICAgIHBhdGhzOiAnc3Vic2V0JyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0JyxcbiAgICAgIGZyYWdtZW50OiAnaWdub3JlZCcsXG4gICAgICBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJ1xuICAgIH1cblxuICAgIGlmIChoYXNQcm9wZXJ0eShpdGVtLCAnbWF0Y2hPcHRpb25zJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRNYXRjaE9wdHMsXG4gICAgICAgIC4uLml0ZW0ubWF0Y2hPcHRpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRNYXRjaE9wdHNcbiAgfVxuXG4gIHB1YmxpYyBzZXRJdGVtU3RhdGVQcm9wPEsgZXh0ZW5kcyBrZXlvZiBJTmF2SXRlbVN0YXRlPihpdGVtOiBJTmF2SXRlbSwgcHJvcDogSywgdmFsdWU6IElOYXZJdGVtU3RhdGVbS10pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCBwcm9wKVxuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBzZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCBwcm9wLCB2YWx1ZSlcblxuICAgICAgY29uc3QgY2hhbmdlZDogTmF2SXRlbVN0YXRlQ2hhbmdlZCA9IHtcbiAgICAgICAgaXRlbSxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgcHJldlZhbHVlOiBjdXJyZW50VmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlOiB2YWx1ZVxuICAgICAgfVxuICAgICAgdGhpcy5pdGVtQ2hhbmdlZC5uZXh0KGNoYW5nZWQpXG4gICAgfVxuICB9XG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL25hdi9uYXYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTFFLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsZ0NBQWdDLEVBQ2hDLDZCQUE2QixFQUM5QixNQUFNLGFBQWEsQ0FBQTtBQUlwQixNQUFNLE9BQU8saUJBQWlCO0lBUTVCLFlBQ21CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBUGpCLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUE7UUFJaEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQTtRQUs5RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZCLG9CQUFvQixFQUFFLEVBQ3RCLFdB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O1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDL0I7SUFDSCxDQUFDOzs7WUFoT0YsVUFBVTs7O1lBbkJtQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBJc0FjdGl2ZU1hdGNoT3B0aW9ucywgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlZmVyLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IGhhc1Byb3BlcnR5LCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7XG4gIGdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wLFxuICBob3Jpem9udGFsTmF2SXRlbUNhbkV4cGFuZCxcbiAgaG9yaXpvbnRhbE5hdkl0ZW1IYXNBY3RpdmVDaGlsZCxcbiAgaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbixcbiAgaG9yaXpvbnRhbE5hdkl0ZW1IYXNFeHBhbmRlZENoaWxkLFxuICBpc0hvcml6b250YWxOYXZJdGVtQWN0aXZlLFxuICBpc0hvcml6b250YWxOYXZJdGVtVHlwZSxcbiAgc2V0RGVmYXVsdEhvcml6b250YWxOYXZJdGVtU3RhdGUsXG4gIHNldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wXG59IGZyb20gJy4vbmF2LXV0aWxzJ1xuaW1wb3J0IHsgSU5hdkl0ZW0sIElOYXZJdGVtU3RhdGUsIElOYXZMaW5rLCBOYXZJdGVtU3RhdGVDaGFuZ2VkIH0gZnJvbSAnLi9uYXYubW9kZWxzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGhlU2VhbU5hdlNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0aW5nQ291bnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICBwdWJsaWMgcmVhZG9ubHkgaXRlbUNoYW5nZWQgPSBuZXcgU3ViamVjdDxOYXZJdGVtU3RhdGVDaGFuZ2VkPigpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuX3VwZGF0aW5nQ291bnQucGlwZShcbiAgICAgIG1hcChjb3VudCA9PiBjb3VudCA+IDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlSXRlbXNPYnNlcnZhYmxlKGl0ZW1zOiBJTmF2SXRlbVtdKTogT2JzZXJ2YWJsZTxJTmF2SXRlbVtdPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlSXRlbXNTdGF0ZXMoaXRlbXMpXG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8SU5hdkl0ZW1bXT4pID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVDaGFuZ2VTdWIgPSB0aGlzLml0ZW1DaGFuZ2VkLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlLnByb3AgPT09ICdmb2N1c2VkJyAmJiBjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkSXRlbShpdGVtcywgY2hhbmdlLml0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nJC5waXBlKGZpbHRlcihsb2FkaW5nID0+ICFsb2FkaW5nKSlcbiAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGl0ZW1zKVxuICAgICAgICB9KVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVJdGVtc1N0YXRlcyhpdGVtcylcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZUNoYW5nZVN1YiA9IHRoaXMuX3JvdXRlci5ldmVudHMucGlwZShcbiAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1zU3RhdGVzKGl0ZW1zKVxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnIpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgc3RhdGVDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgICAgIHJvdXRlQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgICAgfSkucGlwZShzdGFydFdpdGgoaXRlbXMpKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9pbmNVcGRhdGluZ0NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0aW5nQ291bnQubmV4dCh0aGlzLl91cGRhdGluZ0NvdW50LnZhbHVlICsgMSlcbiAgfVxuXG4gIHByaXZhdGUgX2RlY3JVcGRhdGluZ0NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0aW5nQ291bnQubmV4dCh0aGlzLl91cGRhdGluZ0NvdW50LnZhbHVlIC0gMSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtc1N0YXRlcyhpdGVtczogSU5hdkl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuX2luY1VwZGF0aW5nQ291bnQoKVxuICAgIHRoaXMudXBkYXRlUm91dGVyRm9jdXNlZEl0ZW0oaXRlbXMpXG5cbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChob3Jpem9udGFsTmF2SXRlbUhhc0NoaWxkcmVuKGl0ZW0pKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVJdGVtc1N0YXRlcyhpdGVtLmNoaWxkcmVuKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVJdGVtU3RhdGUoaXRlbSlcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZGVjclVwZGF0aW5nQ291bnQoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fZGVjclVwZGF0aW5nQ291bnQoKVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUl0ZW1TdGF0ZShpdGVtOiBJTmF2SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX2luY1VwZGF0aW5nQ291bnQoKVxuXG4gICAgdHJ5IHtcbiAgICAgIHNldERlZmF1bHRIb3Jpem9udGFsTmF2SXRlbVN0YXRlKGl0ZW0pXG5cbiAgICAgIHRoaXMuc2V0SXRlbVN0YXRlUHJvcChpdGVtLCAnYWN0aXZlJywgdGhpcy5ob3Jpem9udGFsTmF2TGlua0FjdGl2ZShpdGVtKSlcblxuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IHRoaXMgaW4gYSBtb3JlIG9wdGltaXplZCB3YXkuIFVubGVzcyBvdXIgYXBwcyBzdGFydFxuICAgICAgLy8gaGF2aW5nIGxhcmdlIG5hdnMgY29uc3RhbnRseSB1cGRhdGluZyB0aGVpciBzdGF0ZSwgdGhpcyBzaG91bGRuJ3RcbiAgICAgIC8vIGhhdmUgbXVjaCBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuXG4gICAgICB0aGlzLl91cGRhdGVJdGVtRXhwYW5kZWRTdGF0ZShpdGVtKVxuXG4gICAgICB0aGlzLl9kZWNyVXBkYXRpbmdDb3VudCgpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9kZWNyVXBkYXRpbmdDb3VudCgpXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9yaXpvbnRhbE5hdkxpbmtBY3RpdmUoaXRlbTogSU5hdkl0ZW0pOiBib29sZWFuIHtcbiAgICBpZiAoaXNIb3Jpem9udGFsTmF2SXRlbVR5cGUoaXRlbSwgJ2xpbmsnKSkge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5fZ2V0VXJsKGl0ZW0pXG4gICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHVybCkpIHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IHRoaXMuX2dldE1hdGNoT3B0aW9ucyhpdGVtKVxuICAgICAgICByZXR1cm4gdGhpcy5fcm91dGVyLmlzQWN0aXZlKHVybCwgb3B0cylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVJdGVtc0V4cGFuZGVkU3RhdGUoaXRlbXM6IElOYXZJdGVtW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChob3Jpem9udGFsTmF2SXRlbUhhc0NoaWxkcmVuKGl0ZW0pKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zRXhwYW5kZWRTdGF0ZShpdGVtLmNoaWxkcmVuKVxuICAgICAgfVxuICAgICAgdGhpcy5fdXBkYXRlSXRlbUV4cGFuZGVkU3RhdGUoaXRlbSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVJdGVtRXhwYW5kZWRTdGF0ZShpdGVtOiBJTmF2SXRlbSk6IHZvaWQge1xuICAgIGlmICghaG9yaXpvbnRhbE5hdkl0ZW1DYW5FeHBhbmQoaXRlbSkpIHtcbiAgICAgIGlmIChnZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCAnZXhwYW5kZWQnKSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2V4cGFuZGVkJywgZmFsc2UpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaG9yaXpvbnRhbE5hdkl0ZW1IYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgdGhpcy5fdXBkYXRlSXRlbXNFeHBhbmRlZFN0YXRlKGl0ZW0uY2hpbGRyZW4pXG4gICAgfVxuXG4gICAgaWYgKGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQoaXRlbSkgfHwgaG9yaXpvbnRhbE5hdkl0ZW1IYXNFeHBhbmRlZENoaWxkKGl0ZW0pKSB7XG4gICAgICBpZiAoIWdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sICdleHBhbmRlZCcpKSB7XG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXRlUHJvcChpdGVtLCAnZXhwYW5kZWQnLCB0cnVlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZ2V0SG9yaXpvbnRhbE5hdkl0ZW1TdGF0ZVByb3AoaXRlbSwgJ2V4cGFuZGVkJykpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtU3RhdGVQcm9wKGl0ZW0sICdleHBhbmRlZCcsIGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSb3V0ZXJGb2N1c2VkSXRlbShpdGVtczogSU5hdkl0ZW1bXSkge1xuICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gaXRlbXMuZmluZChpID0+IGlzSG9yaXpvbnRhbE5hdkl0ZW1BY3RpdmUoaSkpIHx8IGl0ZW1zLmZpbmQoaSA9PiBob3Jpem9udGFsTmF2SXRlbUhhc0FjdGl2ZUNoaWxkKGkpKVxuICAgIHRoaXMudXBkYXRlRm9jdXNlZEl0ZW0oaXRlbXMsIGZvY3VzZWRJdGVtKVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvY3VzZWRJdGVtKGl0ZW1zOiBJTmF2SXRlbVtdLCBmb2N1c2VkSXRlbTogSU5hdkl0ZW0gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChpdGVtID09PSBmb2N1c2VkSXRlbSkge1xuICAgICAgICBzZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCAnZm9jdXNlZCcsIHRydWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRIb3Jpem9udGFsTmF2SXRlbVN0YXRlUHJvcChpdGVtLCAnZm9jdXNlZCcsIGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldE5hdkV4dHJhcyhpdGVtOiBJTmF2TGluayk6IFVybENyZWF0aW9uT3B0aW9ucyB7XG4gICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhczogVXJsQ3JlYXRpb25PcHRpb25zID0geyB9XG4gICAgaWYgKGhhc1Byb3BlcnR5KGl0ZW0sICdxdWVyeVBhcmFtcycpKSB7XG4gICAgICBuYXZpZ2F0aW9uRXh0cmFzLnF1ZXJ5UGFyYW1zID0gaXRlbS5xdWVyeVBhcmFtc1xuICAgIH1cbiAgICBpZiAoaGFzUHJvcGVydHkoaXRlbSwgJ2ZyYWdtZW50JykpIHtcbiAgICAgIG5hdmlnYXRpb25FeHRyYXMuZnJhZ21lbnQgPSBpdGVtLmZyYWdtZW50XG4gICAgfVxuICAgIGlmIChoYXNQcm9wZXJ0eShpdGVtLCAncXVlcnlQYXJhbXNIYW5kbGluZycpKSB7XG4gICAgICBuYXZpZ2F0aW9uRXh0cmFzLnF1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmdcbiAgICB9XG4gICAgaWYgKGhhc1Byb3BlcnR5KGl0ZW0sICdwcmVzZXJ2ZUZyYWdtZW50JykpIHtcbiAgICAgIG5hdmlnYXRpb25FeHRyYXMucHJlc2VydmVGcmFnbWVudCA9IGl0ZW0ucHJlc2VydmVGcmFnbWVudFxuICAgIH1cbiAgICByZXR1cm4gbmF2aWdhdGlvbkV4dHJhc1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VXJsKGl0ZW06IElOYXZMaW5rKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbGluayA9IGl0ZW0ubGlua1xuXG4gICAgaWYgKHR5cGVvZiBsaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlci5jcmVhdGVVcmxUcmVlKFsgbGluayBdLCB0aGlzLl9nZXROYXZFeHRyYXMoaXRlbSkpLnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobGluaykpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShsaW5rLCB0aGlzLl9nZXROYXZFeHRyYXMoaXRlbSkpLnRvU3RyaW5nKClcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TWF0Y2hPcHRpb25zKGl0ZW06IElOYXZMaW5rKTogSXNBY3RpdmVNYXRjaE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRNYXRjaE9wdHM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0ge1xuICAgICAgcGF0aHM6ICdzdWJzZXQnLFxuICAgICAgcXVlcnlQYXJhbXM6ICdzdWJzZXQnLFxuICAgICAgZnJhZ21lbnQ6ICdpZ25vcmVkJyxcbiAgICAgIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnXG4gICAgfVxuXG4gICAgaWYgKGhhc1Byb3BlcnR5KGl0ZW0sICdtYXRjaE9wdGlvbnMnKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGVmYXVsdE1hdGNoT3B0cyxcbiAgICAgICAgLi4uaXRlbS5tYXRjaE9wdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdE1hdGNoT3B0c1xuICB9XG5cbiAgcHVibGljIHNldEl0ZW1TdGF0ZVByb3A8SyBleHRlbmRzIGtleW9mIElOYXZJdGVtU3RhdGU+KGl0ZW06IElOYXZJdGVtLCBwcm9wOiBLLCB2YWx1ZTogSU5hdkl0ZW1TdGF0ZVtLXSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sIHByb3ApXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHNldEhvcml6b250YWxOYXZJdGVtU3RhdGVQcm9wKGl0ZW0sIHByb3AsIHZhbHVlKVxuXG4gICAgICBjb25zdCBjaGFuZ2VkOiBOYXZJdGVtU3RhdGVDaGFuZ2VkID0ge1xuICAgICAgICBpdGVtLFxuICAgICAgICBwcm9wLFxuICAgICAgICBwcmV2VmFsdWU6IGN1cnJlbnRWYWx1ZSxcbiAgICAgICAgbmV3VmFsdWU6IHZhbHVlXG4gICAgICB9XG4gICAgICB0aGlzLml0ZW1DaGFuZ2VkLm5leHQoY2hhbmdlZClcbiAgICB9XG4gIH1cbn1cbiJdfQ==