@theseam/ui-common 0.3.10 → 0.3.12-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.
Files changed (79) hide show
  1. package/breadcrumbs/_breadcrumbs-theme.scss +3 -3
  2. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +10 -10
  3. package/bundles/theseam-ui-common-framework.umd.js +899 -47
  4. package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
  5. package/bundles/theseam-ui-common-layout.umd.js +14 -5
  6. package/bundles/theseam-ui-common-layout.umd.js.map +1 -1
  7. package/bundles/theseam-ui-common-menu.umd.js +4 -0
  8. package/bundles/theseam-ui-common-menu.umd.js.map +1 -1
  9. package/bundles/theseam-ui-common-table-cell-types.umd.js +2 -5
  10. package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
  11. package/esm2015/framework/base-layout/base-layout.component.js +12 -4
  12. package/esm2015/framework/base-layout/base-layout.module.js +4 -1
  13. package/esm2015/framework/base-layout/directives/base-layout-nav-toggle.directive.js +17 -3
  14. package/esm2015/framework/base-layout/directives/base-layout-side-bar-header.directive.js +15 -0
  15. package/esm2015/framework/nav/horizontal-nav/horizontal-nav.component.js +68 -0
  16. package/esm2015/framework/nav/index.js +6 -0
  17. package/esm2015/framework/nav/nav-item/nav-item.component.js +169 -0
  18. package/esm2015/framework/nav/nav-utils.js +105 -0
  19. package/esm2015/framework/nav/nav.models.js +2 -0
  20. package/esm2015/framework/nav/nav.module.js +42 -0
  21. package/esm2015/framework/nav/nav.service.js +175 -0
  22. package/esm2015/framework/public-api.js +2 -1
  23. package/esm2015/framework/side-nav/side-nav-item/side-nav-item.component.js +11 -5
  24. package/esm2015/framework/side-nav/side-nav-toggle/side-nav-toggle.component.js +5 -5
  25. package/esm2015/framework/side-nav/side-nav.component.js +67 -18
  26. package/esm2015/framework/side-nav/side-nav.service.js +1 -1
  27. package/esm2015/framework/theseam-ui-common-framework.js +13 -9
  28. package/esm2015/framework/top-bar/top-bar-compact-menu-btn-detail.directive.js +15 -0
  29. package/esm2015/framework/top-bar/top-bar-item.directive.js +9 -2
  30. package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +4 -3
  31. package/esm2015/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.js +15 -0
  32. package/esm2015/framework/top-bar/top-bar.component.js +44 -7
  33. package/esm2015/framework/top-bar/top-bar.module.js +9 -3
  34. package/esm2015/layout/layout.service.js +12 -2
  35. package/esm2015/menu/menu-toggle.directive.js +6 -2
  36. package/esm2015/table-cell-types/table-cell-type-date/table-cell-type-date.component.js +3 -6
  37. package/fesm2015/theseam-ui-common-framework.js +730 -41
  38. package/fesm2015/theseam-ui-common-framework.js.map +1 -1
  39. package/fesm2015/theseam-ui-common-layout.js +11 -2
  40. package/fesm2015/theseam-ui-common-layout.js.map +1 -1
  41. package/fesm2015/theseam-ui-common-menu.js +5 -1
  42. package/fesm2015/theseam-ui-common-menu.js.map +1 -1
  43. package/fesm2015/theseam-ui-common-table-cell-types.js +2 -5
  44. package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
  45. package/framework/base-layout/base-layout.component.d.ts +3 -1
  46. package/framework/base-layout/base-layout.component.scss +18 -10
  47. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +7 -2
  48. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +6 -0
  49. package/framework/base-layout/styles/_variables.scss +21 -0
  50. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +31 -0
  51. package/framework/nav/index.d.ts +5 -0
  52. package/framework/nav/nav-item/nav-item.component.d.ts +67 -0
  53. package/framework/nav/nav-utils.d.ts +19 -0
  54. package/framework/nav/nav.models.d.ts +76 -0
  55. package/framework/nav/nav.module.d.ts +2 -0
  56. package/framework/nav/nav.service.d.ts +21 -0
  57. package/framework/public-api.d.ts +1 -0
  58. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +2 -0
  59. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  60. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +4 -2
  61. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  62. package/framework/side-nav/side-nav.component.d.ts +13 -1
  63. package/framework/side-nav/side-nav.component.scss +0 -1
  64. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  65. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  66. package/framework/theseam-ui-common-framework.d.ts +12 -8
  67. package/framework/theseam-ui-common-framework.metadata.json +1 -1
  68. package/framework/top-bar/_top-bar-theme.scss +5 -5
  69. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +5 -0
  70. package/framework/top-bar/top-bar-item.directive.d.ts +3 -0
  71. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +4 -1
  72. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +5 -0
  73. package/framework/top-bar/top-bar.component.d.ts +25 -3
  74. package/framework/top-bar/top-bar.component.scss +7 -2
  75. package/layout/layout.service.d.ts +9 -1
  76. package/layout/theseam-ui-common-layout.metadata.json +1 -1
  77. package/menu/menu-toggle.directive.d.ts +2 -1
  78. package/menu/theseam-ui-common-menu.metadata.json +1 -1
  79. package/package.json +1 -1
