@hestia-earth/ui-components 0.27.28 → 0.27.30

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.
@@ -83,6 +83,7 @@ export declare class DrawerContainerComponent {
83
83
  readonly contentPaddingStyles: import("@angular/core").InputSignal<string>;
84
84
  readonly menuOverlap: import("@angular/core").InputSignal<boolean>;
85
85
  readonly links: import("@angular/core").InputSignal<INavigationMenuLink[]>;
86
+ readonly drawerHeaderTemplate: import("@angular/core").InputSignal<TemplateRef<any>>;
86
87
  readonly drawerMenuHeaderTemplate: import("@angular/core").InputSignal<TemplateRef<any>>;
87
88
  readonly compactHeaderClass: import("@angular/core").InputSignal<string | string[] | Set<string> | {
88
89
  [klass: string]: any;
@@ -120,5 +121,5 @@ export declare class DrawerContainerComponent {
120
121
  protected animationDone(event: AnimationEvent): void;
121
122
  private _getContentLeftSideSpace;
122
123
  static ɵfac: i0.ɵɵFactoryDeclaration<DrawerContainerComponent, never>;
123
- static ɵcmp: i0.ɵɵComponentDeclaration<DrawerContainerComponent, "he-drawer-container", never, { "compactBreakpoint": { "alias": "compactBreakpoint"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "contentPaddingStyles": { "alias": "contentPaddingStyles"; "required": false; "isSignal": true; }; "menuOverlap": { "alias": "menuOverlap"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "drawerMenuHeaderTemplate": { "alias": "drawerMenuHeaderTemplate"; "required": false; "isSignal": true; }; "compactHeaderClass": { "alias": "compactHeaderClass"; "required": false; "isSignal": true; }; "minMenuDistance": { "alias": "minMenuDistance"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; }, never, ["[drawer-content]"], true, never>;
124
+ static ɵcmp: i0.ɵɵComponentDeclaration<DrawerContainerComponent, "he-drawer-container", never, { "compactBreakpoint": { "alias": "compactBreakpoint"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "contentPaddingStyles": { "alias": "contentPaddingStyles"; "required": false; "isSignal": true; }; "menuOverlap": { "alias": "menuOverlap"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "drawerHeaderTemplate": { "alias": "drawerHeaderTemplate"; "required": false; "isSignal": true; }; "drawerMenuHeaderTemplate": { "alias": "drawerMenuHeaderTemplate"; "required": false; "isSignal": true; }; "compactHeaderClass": { "alias": "compactHeaderClass"; "required": false; "isSignal": true; }; "minMenuDistance": { "alias": "minMenuDistance"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; }, never, ["[drawer-content]"], true, never>;
124
125
  }
@@ -35,6 +35,7 @@ export class DrawerContainerComponent {
35
35
  this.contentPaddingStyles = input();
36
36
  this.menuOverlap = input(true);
37
37
  this.links = input([]);
38
+ this.drawerHeaderTemplate = input();
38
39
  this.drawerMenuHeaderTemplate = input();
39
40
  this.compactHeaderClass = input(null);
40
41
  /**
@@ -101,7 +102,7 @@ export class DrawerContainerComponent {
101
102
  return parseInt(padding, 10) + parseInt(margin, 10);
102
103
  }
103
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerHeaderTemplate: { classPropertyName: "drawerHeaderTemplate", publicName: "drawerHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
106
  }
106
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DrawerContainerComponent, decorators: [{
107
108
  type: Component,
@@ -118,9 +119,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
118
119
  '[class]': 'hostClass()',
119
120
  '[attr.drawer-position]': 'position()',
120
121
  '[attr.drawer-state]': 'menuState()'
121
- }, providers: [sidenavStore], template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"] }]
122
+ }, providers: [sidenavStore], template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"] }]
122
123
  }], ctorParameters: () => [], propDecorators: { stopResizing: [{
123
124
  type: HostListener,
124
125
  args: ['window:mouseup']
125
126
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRTVGLE9B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VSxDQUFDLFlBQVksQ0FBQzt3REErR3pCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvbkxlZnQsIGZhQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBIRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OLCBIRV9TSURFX01FTlVfQU5JTUFUSU9OIH0gZnJvbSAnLi9kcmF3ZXItY29udGFpbmVyLmFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgc2lkZW5hdlN0b3JlIH0gZnJvbSAnLi9zaWRlbmF2LnN0b3JlJztcbmltcG9ydCB7IElOYXZpZ2F0aW9uTWVudUxpbmssIE5hdmlnYXRpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1tZW51L25hdmlnYXRpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZUJyZWFrcG9pbnQsIFJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzcG9uc2l2ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZHJhd2VyLWNvbnRhaW5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEZhSWNvbkNvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duLFxuICAgIE5nYkRyb3Bkb3duTWVudSxcbiAgICBOZ2JEcm9wZG93blRvZ2dsZSxcbiAgICBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcmF3ZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFsuLi5IRV9TSURFX01FTlVfQU5JTUFUSU9OLCAuLi5IRV9SRURVQ0VfV0lEVEhfQU5JTUFUSU9OXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdob3N0Q2xhc3MoKScsXG4gICAgJ1thdHRyLmRyYXdlci1wb3NpdGlvbl0nOiAncG9zaXRpb24oKScsXG4gICAgJ1thdHRyLmRyYXdlci1zdGF0ZV0nOiAnbWVudVN0YXRlKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW3NpZGVuYXZTdG9yZV1cbn0pXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29udGFpbmVyQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgc2lkZW5hdlN0b3JlID0gaW5qZWN0KHNpZGVuYXZTdG9yZSk7XG4gIHJlYWRvbmx5IHJlc3BvbnNpdmVTZXJ2aWNlID0gaW5qZWN0KFJlc3BvbnNpdmVTZXJ2aWNlKTtcblxuICByZWFkb25seSBjb250ZW50Q29udGFpbmVyID0gdmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pO1xuXG4gIHJlYWRvbmx5IG1lbnVTdGF0ZSA9IHNpZ25hbDwnb3BlbicgfCAnY2xvc2UnPignY2xvc2UnKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBicmVha3BvaW50IGF0IHdoaWNoIHRoZSBkcmF3ZXIgd2lsbCBubyBsb25nZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBJZiAnbm9uZScgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBuZXZlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhhdCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCAndGFibGV0JyAtIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoZSB0YWJsZXQgYnJlYWtwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhY3RCcmVha3BvaW50ID0gaW5wdXQ8UmVzcG9uc2l2ZUJyZWFrcG9pbnQ+KCd0YWJsZXQnKTtcbiAgcmVhZG9ubHkgcG9zaXRpb24gPSBpbnB1dDwnbGVmdCcgfCAncmlnaHQnPignbGVmdCcpO1xuICByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KDI1MCk7XG4gIHJlYWRvbmx5IHdpZHRoID0gaW5wdXQ8bnVtYmVyPigyNTYpO1xuICByZWFkb25seSBtYXggPSBpbnB1dDxudW1iZXI+KDYwMCk7XG4gIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBjb250ZW50UGFkZGluZ1N0eWxlcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgbWVudU92ZXJsYXAgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcmVhZG9ubHkgZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgY29tcGFjdEhlYWRlckNsYXNzID0gaW5wdXQ8TmdDbGFzc1snbmdDbGFzcyddPihudWxsKTtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gdGhlIG1lbnUgYW5kIHRoZSBlZGdlIG9mIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IG1pbk1lbnVEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oMjApO1xuXG4gIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdjbG9zZScpLFxuICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IGNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0O1xuICByZWFkb25seSBjaGV2cm9uTGVmdCA9IGZhQ2hldnJvbkxlZnQ7XG4gIHJlYWRvbmx5IGZhQ2hldnJvblVwID0gZmFDaGV2cm9uVXA7XG4gIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHJlYWRvbmx5IGhhc01vZGFsID0gdG9TaWduYWwoXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ2NsaWNrJykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RhbCcpLmxlbmd0aCA+IDA7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUFuaW1hdGlvbiA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZSh0aGlzLmhhc01vZGFsKS5waXBlKGRlbGF5KDEwMDApKSk7XG4gIHJlYWRvbmx5IGlzQ29tcGFjdCA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmNvbXBhY3RCcmVha3BvaW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGJyZWFrcG9pbnQgPT5cbiAgICAgICAgdGhpcy5yZXNwb25zaXZlU2VydmljZS5pc0Fib3ZlQnJlYWtwb2ludCQoYnJlYWtwb2ludCkucGlwZShtYXAoaXNBYm92ZUJyZWFrcG9pbnQgPT4gIWlzQWJvdmVCcmVha3BvaW50KSlcbiAgICAgIClcbiAgICApXG4gICk7XG4gIHJlYWRvbmx5IGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgWydpcy1mbGV4JywgdGhpcy5pc0NvbXBhY3QoKSA/ICdpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW4nIDogJycsIHRoaXMucmVzaXphYmxlKCkgPyAnaXMtcmVzaXphYmxlJyA6ICcnXS5qb2luKCcgJylcbiAgKTtcbiAgcmVhZG9ubHkgaXNIb2xkaW5nVG9nZ2xlID0gdGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVTaWRlbmF2RXZlbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmcpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGxpc3RlbiA9PiAobGlzdGVuID8gKGZyb21FdmVudCh3aW5kb3csICdtb3VzZW1vdmUnKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+KSA6IEVNUFRZKSksXG4gICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRlbnRDb250YWluZXIpLnBpcGUoZmlsdGVyKHggPT4gISF4KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RDb21wb25lbnRXaWR0aCQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShzdGFydFdpdGgod2luZG93LmlubmVyV2lkdGgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPdmVybGFwcGluZyQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNNZW51T3ZlcmxhcHBpbmcpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHJlYWRvbmx5IHJlZHVjZUFuaW1hdGlvbiA9IHRvU2lnbmFsKFxuICAgIGNvbWJpbmVMYXRlc3QoW3RvT2JzZXJ2YWJsZSh0aGlzLmV4cGFuZGVkKSwgdGhpcy5faXNPdmVybGFwcGluZyQsIHRvT2JzZXJ2YWJsZSh0aGlzLmlzQ29tcGFjdCldKS5waXBlKFxuICAgICAgbWFwKChbZXhwYW5kZWQsIGlzT3ZlcmxhcHBpbmcsIGlzQ29tcGFjdF0pID0+IChleHBhbmRlZCAmJiAhaXNPdmVybGFwcGluZyAmJiAhaXNDb21wYWN0ID8gJ3JlZHVjZWQnIDogJ2Z1bGwnKSlcbiAgICApXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRDb250YWluZXJQYWRkaW5nJCA9IHRoaXMuX2hvc3RDb21wb25lbnRXaWR0aCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY29udGVudENvbnRhaW5lciQucGlwZShtYXAodGhpcy5fZ2V0Q29udGVudExlZnRTaWRlU3BhY2UpKSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRTaWRlKHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbldpZHRoKHRoaXMubWluKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNYXhXaWR0aCh0aGlzLm1heCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0V2lkdGgodGhpcy53aWR0aCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUudXBkYXRlUmVzaXppbmcodGhpcy5fdXBkYXRlU2lkZW5hdkV2ZW50JCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0Q29udGVudENvbnRhaW5lclNwYWNpbmcodGhpcy5fY29udGVudENvbnRhaW5lclBhZGRpbmckKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRFeHBhbmRlZCh0aGlzLmV4cGFuZGVkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNaW5NZW51RGlzdGFuY2UodGhpcy5taW5NZW51RGlzdGFuY2UpO1xuICB9XG5cbiAgc3RhcnRSZXNpemluZyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNpemFibGUoKSkgcmV0dXJuO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0YXJ0UmVzaXppbmcoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnKVxuICBzdG9wUmVzaXppbmcoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc3RvcFJlc2l6aW5nKCk7XG4gIH1cblxuICB0b2dnbGVNZW51KCkge1xuICAgIGlmICh0aGlzLnNpZGVuYXZTdG9yZS5oYXNNZW51V2lkdGhDaGFuZ2VkKCkgJiYgdGhpcy5leHBhbmRlZCgpKSByZXR1cm47XG5cbiAgICB0aGlzLmV4cGFuZGVkKCkgPyB0aGlzLmhpZGVNZW51KCkgOiB0aGlzLnNob3dNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZU1lbnUoKSB7XG4gICAgdGhpcy5leHBhbmRlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3dNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgY29uc3QgZGlkT3BlbiA9IGV2ZW50LnRvU3RhdGUgIT09ICdoaWRkZW4nO1xuICAgIHRoaXMubWVudVN0YXRlLnNldChkaWRPcGVuID8gJ29wZW4nIDogJ2Nsb3NlJyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb250ZW50TGVmdFNpZGVTcGFjZShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHBhZGRpbmcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpO1xuICAgIGNvbnN0IG1hcmdpbiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQubmF0aXZlRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWxlZnQnKTtcbiAgICByZXR1cm4gcGFyc2VJbnQocGFkZGluZywgMTApICsgcGFyc2VJbnQobWFyZ2luLCAxMCk7XG4gIH1cbn1cbiIsIkBpZiAoaXNDb21wYWN0KCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvbXBhY3QtaGVhZGVyXCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCJjb21wYWN0SGVhZGVyQ2xhc3MoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtYWxpZ24taXRlbXMtZmxleC1zdGFydCB3LTEwMFwiPlxuICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0byBtci00XCIgbmdiRHJvcGRvd24gI29wdGlvbkRkPVwibmdiRHJvcGRvd25cIiBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG4gYnV0dG9uIGlzLXNtYWxsIGlzLW5vLXNoYWRvd1wiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJhd2VyLW1lbnVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgTWVudVxuXG4gICAgICAgICAgICA8ZmEtaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgICBbaWNvbl09XCJvcHRpb25EZC5pc09wZW4oKSA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93blwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZHJhd2VyLW1lbnVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50IG5hdmlnYXRpb24tbWVudS1kcm9wZG93blwiPlxuICAgICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IFtsaW5rc109XCJsaW5rcygpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8YXNpZGU+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQgfCBoLTEwMFwiXG4gICAgICAoQHNpZGVNZW51LmRvbmUpPVwiYW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICAgIFtAc2lkZU1lbnVdPVwiZXhwYW5kZWQoKSA/ICdmdWxsJyA6ICdoaWRkZW4nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgc2hlbGxfX21lbnVDb250ZW50LS1jb250YWluZXJcIj5cbiAgICAgICAgPGhlLW5hdmlnYXRpb24tbWVudSBbbGlua3NdPVwibGlua3MoKVwiPlxuICAgICAgICAgIEBpZiAoZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgb3V0ZXItY29udGVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2hlLW5hdmlnYXRpb24tbWVudT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCIgKG1vdXNlZG93bik9XCJzdGFydFJlc2l6aW5nKCRldmVudClcIiBjbGFzcz1cInNoZWxsX19tZW51Q29udGVudC0tdG9nZ2xlXCI+XG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cImV4cGFuZGVkKCkgPyBjaGV2cm9uTGVmdCA6IGNoZXZyb25SaWdodFwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9hc2lkZT5cbn1cblxuPGRpdlxuICBbY2xhc3MuaXMtcmVzaXppbmddPVwiaXNIb2xkaW5nVG9nZ2xlKClcIlxuICBbQHJlZHVjZVdpZHRoXT1cInJlZHVjZUFuaW1hdGlvbigpXCJcbiAgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXggaXMtanVzdGlmeS1jb250ZW50LWZsZXgtZW5kXCI+XG4gIDxkaXZcbiAgICBbY2xhc3MuZGlzYWJsZS1hbmltYXRpb25dPVwiZGlzYWJsZUFuaW1hdGlvbigpXCJcbiAgICBbY2xhc3MuZGlzYWJsZS10cmFuc2Zvcm0teF09XCJoYXNNb2RhbCgpXCJcbiAgICBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyIFtjbGFzc05hbWVdPVwiY29udGVudFBhZGRpbmdTdHlsZXMoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RyYXdlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRTVGLE9B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d0JBQ3RDLHFCQUFxQixFQUFFLGFBQWE7cUJBQ3JDLGFBQ1UsQ0FBQyxZQUFZLENBQUM7d0RBZ0h6QixZQUFZO3NCQURYLFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25MZWZ0LCBmYUNoZXZyb25SaWdodCwgZmFDaGV2cm9uVXAgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBkZWxheSwgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1lbnUsIE5nYkRyb3Bkb3duVG9nZ2xlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSEVfUkVEVUNFX1dJRFRIX0FOSU1BVElPTiwgSEVfU0lERV9NRU5VX0FOSU1BVElPTiB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zJztcbmltcG9ydCB7IHNpZGVuYXZTdG9yZSB9IGZyb20gJy4vc2lkZW5hdi5zdG9yZSc7XG5pbXBvcnQgeyBJTmF2aWdhdGlvbk1lbnVMaW5rLCBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tbWVudS9uYXZpZ2F0aW9uLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc3BvbnNpdmVCcmVha3BvaW50LCBSZXNwb25zaXZlU2VydmljZSB9IGZyb20gJy4uL3Jlc3BvbnNpdmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWRyYXdlci1jb250YWluZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBGYUljb25Db21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bixcbiAgICBOZ2JEcm9wZG93bk1lbnUsXG4gICAgTmdiRHJvcGRvd25Ub2dnbGUsXG4gICAgTmF2aWdhdGlvbk1lbnVDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbLi4uSEVfU0lERV9NRU5VX0FOSU1BVElPTiwgLi4uSEVfUkVEVUNFX1dJRFRIX0FOSU1BVElPTl0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnaG9zdENsYXNzKCknLFxuICAgICdbYXR0ci5kcmF3ZXItcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuICAgICdbYXR0ci5kcmF3ZXItc3RhdGVdJzogJ21lbnVTdGF0ZSgpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtzaWRlbmF2U3RvcmVdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdlckNvbnRhaW5lckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHNpZGVuYXZTdG9yZSA9IGluamVjdChzaWRlbmF2U3RvcmUpO1xuICByZWFkb25seSByZXNwb25zaXZlU2VydmljZSA9IGluamVjdChSZXNwb25zaXZlU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgY29udGVudENvbnRhaW5lciA9IHZpZXdDaGlsZCgnY29udGVudENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KTtcblxuICByZWFkb25seSBtZW51U3RhdGUgPSBzaWduYWw8J29wZW4nIHwgJ2Nsb3NlJz4oJ2Nsb3NlJyk7XG4gIHJlYWRvbmx5IGV4cGFuZGVkID0gc2lnbmFsKHRydWUpO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJlYWtwb2ludCBhdCB3aGljaCB0aGUgZHJhd2VyIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbXBhY3QuXG4gICAqIElmIGEgbnVtYmVyIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHdpZHRoIGluIHBpeGVscy5cbiAgICogSWYgJ25vbmUnIGlzIHByb3ZpZGVkLCB0aGUgZHJhd2VyIHdpbGwgbmV2ZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBicmVha3BvaW50IG5hbWUgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoYXQgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgJ3RhYmxldCcgLSB0aGUgZHJhd2VyIHdpbGwgYmUgY29tcGFjdCB1bnRpbCB0aGUgdGFibGV0IGJyZWFrcG9pbnQuXG4gICAqL1xuICByZWFkb25seSBjb21wYWN0QnJlYWtwb2ludCA9IGlucHV0PFJlc3BvbnNpdmVCcmVha3BvaW50PigndGFibGV0Jyk7XG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0Jz4oJ2xlZnQnKTtcbiAgcmVhZG9ubHkgbWluID0gaW5wdXQ8bnVtYmVyPigyNTApO1xuICByZWFkb25seSB3aWR0aCA9IGlucHV0PG51bWJlcj4oMjU2KTtcbiAgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8bnVtYmVyPig2MDApO1xuICByZWFkb25seSByZXNpemFibGUgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgY29udGVudFBhZGRpbmdTdHlsZXMgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IG1lbnVPdmVybGFwID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IGxpbmtzID0gaW5wdXQ8SU5hdmlnYXRpb25NZW51TGlua1tdPihbXSk7XG4gIHJlYWRvbmx5IGRyYXdlckhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgY29tcGFjdEhlYWRlckNsYXNzID0gaW5wdXQ8TmdDbGFzc1snbmdDbGFzcyddPihudWxsKTtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gdGhlIG1lbnUgYW5kIHRoZSBlZGdlIG9mIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IG1pbk1lbnVEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oMjApO1xuXG4gIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdjbG9zZScpLFxuICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IGNoZXZyb25SaWdodCA9IGZhQ2hldnJvblJpZ2h0O1xuICByZWFkb25seSBjaGV2cm9uTGVmdCA9IGZhQ2hldnJvbkxlZnQ7XG4gIHJlYWRvbmx5IGZhQ2hldnJvblVwID0gZmFDaGV2cm9uVXA7XG4gIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHJlYWRvbmx5IGhhc01vZGFsID0gdG9TaWduYWwoXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ2NsaWNrJykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtb2RhbCcpLmxlbmd0aCA+IDA7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUFuaW1hdGlvbiA9IHRvU2lnbmFsKHRvT2JzZXJ2YWJsZSh0aGlzLmhhc01vZGFsKS5waXBlKGRlbGF5KDEwMDApKSk7XG4gIHJlYWRvbmx5IGlzQ29tcGFjdCA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmNvbXBhY3RCcmVha3BvaW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGJyZWFrcG9pbnQgPT5cbiAgICAgICAgdGhpcy5yZXNwb25zaXZlU2VydmljZS5pc0Fib3ZlQnJlYWtwb2ludCQoYnJlYWtwb2ludCkucGlwZShtYXAoaXNBYm92ZUJyZWFrcG9pbnQgPT4gIWlzQWJvdmVCcmVha3BvaW50KSlcbiAgICAgIClcbiAgICApXG4gICk7XG4gIHJlYWRvbmx5IGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgWydpcy1mbGV4JywgdGhpcy5pc0NvbXBhY3QoKSA/ICdpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW4nIDogJycsIHRoaXMucmVzaXphYmxlKCkgPyAnaXMtcmVzaXphYmxlJyA6ICcnXS5qb2luKCcgJylcbiAgKTtcbiAgcmVhZG9ubHkgaXNIb2xkaW5nVG9nZ2xlID0gdGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVTaWRlbmF2RXZlbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2lkZW5hdlN0b3JlLmlzUmVzaXppbmcpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGxpc3RlbiA9PiAobGlzdGVuID8gKGZyb21FdmVudCh3aW5kb3csICdtb3VzZW1vdmUnKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+KSA6IEVNUFRZKSksXG4gICAgdGhyb3R0bGVUaW1lKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRlbnRDb250YWluZXIpLnBpcGUoZmlsdGVyKHggPT4gISF4KSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RDb21wb25lbnRXaWR0aCQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShzdGFydFdpdGgod2luZG93LmlubmVyV2lkdGgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPdmVybGFwcGluZyQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNNZW51T3ZlcmxhcHBpbmcpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHJlYWRvbmx5IHJlZHVjZUFuaW1hdGlvbiA9IHRvU2lnbmFsKFxuICAgIGNvbWJpbmVMYXRlc3QoW3RvT2JzZXJ2YWJsZSh0aGlzLmV4cGFuZGVkKSwgdGhpcy5faXNPdmVybGFwcGluZyQsIHRvT2JzZXJ2YWJsZSh0aGlzLmlzQ29tcGFjdCldKS5waXBlKFxuICAgICAgbWFwKChbZXhwYW5kZWQsIGlzT3ZlcmxhcHBpbmcsIGlzQ29tcGFjdF0pID0+IChleHBhbmRlZCAmJiAhaXNPdmVybGFwcGluZyAmJiAhaXNDb21wYWN0ID8gJ3JlZHVjZWQnIDogJ2Z1bGwnKSlcbiAgICApXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRDb250YWluZXJQYWRkaW5nJCA9IHRoaXMuX2hvc3RDb21wb25lbnRXaWR0aCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fY29udGVudENvbnRhaW5lciQucGlwZShtYXAodGhpcy5fZ2V0Q29udGVudExlZnRTaWRlU3BhY2UpKSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRTaWRlKHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbldpZHRoKHRoaXMubWluKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNYXhXaWR0aCh0aGlzLm1heCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0V2lkdGgodGhpcy53aWR0aCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUudXBkYXRlUmVzaXppbmcodGhpcy5fdXBkYXRlU2lkZW5hdkV2ZW50JCk7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0Q29udGVudENvbnRhaW5lclNwYWNpbmcodGhpcy5fY29udGVudENvbnRhaW5lclBhZGRpbmckKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRFeHBhbmRlZCh0aGlzLmV4cGFuZGVkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRNaW5NZW51RGlzdGFuY2UodGhpcy5taW5NZW51RGlzdGFuY2UpO1xuICB9XG5cbiAgc3RhcnRSZXNpemluZyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNpemFibGUoKSkgcmV0dXJuO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnN0YXJ0UmVzaXppbmcoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnKVxuICBzdG9wUmVzaXppbmcoKSB7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc3RvcFJlc2l6aW5nKCk7XG4gIH1cblxuICB0b2dnbGVNZW51KCkge1xuICAgIGlmICh0aGlzLnNpZGVuYXZTdG9yZS5oYXNNZW51V2lkdGhDaGFuZ2VkKCkgJiYgdGhpcy5leHBhbmRlZCgpKSByZXR1cm47XG5cbiAgICB0aGlzLmV4cGFuZGVkKCkgPyB0aGlzLmhpZGVNZW51KCkgOiB0aGlzLnNob3dNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZU1lbnUoKSB7XG4gICAgdGhpcy5leHBhbmRlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3dNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgY29uc3QgZGlkT3BlbiA9IGV2ZW50LnRvU3RhdGUgIT09ICdoaWRkZW4nO1xuICAgIHRoaXMubWVudVN0YXRlLnNldChkaWRPcGVuID8gJ29wZW4nIDogJ2Nsb3NlJyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb250ZW50TGVmdFNpZGVTcGFjZShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHBhZGRpbmcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpO1xuICAgIGNvbnN0IG1hcmdpbiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQubmF0aXZlRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWxlZnQnKTtcbiAgICByZXR1cm4gcGFyc2VJbnQocGFkZGluZywgMTApICsgcGFyc2VJbnQobWFyZ2luLCAxMCk7XG4gIH1cbn1cbiIsIkBpZiAoaXNDb21wYWN0KCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvbXBhY3QtaGVhZGVyXCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCJjb21wYWN0SGVhZGVyQ2xhc3MoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtYWxpZ24taXRlbXMtZmxleC1zdGFydCB3LTEwMFwiPlxuICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0byBtci00XCIgbmdiRHJvcGRvd24gI29wdGlvbkRkPVwibmdiRHJvcGRvd25cIiBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG4gYnV0dG9uIGlzLXNtYWxsIGlzLW5vLXNoYWRvd1wiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJhd2VyLW1lbnVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgTWVudVxuXG4gICAgICAgICAgICA8ZmEtaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvbXBhY3QtaGVhZGVyLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgICBbaWNvbl09XCJvcHRpb25EZC5pc09wZW4oKSA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93blwiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZHJhd2VyLW1lbnVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50IG5hdmlnYXRpb24tbWVudS1kcm9wZG93blwiPlxuICAgICAgICAgICAgICA8aGUtbmF2aWdhdGlvbi1tZW51IFtsaW5rc109XCJsaW5rcygpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8YXNpZGU+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzaGVsbF9fbWVudUNvbnRlbnQgfCBoLTEwMFwiXG4gICAgICAoQHNpZGVNZW51LmRvbmUpPVwiYW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICAgIFtAc2lkZU1lbnVdPVwiZXhwYW5kZWQoKSA/ICdmdWxsJyA6ICdoaWRkZW4nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgc2hlbGxfX21lbnVDb250ZW50LS1jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBvdXRlci1jb250ZW50IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlckhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGhlLW5hdmlnYXRpb24tbWVudSBbbGlua3NdPVwibGlua3MoKVwiPlxuICAgICAgICAgIEBpZiAoZHJhd2VyTWVudUhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgb3V0ZXItY29udGVudCBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2hlLW5hdmlnYXRpb24tbWVudT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCIgKG1vdXNlZG93bik9XCJzdGFydFJlc2l6aW5nKCRldmVudClcIiBjbGFzcz1cInNoZWxsX19tZW51Q29udGVudC0tdG9nZ2xlXCI+XG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cImV4cGFuZGVkKCkgPyBjaGV2cm9uTGVmdCA6IGNoZXZyb25SaWdodFwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9hc2lkZT5cbn1cblxuPGRpdlxuICBbY2xhc3MuaXMtcmVzaXppbmddPVwiaXNIb2xkaW5nVG9nZ2xlKClcIlxuICBbQHJlZHVjZVdpZHRoXT1cInJlZHVjZUFuaW1hdGlvbigpXCJcbiAgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXggaXMtanVzdGlmeS1jb250ZW50LWZsZXgtZW5kXCI+XG4gIDxkaXZcbiAgICBbY2xhc3MuZGlzYWJsZS1hbmltYXRpb25dPVwiZGlzYWJsZUFuaW1hdGlvbigpXCJcbiAgICBbY2xhc3MuZGlzYWJsZS10cmFuc2Zvcm0teF09XCJoYXNNb2RhbCgpXCJcbiAgICBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyIFtjbGFzc05hbWVdPVwiY29udGVudFBhZGRpbmdTdHlsZXMoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RyYXdlci1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2385,6 +2385,7 @@ class DrawerContainerComponent {
2385
2385
  this.contentPaddingStyles = input();
2386
2386
  this.menuOverlap = input(true);
2387
2387
  this.links = input([]);
2388
+ this.drawerHeaderTemplate = input();
2388
2389
  this.drawerMenuHeaderTemplate = input();
2389
2390
  this.compactHeaderClass = input(null);
2390
2391
  /**
@@ -2451,7 +2452,7 @@ class DrawerContainerComponent {
2451
2452
  return parseInt(padding, 10) + parseInt(margin, 10);
2452
2453
  }
2453
2454
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2454
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: DrawerContainerComponent, isStandalone: true, selector: "he-drawer-container", inputs: { compactBreakpoint: { classPropertyName: "compactBreakpoint", publicName: "compactBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, contentPaddingStyles: { classPropertyName: "contentPaddingStyles", publicName: "contentPaddingStyles", isSignal: true, isRequired: false, transformFunction: null }, menuOverlap: { classPropertyName: "menuOverlap", publicName: "menuOverlap", isSignal: true, isRequired: false, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, drawerHeaderTemplate: { classPropertyName: "drawerHeaderTemplate", publicName: "drawerHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, drawerMenuHeaderTemplate: { classPropertyName: "drawerMenuHeaderTemplate", publicName: "drawerMenuHeaderTemplate", isSignal: true, isRequired: false, transformFunction: null }, compactHeaderClass: { classPropertyName: "compactHeaderClass", publicName: "compactHeaderClass", isSignal: true, isRequired: false, transformFunction: null }, minMenuDistance: { classPropertyName: "minMenuDistance", publicName: "minMenuDistance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "window:mouseup": "stopResizing()" }, properties: { "class": "hostClass()", "attr.drawer-position": "position()", "attr.drawer-state": "menuState()" } }, providers: [sidenavStore], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "component", type: NavigationMenuComponent, selector: "he-navigation-menu", inputs: ["links", "sticky", "collapsible", "routerLinkMatchOptions"] }], animations: [...HE_SIDE_MENU_ANIMATION, ...HE_REDUCE_WIDTH_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2455
2456
  }
2456
2457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: DrawerContainerComponent, decorators: [{
2457
2458
  type: Component$1,
@@ -2468,7 +2469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
2468
2469
  '[class]': 'hostClass()',
2469
2470
  '[attr.drawer-position]': 'position()',
2470
2471
  '[attr.drawer-state]': 'menuState()'
2471
- }, providers: [sidenavStore], template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"] }]
2472
+ }, providers: [sidenavStore], template: "@if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start w-100\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n\n <div class=\"ml-auto mr-4\" ngbDropdown #optionDd=\"ngbDropdown\" container=\"body\" placement=\"bottom-end\">\n <button\n ngbDropdownToggle\n class=\"compact-header--btn button is-small is-no-shadow\"\n aria-controls=\"drawer-menu\"\n type=\"button\">\n Menu\n\n <fa-icon\n class=\"compact-header--btn__icon\"\n [icon]=\"optionDd.isOpen() ? faChevronUp : faChevronDown\"\n aria-hidden=\"true\"></fa-icon>\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu [links]=\"links()\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n} @else {\n <aside>\n <div\n class=\"shell__menuContent | h-100\"\n (@sideMenu.done)=\"animationDone($event)\"\n [@sideMenu]=\"expanded() ? 'full' : 'hidden'\">\n <div class=\"h-100 shell__menuContent--container\">\n @if (drawerHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n </div>\n <button (click)=\"toggleMenu()\" (mousedown)=\"startResizing($event)\" class=\"shell__menuContent--toggle\">\n <fa-icon [icon]=\"expanded() ? chevronLeft : chevronRight\" />\n </button>\n </div>\n </aside>\n}\n\n<div\n [class.is-resizing]=\"isHoldingToggle()\"\n [@reduceWidth]=\"reduceAnimation()\"\n class=\"shell__content | h-100 w-100 is-flex is-justify-content-flex-end\">\n <div\n [class.disable-animation]=\"disableAnimation()\"\n [class.disable-transform-x]=\"hasModal()\"\n class=\"shell__content--body | w-100\">\n <div #contentContainer [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--sidenav-width: 256px;--menu-width: var(--sidenav-width);--menu-transition-time: .15s;--drawer-width: var(--sidenav-width);--drawer-toogle-position: -20px;--reduce-animation-width: calc(100% - var(--sidenav-width) - 1em);--sidenav-side-transform: -1;--contentTransitionX: 0}:host-context([drawer-position=right]){--sidenav-side-transform: 1}:host-context([drawer-position=right]) aside{right:0;order:1}:host-context([drawer-position=right]) aside .shell__menuContent{right:0;box-shadow:-3px 3px 3px #00000008}:host-context([drawer-position=right]) aside .shell__menuContent--toggle{left:var(--drawer-toogle-position);border-radius:9px 0 0 9px}@media screen and (min-width: 928px) and (max-width: 1215px){:host-context([drawer-state=open]) ::ng-deep .content-screen-padding{padding-inline-start:2rem}}:host{position:relative;max-height:100%;display:flex;justify-content:space-between;transform:translate(calc(-1px * var(--sidenav-width)))}:host aside{position:sticky;top:var(--navbar-height);z-index:10;height:calc(100vh - var(--navbar-height))}:host aside .shell__menuContent{position:absolute;top:0;box-shadow:3px 3px 3px #00000008;background-color:#fff;width:var(--sidenav-width);padding:24px 12px}:host aside .shell__menuContent--container{overflow-y:auto}:host aside .shell__menuContent--toggle{position:absolute;top:calc(50% - 24px);right:var(--drawer-toogle-position);background:#dbe3ea;border-radius:0 9px 9px 0;cursor:pointer;border:none;width:20px;height:48px;overflow:hidden;display:flex;justify-content:center;align-items:center}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.disable-transform-x{position:absolute;left:var(--contentTransitionX)}.disable-animation{transition:none!important}.shell__content--body{container-type:inline-size}.shell__content--body:not(.disable-transform-x){transition:none;transform:translate(var(--contentTransitionX))}.shell__content:not(.is-resizing) .shell__content--body:not(.disable-transform-x){transition:transform .3s ease-in-out}.navigation-menu-dropdown{width:300px}@media screen and (max-width: 767px){.navigation-menu-dropdown{width:calc(100dvw - 3rem)}}.compact-header{position:sticky;top:calc(var(--navbar-height));z-index:10}@media screen and (max-width: 767px){.compact-header{top:0}}.compact-header--btn{display:block;background:#dbe3ea;border-radius:3px;color:#193957;font-weight:700;font-size:1rem;line-height:21px;padding:.25rem .5rem}.compact-header--btn__icon{margin-left:.25rem;font-size:12px}.compact-header--btn .show .compact-header--btn__icon{transform:rotate(180deg)}\n"] }]
2472
2473
  }], ctorParameters: () => [], propDecorators: { stopResizing: [{
2473
2474
  type: HostListener,
2474
2475
  args: ['window:mouseup']