@@ -22,6 +22,7 @@ export class TheSeamBaseLayoutComponent {
22
22
  this.faAngleDoubleRight = faAngleDoubleRight;
23
23
  this.faAngleDoubleLeft = faAngleDoubleLeft;
24
24
  this.overlayNav = false;
25
+ this.showSidebar = true;
25
26
  this._hasSideBar = new BehaviorSubject(false);
26
27
  this._registeredNav = new BehaviorSubject(undefined);
27
28
  this.registeredNav$ = this._registeredNav.asObservable();
@@ -33,12 +34,17 @@ export class TheSeamBaseLayoutComponent {
33
34
  get registeredNav() { return this._registeredNav.value; }
34
35
  get registeredActions() { return this._registeredActions.value; }
35
36
  ngOnInit() {
37
+ if (this.mobileBreakpoint) {
38
+ this._layout.setMobileBreakpoint(this.mobileBreakpoint);
39
+ }
36
40
  if (this._topBarTpl) {
37
41
  this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef);
38
42
  }
39
43
  if (this._sideBarTpl) {
40
44
  this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef);
41
- this._hasSideBar.next(true);
45
+ if (this.showSidebar) {
46
+ this._hasSideBar.next(true);
47
+ }
42
48
  }
43
49
  if (this._contentTpl) {
44
50
  this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef);
@@ -95,11 +101,11 @@ export class TheSeamBaseLayoutComponent {
95
101
  TheSeamBaseLayoutComponent.decorators = [
96
102
  { type: Component, args: [{
97
103
  selector: 'seam-base-layout',
98
- template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header\">\n <!-- <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template> -->\n\n <div class=\"d-flex d-flex-row\">\n <div class=\"flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div>\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n\n\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n",
104
+ template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n",
99
105
  providers: [THE_SEAM_BASE_LAYOUT],
100
106
  changeDetection: ChangeDetectionStrategy.OnPush,
101
107
  encapsulation: ViewEncapsulation.None,
102
- styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;float:left;z-index:9999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .base-layout-content-container-header{margin:.25rem;padding:0;background:none;border-radius:0;overflow:hidden}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"]
108
+ styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"]
103
109
  },] }
104
110
  ];
105
111
  TheSeamBaseLayoutComponent.ctorParameters = () => [
@@ -108,10 +114,12 @@ TheSeamBaseLayoutComponent.ctorParameters = () => [
108
114
  ];
109
115
  TheSeamBaseLayoutComponent.propDecorators = {
110
116
  overlayNav: [{ type: Input }],
117
+ mobileBreakpoint: [{ type: Input }],
118
+ showSidebar: [{ type: Input }],
111
119
  _topBarTpl: [{ type: ContentChild, args: [BaseLayoutTopBarDirective, { static: true, read: TemplateRef },] }],
112
120
  _sideBarTpl: [{ type: ContentChild, args: [BaseLayoutSideBarDirective, { static: true, read: TemplateRef },] }],
113
121
  _contentTpl: [{ type: ContentChild, args: [BaseLayoutContentDirective, { static: true, read: TemplateRef },] }],
114
122
  _contentHeaderTpl: [{ type: ContentChild, args: [BaseLayoutContentHeaderDirective, { static: true, read: TemplateRef },] }],
115
123
  _contentFooterTpl: [{ type: ContentChild, args: [BaseLayoutContentFooterDirective, { static: true, read: TemplateRef },] }]
116
124
  };
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9iYXNlLWxheW91dC9iYXNlLWxheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDOUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sbURBQW1ELENBQUE7QUFDcEcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sbURBQW1ELENBQUE7QUFDcEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFDdkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUE7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFFdEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQVE7SUFDdkMsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxpREFBaUQ7SUFDakQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFB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QzVDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUErQjtRQUMvQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDM0IsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNuRSxDQUFDOzs7WUE1SEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLG9tREFBMkM7Z0JBRTNDLFNBQVMsRUFBRSxDQUFFLG9CQUFvQixDQUFFO2dCQUNuQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFqQ0MsZ0JBQWdCO1lBT1Qsb0JBQW9COzs7eUJBZ0MxQixLQUFLO3lCQUtMLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTswQkFDM0UsWUFBWSxTQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFOzBCQUM1RSxZQUFZLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0NBQzVFLFlBQVksU0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQ0FDbEYsWUFBWSxTQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgaXNEZXZNb2RlLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlRG91YmxlTGVmdCwgZmFBbmdsZURvdWJsZVJpZ2h0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJ1xuXG5pbXBvcnQgeyBUaGVTZWFtTGF5b3V0U2VydmljZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9sYXlvdXQnXG5cbmltcG9ydCB7IEJhc2VMYXlvdXRBY3Rpb24sIElCYXNlTGF5b3V0QWN0aW9uQnV0dG9uIH0gZnJvbSAnLi9iYXNlLWxheW91dC1hY3Rpb24nXG5pbXBvcnQgeyBJVGhlU2VhbUJhc2VMYXlvdXROYXYgfSBmcm9tICcuL2Jhc2UtbGF5b3V0LW5hdidcbmltcG9ydCB7IElUaGVTZWFtQmFzZUxheW91dFJlZiB9IGZyb20gJy4vYmFzZS1sYXlvdXQtcmVmJ1xuaW1wb3J0IHsgVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYgfSBmcm9tICcuL2Jhc2UtbGF5b3V0LXRva2VucydcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50Rm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50SGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtaGVhZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFzZUxheW91dFNpZGVCYXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXIuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFzZUxheW91dFRvcEJhckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC10b3AtYmFyLmRpcmVjdGl2ZSdcblxuZXhwb3J0IGNvbnN0IFRIRV9TRUFNX0JBU0VfTEFZT1VUOiBhbnkgPSB7XG4gIHByb3ZpZGU6IFRIRVNFQU1fQkFTRV9MQVlPVVRfUkVGLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdXNlLWJlZm9yZS1kZWNsYXJlXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50KSxcbiAgbXVsdGk6IGZhbHNlLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWJhc2UtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbIFRIRV9TRUFNX0JBU0VfTEFZT1VUIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBJVGhlU2VhbUJhc2VMYXlvdXRSZWYge1xuXG4gIGZhQW5nbGVEb3VibGVSaWdodCA9IGZhQW5nbGVEb3VibGVSaWdodFxuICBmYUFuZ2xlRG91YmxlTGVmdCA9IGZhQW5nbGVEb3VibGVMZWZ0XG5cbiAgQElucHV0KCkgb3ZlcmxheU5hdiA9IGZhbHNlXG5cbiAgLy8gVE9ETzogQ29uc2lkZXIgbWFraW5nIHRoZSB0ZW1wbGF0ZSBxdWVyaWVzIG5vdCBiZSBkeW5hbWljLiBJIGNhbiBzZWUgdGhpc1xuICAvLyBwb3RlbnRpYWxseSBjYXVzaW5nIGNvbmZ1c2lvbiBvciBpc3N1ZXMgd2l0aCBwb3RlbnRpYWwgbGF5b3V0cyBidWlsdCB3aXRoXG4gIC8vIHRoaXMgY29tcG9uZW50LlxuICBAQ29udGVudENoaWxkKEJhc2VMYXlvdXRUb3BCYXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfdG9wQmFyVHBsPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcbiAgQENvbnRlbnRDaGlsZChCYXNlTGF5b3V0U2lkZUJhckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9zaWRlQmFyVHBsPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcbiAgQENvbnRlbnRDaGlsZChCYXNlTGF5b3V0Q29udGVudERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9jb250ZW50VHBsPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcbiAgQENvbnRlbnRDaGlsZChCYXNlTGF5b3V0Q29udGVudEhlYWRlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9jb250ZW50SGVhZGVyVHBsPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcbiAgQENvbnRlbnRDaGlsZChCYXNlTGF5b3V0Q29udGVudEZvb3RlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9jb250ZW50Rm9vdGVyVHBsPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcblxuICBfdG9wQmFyUG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcbiAgX3NpZGVCYXJQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbFxuICBfY29udGVudFBvcnRhbD86IFRlbXBsYXRlUG9ydGFsXG4gIF9jb250ZW50SGVhZGVyUG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcbiAgX2NvbnRlbnRGb290ZXJQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbFxuXG4gIHByaXZhdGUgX2hhc1NpZGVCYXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuXG4gIHB1YmxpYyBoYXNTaWRlQmFyJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICBwdWJsaWMgaXNNb2JpbGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgZ2V0IHJlZ2lzdGVyZWROYXYoKSB7IHJldHVybiB0aGlzLl9yZWdpc3RlcmVkTmF2LnZhbHVlIH1cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJlZE5hdiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRoZVNlYW1CYXNlTGF5b3V0TmF2IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHB1YmxpYyByZWdpc3RlcmVkTmF2JCA9IHRoaXMuX3JlZ2lzdGVyZWROYXYuYXNPYnNlcnZhYmxlKClcblxuICBnZXQgcmVnaXN0ZXJlZEFjdGlvbnMoKSB7IHJldHVybiB0aGlzLl9yZWdpc3RlcmVkQWN0aW9ucy52YWx1ZSB9XG4gIHByaXZhdGUgX3JlZ2lzdGVyZWRBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNlTGF5b3V0QWN0aW9uW10+KFtdKVxuICBwdWJsaWMgcmVnaXN0ZXJlZEFjdGlvbnMkOiBPYnNlcnZhYmxlPEJhc2VMYXlvdXRBY3Rpb25bXT5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgX2xheW91dDogVGhlU2VhbUxheW91dFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5yZWdpc3RlcmVkQWN0aW9ucyQgPSB0aGlzLl9yZWdpc3RlcmVkQWN0aW9ucy5hc09ic2VydmFibGUoKVxuXG4gICAgdGhpcy5pc01vYmlsZSQgPSB0aGlzLl9sYXlvdXQuaXNNb2JpbGUkXG4gICAgdGhpcy5oYXNTaWRlQmFyJCA9IHRoaXMuX2hhc1NpZGVCYXIuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl90b3BCYXJUcGwpIHtcbiAgICAgIHRoaXMuX3RvcEJhclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl90b3BCYXJUcGwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NpZGVCYXJUcGwpIHtcbiAgICAgIHRoaXMuX3NpZGVCYXJQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fc2lkZUJhclRwbCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZilcbiAgICAgIHRoaXMuX2hhc1NpZGVCYXIubmV4dCh0cnVlKVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250ZW50VHBsKSB7XG4gICAgICB0aGlzLl9jb250ZW50UG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuX2NvbnRlbnRUcGwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbnRlbnRIZWFkZXJUcGwpIHtcbiAgICAgIHRoaXMuX2NvbnRlbnRIZWFkZXJQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fY29udGVudEhlYWRlclRwbCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29udGVudEZvb3RlclRwbCkge1xuICAgICAgdGhpcy5fY29udGVudEZvb3RlclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9jb250ZW50Rm9vdGVyVHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck5hdihuYXY6IElUaGVTZWFtQmFzZUxheW91dE5hdik6IHZvaWQge1xuICAgIC8vIFRPRE86IEFsbG93IG11bHRpcGxlIHJlZ2lzdGVyZWQgbmF2c1xuICAgIC8vIGlmICh0aGlzLnJlZ2lzdGVyZWROYXYpIHtcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcignW1RoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50XSBBIG5hdiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuJylcbiAgICAvLyB9XG4gICAgLy8gY29uc29sZS5sb2coJ3JlZ2lzdGVyIG5hdicsIG5hdilcbiAgICB0aGlzLl9yZWdpc3RlcmVkTmF2Lm5leHQobmF2KVxuICB9XG5cbiAgcHVibGljIHVucmVnaXN0ZXJOYXYobmF2OiBJVGhlU2VhbUJhc2VMYXlvdXROYXYpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWdpc3RlcmVkTmF2ID09PSBuYXYpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWROYXYubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyQWN0aW9uKGFjdGlvbjogQmFzZUxheW91dEFjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLl9yZWdpc3RlcmVkQWN0aW9ucy52YWx1ZVxuICAgIGlmIChhY3Rpb25zLmZpbmRJbmRleChhID0+IGEubmFtZSA9PT0gYWN0aW9uLm5hbWUpICE9PSAtMSkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW1RoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50XSByZWdpc3RlckFjdGlvbigpOiBBY3Rpb24gJHthY3Rpb24ubmFtZX0gbm90IGAgK1xuICAgICAgICAgICdyZWdpc3RlcmVkLCBiZWNhdXNlIGFub3RoZXIgYWN0aW9uIGJ5IHRoYXQgbmFtZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuJ1xuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgfVxuXG4gIHB1YmxpYyB1bnJlZ2lzdGVyQWN0aW9uKGFjdGlvbjogQmFzZUxheW91dEFjdGlvbiB8IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSB0eXBlb2YgYWN0aW9uID09PSAnc3RyaW5nJyA/IGFjdGlvbiA6IGFjdGlvbi5uYW1lXG4gICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuX3JlZ2lzdGVyZWRBY3Rpb25zLnZhbHVlXG4gICAgdGhpcy5fcmVnaXN0ZXJlZEFjdGlvbnMubmV4dChhY3Rpb25zLmZpbHRlcihmID0+IGYubmFtZSAhPT0gYWN0aW9uTmFtZSkpXG4gIH1cblxuICBwdWJsaWMgaXNBY3Rpb25SZWdpc3RlcmVkKGFjdGlvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLl9yZWdpc3RlcmVkQWN0aW9ucy52YWx1ZVxuICAgIGNvbnN0IGFjdGlvbiA9IGFjdGlvbnMuZmluZChmID0+IGYubmFtZSA9PT0gYWN0aW9uTmFtZSlcbiAgICByZXR1cm4gISFhY3Rpb25cbiAgfVxuXG4gIF9oYW5kbGVCdXR0b25BY3Rpb24oYWN0aW9uOiBJQmFzZUxheW91dEFjdGlvbkJ1dHRvbik6IHZvaWQge1xuICAgIHRoaXMuX2V4ZWNCdXR0b25BY3Rpb24oYWN0aW9uKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgX2V4ZWNCdXR0b25BY3Rpb24oYWN0aW9uOiBJQmFzZUxheW91dEFjdGlvbkJ1dHRvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZuUmVzID0gYWN0aW9uLmV4ZWMoKVxuICAgIHJldHVybiBpc09ic2VydmFibGUoZm5SZXMpID8gZm5SZXMgOiBmcm9tKFByb21pc2UucmVzb2x2ZShmblJlcykpXG4gIH1cblxufVxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9iYXNlLWxheW91dC9iYXNlLWxheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFekYsT0FBTyxFQUFxQixvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBS25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzlELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBRXRGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFRO0lBQ3ZDLE9BQU8sRUFBRSx1QkFBdUI7SUFDaEMsaURBQWlEO0lBQ2pELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJB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QUNsRixZQUFZLFNBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBpc0Rldk1vZGUsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb20sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5cbmltcG9ydCB7IGZhQW5nbGVEb3VibGVMZWZ0LCBmYUFuZ2xlRG91YmxlUmlnaHQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5cbmltcG9ydCB7IE1lZGlhUXVlcnlBbGlhc2VzLCBUaGVTZWFtTGF5b3V0U2VydmljZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9sYXlvdXQnXG5cbmltcG9ydCB7IEJhc2VMYXlvdXRBY3Rpb24sIElCYXNlTGF5b3V0QWN0aW9uQnV0dG9uIH0gZnJvbSAnLi9iYXNlLWxheW91dC1hY3Rpb24nXG5pbXBvcnQgeyBJVGhlU2VhbUJhc2VMYXlvdXROYXYgfSBmcm9tICcuL2Jhc2UtbGF5b3V0LW5hdidcbmltcG9ydCB7IElUaGVTZWFtQmFzZUxheW91dFJlZiB9IGZyb20gJy4vYmFzZS1sYXlvdXQtcmVmJ1xuaW1wb3J0IHsgVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYgfSBmcm9tICcuL2Jhc2UtbGF5b3V0LXRva2VucydcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50Rm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50SGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtaGVhZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFzZUxheW91dFNpZGVCYXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXIuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFzZUxheW91dFRvcEJhckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC10b3AtYmFyLmRpcmVjdGl2ZSdcblxuZXhwb3J0IGNvbnN0IFRIRV9TRUFNX0JBU0VfTEFZT1VUOiBhbnkgPSB7XG4gIHByb3ZpZGU6IFRIRVNFQU1fQkFTRV9MQVlPVVRfUkVGLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdXNlLWJlZm9yZS1kZWNsYXJlXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50KSxcbiAgbXVsdGk6IGZhbHNlLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLWJhc2UtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZS1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbIFRIRV9TRUFNX0JBU0VfTEFZT1VUIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBJVGhlU2VhbUJhc2VMYXlvdXRSZWYge1xuXG4gIGZhQW5nbGVEb3VibGVSaWdodCA9IGZhQW5nbGVEb3VibGVSaWdodFxuICBmYUFuZ2xlRG91YmxlTGVmdCA9IGZhQW5nbGVEb3VibGVMZWZ0XG5cbiAgQElucHV0KCkgb3ZlcmxheU5hdiA9IGZhbHNlXG5cbiAgQElucHV0KCkgbW9iaWxlQnJlYWtwb2ludDogTWVkaWFRdWVyeUFsaWFzZXMgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKSBzaG93U2lkZWJhcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWVcblxuICAvLyBUT0RPOiBDb25zaWRlciBtYWtpbmcgdGhlIHRlbXBsYXRlIHF1ZXJpZXMgbm90IGJlIGR5bmFtaWMuIEkgY2FuIHNlZSB0aGlzXG4gIC8vIHBvdGVudGlhbGx5IGNhdXNpbmcgY29uZnVzaW9uIG9yIGlzc3VlcyB3aXRoIHBvdGVudGlhbCBsYXlvdXRzIGJ1aWx0IHdpdGhcbiAgLy8gdGhpcyBjb21wb25lbnQuXG4gIEBDb250ZW50Q2hpbGQoQmFzZUxheW91dFRvcEJhckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF90b3BCYXJUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbFxuICBAQ29udGVudENoaWxkKEJhc2VMYXlvdXRTaWRlQmFyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX3NpZGVCYXJUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbFxuICBAQ29udGVudENoaWxkKEJhc2VMYXlvdXRDb250ZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX2NvbnRlbnRUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbFxuICBAQ29udGVudENoaWxkKEJhc2VMYXlvdXRDb250ZW50SGVhZGVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX2NvbnRlbnRIZWFkZXJUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbFxuICBAQ29udGVudENoaWxkKEJhc2VMYXlvdXRDb250ZW50Rm9vdGVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX2NvbnRlbnRGb290ZXJUcGw/OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbFxuXG4gIF90b3BCYXJQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbFxuICBfc2lkZUJhclBvcnRhbD86IFRlbXBsYXRlUG9ydGFsXG4gIF9jb250ZW50UG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcbiAgX2NvbnRlbnRIZWFkZXJQb3J0YWw/OiBUZW1wbGF0ZVBvcnRhbFxuICBfY29udGVudEZvb3RlclBvcnRhbD86IFRlbXBsYXRlUG9ydGFsXG5cbiAgcHJpdmF0ZSBfaGFzU2lkZUJhciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcHVibGljIGhhc1NpZGVCYXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIHB1YmxpYyBpc01vYmlsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICBnZXQgcmVnaXN0ZXJlZE5hdigpIHsgcmV0dXJuIHRoaXMuX3JlZ2lzdGVyZWROYXYudmFsdWUgfVxuICBwcml2YXRlIF9yZWdpc3RlcmVkTmF2ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVGhlU2VhbUJhc2VMYXlvdXROYXYgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlZ2lzdGVyZWROYXYkID0gdGhpcy5fcmVnaXN0ZXJlZE5hdi5hc09ic2VydmFibGUoKVxuXG4gIGdldCByZWdpc3RlcmVkQWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuX3JlZ2lzdGVyZWRBY3Rpb25zLnZhbHVlIH1cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJlZEFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2VMYXlvdXRBY3Rpb25bXT4oW10pXG4gIHB1YmxpYyByZWdpc3RlcmVkQWN0aW9ucyQ6IE9ic2VydmFibGU8QmFzZUxheW91dEFjdGlvbltdPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfbGF5b3V0OiBUaGVTZWFtTGF5b3V0U2VydmljZVxuICApIHtcbiAgICB0aGlzLnJlZ2lzdGVyZWRBY3Rpb25zJCA9IHRoaXMuX3JlZ2lzdGVyZWRBY3Rpb25zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgICB0aGlzLmlzTW9iaWxlJCA9IHRoaXMuX2xheW91dC5pc01vYmlsZSRcbiAgICB0aGlzLmhhc1NpZGVCYXIkID0gdGhpcy5faGFzU2lkZUJhci5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgdGhpcy5fbGF5b3V0LnNldE1vYmlsZUJyZWFrcG9pbnQodGhpcy5tb2JpbGVCcmVha3BvaW50KVxuICAgIH1cblxuICAgIGlmICh0aGlzLl90b3BCYXJUcGwpIHtcbiAgICAgIHRoaXMuX3RvcEJhclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl90b3BCYXJUcGwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NpZGVCYXJUcGwpIHtcbiAgICAgIHRoaXMuX3NpZGVCYXJQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fc2lkZUJhclRwbCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZilcbiAgICAgIGlmICh0aGlzLnNob3dTaWRlYmFyKSB7XG4gICAgICAgIHRoaXMuX2hhc1NpZGVCYXIubmV4dCh0cnVlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250ZW50VHBsKSB7XG4gICAgICB0aGlzLl9jb250ZW50UG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuX2NvbnRlbnRUcGwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbnRlbnRIZWFkZXJUcGwpIHtcbiAgICAgIHRoaXMuX2NvbnRlbnRIZWFkZXJQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fY29udGVudEhlYWRlclRwbCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZilcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29udGVudEZvb3RlclRwbCkge1xuICAgICAgdGhpcy5fY29udGVudEZvb3RlclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9jb250ZW50Rm9vdGVyVHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck5hdihuYXY6IElUaGVTZWFtQmFzZUxheW91dE5hdik6IHZvaWQge1xuICAgIC8vIFRPRE86IEFsbG93IG11bHRpcGxlIHJlZ2lzdGVyZWQgbmF2c1xuICAgIC8vIGlmICh0aGlzLnJlZ2lzdGVyZWROYXYpIHtcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcignW1RoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50XSBBIG5hdiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuJylcbiAgICAvLyB9XG4gICAgLy8gY29uc29sZS5sb2coJ3JlZ2lzdGVyIG5hdicsIG5hdilcbiAgICB0aGlzLl9yZWdpc3RlcmVkTmF2Lm5leHQobmF2KVxuICB9XG5cbiAgcHVibGljIHVucmVnaXN0ZXJOYXYobmF2OiBJVGhlU2VhbUJhc2VMYXlvdXROYXYpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWdpc3RlcmVkTmF2ID09PSBuYXYpIHtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWROYXYubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyQWN0aW9uKGFjdGlvbjogQmFzZUxheW91dEFjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLl9yZWdpc3RlcmVkQWN0aW9ucy52YWx1ZVxuICAgIGlmIChhY3Rpb25zLmZpbmRJbmRleChhID0+IGEubmFtZSA9PT0gYWN0aW9uLm5hbWUpICE9PSAtMSkge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW1RoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50XSByZWdpc3RlckFjdGlvbigpOiBBY3Rpb24gJHthY3Rpb24ubmFtZX0gbm90IGAgK1xuICAgICAgICAgICdyZWdpc3RlcmVkLCBiZWNhdXNlIGFub3RoZXIgYWN0aW9uIGJ5IHRoYXQgbmFtZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuJ1xuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgfVxuXG4gIHB1YmxpYyB1bnJlZ2lzdGVyQWN0aW9uKGFjdGlvbjogQmFzZUxheW91dEFjdGlvbiB8IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSB0eXBlb2YgYWN0aW9uID09PSAnc3RyaW5nJyA/IGFjdGlvbiA6IGFjdGlvbi5uYW1lXG4gICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuX3JlZ2lzdGVyZWRBY3Rpb25zLnZhbHVlXG4gICAgdGhpcy5fcmVnaXN0ZXJlZEFjdGlvbnMubmV4dChhY3Rpb25zLmZpbHRlcihmID0+IGYubmFtZSAhPT0gYWN0aW9uTmFtZSkpXG4gIH1cblxuICBwdWJsaWMgaXNBY3Rpb25SZWdpc3RlcmVkKGFjdGlvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLl9yZWdpc3RlcmVkQWN0aW9ucy52YWx1ZVxuICAgIGNvbnN0IGFjdGlvbiA9IGFjdGlvbnMuZmluZChmID0+IGYubmFtZSA9PT0gYWN0aW9uTmFtZSlcbiAgICByZXR1cm4gISFhY3Rpb25cbiAgfVxuXG4gIF9oYW5kbGVCdXR0b25BY3Rpb24oYWN0aW9uOiBJQmFzZUxheW91dEFjdGlvbkJ1dHRvbik6IHZvaWQge1xuICAgIHRoaXMuX2V4ZWNCdXR0b25BY3Rpb24oYWN0aW9uKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgX2V4ZWNCdXR0b25BY3Rpb24oYWN0aW9uOiBJQmFzZUxheW91dEFjdGlvbkJ1dHRvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGZuUmVzID0gYWN0aW9uLmV4ZWMoKVxuICAgIHJldHVybiBpc09ic2VydmFibGUoZm5SZXMpID8gZm5SZXMgOiBmcm9tKFByb21pc2UucmVzb2x2ZShmblJlcykpXG4gIH1cblxufVxuIl19
@@ -10,6 +10,7 @@ import { BaseLayoutContentHeaderDirective } from './directives/base-layout-conte
10
10
  import { BaseLayoutContentDirective } from './directives/base-layout-content.directive';
11
11
  import { BaseLayoutNavToggleDirective } from './directives/base-layout-nav-toggle.directive';
12
12
  import { BaseLayoutSideBarFooterDirective } from './directives/base-layout-side-bar-footer.directive';
13
+ import { BaseLayoutSideBarHeaderDirective } from './directives/base-layout-side-bar-header.directive';
13
14
  import { BaseLayoutSideBarDirective } from './directives/base-layout-side-bar.directive';
14
15
  import { BaseLayoutTopBarDirective } from './directives/base-layout-top-bar.directive';
15
16
  export class TheSeamBaseLayoutModule {
@@ -21,6 +22,7 @@ TheSeamBaseLayoutModule.decorators = [
21
22
  BaseLayoutContentDirective,
22
23
  BaseLayoutSideBarDirective,
23
24
  BaseLayoutSideBarFooterDirective,
25
+ BaseLayoutSideBarHeaderDirective,
24
26
  BaseLayoutTopBarDirective,
25
27
  BaseLayoutNavToggleDirective,
26
28
  BaseLayoutContentHeaderDirective,
@@ -38,6 +40,7 @@ TheSeamBaseLayoutModule.decorators = [
38
40
  BaseLayoutContentDirective,
39
41
  BaseLayoutSideBarDirective,
40
42
  BaseLayoutSideBarFooterDirective,
43
+ BaseLayoutSideBarHeaderDirective,
41
44
  BaseLayoutTopBarDirective,
42
45
  BaseLayoutNavToggleDirective,
43
46
  BaseLayoutContentHeaderDirective,
@@ -45,4 +48,4 @@ TheSeamBaseLayoutModule.decorators = [
45
48
  ]
46
49
  },] }
47
50
  ];
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9iYXNlLWxheW91dC9iYXNlLWxheW91dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRXJFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQzVGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQ3JHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBaUN0RixNQUFNLE9BQU8sdUJBQXVCOzs7WUE3Qm5DLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osMEJBQTBCO29CQUMxQiwwQkFBMEI7b0JBQzFCLDBCQUEwQjtvQkFDMUIsZ0NBQWdDO29CQUNoQyx5QkFBeUI7b0JBQ3pCLDRCQUE0QjtvQkFDNUIsZ0NBQWdDO29CQUNoQyxnQ0FBZ0M7aUJBQ2pDO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFlBQVk7b0JBQ1osc0JBQXNCO29CQUN0QixpQkFBaUI7b0JBQ2pCLG9CQUFvQjtpQkFDckI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLDBCQUEwQjtvQkFDMUIsMEJBQTBCO29CQUMxQiwwQkFBMEI7b0JBQzFCLGdDQUFnQztvQkFDaEMseUJBQXlCO29CQUN6Qiw0QkFBNEI7b0JBQzVCLGdDQUFnQztvQkFDaEMsZ0NBQWdDO2lCQUNqQzthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgVGhlU2VhbUJ1dHRvbnNNb2R1bGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vYnV0dG9ucydcbmltcG9ydCB7IFRoZVNlYW1JY29uTW9kdWxlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXG5pbXBvcnQgeyBUaGVTZWFtU2Nyb2xsYmFyTW9kdWxlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3Njcm9sbGJhcidcblxuaW1wb3J0IHsgVGhlU2VhbUJhc2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtbGF5b3V0LmNvbXBvbmVudCdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50Rm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50SGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQtaGVhZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LWNvbnRlbnQuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFzZUxheW91dE5hdlRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1uYXYtdG9nZ2xlLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRTaWRlQmFyRm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYXNlTGF5b3V0U2lkZUJhckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1zaWRlLWJhci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYXNlTGF5b3V0VG9wQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXRvcC1iYXIuZGlyZWN0aXZlJ1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVGhlU2VhbUJhc2VMYXlvdXRDb21wb25lbnQsXG4gICAgQmFzZUxheW91dENvbnRlbnREaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFNpZGVCYXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFRvcEJhckRpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0TmF2VG9nZ2xlRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRDb250ZW50SGVhZGVyRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRDb250ZW50Rm9vdGVyRGlyZWN0aXZlXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIFRoZVNlYW1TY3JvbGxiYXJNb2R1bGUsXG4gICAgVGhlU2VhbUljb25Nb2R1bGUsXG4gICAgVGhlU2VhbUJ1dHRvbnNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50LFxuICAgIEJhc2VMYXlvdXRDb250ZW50RGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRTaWRlQmFyRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRTaWRlQmFyRm9vdGVyRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRUb3BCYXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dE5hdlRvZ2dsZURpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0Q29udGVudEhlYWRlckRpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0Q29udGVudEZvb3RlckRpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZVNlYW1CYXNlTGF5b3V0TW9kdWxlIHsgfVxuIl19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9iYXNlLWxheW91dC9iYXNlLWxheW91dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRXJFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFBO0FBQ3BHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQzVGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQ3JHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFBO0FBQ3JHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBbUN0RixNQUFNLE9BQU8sdUJBQXVCOzs7WUEvQm5DLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osMEJBQTBCO29CQUMxQiwwQkFBMEI7b0JBQzFCLDBCQUEwQjtvQkFDMUIsZ0NBQWdDO29CQUNoQyxnQ0FBZ0M7b0JBQ2hDLHlCQUF5QjtvQkFDekIsNEJBQTRCO29CQUM1QixnQ0FBZ0M7b0JBQ2hDLGdDQUFnQztpQkFDakM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osWUFBWTtvQkFDWixzQkFBc0I7b0JBQ3RCLGlCQUFpQjtvQkFDakIsb0JBQW9CO2lCQUNyQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsMEJBQTBCO29CQUMxQiwwQkFBMEI7b0JBQzFCLDBCQUEwQjtvQkFDMUIsZ0NBQWdDO29CQUNoQyxnQ0FBZ0M7b0JBQ2hDLHlCQUF5QjtvQkFDekIsNEJBQTRCO29CQUM1QixnQ0FBZ0M7b0JBQ2hDLGdDQUFnQztpQkFDakM7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IFRoZVNlYW1CdXR0b25zTW9kdWxlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2J1dHRvbnMnXG5pbXBvcnQgeyBUaGVTZWFtSWNvbk1vZHVsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHsgVGhlU2VhbVNjcm9sbGJhck1vZHVsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9zY3JvbGxiYXInXG5cbmltcG9ydCB7IFRoZVNlYW1CYXNlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWxheW91dC5jb21wb25lbnQnXG5pbXBvcnQgeyBCYXNlTGF5b3V0Q29udGVudEZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1jb250ZW50LWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYXNlTGF5b3V0Q29udGVudEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1jb250ZW50LWhlYWRlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYXNlTGF5b3V0Q29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1jb250ZW50LmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXROYXZUb2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBCYXNlTGF5b3V0U2lkZUJhckZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9iYXNlLWxheW91dC1zaWRlLWJhci1mb290ZXIuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQmFzZUxheW91dFNpZGVCYXJIZWFkZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXItaGVhZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRTaWRlQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEJhc2VMYXlvdXRUb3BCYXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtdG9wLWJhci5kaXJlY3RpdmUnXG5cblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUaGVTZWFtQmFzZUxheW91dENvbXBvbmVudCxcbiAgICBCYXNlTGF5b3V0Q29udGVudERpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0U2lkZUJhckRpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0U2lkZUJhckZvb3RlckRpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0U2lkZUJhckhlYWRlckRpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0VG9wQmFyRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXROYXZUb2dnbGVEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dENvbnRlbnRIZWFkZXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dENvbnRlbnRGb290ZXJEaXJlY3RpdmVcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgVGhlU2VhbVNjcm9sbGJhck1vZHVsZSxcbiAgICBUaGVTZWFtSWNvbk1vZHVsZSxcbiAgICBUaGVTZWFtQnV0dG9uc01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVGhlU2VhbUJhc2VMYXlvdXRDb21wb25lbnQsXG4gICAgQmFzZUxheW91dENvbnRlbnREaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFNpZGVCYXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFNpZGVCYXJIZWFkZXJEaXJlY3RpdmUsXG4gICAgQmFzZUxheW91dFRvcEJhckRpcmVjdGl2ZSxcbiAgICBCYXNlTGF5b3V0TmF2VG9nZ2xlRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRDb250ZW50SGVhZGVyRGlyZWN0aXZlLFxuICAgIEJhc2VMYXlvdXRDb250ZW50Rm9vdGVyRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbUJhc2VMYXlvdXRNb2R1bGUgeyB9XG4iXX0=
@@ -1,13 +1,17 @@
1
- import { Directive, HostBinding, HostListener, Inject, Input, Optional } from '@angular/core';
1
+ import { ChangeDetectorRef, Directive, HostBinding, HostListener, Inject, Input, Optional } from '@angular/core';
2
+ import { tap } from 'rxjs/operators';
2
3
  import { THESEAM_BASE_LAYOUT_REF } from '../base-layout-tokens';
3
4
  /**
4
5
  * Can be used to toggle the expand state of the registered nav.
5
6
  */
6
7
  export class BaseLayoutNavToggleDirective {
7
- constructor(_baseLayout) {
8
+ constructor(_cdr, _baseLayout) {
9
+ this._cdr = _cdr;
8
10
  this.type = 'button';
9
11
  /** Screenreader label for the button. */
10
12
  this.ariaLabel = 'Navigation toggle';
13
+ this._toggleClass = true;
14
+ this._expandedClass = false;
11
15
  this.baseLayout = _baseLayout;
12
16
  }
13
17
  get _attrType() { return this.type; }
@@ -17,6 +21,13 @@ export class BaseLayoutNavToggleDirective {
17
21
  this.baseLayout.registeredNav.toggle();
18
22
  }
19
23
  }
24
+ ngOnInit() {
25
+ var _a, _b;
26
+ (_b = (_a = this.baseLayout) === null || _a === void 0 ? void 0 : _a.registeredNav) === null || _b === void 0 ? void 0 : _b.expanded$.pipe(tap(exp => {
27
+ this._expandedClass = exp;
28
+ this._cdr.markForCheck();
29
+ })).subscribe();
30
+ }
20
31
  }
21
32
  BaseLayoutNavToggleDirective.decorators = [
22
33
  { type: Directive, args: [{
@@ -25,6 +36,7 @@ BaseLayoutNavToggleDirective.decorators = [
25
36
  },] }
26
37
  ];
27
38
  BaseLayoutNavToggleDirective.ctorParameters = () => [
39
+ { type: ChangeDetectorRef },
28
40
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [THESEAM_BASE_LAYOUT_REF,] }] }
29
41
  ];
30
42
  BaseLayoutNavToggleDirective.propDecorators = {
@@ -32,6 +44,8 @@ BaseLayoutNavToggleDirective.propDecorators = {
32
44
  type: [{ type: Input }],
33
45
  _attrAriaLabel: [{ type: HostBinding, args: ['attr.aria-label',] }],
34
46
  ariaLabel: [{ type: Input, args: ['aria-label',] }],
47
+ _toggleClass: [{ type: HostBinding, args: ['class.base-layout-nav-toggle',] }],
48
+ _expandedClass: [{ type: HostBinding, args: ['class.base-layout-nav-toggle--expanded',] }],
35
49
  _onClick: [{ type: HostListener, args: ['click',] }]
36
50
  };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRS9EOztHQUVHO0FBS0gsTUFBTSxPQUFPLDRCQUE0QjtJQXNCdkMsWUFDK0MsV0FBa0M7UUFoQnhFLFNBQUksR0FBOEIsUUFBUSxDQUFBO1FBS25ELHlDQUF5QztRQUNwQixjQUFTLEdBQThCLG1CQUFtQixDQUFBO1FBWTdFLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFBO0lBQy9CLENBQUM7SUF0QkQsSUFDSSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUlwQyxJQUNJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFBLENBQUMsQ0FBQztJQU10RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQ3ZDO0lBQ0gsQ0FBQzs7O1lBeEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUNBQWlDO2dCQUMzQyxRQUFRLEVBQUUseUJBQXlCO2FBQ3BDOzs7NENBd0JJLFFBQVEsWUFBSSxNQUFNLFNBQUMsdUJBQXVCOzs7d0JBbkI1QyxXQUFXLFNBQUMsV0FBVzttQkFHdkIsS0FBSzs2QkFFTCxXQUFXLFNBQUMsaUJBQWlCO3dCQUk3QixLQUFLLFNBQUMsWUFBWTt1QkFFbEIsWUFBWSxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHR5cGUgeyBJVGhlU2VhbUJhc2VMYXlvdXRSZWYgfSBmcm9tICcuLi9iYXNlLWxheW91dC1yZWYnXG5pbXBvcnQgeyBUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRiB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0LXRva2VucydcblxuLyoqXG4gKiBDYW4gYmUgdXNlZCB0byB0b2dnbGUgdGhlIGV4cGFuZCBzdGF0ZSBvZiB0aGUgcmVnaXN0ZXJlZCBuYXYuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2J1dHRvbltzZWFtQmFzZUxheW91dE5hdlRvZ2dsZV0nLFxuICBleHBvcnRBczogJ3NlYW1CYXNlTGF5b3V0TmF2VG9nZ2xlJ1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlTGF5b3V0TmF2VG9nZ2xlRGlyZWN0aXZlIHtcblxuICBwdWJsaWMgYmFzZUxheW91dDogSVRoZVNlYW1CYXNlTGF5b3V0UmVmIHwgdW5kZWZpbmVkXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnR5cGUnKVxuICBnZXQgX2F0dHJUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlIH1cblxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ2J1dHRvbidcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gIGdldCBfYXR0ckFyaWFMYWJlbCgpIHsgcmV0dXJuIHRoaXMuYXJpYUxhYmVsIHx8IG51bGwgfVxuXG4gIC8qKiBTY3JlZW5yZWFkZXIgbGFiZWwgZm9yIHRoZSBidXR0b24uICovXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdOYXZpZ2F0aW9uIHRvZ2dsZSdcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIF9vbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLmJhc2VMYXlvdXQgJiYgdGhpcy5iYXNlTGF5b3V0LnJlZ2lzdGVyZWROYXYpIHtcbiAgICAgIHRoaXMuYmFzZUxheW91dC5yZWdpc3RlcmVkTmF2LnRvZ2dsZSgpXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRikgX2Jhc2VMYXlvdXQ6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLmJhc2VMYXlvdXQgPSBfYmFzZUxheW91dFxuICB9XG5cbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUdwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUUvRDs7R0FFRztBQUtILE1BQU0sT0FBTyw0QkFBNEI7SUF5QnZDLFlBQ21CLElBQXVCLEVBQ0ssV0FBa0M7UUFEOUQsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFuQmpDLFNBQUksR0FBOEIsUUFBUSxDQUFBO1FBS25ELHlDQUF5QztRQUNwQixjQUFTLEdBQThCLG1CQUFtQixDQUFBO1FBRWxDLGlCQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ1QsbUJBQWMsR0FBRyxLQUFLLENBQUE7UUFhM0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUE7SUFDL0IsQ0FBQztJQTFCRCxJQUNJLFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBSXBDLElBQ0ksY0FBYyxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBU3RELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUE7U0FDdkM7SUFDSCxDQUFDO0lBU0QsUUFBUTs7UUFDTixNQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsYUFBYSwwQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUM1QyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQTtZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzFCLENBQUMsQ0FBQyxFQUNGLFNBQVMsRUFBRSxDQUFBO0lBQ2YsQ0FBQzs7O1lBM0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUNBQWlDO2dCQUMzQyxRQUFRLEVBQUUseUJBQXlCO2FBQ3BDOzs7WUFaUSxpQkFBaUI7NENBd0NyQixRQUFRLFlBQUksTUFBTSxTQUFDLHVCQUF1Qjs7O3dCQXZCNUMsV0FBVyxTQUFDLFdBQVc7bUJBR3ZCLEtBQUs7NkJBRUwsV0FBVyxTQUFDLGlCQUFpQjt3QkFJN0IsS0FBSyxTQUFDLFlBQVk7MkJBRWxCLFdBQVcsU0FBQyw4QkFBOEI7NkJBQzFDLFdBQVcsU0FBQyx3Q0FBd0M7dUJBRXBELFlBQVksU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHR5cGUgeyBJVGhlU2VhbUJhc2VMYXlvdXRSZWYgfSBmcm9tICcuLi9iYXNlLWxheW91dC1yZWYnXG5pbXBvcnQgeyBUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRiB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0LXRva2VucydcblxuLyoqXG4gKiBDYW4gYmUgdXNlZCB0byB0b2dnbGUgdGhlIGV4cGFuZCBzdGF0ZSBvZiB0aGUgcmVnaXN0ZXJlZCBuYXYuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2J1dHRvbltzZWFtQmFzZUxheW91dE5hdlRvZ2dsZV0nLFxuICBleHBvcnRBczogJ3NlYW1CYXNlTGF5b3V0TmF2VG9nZ2xlJ1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlTGF5b3V0TmF2VG9nZ2xlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgYmFzZUxheW91dDogSVRoZVNlYW1CYXNlTGF5b3V0UmVmIHwgdW5kZWZpbmVkXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnR5cGUnKVxuICBnZXQgX2F0dHJUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlIH1cblxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ2J1dHRvbidcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gIGdldCBfYXR0ckFyaWFMYWJlbCgpIHsgcmV0dXJuIHRoaXMuYXJpYUxhYmVsIHx8IG51bGwgfVxuXG4gIC8qKiBTY3JlZW5yZWFkZXIgbGFiZWwgZm9yIHRoZSBidXR0b24uICovXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIGFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdOYXZpZ2F0aW9uIHRvZ2dsZSdcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJhc2UtbGF5b3V0LW5hdi10b2dnbGUnKSBfdG9nZ2xlQ2xhc3MgPSB0cnVlXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYmFzZS1sYXlvdXQtbmF2LXRvZ2dsZS0tZXhwYW5kZWQnKSBfZXhwYW5kZWRDbGFzcyA9IGZhbHNlXG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBfb25DbGljaygpIHtcbiAgICBpZiAodGhpcy5iYXNlTGF5b3V0ICYmIHRoaXMuYmFzZUxheW91dC5yZWdpc3RlcmVkTmF2KSB7XG4gICAgICB0aGlzLmJhc2VMYXlvdXQucmVnaXN0ZXJlZE5hdi50b2dnbGUoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRikgX2Jhc2VMYXlvdXQ6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLmJhc2VMYXlvdXQgPSBfYmFzZUxheW91dFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5iYXNlTGF5b3V0Py5yZWdpc3RlcmVkTmF2Py5leHBhbmRlZCQucGlwZShcbiAgICAgIHRhcChleHAgPT4ge1xuICAgICAgICB0aGlzLl9leHBhbmRlZENsYXNzID0gZXhwXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { Directive, ElementRef } from '@angular/core';
2
+ export class BaseLayoutSideBarHeaderDirective {
3
+ constructor(_elementRef) {
4
+ this._elementRef = _elementRef;
5
+ }
6
+ }
7
+ BaseLayoutSideBarHeaderDirective.decorators = [
8
+ { type: Directive, args: [{
9
+ selector: '[seamBaseLayoutSideBarHeader]'
10
+ },] }
11
+ ];
12
+ BaseLayoutSideBarHeaderDirective.ctorParameters = () => [
13
+ { type: ElementRef }
14
+ ];
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1sYXlvdXQtc2lkZS1iYXItaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mcmFtZXdvcmsvYmFzZS1sYXlvdXQvZGlyZWN0aXZlcy9iYXNlLWxheW91dC1zaWRlLWJhci1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBT3JELE1BQU0sT0FBTyxnQ0FBZ0M7SUFFM0MsWUFDUyxXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUM1QixDQUFDOzs7WUFQTixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLCtCQUErQjthQUMxQzs7O1lBTm1CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZWFtQmFzZUxheW91dFNpZGVCYXJIZWFkZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlTGF5b3V0U2lkZUJhckhlYWRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEhhc0VsZW1lbnRSZWYge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG59XG4iXX0=
@@ -0,0 +1,68 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { BehaviorSubject, Subject } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import { areSameHorizontalNavItem } from '../nav-utils';
5
+ import { TheSeamNavService } from '../nav.service';
6
+ export class HorizontalNavComponent {
7
+ constructor() {
8
+ this._ngUnsubscribe = new Subject();
9
+ this._items = new BehaviorSubject([]);
10
+ this.hideEmptyIcon = true;
11
+ this.hierLevel = 0;
12
+ this.childAction = 'menu';
13
+ this.expandAction = 'toggle';
14
+ this._focusedNavItem = new BehaviorSubject(undefined);
15
+ this.focusedNavItem$ = this._focusedNavItem.asObservable();
16
+ this.navItemExpanded = new EventEmitter();
17
+ this.items$ = this._items.asObservable();
18
+ }
19
+ get items() { return this._items.value; }
20
+ set items(value) {
21
+ this._items.next(value);
22
+ }
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
+ ngOnInit() { }
35
+ ngOnDestroy() {
36
+ this._ngUnsubscribe.next();
37
+ this._ngUnsubscribe.complete();
38
+ }
39
+ _navItemExpanded(item, expanded) {
40
+ this.navItemExpanded.emit({ navItem: item, expanded });
41
+ }
42
+ _navItemIsFocused(item) {
43
+ return this.focusedNavItem$.pipe(map(focusedNavItem => areSameHorizontalNavItem(focusedNavItem, item)));
44
+ }
45
+ }
46
+ HorizontalNavComponent.decorators = [
47
+ { type: Component, args: [{
48
+ 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",
50
+ providers: [
51
+ TheSeamNavService
52
+ ],
53
+ changeDetection: ChangeDetectionStrategy.OnPush,
54
+ encapsulation: ViewEncapsulation.None,
55
+ 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
+ },] }
57
+ ];
58
+ HorizontalNavComponent.ctorParameters = () => [];
59
+ HorizontalNavComponent.propDecorators = {
60
+ items: [{ type: Input }],
61
+ hideEmptyIcon: [{ type: Input }],
62
+ hierLevel: [{ type: Input }],
63
+ childAction: [{ type: Input }],
64
+ expandAction: [{ type: Input }],
65
+ focusedNavItem: [{ type: Input }],
66
+ navItemExpanded: [{ type: Output }]
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvaG9yaXpvbnRhbC1uYXYvaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFZbEQsTUFBTSxPQUFPLHNCQUFzQjtJQXFDakM7UUFsQ2lCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQU92QyxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUE7UUFHM0Msa0JBQWEsR0FBK0IsSUFBSSxDQUFBO1FBRWhELGNBQVMsR0FBVyxDQUFDLENBQUE7UUFFckIsZ0JBQVcsR0FBdUIsTUFBTSxDQUFBO1FBRXhDLGlCQUFZLEdBQXdCLFFBQVEsQ0FBQTtRQWE3QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF1QixTQUFTLENBQUMsQ0FBQTtRQUN2RSxvQkFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFbEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQTtRQUdsRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQWxDRCxJQUNJLEtBQUssS0FBaUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFDcEQsSUFBSSxLQUFLLENBQUMsS0FBaUI7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQVlEOzs7O09BSUc7SUFDSCxJQUFhLGNBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQTtJQUNuQyxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsS0FBMkI7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQVVELFFBQVEsS0FBSyxDQUFDO0lBRWQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBYyxFQUFFLFFBQWlCO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFjO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUN0RSxDQUFBO0lBQ0gsQ0FBQzs7O1lBbEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQiw2bENBQThDO2dCQUU5QyxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO2lCQUNsQjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7O29CQU1FLEtBQUs7NEJBUUwsS0FBSzt3QkFFTCxLQUFLOzBCQUVMLEtBQUs7MkJBRUwsS0FBSzs2QkFPTCxLQUFLOzhCQVNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBhcmVTYW1lSG9yaXpvbnRhbE5hdkl0ZW0gfSBmcm9tICcuLi9uYXYtdXRpbHMnXG5cbmltcG9ydCB7IElOYXZJdGVtLCBOYXZJdGVtQ2hpbGRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRlZEV2ZW50IH0gZnJvbSAnLi4vbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1OYXZTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2LnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0taG9yaXpvbnRhbC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vaG9yaXpvbnRhbC1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ob3Jpem9udGFsLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUaGVTZWFtTmF2U2VydmljZVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBIb3Jpem9udGFsTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGFzSGVhZGVyVG9nZ2xlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKVxuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpOiBJTmF2SXRlbVtdIHsgcmV0dXJuIHRoaXMuX2l0ZW1zLnZhbHVlIH1cbiAgc2V0IGl0ZW1zKHZhbHVlOiBJTmF2SXRlbVtdKSB7XG4gICAgdGhpcy5faXRlbXMubmV4dCh2YWx1ZSlcbiAgfVxuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5hdkl0ZW1bXT4oW10pXG4gIHB1YmxpYyByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8SU5hdkl0ZW1bXT5cblxuICBASW5wdXQoKSBoaWRlRW1wdHlJY29uOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHRydWVcblxuICBASW5wdXQoKSBoaWVyTGV2ZWw6IG51bWJlciA9IDBcblxuICBASW5wdXQoKSBjaGlsZEFjdGlvbjogTmF2SXRlbUNoaWxkQWN0aW9uID0gJ21lbnUnXG5cbiAgQElucHV0KCkgZXhwYW5kQWN0aW9uOiBOYXZJdGVtRXhwYW5kQWN0aW9uID0gJ3RvZ2dsZSdcblxuICAvKipcbiAgICogVGhlICdmb2N1c2VkJyBuYXYgaXRlbSByZWZlcnMgdG8gdGhlIGl0ZW0gaW5cbiAgICogdGhlIGxpc3QgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBleHBhbmRlZCBvciBhY3RpdmF0ZWQuXG4gICAqIC8vIFRPRE86IG1ha2UgYWxsIHRoaXMgYmV0dGVyXG4gICAqL1xuICBASW5wdXQoKSBnZXQgZm9jdXNlZE5hdkl0ZW0oKTogSU5hdkl0ZW0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkTmF2SXRlbS52YWx1ZVxuICB9XG4gIHNldCBmb2N1c2VkTmF2SXRlbSh2YWx1ZTogSU5hdkl0ZW0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9mb2N1c2VkTmF2SXRlbS5uZXh0KHZhbHVlKVxuICB9XG4gIHByaXZhdGUgX2ZvY3VzZWROYXZJdGVtID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJTmF2SXRlbSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgZm9jdXNlZE5hdkl0ZW0kID0gdGhpcy5fZm9jdXNlZE5hdkl0ZW0uYXNPYnNlcnZhYmxlKClcblxuICBAT3V0cHV0KCkgbmF2SXRlbUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOYXZJdGVtRXhwYW5kZWRFdmVudD4oKVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXRlbXMkID0gdGhpcy5faXRlbXMuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIF9uYXZJdGVtRXhwYW5kZWQoaXRlbTogSU5hdkl0ZW0sIGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5uYXZJdGVtRXhwYW5kZWQuZW1pdCh7IG5hdkl0ZW06IGl0ZW0sIGV4cGFuZGVkIH0pXG4gIH1cblxuICBfbmF2SXRlbUlzRm9jdXNlZChpdGVtOiBJTmF2SXRlbSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZvY3VzZWROYXZJdGVtJC5waXBlKFxuICAgICAgbWFwKGZvY3VzZWROYXZJdGVtID0+IGFyZVNhbWVIb3Jpem9udGFsTmF2SXRlbShmb2N1c2VkTmF2SXRlbSwgaXRlbSkpXG4gICAgKVxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './nav-item/nav-item.component';
2
+ export * from './horizontal-nav/horizontal-nav.component';
3
+ export * from './nav.models';
4
+ export * from './nav.module';
5
+ export * from './nav-utils';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL25hdi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFBO0FBRTdDLGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25hdi1pdGVtL25hdi1pdGVtLmNvbXBvbmVudCdcblxuZXhwb3J0ICogZnJvbSAnLi9ob3Jpem9udGFsLW5hdi9ob3Jpem9udGFsLW5hdi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL25hdi5tb2RlbHMnXG5leHBvcnQgKiBmcm9tICcuL25hdi5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL25hdi11dGlscydcbiJdfQ==
@@ -0,0 +1,169 @@
1
+ import { __decorate } from "tslib";
2
+ import { animate, style, transition, trigger, } from '@angular/animations';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
5
+ import { BehaviorSubject, Subject } from 'rxjs';
6
+ import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
7
+ import { InputBoolean, InputNumber } from '@theseam/ui-common/core';
8
+ import { MenuComponent } from '@theseam/ui-common/menu';
9
+ import { notNullOrUndefined } from '@theseam/ui-common/utils';
10
+ import { horizontalNavItemHasActiveChild } from '../nav-utils';
11
+ export class NavItemComponent {
12
+ constructor() {
13
+ this._ngUnsubscribe = new Subject();
14
+ this.faAngleLeft = faAngleLeft;
15
+ this.active = false;
16
+ this._link = new BehaviorSubject(undefined);
17
+ this.link$ = this._link.asObservable();
18
+ this.hierLevel = 0;
19
+ this.indentSize = 10;
20
+ this._expanded = new BehaviorSubject(false);
21
+ this.expanded$ = this._expanded.asObservable();
22
+ this._compact = new BehaviorSubject(false);
23
+ this.compact$ = this._compact.asObservable();
24
+ this.badgeTheme = 'danger';
25
+ this.childAction = 'menu';
26
+ this.expandAction = 'toggle';
27
+ this.navItemExpanded = new EventEmitter();
28
+ }
29
+ set link(value) { this._link.next(value); }
30
+ get link() { return this._link.value; }
31
+ set expanded(value) {
32
+ this._expanded.next(coerceBooleanProperty(value));
33
+ }
34
+ get expanded() { return this._expanded.value; }
35
+ set compact(value) { this._compact.next(coerceBooleanProperty(value)); }
36
+ get compact() { return this._compact.value; }
37
+ get badgeTooltip() { return this._badgeTooltip; }
38
+ set badgeTooltip(value) {
39
+ if (value !== null && value !== undefined) {
40
+ if (typeof value === 'string') {
41
+ this._badgeTooltip = {
42
+ tooltip: value,
43
+ placement: 'auto',
44
+ disabled: false
45
+ };
46
+ }
47
+ else {
48
+ this._badgeTooltip = Object.assign(Object.assign({}, value), { placement: value.placement || 'auto', disabled: typeof (value === null || value === void 0 ? void 0 : value.disabled) === 'boolean'
49
+ ? value.disabled
50
+ : typeof value.tooltip === 'string' ? false : true });
51
+ }
52
+ }
53
+ else {
54
+ this._badgeTooltip = undefined;
55
+ }
56
+ }
57
+ get _isActiveCssClass() { return this.active; }
58
+ get _isChildActiveCssClass() { return this.hasActiveChild; }
59
+ get _isExpandedCssClass() { return this.expanded; }
60
+ get _attrDataHierLevel() { return this.hierLevel; }
61
+ ngOnDestroy() {
62
+ this._ngUnsubscribe.next();
63
+ this._ngUnsubscribe.complete();
64
+ }
65
+ get hasChildren() {
66
+ return Array.isArray(this.children) && this.children.length > 0;
67
+ }
68
+ get hasActiveChild() {
69
+ if (notNullOrUndefined(this.item)) {
70
+ return horizontalNavItemHasActiveChild(this.item);
71
+ }
72
+ return false;
73
+ }
74
+ get hasMenuToggle() {
75
+ return this.hasChildren && this.childAction === 'menu';
76
+ }
77
+ get menuTpl() {
78
+ return this.hasMenuToggle ? this._menu : undefined;
79
+ }
80
+ get hasExpandingChildren() {
81
+ return this.hasChildren && this.childAction === 'expand';
82
+ }
83
+ _toggleChildren(event) {
84
+ let ex = !this.expanded;
85
+ if (this.expandAction === 'expandOnly') {
86
+ ex = true;
87
+ }
88
+ this.expanded = ex;
89
+ this.navItemExpanded.emit(this.expanded);
90
+ // Prevents seam-menu from closing out when toggling child expand
91
+ event.stopPropagation();
92
+ }
93
+ // Updates expanded state when user exits seam-menu
94
+ _menuEvent(menuExpanded) {
95
+ if (menuExpanded === false) {
96
+ this.expanded = false;
97
+ // TODO: figure out why closing seam-menu with expanded submenu messes up animation
98
+ if (this._navItems && this._navItems.length) {
99
+ this._navItems.forEach(navItem => {
100
+ navItem.expanded = false;
101
+ });
102
+ }
103
+ }
104
+ }
105
+ get showIconBlock() {
106
+ return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
107
+ }
108
+ }
109
+ NavItemComponent.decorators = [
110
+ { type: Component, args: [{
111
+ 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",
113
+ exportAs: 'seamNavItem',
114
+ animations: [
115
+ trigger('childGroupAnim', [
116
+ transition(':enter', [
117
+ style({ height: 0 }),
118
+ animate('0.2s ease-in-out', style({ height: '*' }))
119
+ ]),
120
+ transition(':leave', [
121
+ style({ height: '*' }),
122
+ animate('0.2s ease-in-out', style({ height: 0 }))
123
+ ])
124
+ ])
125
+ ],
126
+ changeDetection: ChangeDetectionStrategy.OnPush,
127
+ encapsulation: ViewEncapsulation.None,
128
+ 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
+ },] }
130
+ ];
131
+ NavItemComponent.ctorParameters = () => [];
132
+ NavItemComponent.propDecorators = {
133
+ item: [{ type: Input }],
134
+ itemType: [{ type: Input }],
135
+ icon: [{ type: Input }],
136
+ hideEmptyIcon: [{ type: Input }],
137
+ label: [{ type: Input }],
138
+ active: [{ type: Input }],
139
+ link: [{ type: Input }],
140
+ queryParams: [{ type: Input }],
141
+ children: [{ type: Input }],
142
+ hierLevel: [{ type: Input }],
143
+ indentSize: [{ type: Input }],
144
+ expanded: [{ type: Input }],
145
+ compact: [{ type: Input }],
146
+ badgeText: [{ type: Input }],
147
+ badgeTheme: [{ type: Input }],
148
+ badgeSrContent: [{ type: Input }],
149
+ badgeTooltip: [{ type: Input }],
150
+ childAction: [{ type: Input }],
151
+ expandAction: [{ type: Input }],
152
+ navItemExpanded: [{ type: Output }],
153
+ _isActiveCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--active',] }],
154
+ _isChildActiveCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--child-active',] }],
155
+ _isExpandedCssClass: [{ type: HostBinding, args: ['class.seam-nav-item--expanded',] }],
156
+ _attrDataHierLevel: [{ type: HostBinding, args: ['attr.data-hier-level',] }],
157
+ _menu: [{ type: ViewChild, args: [MenuComponent,] }],
158
+ _navItems: [{ type: ViewChildren, args: [NavItemComponent,] }]
159
+ };
160
+ __decorate([
161
+ InputBoolean()
162
+ ], NavItemComponent.prototype, "active", void 0);
163
+ __decorate([
164
+ InputNumber(0)
165
+ ], NavItemComponent.prototype, "hierLevel", void 0);
166
+ __decorate([
167
+ InputNumber(10)
168
+ ], NavItemComponent.prototype, "indentSize", void 0);
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9uYXYvbmF2LWl0ZW0vbmF2LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFnQixxQkFBcUIsRUFBZSxNQUFNLHVCQUF1QixDQUFBO0FBQ3hGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBdUI5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0czQjtRQS9GaUIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBRXRDLGdCQUFXLEdBQUcsV0FBVyxDQUFBO1FBWVQsV0FBTSxHQUFZLEtBQUssQ0FBQTtRQUsvQixVQUFLLEdBQUcsSUFBSSxlQUFlLENBQTRCLFNBQVMsQ0FBQyxDQUFBO1FBQ2xFLFVBQUssR0FBRyxJQUFJLENBQUMsS0FB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QUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7Ozs7bUJBWUUsS0FBSzt1QkFFTCxLQUFLO21CQUVMLEtBQUs7NEJBRUwsS0FBSztvQkFFTCxLQUFLO3FCQUVMLEtBQUs7bUJBRUwsS0FBSzswQkFNTCxLQUFLO3VCQUVMLEtBQUs7d0JBRUwsS0FBSzt5QkFFTCxLQUFLO3VCQUVMLEtBQUs7c0JBUUwsS0FBSzt3QkFNTCxLQUFLO3lCQUNMLEtBQUs7NkJBS0wsS0FBSzsyQkFFTCxLQUFLOzBCQXlCTCxLQUFLOzJCQUVMLEtBQUs7OEJBRUwsTUFBTTtnQ0FFTixXQUFXLFNBQUMsNkJBQTZCO3FDQUV6QyxXQUFXLFNBQUMsbUNBQW1DO2tDQUUvQyxXQUFXLFNBQUMsK0JBQStCO2lDQUUzQyxXQUFXLFNBQUMsc0JBQXNCO29CQUVsQyxTQUFTLFNBQUMsYUFBYTt3QkFFdkIsWUFBWSxTQUFDLGdCQUFnQjs7QUEvRUw7SUFBZixZQUFZLEVBQUU7Z0RBQXdCO0FBWXZCO0lBQWYsV0FBVyxDQUFDLENBQUMsQ0FBQzttREFBc0I7QUFFcEI7SUFBaEIsV0FBVyxDQUFDLEVBQUUsQ0FBQztvREFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucydcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9tZW51J1xuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuaW1wb3J0IHsgaG9yaXpvbnRhbE5hdkl0ZW1IYXNBY3RpdmVDaGlsZCB9IGZyb20gJy4uL25hdi11dGlscydcbmltcG9ydCB7IElOYXZJdGVtLCBOYXZJdGVtQmFkZ2VUb29sdGlwLCBOYXZJdGVtQ2hpbGRBY3Rpb24sIE5hdkl0ZW1FeHBhbmRBY3Rpb24gfSBmcm9tICcuLi9uYXYubW9kZWxzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLW5hdi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmF2LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdzZWFtTmF2SXRlbScsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdjaGlsZEdyb3VwQW5pbScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IGhlaWdodDogMCB9KSlcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTmF2SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oaWVyTGV2ZWw6IE51bWJlcklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbmRlbnRTaXplOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZXhwYW5kZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY29tcGFjdDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9hY3RpdmU6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpXG5cbiAgcmVhZG9ubHkgZmFBbmdsZUxlZnQgPSBmYUFuZ2xlTGVmdFxuXG4gIEBJbnB1dCgpIGl0ZW06IElOYXZJdGVtIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGl0ZW1UeXBlOiAnZGl2aWRlcicgfCAnYmFzaWMnIHwgJ2xpbmsnIHwgJ2J1dHRvbicgfCAndGl0bGUnIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGljb246IFNlYW1JY29uIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGhpZGVFbXB0eUljb246IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgYWN0aXZlOiBib29sZWFuID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBzZXQgbGluayh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkgeyB0aGlzLl9saW5rLm5leHQodmFsdWUpIH1cbiAgZ2V0IGxpbmsoKSB7IHJldHVybiB0aGlzLl9saW5rLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfbGluayA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgbGluayQgPSB0aGlzLl9saW5rLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQElucHV0KCkgcXVlcnlQYXJhbXM6IHsgW2s6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGNoaWxkcmVuOiBJTmF2SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBoaWVyTGV2ZWw6IG51bWJlciA9IDBcblxuICBASW5wdXQoKSBASW5wdXROdW1iZXIoMTApIGluZGVudFNpemU6IG51bWJlciA9IDEwXG5cbiAgQElucHV0KClcbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZXhwYW5kZWQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKVxuICB9XG4gIGdldCBleHBhbmRlZCgpIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBzZXQgY29tcGFjdCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9jb21wYWN0Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBnZXQgY29tcGFjdCgpIHsgcmV0dXJuIHRoaXMuX2NvbXBhY3QudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3QkID0gdGhpcy5fY29tcGFjdC5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBiYWRnZVRoZW1lOiBUaGVtZVR5cGVzIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdkYW5nZXInXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlU3JDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGJhZGdlVG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX2JhZGdlVG9vbHRpcCB9XG4gIHNldCBiYWRnZVRvb2x0aXAodmFsdWU6IHN0cmluZyB8IE5hdkl0ZW1CYWRnZVRvb2x0aXAgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICB0b29sdGlwOiB2YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdhdXRvJyxcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYmFkZ2VUb29sdGlwID0ge1xuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgIHBsYWNlbWVudDogdmFsdWUucGxhY2VtZW50IHx8ICdhdXRvJyxcbiAgICAgICAgICBkaXNhYmxlZDogdHlwZW9mIHZhbHVlPy5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgICA/IHZhbHVlLmRpc2FibGVkXG4gICAgICAgICAgICA6IHR5cGVvZiB2YWx1ZS50b29sdGlwID09PSAnc3RyaW5nJyA/IGZhbHNlIDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9iYWRnZVRvb2x0aXA6IE5hdkl0ZW1CYWRnZVRvb2x0aXAgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgY2hpbGRBY3Rpb246IE5hdkl0ZW1DaGlsZEFjdGlvbiA9ICdtZW51J1xuXG4gIEBJbnB1dCgpIGV4cGFuZEFjdGlvbjogTmF2SXRlbUV4cGFuZEFjdGlvbiA9ICd0b2dnbGUnXG5cbiAgQE91dHB1dCgpIG5hdkl0ZW1FeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VhbS1uYXYtaXRlbS0tYWN0aXZlJykgZ2V0IF9pc0FjdGl2ZUNzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5hY3RpdmUgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VhbS1uYXYtaXRlbS0tY2hpbGQtYWN0aXZlJykgZ2V0IF9pc0NoaWxkQWN0aXZlQ3NzQ2xhc3MoKSB7IHJldHVybiB0aGlzLmhhc0FjdGl2ZUNoaWxkIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tbmF2LWl0ZW0tLWV4cGFuZGVkJykgZ2V0IF9pc0V4cGFuZGVkQ3NzQ2xhc3MoKSB7IHJldHVybiB0aGlzLmV4cGFuZGVkIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1oaWVyLWxldmVsJykgZ2V0IF9hdHRyRGF0YUhpZXJMZXZlbCgpIHsgcmV0dXJuIHRoaXMuaGllckxldmVsIH1cblxuICBAVmlld0NoaWxkKE1lbnVDb21wb25lbnQpIF9tZW51PzogTWVudUNvbXBvbmVudFxuXG4gIEBWaWV3Q2hpbGRyZW4oTmF2SXRlbUNvbXBvbmVudCkgX25hdkl0ZW1zPzogTmF2SXRlbUNvbXBvbmVudFtdXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgZ2V0IGhhc0NoaWxkcmVuKCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuY2hpbGRyZW4pICYmIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICB9XG5cbiAgZ2V0IGhhc0FjdGl2ZUNoaWxkKCkge1xuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQodGhpcy5pdGVtKSkge1xuICAgICAgcmV0dXJuIGhvcml6b250YWxOYXZJdGVtSGFzQWN0aXZlQ2hpbGQodGhpcy5pdGVtKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBoYXNNZW51VG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuICYmIHRoaXMuY2hpbGRBY3Rpb24gPT09ICdtZW51J1xuICB9XG5cbiAgZ2V0IG1lbnVUcGwoKTogTWVudUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaGFzTWVudVRvZ2dsZSA/IHRoaXMuX21lbnUgOiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldCBoYXNFeHBhbmRpbmdDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiAmJiB0aGlzLmNoaWxkQWN0aW9uID09PSAnZXhwYW5kJ1xuICB9XG5cbiAgcHVibGljIF90b2dnbGVDaGlsZHJlbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZXggPSAhdGhpcy5leHBhbmRlZFxuICAgIGlmICh0aGlzLmV4cGFuZEFjdGlvbiA9PT0gJ2V4cGFuZE9ubHknKSB7XG4gICAgICBleCA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLmV4cGFuZGVkID0gZXhcbiAgICB0aGlzLm5hdkl0ZW1FeHBhbmRlZC5lbWl0KHRoaXMuZXhwYW5kZWQpXG5cbiAgICAvLyBQcmV2ZW50cyBzZWFtLW1lbnUgZnJvbSBjbG9zaW5nIG91dCB3aGVuIHRvZ2dsaW5nIGNoaWxkIGV4cGFuZFxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICAvLyBVcGRhdGVzIGV4cGFuZGVkIHN0YXRlIHdoZW4gdXNlciBleGl0cyBzZWFtLW1lbnVcbiAgX21lbnVFdmVudChtZW51RXhwYW5kZWQ6IGFueSkge1xuICAgIGlmIChtZW51RXhwYW5kZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2VcblxuICAgICAgLy8gVE9ETzogZmlndXJlIG91dCB3aHkgY2xvc2luZyBzZWFtLW1lbnUgd2l0aCBleHBhbmRlZCBzdWJtZW51IG1lc3NlcyB1cCBhbmltYXRpb25cbiAgICAgIGlmICh0aGlzLl9uYXZJdGVtcyAmJiB0aGlzLl9uYXZJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5fbmF2SXRlbXMuZm9yRWFjaChuYXZJdGVtID0+IHtcbiAgICAgICAgICBuYXZJdGVtLmV4cGFuZGVkID0gZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0ljb25CbG9jaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuaWNvbikgfHwgdGhpcy5oaWRlRW1wdHlJY29uICE9PSB0cnVlXG4gIH1cblxuXG59XG4iXX0=