@hestia-earth/ui-components 0.29.4 → 0.29.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/common/drawer-container/drawer-container.component.mjs +6 -4
- package/esm2022/sites/sites-management-chart/sites-management-chart.component.mjs +16 -15
- package/fesm2022/hestia-earth-ui-components.mjs +19 -17
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/package.json +1 -1
- package/sites/sites-management-chart/sites-management-chart.component.d.ts +0 -1
- package/svg-icons/database-wheat.svg +51 -83
- package/svg-icons/drag.svg +8 -0
- package/svg-icons/icons.json +5 -1
|
@@ -12,6 +12,7 @@ import { ANIMATIONS } from './drawer-container.animations';
|
|
|
12
12
|
import { sidenavStore, initialState } from './sidenav.store';
|
|
13
13
|
import { NavigationMenuComponent } from '../navigation-menu/navigation-menu.component';
|
|
14
14
|
import { ResponsiveService } from '../responsive.service';
|
|
15
|
+
import { SvgIconComponent } from 'angular-svg-icon';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
const storageKey = 'he-drawer-container';
|
|
17
18
|
export class DrawerContainerComponent {
|
|
@@ -124,7 +125,7 @@ export class DrawerContainerComponent {
|
|
|
124
125
|
return parseInt(padding, 10) + parseInt(margin, 10);
|
|
125
126
|
}
|
|
126
127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", 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 }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", 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 (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "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"], outputs: ["closed"] }], animations: ANIMATIONS, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", 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 }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", 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 (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n @if (resizable()) {\n <svg-icon name=\"drag\" />\n } @else {\n <fa-icon [icon]=\"toggleIcon()\" />\n }\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "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"], outputs: ["closed"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }], animations: ANIMATIONS, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
128
129
|
}
|
|
129
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DrawerContainerComponent, decorators: [{
|
|
130
131
|
type: Component,
|
|
@@ -136,14 +137,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
136
137
|
NgbDropdown,
|
|
137
138
|
NgbDropdownMenu,
|
|
138
139
|
NgbDropdownToggle,
|
|
139
|
-
NavigationMenuComponent
|
|
140
|
+
NavigationMenuComponent,
|
|
141
|
+
SvgIconComponent
|
|
140
142
|
], changeDetection: ChangeDetectionStrategy.OnPush, animations: ANIMATIONS, host: {
|
|
141
143
|
'[class]': 'hostClass()',
|
|
142
144
|
'[attr.drawer-position]': 'position()',
|
|
143
145
|
'[attr.drawer-state]': 'menuState()'
|
|
144
|
-
}, providers: [sidenavStore], template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
|
|
146
|
+
}, providers: [sidenavStore], template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n @if (resizable()) {\n <svg-icon name=\"drag\" />\n } @else {\n <fa-icon [icon]=\"toggleIcon()\" />\n }\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
|
|
145
147
|
}], ctorParameters: () => [], propDecorators: { stopResizing: [{
|
|
146
148
|
type: HostListener,
|
|
147
149
|
args: ['window:mouseup']
|
|
148
150
|
}] } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FB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LENBQUM7SUFDdEQsQ0FBQzsrR0F4S1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isa3VFQUZ4QixDQUFDLFlBQVksQ0FBQywySEFPaUQsVUFBVSw2Q0M3RHRGLCs4RkE4RUEseXhFRDFDSSxnQkFBZ0Isb0pBQ2hCLGVBQWUsNE1BQ2YsT0FBTyxtRkFDUCxXQUFXLCtCQUNYLFdBQVcsb05BQ1gsZUFBZSw4REFDZixpQkFBaUIsZ0VBQ2pCLHVCQUF1Qiw0SUFLYixVQUFVOzs0RkFRWCx3QkFBd0I7a0JBeEJwQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQix1QkFBdUI7cUJBQ3hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLFVBQVUsUUFDaEI7d0JBQ0osU0FBUyxFQUFFLGFBQWE7d0JBQ3hCLHdCQUF3QixFQUFFLFlBQVk7d0JBQ3RDLHFCQUFxQixFQUFFLGFBQWE7cUJBQ3JDLGFBQ1UsQ0FBQyxZQUFZLENBQUM7d0RBcUl6QixZQUFZO3NCQURYLFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25MZWZ0LCBmYUNoZXZyb25SaWdodCwgZmFDaGV2cm9uVXAgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duTWVudSwgTmdiRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgY29tYmluZUxhdGVzdCwgRU1QVFksIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJ25neC13ZWJzdG9yYWdlJztcblxuaW1wb3J0IHsgQU5JTUFUSU9OUyB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lci5hbmltYXRpb25zJztcbmltcG9ydCB7IHNpZGVuYXZTdG9yZSwgaW5pdGlhbFN0YXRlLCBkcmF3ZXJQb3NpdGlvbiB9IGZyb20gJy4vc2lkZW5hdi5zdG9yZSc7XG5pbXBvcnQgeyBJTmF2aWdhdGlvbk1lbnVMaW5rLCBOYXZpZ2F0aW9uTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tbWVudS9uYXZpZ2F0aW9uLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc3BvbnNpdmVCcmVha3BvaW50LCBSZXNwb25zaXZlU2VydmljZSB9IGZyb20gJy4uL3Jlc3BvbnNpdmUuc2VydmljZSc7XG5cbmNvbnN0IHN0b3JhZ2VLZXkgPSAnaGUtZHJhd2VyLWNvbnRhaW5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWRyYXdlci1jb250YWluZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBGYUljb25Db21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bixcbiAgICBOZ2JEcm9wZG93bk1lbnUsXG4gICAgTmdiRHJvcGRvd25Ub2dnbGUsXG4gICAgTmF2aWdhdGlvbk1lbnVDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBBTklNQVRJT05TLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnaG9zdENsYXNzKCknLFxuICAgICdbYXR0ci5kcmF3ZXItcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuICAgICdbYXR0ci5kcmF3ZXItc3RhdGVdJzogJ21lbnVTdGF0ZSgpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtzaWRlbmF2U3RvcmVdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdlckNvbnRhaW5lckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlN0b3JlID0gaW5qZWN0KHNpZGVuYXZTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2l2ZVNlcnZpY2UgPSBpbmplY3QoUmVzcG9uc2l2ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnRDb250YWluZXIgPSB2aWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVTdGF0ZSA9IHNpZ25hbDwnb3BlbicgfCAnY2xvc2UnPignY2xvc2UnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4cGFuZGVkID0gc2lnbmFsKGluaXRpYWxTdGF0ZS5leHBhbmRlZCk7XG5cbiAgLyoqXG4gICAqIFRoZSBicmVha3BvaW50IGF0IHdoaWNoIHRoZSBkcmF3ZXIgd2lsbCBubyBsb25nZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBJZiAnbm9uZScgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBuZXZlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhhdCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCAndGFibGV0JyAtIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoZSB0YWJsZXQgYnJlYWtwb2ludC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjb21wYWN0QnJlYWtwb2ludCA9IGlucHV0PFJlc3BvbnNpdmVCcmVha3BvaW50PigndGFibGV0Jyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwb3NpdGlvbiA9IGlucHV0PGRyYXdlclBvc2l0aW9uPihpbml0aWFsU3RhdGUuc2lkZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KGluaXRpYWxTdGF0ZS5taW5XaWR0aCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3aWR0aCA9IG1vZGVsPG51bWJlcj4oaW5pdGlhbFN0YXRlLndpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1heFdpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGVudFBhZGRpbmdTdHlsZXMgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51T3ZlcmxhcCA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlckhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21wYWN0SGVhZGVyQ2xhc3MgPSBpbnB1dDxOZ0NsYXNzWyduZ0NsYXNzJ10+KG51bGwpO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgbWVudSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbk1lbnVEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1pbk1lbnVEaXN0YW5jZSk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0b09ic2VydmFibGUodGhpcy5tZW51U3RhdGUpLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlID09PSAnY2xvc2UnKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aXNpYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbdGhpcy5saW5rcygpPy5sZW5ndGggPiAwLCAhIXRoaXMuZHJhd2VySGVhZGVyVGVtcGxhdGUoKSwgISF0aGlzLmRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXS5zb21lKEJvb2xlYW4pXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQ29tcGFjdCA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmNvbXBhY3RCcmVha3BvaW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGJyZWFrcG9pbnQgPT5cbiAgICAgICAgdGhpcy5yZXNwb25zaXZlU2VydmljZS5pc0Fib3ZlQnJlYWtwb2ludCQoYnJlYWtwb2ludCkucGlwZShtYXAoaXNBYm92ZUJyZWFrcG9pbnQgPT4gIWlzQWJvdmVCcmVha3BvaW50KSlcbiAgICAgIClcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIFsnaXMtZmxleCcsIHRoaXMuaXNDb21wYWN0KCkgPyAnaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uJyA6ICcnLCB0aGlzLnJlc2l6YWJsZSgpID8gJ2lzLXJlc2l6YWJsZScgOiAnJ10uam9pbignICcpXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0hvbGRpbmdUb2dnbGUgPSB0aGlzLnNpZGVuYXZTdG9yZS5pc1Jlc2l6aW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZVNpZGVuYXZFdmVudCQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZykucGlwZShcbiAgICBzd2l0Y2hNYXAobGlzdGVuID0+IChsaXN0ZW4gPyAoZnJvbUV2ZW50KHdpbmRvdywgJ21vdXNlbW92ZScpIGFzIE9ic2VydmFibGU8TW91c2VFdmVudD4pIDogRU1QVFkpKSxcbiAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRDb250YWluZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuY29udGVudENvbnRhaW5lcikucGlwZShmaWx0ZXIoeCA9PiAhIXgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaG9zdENvbXBvbmVudFdpZHRoJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKHN0YXJ0V2l0aCh3aW5kb3cuaW5uZXJXaWR0aCkpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5leHBhbmRlZCksIHRvT2JzZXJ2YWJsZSh0aGlzLmlzQ29tcGFjdCksIHRvT2JzZXJ2YWJsZSh0aGlzLnZpc2libGUpXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc0NvbXBhY3QsIHZpc2libGVdKSA9PiAoW2V4cGFuZGVkLCAhaXNDb21wYWN0LCB2aXNpYmxlXS5ldmVyeShCb29sZWFuKSA/ICdyZWR1Y2VkJyA6ICdmdWxsJykpXG4gICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyUGFkZGluZyQgPSB0aGlzLl9ob3N0Q29tcG9uZW50V2lkdGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2NvbnRlbnRDb250YWluZXIkLnBpcGUobWFwKGVsID0+IHRoaXMuX2dldENvbnRlbnRMZWZ0U2lkZVNwYWNlKGVsKSkpKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZUtleSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlkKCkgPyBbc3RvcmFnZUtleSwgdGhpcy5pZCgpXS5qb2luKCctJykgOiBudWxsKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVkV2l0aCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5zdG9yYWdlS2V5KCkgPyBKU09OLnBhcnNlKHRoaXMubG9jYWxTdG9yYWdlLnJldHJpZXZlKHRoaXMuc3RvcmFnZUtleSgpKSB8fCAne30nKS53aWR0aCB8fCAwIDogMFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFNpZGUodGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluV2lkdGgodGhpcy5taW4pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1heFdpZHRoKHRoaXMubWF4KTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRXaWR0aCh0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS51cGRhdGVSZXNpemluZyh0aGlzLl91cGRhdGVTaWRlbmF2RXZlbnQkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRDb250ZW50Q29udGFpbmVyU3BhY2luZyh0aGlzLl9jb250ZW50Q29udGFpbmVyUGFkZGluZyQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldEV4cGFuZGVkKHRoaXMuZXhwYW5kZWQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbk1lbnVEaXN0YW5jZSh0aGlzLm1pbk1lbnVEaXN0YW5jZSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZSgpICYmIHRoaXMuc3RvcmVkV2l0aCgpKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLndpZHRoLnNldCh0aGlzLnN0b3JlZFdpdGgoKSkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUoKSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51U3RhdGUuc2V0KCdjbG9zZScpKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBzdGFydFJlc2l6aW5nKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc2l6YWJsZSgpKSByZXR1cm47XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc3RhcnRSZXNpemluZyhldmVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcpXG4gIHN0b3BSZXNpemluZygpIHtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zdG9wUmVzaXppbmcoKTtcbiAgICB0aGlzLnN0b3JhZ2VLZXkoKSAmJlxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc3RvcmUodGhpcy5zdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KHsgd2lkdGg6IHRoaXMuc2lkZW5hdlN0b3JlLndpZHRoKCkgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUljb24oKSB7XG4gICAgcmV0dXJuICh0aGlzLmV4cGFuZGVkKCkgJiYgdGhpcy5wb3NpdGlvbigpID09PSAnbGVmdCcpIHx8ICghdGhpcy5leHBhbmRlZCgpICYmIHRoaXMucG9zaXRpb24oKSA9PT0gJ3JpZ2h0JylcbiAgICAgID8gZmFDaGV2cm9uTGVmdFxuICAgICAgOiBmYUNoZXZyb25SaWdodDtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNZW51KCkge1xuICAgIGlmICh0aGlzLnNpZGVuYXZTdG9yZS5oYXNNZW51V2lkdGhDaGFuZ2VkKCkgJiYgdGhpcy5leHBhbmRlZCgpKSByZXR1cm47XG5cbiAgICB0aGlzLmV4cGFuZGVkKCkgPyB0aGlzLmhpZGVNZW51KCkgOiB0aGlzLnNob3dNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZU1lbnUoKSB7XG4gICAgdGhpcy5leHBhbmRlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3dNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgY29uc3QgZGlkT3BlbiA9IGV2ZW50LnRvU3RhdGUgIT09ICdoaWRkZW4nO1xuICAgIHRoaXMubWVudVN0YXRlLnNldChkaWRPcGVuID8gJ29wZW4nIDogJ2Nsb3NlJyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb250ZW50TGVmdFNpZGVTcGFjZShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbigpO1xuICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQubmF0aXZlRWxlbWVudCwgbnVsbCk7XG4gICAgY29uc3QgcGFkZGluZyA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLScgKyBwb3NpdGlvbik7XG4gICAgY29uc3QgbWFyZ2luID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi0nICsgcG9zaXRpb24pO1xuICAgIHJldHVybiBwYXJzZUludChwYWRkaW5nLCAxMCkgKyBwYXJzZUludChtYXJnaW4sIDEwKTtcbiAgfVxufVxuIiwiQGlmICh2aXNpYmxlKCkpIHtcbiAgQGlmIChpc0NvbXBhY3QoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJjb21wYWN0LWhlYWRlclwiPlxuICAgICAgPGRpdiBbbmdDbGFzc109XCJjb21wYWN0SGVhZGVyQ2xhc3MoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1hbGlnbi1pdGVtcy1mbGV4LXN0YXJ0IGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuIHctMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtZmxleC1ncm93LTEgaXMtanVzdGlmeS1jb250ZW50LXNwYWNlLWJldHdlZW4gaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uXCI+XG4gICAgICAgICAgICBAaWYgKGRyYXdlckhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAobGlua3MoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biAjb3B0aW9uRGQ9XCJuZ2JEcm9wZG93blwiIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcGFjdC1oZWFkZXItLWJ0biBidXR0b24gaXMtc21hbGwgaXMtbm8tc2hhZG93XCJcbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJhd2VyLW1lbnVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICBNZW51XG5cbiAgICAgICAgICAgICAgICA8ZmEtaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuX19pY29uXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cIm9wdGlvbkRkLmlzT3BlbigpID8gZmFDaGV2cm9uVXAgOiBmYUNoZXZyb25Eb3duXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZHJhd2VyLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBuYXZpZ2F0aW9uLW1lbnUtZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgIDxoZS1uYXZpZ2F0aW9uLW1lbnUgKGNsb3NlZCk9XCJvcHRpb25EZC5jbG9zZSgpXCIgW2xpbmtzXT1cImxpbmtzKClcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGFzaWRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNoZWxsX19tZW51Q29udGVudCB8IGgtMTAwXCJcbiAgICAgICAgKEBzaWRlTWVudS5kb25lKT1cImFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgIFtAc2lkZU1lbnVdPVwiZXhwYW5kZWQoKSA/ICdmdWxsJyA6ICdoaWRkZW4nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBpcy1vdmVyZmxvdy15LWF1dG8gaXMtcHktNCBpcy1weC0yXCI+XG4gICAgICAgICAgQGlmIChkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlckhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobGlua3MoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGhlLW5hdmlnYXRpb24tbWVudSBbbGlua3NdPVwibGlua3MoKVwiPlxuICAgICAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBvdXRlci1jb250ZW50IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9oZS1uYXZpZ2F0aW9uLW1lbnU+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KClcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemluZygkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImlzLWFic29sdXRlIGlzLW92ZXJmbG93LWhpZGRlbiBpcy1mbGV4IGlzLWp1c3RpZnktY29udGVudC1jZW50ZXIgaXMtYWxpZ24taXRlbXMtY2VudGVyIHwgc2hlbGxfX21lbnVDb250ZW50LS10b2dnbGVcIlxuICAgICAgICAgIHBvaW50ZXI+XG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwidG9nZ2xlSWNvbigpXCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2FzaWRlPlxuICB9XG59XG5cbjxkaXYgW2NsYXNzLmlzLXJlc2l6aW5nXT1cImlzSG9sZGluZ1RvZ2dsZSgpXCIgY2xhc3M9XCJzaGVsbF9fY29udGVudCB8IGgtMTAwIHctMTAwIGlzLWZsZXhcIj5cbiAgPGRpdiBjbGFzcz1cInNoZWxsX19jb250ZW50LS1ib2R5IHwgdy0xMDBcIiBbQHJlZHVjZVdpZHRoXT1cInJlZHVjZUFuaW1hdGlvbigpXCI+XG4gICAgPGRpdiAjY29udGVudENvbnRhaW5lciBjbGFzcz1cInctMTAwXCIgW2NsYXNzTmFtZV09XCJjb250ZW50UGFkZGluZ1N0eWxlcygpXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZHJhd2VyLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RyYXdlci1jb250YWluZXIvZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FB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LEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQzsrR0F4S1Usd0JBQXdCO21HQUF4Qix3QkFBd0Isa3VFQUZ4QixDQUFDLFlBQVksQ0FBQywySEFPaUQsVUFBVSw2Q0MvRHRGLDBqR0FrRkEseXhFRDdDSSxnQkFBZ0Isb0pBQ2hCLGVBQWUsNE1BQ2YsT0FBTyxtRkFDUCxXQUFXLCtCQUNYLFdBQVcsb05BQ1gsZUFBZSw4REFDZixpQkFBaUIsZ0VBQ2pCLHVCQUF1QiwwSkFDdkIsZ0JBQWdCLHFKQUtOLFVBQVU7OzRGQVFYLHdCQUF3QjtrQkF6QnBDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxVQUFVLFFBQ2hCO3dCQUNKLFNBQVMsRUFBRSxhQUFhO3dCQUN4Qix3QkFBd0IsRUFBRSxZQUFZO3dCQUN0QyxxQkFBcUIsRUFBRSxhQUFhO3FCQUNyQyxhQUNVLENBQUMsWUFBWSxDQUFDO3dEQXFJekIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFDaGV2cm9uRG93biwgZmFDaGV2cm9uTGVmdCwgZmFDaGV2cm9uUmlnaHQsIGZhQ2hldnJvblVwIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB0eXBlIHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1lbnUsIE5nYkRyb3Bkb3duVG9nZ2xlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICduZ3gtd2Vic3RvcmFnZSc7XG5cbmltcG9ydCB7IEFOSU1BVElPTlMgfSBmcm9tICcuL2RyYXdlci1jb250YWluZXIuYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBzaWRlbmF2U3RvcmUsIGluaXRpYWxTdGF0ZSwgZHJhd2VyUG9zaXRpb24gfSBmcm9tICcuL3NpZGVuYXYuc3RvcmUnO1xuaW1wb3J0IHsgSU5hdmlnYXRpb25NZW51TGluaywgTmF2aWdhdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLW1lbnUvbmF2aWdhdGlvbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXNwb25zaXZlQnJlYWtwb2ludCwgUmVzcG9uc2l2ZVNlcnZpY2UgfSBmcm9tICcuLi9yZXNwb25zaXZlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG5jb25zdCBzdG9yYWdlS2V5ID0gJ2hlLWRyYXdlci1jb250YWluZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1kcmF3ZXItY29udGFpbmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdiRHJvcGRvd24sXG4gICAgTmdiRHJvcGRvd25NZW51LFxuICAgIE5nYkRyb3Bkb3duVG9nZ2xlLFxuICAgIE5hdmlnYXRpb25NZW51Q29tcG9uZW50LFxuICAgIFN2Z0ljb25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZHJhd2VyLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBBTklNQVRJT05TLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnaG9zdENsYXNzKCknLFxuICAgICdbYXR0ci5kcmF3ZXItcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuICAgICdbYXR0ci5kcmF3ZXItc3RhdGVdJzogJ21lbnVTdGF0ZSgpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtzaWRlbmF2U3RvcmVdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdlckNvbnRhaW5lckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlN0b3JlID0gaW5qZWN0KHNpZGVuYXZTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2l2ZVNlcnZpY2UgPSBpbmplY3QoUmVzcG9uc2l2ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnRDb250YWluZXIgPSB2aWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVTdGF0ZSA9IHNpZ25hbDwnb3BlbicgfCAnY2xvc2UnPignY2xvc2UnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4cGFuZGVkID0gc2lnbmFsKGluaXRpYWxTdGF0ZS5leHBhbmRlZCk7XG5cbiAgLyoqXG4gICAqIFRoZSBicmVha3BvaW50IGF0IHdoaWNoIHRoZSBkcmF3ZXIgd2lsbCBubyBsb25nZXIgYmUgY29tcGFjdC5cbiAgICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgd2lkdGggaW4gcGl4ZWxzLlxuICAgKiBJZiAnbm9uZScgaXMgcHJvdmlkZWQsIHRoZSBkcmF3ZXIgd2lsbCBuZXZlciBiZSBjb21wYWN0LlxuICAgKiBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBwcm92aWRlZCwgdGhlIGRyYXdlciB3aWxsIGJlIGNvbXBhY3QgdW50aWwgdGhhdCBicmVha3BvaW50LlxuICAgKiBAZGVmYXVsdCAndGFibGV0JyAtIHRoZSBkcmF3ZXIgd2lsbCBiZSBjb21wYWN0IHVudGlsIHRoZSB0YWJsZXQgYnJlYWtwb2ludC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjb21wYWN0QnJlYWtwb2ludCA9IGlucHV0PFJlc3BvbnNpdmVCcmVha3BvaW50PigndGFibGV0Jyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwb3NpdGlvbiA9IGlucHV0PGRyYXdlclBvc2l0aW9uPihpbml0aWFsU3RhdGUuc2lkZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXI+KGluaXRpYWxTdGF0ZS5taW5XaWR0aCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3aWR0aCA9IG1vZGVsPG51bWJlcj4oaW5pdGlhbFN0YXRlLndpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1heFdpZHRoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc2l6YWJsZSA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGVudFBhZGRpbmdTdHlsZXMgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBtZW51T3ZlcmxhcCA9IGlucHV0KHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGlua3MgPSBpbnB1dDxJTmF2aWdhdGlvbk1lbnVMaW5rW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlckhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21wYWN0SGVhZGVyQ2xhc3MgPSBpbnB1dDxOZ0NsYXNzWyduZ0NsYXNzJ10+KG51bGwpO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGlzdGFuY2UgYmV0d2VlbiB0aGUgbWVudSBhbmQgdGhlIGVkZ2Ugb2YgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbk1lbnVEaXN0YW5jZSA9IGlucHV0PG51bWJlcj4oaW5pdGlhbFN0YXRlLm1pbk1lbnVEaXN0YW5jZSk7XG4gIC8qKlxuICAgKiBHaXZpbmcgYW4gaWQgdG8gdGhlIG1lbnUgc28gdGhhdCBpdCBjYW4gc3RvcmUgdGhlIHJlc2l6ZWQgcG9zaXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBpbnB1dCgnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dEZyb21PYnNlcnZhYmxlKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLm1lbnVTdGF0ZSkucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBmaWx0ZXIoc3RhdGUgPT4gc3RhdGUgPT09ICdvcGVuJyksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZShcbiAgICB0b09ic2VydmFibGUodGhpcy5tZW51U3RhdGUpLnBpcGUoXG4gICAgICBza2lwKDEpLFxuICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlID09PSAnY2xvc2UnKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgIClcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhQ2hldnJvbkRvd24gPSBmYUNoZXZyb25Eb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aXNpYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbdGhpcy5saW5rcygpPy5sZW5ndGggPiAwLCAhIXRoaXMuZHJhd2VySGVhZGVyVGVtcGxhdGUoKSwgISF0aGlzLmRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXS5zb21lKEJvb2xlYW4pXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzQ29tcGFjdCA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmNvbXBhY3RCcmVha3BvaW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGJyZWFrcG9pbnQgPT5cbiAgICAgICAgdGhpcy5yZXNwb25zaXZlU2VydmljZS5pc0Fib3ZlQnJlYWtwb2ludCQoYnJlYWtwb2ludCkucGlwZShtYXAoaXNBYm92ZUJyZWFrcG9pbnQgPT4gIWlzQWJvdmVCcmVha3BvaW50KSlcbiAgICAgIClcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIFsnaXMtZmxleCcsIHRoaXMuaXNDb21wYWN0KCkgPyAnaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uJyA6ICcnLCB0aGlzLnJlc2l6YWJsZSgpID8gJ2lzLXJlc2l6YWJsZScgOiAnJ10uam9pbignICcpXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0hvbGRpbmdUb2dnbGUgPSB0aGlzLnNpZGVuYXZTdG9yZS5pc1Jlc2l6aW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZVNpZGVuYXZFdmVudCQgPSB0b09ic2VydmFibGUodGhpcy5zaWRlbmF2U3RvcmUuaXNSZXNpemluZykucGlwZShcbiAgICBzd2l0Y2hNYXAobGlzdGVuID0+IChsaXN0ZW4gPyAoZnJvbUV2ZW50KHdpbmRvdywgJ21vdXNlbW92ZScpIGFzIE9ic2VydmFibGU8TW91c2VFdmVudD4pIDogRU1QVFkpKSxcbiAgICB0aHJvdHRsZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRDb250YWluZXIkID0gdG9PYnNlcnZhYmxlKHRoaXMuY29udGVudENvbnRhaW5lcikucGlwZShmaWx0ZXIoeCA9PiAhIXgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaG9zdENvbXBvbmVudFdpZHRoJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKHN0YXJ0V2l0aCh3aW5kb3cuaW5uZXJXaWR0aCkpO1xuXG4gIC8qKlxuICAgKiB3ZSB1c2UgY29tYmluZUxhdGVzdCBpbnN0ZWFkIG9mIGNvbXB1dGVkIHRvIGF2b2lkIHRoZSBhbmltYXRpb24gZmxpY2tlcmluZyAod2FpdCBmb3IgYWxsIHNvdXJjZXMgdG8gZW1pdClcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSByZWR1Y2VBbmltYXRpb24gPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5leHBhbmRlZCksIHRvT2JzZXJ2YWJsZSh0aGlzLmlzQ29tcGFjdCksIHRvT2JzZXJ2YWJsZSh0aGlzLnZpc2libGUpXSkucGlwZShcbiAgICAgIG1hcCgoW2V4cGFuZGVkLCBpc0NvbXBhY3QsIHZpc2libGVdKSA9PiAoW2V4cGFuZGVkLCAhaXNDb21wYWN0LCB2aXNpYmxlXS5ldmVyeShCb29sZWFuKSA/ICdyZWR1Y2VkJyA6ICdmdWxsJykpXG4gICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50Q29udGFpbmVyUGFkZGluZyQgPSB0aGlzLl9ob3N0Q29tcG9uZW50V2lkdGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2NvbnRlbnRDb250YWluZXIkLnBpcGUobWFwKGVsID0+IHRoaXMuX2dldENvbnRlbnRMZWZ0U2lkZVNwYWNlKGVsKSkpKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZUtleSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlkKCkgPyBbc3RvcmFnZUtleSwgdGhpcy5pZCgpXS5qb2luKCctJykgOiBudWxsKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVkV2l0aCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5zdG9yYWdlS2V5KCkgPyBKU09OLnBhcnNlKHRoaXMubG9jYWxTdG9yYWdlLnJldHJpZXZlKHRoaXMuc3RvcmFnZUtleSgpKSB8fCAne30nKS53aWR0aCB8fCAwIDogMFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldFNpZGUodGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc2V0TWluV2lkdGgodGhpcy5taW4pO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1heFdpZHRoKHRoaXMubWF4KTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRXaWR0aCh0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS51cGRhdGVSZXNpemluZyh0aGlzLl91cGRhdGVTaWRlbmF2RXZlbnQkKTtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zZXRDb250ZW50Q29udGFpbmVyU3BhY2luZyh0aGlzLl9jb250ZW50Q29udGFpbmVyUGFkZGluZyQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldEV4cGFuZGVkKHRoaXMuZXhwYW5kZWQpO1xuICAgIHRoaXMuc2lkZW5hdlN0b3JlLnNldE1pbk1lbnVEaXN0YW5jZSh0aGlzLm1pbk1lbnVEaXN0YW5jZSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6YWJsZSgpICYmIHRoaXMuc3RvcmVkV2l0aCgpKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLndpZHRoLnNldCh0aGlzLnN0b3JlZFdpdGgoKSkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUoKSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51U3RhdGUuc2V0KCdjbG9zZScpKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBzdGFydFJlc2l6aW5nKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc2l6YWJsZSgpKSByZXR1cm47XG4gICAgdGhpcy5zaWRlbmF2U3RvcmUuc3RhcnRSZXNpemluZyhldmVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcpXG4gIHN0b3BSZXNpemluZygpIHtcbiAgICB0aGlzLnNpZGVuYXZTdG9yZS5zdG9wUmVzaXppbmcoKTtcbiAgICB0aGlzLnN0b3JhZ2VLZXkoKSAmJlxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc3RvcmUodGhpcy5zdG9yYWdlS2V5KCksIEpTT04uc3RyaW5naWZ5KHsgd2lkdGg6IHRoaXMuc2lkZW5hdlN0b3JlLndpZHRoKCkgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUljb24oKSB7XG4gICAgcmV0dXJuICh0aGlzLmV4cGFuZGVkKCkgJiYgdGhpcy5wb3NpdGlvbigpID09PSAnbGVmdCcpIHx8ICghdGhpcy5leHBhbmRlZCgpICYmIHRoaXMucG9zaXRpb24oKSA9PT0gJ3JpZ2h0JylcbiAgICAgID8gZmFDaGV2cm9uTGVmdFxuICAgICAgOiBmYUNoZXZyb25SaWdodDtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNZW51KCkge1xuICAgIGlmICh0aGlzLnNpZGVuYXZTdG9yZS5oYXNNZW51V2lkdGhDaGFuZ2VkKCkgJiYgdGhpcy5leHBhbmRlZCgpKSByZXR1cm47XG5cbiAgICB0aGlzLmV4cGFuZGVkKCkgPyB0aGlzLmhpZGVNZW51KCkgOiB0aGlzLnNob3dNZW51KCk7XG4gIH1cblxuICBwdWJsaWMgaGlkZU1lbnUoKSB7XG4gICAgdGhpcy5leHBhbmRlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIHNob3dNZW51KCkge1xuICAgIHRoaXMuZXhwYW5kZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgY29uc3QgZGlkT3BlbiA9IGV2ZW50LnRvU3RhdGUgIT09ICdoaWRkZW4nO1xuICAgIHRoaXMubWVudVN0YXRlLnNldChkaWRPcGVuID8gJ29wZW4nIDogJ2Nsb3NlJyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb250ZW50TGVmdFNpZGVTcGFjZShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbigpO1xuICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQubmF0aXZlRWxlbWVudCwgbnVsbCk7XG4gICAgY29uc3QgcGFkZGluZyA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLScgKyBwb3NpdGlvbik7XG4gICAgY29uc3QgbWFyZ2luID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi0nICsgcG9zaXRpb24pO1xuICAgIHJldHVybiBwYXJzZUludChwYWRkaW5nLCAxMCkgKyBwYXJzZUludChtYXJnaW4sIDEwKTtcbiAgfVxufVxuIiwiQGlmICh2aXNpYmxlKCkpIHtcbiAgQGlmIChpc0NvbXBhY3QoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJjb21wYWN0LWhlYWRlclwiPlxuICAgICAgPGRpdiBbbmdDbGFzc109XCJjb21wYWN0SGVhZGVyQ2xhc3MoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1hbGlnbi1pdGVtcy1mbGV4LXN0YXJ0IGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuIHctMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtZmxleC1ncm93LTEgaXMtanVzdGlmeS1jb250ZW50LXNwYWNlLWJldHdlZW4gaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uXCI+XG4gICAgICAgICAgICBAaWYgKGRyYXdlckhlYWRlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChkcmF3ZXJNZW51SGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAobGlua3MoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biAjb3B0aW9uRGQ9XCJuZ2JEcm9wZG93blwiIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcGFjdC1oZWFkZXItLWJ0biBidXR0b24gaXMtc21hbGwgaXMtbm8tc2hhZG93XCJcbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiZHJhd2VyLW1lbnVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICBNZW51XG5cbiAgICAgICAgICAgICAgICA8ZmEtaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wYWN0LWhlYWRlci0tYnRuX19pY29uXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cIm9wdGlvbkRkLmlzT3BlbigpID8gZmFDaGV2cm9uVXAgOiBmYUNoZXZyb25Eb3duXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGlkPVwiZHJhd2VyLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudCBuYXZpZ2F0aW9uLW1lbnUtZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgIDxoZS1uYXZpZ2F0aW9uLW1lbnUgKGNsb3NlZCk9XCJvcHRpb25EZC5jbG9zZSgpXCIgW2xpbmtzXT1cImxpbmtzKClcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGFzaWRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNoZWxsX19tZW51Q29udGVudCB8IGgtMTAwXCJcbiAgICAgICAgKEBzaWRlTWVudS5kb25lKT1cImFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgIFtAc2lkZU1lbnVdPVwiZXhwYW5kZWQoKSA/ICdmdWxsJyA6ICdoaWRkZW4nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBpcy1vdmVyZmxvdy15LWF1dG8gaXMtcHktNCBpcy1weC0yXCI+XG4gICAgICAgICAgQGlmIChkcmF3ZXJIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlckhlYWRlclRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobGlua3MoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGhlLW5hdmlnYXRpb24tbWVudSBbbGlua3NdPVwibGlua3MoKVwiPlxuICAgICAgICAgICAgICBAaWYgKGRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBvdXRlci1jb250ZW50IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyYXdlck1lbnVIZWFkZXJUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9oZS1uYXZpZ2F0aW9uLW1lbnU+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KClcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemluZygkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImlzLWFic29sdXRlIGlzLW92ZXJmbG93LWhpZGRlbiBpcy1mbGV4IGlzLWp1c3RpZnktY29udGVudC1jZW50ZXIgaXMtYWxpZ24taXRlbXMtY2VudGVyIHwgc2hlbGxfX21lbnVDb250ZW50LS10b2dnbGVcIlxuICAgICAgICAgIHBvaW50ZXI+XG4gICAgICAgICAgQGlmIChyZXNpemFibGUoKSkge1xuICAgICAgICAgICAgPHN2Zy1pY29uIG5hbWU9XCJkcmFnXCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInRvZ2dsZUljb24oKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXNpZGU+XG4gIH1cbn1cblxuPGRpdiBbY2xhc3MuaXMtcmVzaXppbmddPVwiaXNIb2xkaW5nVG9nZ2xlKClcIiBjbGFzcz1cInNoZWxsX19jb250ZW50IHwgaC0xMDAgdy0xMDAgaXMtZmxleFwiPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxfX2NvbnRlbnQtLWJvZHkgfCB3LTEwMFwiIFtAcmVkdWNlV2lkdGhdPVwicmVkdWNlQW5pbWF0aW9uKClcIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyIGNsYXNzPVwidy0xMDBcIiBbY2xhc3NOYW1lXT1cImNvbnRlbnRQYWRkaW5nU3R5bGVzKClcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltkcmF3ZXItY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -7,6 +7,9 @@ import { getColor } from '../../common/color';
|
|
|
7
7
|
import { formatDate, uniqueDatesBetween, isDateBetween } from '../../common/node-utils';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@angular/forms";
|
|
10
|
+
const sortedPoints = (values) => Object.entries(values)
|
|
11
|
+
.map(([x, y]) => ({ x, y }))
|
|
12
|
+
.sort((a, b) => new Date(a.x).getTime() - new Date(b.x).getTime());
|
|
10
13
|
export class SitesManagementChartComponent {
|
|
11
14
|
constructor() {
|
|
12
15
|
this.site = input.required();
|
|
@@ -25,26 +28,24 @@ export class SitesManagementChartComponent {
|
|
|
25
28
|
.filter(Boolean));
|
|
26
29
|
this.chartColors = computed(() => this.selectedManagement().reduce((prev, { term }, index) => ({ ...prev, [term.name]: getColor(index) }), {}));
|
|
27
30
|
// compute list of all dates used on the chart, sorted ascending.
|
|
31
|
+
// need to add dates even when there are no data, otherwise the chart will stack wrongly
|
|
28
32
|
// @ee https://github.com/chartjs/Chart.js/issues/5405
|
|
29
33
|
this.chartDates = computed(() => uniqueDatesBetween(this.dates()));
|
|
30
|
-
this.chartValues = computed(() => this.selectedManagement().
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
...prev,
|
|
39
|
-
[curr.term.name]: [...(prev[curr.term.name] || []), curr]
|
|
40
|
-
}), {}));
|
|
34
|
+
this.chartValues = computed(() => this.selectedManagement().reduce((prev, { term, startDate, endDate, value }) => {
|
|
35
|
+
prev[term.name] = this.chartDates().reduce((group, date) => {
|
|
36
|
+
const key = date.toISOString();
|
|
37
|
+
group[key] = (group[key] || 0) + (isDateBetween(date, startDate || endDate, endDate) ? +value : 0);
|
|
38
|
+
return group;
|
|
39
|
+
}, prev[term.name] || {});
|
|
40
|
+
return prev;
|
|
41
|
+
}, {}));
|
|
41
42
|
this.chartData = computed(() => ({
|
|
42
|
-
datasets: Object.entries(this.
|
|
43
|
+
datasets: Object.entries(this.chartValues()).map(([label, data]) => ({
|
|
43
44
|
label,
|
|
44
|
-
data: data
|
|
45
|
+
data: sortedPoints(data),
|
|
45
46
|
backgroundColor: this.chartColors()[label],
|
|
46
47
|
borderColor: this.chartColors()[label],
|
|
47
|
-
barPercentage:
|
|
48
|
+
barPercentage: 3,
|
|
48
49
|
barThickness: 'flex'
|
|
49
50
|
}))
|
|
50
51
|
}));
|
|
@@ -92,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
92
93
|
type: Component,
|
|
93
94
|
args: [{ selector: 'he-sites-management-chart', standalone: true, imports: [FormsModule, ChartComponent, KeyToLabelPipe], template: "<div class=\"p-3\">\n @if (termTypes().length > 1) {\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Term Type</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectedTermType.set($event.target.value)\">\n @for (termType of termTypes(); track termType) {\n <option [value]=\"termType\">{{ termType | keyToLabel }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n\n <div class=\"is-mt-1\">\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig\"></he-chart>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart ::ng-deep .chart-container{min-height:400px}\n"] }]
|
|
94
95
|
}], ctorParameters: () => [] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMtbWFuYWdlbWVudC1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2l0ZXMvc2l0ZXMtbWFuYWdlbWVudC1jaGFydC9zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0L3NpdGVzLW1hbmFnZW1lbnQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBdUJ4RixNQUFNLE9BQU8sNkJBQTZCO0lBZ0d4QztRQS9GbUIsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWUsQ0FBQztRQUV2QyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7UUFFMUQsMEJBQXFCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNyRCxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ2QsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUs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QUFFLElBQUk7eUJBQ2Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFHQSxNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsaUNBQWlDO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7K0dBNUdVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHFOQ2hDMUMsMnhCQXNCQSxxSkRNWSxXQUFXLDRPQUFFLGNBQWMsNEVBQUUsY0FBYzs7NEZBSTFDLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJU2l0ZUpTT05MRCwgTWFuYWdlbWVudCwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnREYXRhLCBDaGFydFBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xuXG5pbXBvcnQgeyBDaGFydENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NoYXJ0JztcbmltcG9ydCB7IEtleVRvTGFiZWxQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2tleS10by1sYWJlbC5waXBlJztcbmltcG9ydCB7IGdldENvbG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbG9yJztcbmltcG9ydCB7IGZvcm1hdERhdGUsIHVuaXF1ZURhdGVzQmV0d2VlbiwgaXNEYXRlQmV0d2VlbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9ub2RlLXV0aWxzJztcblxuaW50ZXJmYWNlIElDb2xvck1hcHBpbmcge1xuICBbdGVybTogc3RyaW5nXTogc3RyaW5nO1xufVxudHlwZSBncm91cGVkTWFuYWdlbWVudCA9IHtcbiAgW3R5cGUgaW4gVGVybVRlcm1UeXBlXTogTWFuYWdlbWVudFtdO1xufTtcbmludGVyZmFjZSBJQ2hhcnRWYWx1ZSB7XG4gIHBvaW50OiBDaGFydFBvaW50O1xuICB0ZXJtOiBUZXJtO1xufVxuaW50ZXJmYWNlIElDaGFydFZhbHVlcyB7XG4gIFt0ZXJtOiBzdHJpbmddOiBJQ2hhcnRWYWx1ZVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBDaGFydENvbXBvbmVudCwgS2V5VG9MYWJlbFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2l0ZXMtbWFuYWdlbWVudC1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBTaXRlc01hbmFnZW1lbnRDaGFydENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaXRlID0gaW5wdXQucmVxdWlyZWQ8SVNpdGVKU09OTEQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYW5hZ2VtZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaXRlKCkubWFuYWdlbWVudCA/PyBbXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYW5hZ2VtZW50UGVyVGVybVR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubWFuYWdlbWVudCgpXG4gICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOdW1iZXIodmFsdWUpKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBbY3Vyci50ZXJtLnRlcm1UeXBlXTogWy4uLihwcmV2W2N1cnIudGVybS50ZXJtVHlwZV0gfHwgW10pLCBjdXJyXVxuICAgICAgICB9KSxcbiAgICAgICAge30gYXMgZ3JvdXBlZE1hbmFnZW1lbnRcbiAgICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlcm1UeXBlcyA9IGNvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKHRoaXMubWFuYWdlbWVudFBlclRlcm1UeXBlKCkpLnNvcnQoKSBhcyBUZXJtVGVybVR5cGVbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFRlcm1UeXBlID0gc2lnbmFsPFRlcm1UZXJtVHlwZT4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZE1hbmFnZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1hbmFnZW1lbnRQZXJUZXJtVHlwZSgpPy5bdGhpcy5zZWxlY3RlZFRlcm1UeXBlKCldID8/IFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5zZWxlY3RlZE1hbmFnZW1lbnQoKVxuICAgICAgLmZsYXRNYXAoKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pID0+IFtmb3JtYXREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSksIGZvcm1hdERhdGUoZW5kRGF0ZSwgZmFsc2UpXSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0Q29sb3JzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkTWFuYWdlbWVudCgpLnJlZHVjZShcbiAgICAgIChwcmV2LCB7IHRlcm0gfSwgaW5kZXgpID0+ICh7IC4uLnByZXYsIFt0ZXJtLm5hbWVdOiBnZXRDb2xvcihpbmRleCkgfSksXG4gICAgICB7fSBhcyBJQ29sb3JNYXBwaW5nXG4gICAgKVxuICApO1xuICAvLyBjb21wdXRlIGxpc3Qgb2YgYWxsIGRhdGVzIHVzZWQgb24gdGhlIGNoYXJ0LCBzb3J0ZWQgYXNjZW5kaW5nLlxuICAvLyBAZWUgaHR0cHM6Ly9naXRodWIuY29tL2NoYXJ0anMvQ2hhcnQuanMvaXNzdWVzLzU0MDVcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydERhdGVzID0gY29tcHV0ZWQoKCkgPT4gdW5pcXVlRGF0ZXNCZXR3ZWVuKHRoaXMuZGF0ZXMoKSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0VmFsdWVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkTWFuYWdlbWVudCgpLmZsYXRNYXAoKHsgc3RhcnREYXRlLCBlbmREYXRlLCB2YWx1ZSwgdGVybSB9KSA9PlxuICAgICAgdGhpcy5jaGFydERhdGVzKClcbiAgICAgICAgLy8gLmZpbHRlcihkYXRlID0+IGlzRGF0ZUJldHdlZW4oZGF0ZSwgc3RhcnREYXRlIHx8IGVuZERhdGUsIGVuZERhdGUpKVxuICAgICAgICAubWFwKFxuICAgICAgICAgIGRhdGUgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIHBvaW50OiB7IHg6IGRhdGUsIHk6IGlzRGF0ZUJldHdlZW4oZGF0ZSwgc3RhcnREYXRlIHx8IGVuZERhdGUsIGVuZERhdGUpID8gdmFsdWUgOiAwIH0sXG4gICAgICAgICAgICAgIHRlcm1cbiAgICAgICAgICAgIH0pIGFzIElDaGFydFZhbHVlXG4gICAgICAgIClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cGVkVmFsdWVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmNoYXJ0VmFsdWVzKCkucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFtjdXJyLnRlcm0ubmFtZV06IFsuLi4ocHJldltjdXJyLnRlcm0ubmFtZV0gfHwgW10pLCBjdXJyXVxuICAgICAgfSksXG4gICAgICB7fSBhcyBJQ2hhcnRWYWx1ZXNcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydERhdGE6IFNpZ25hbDxDaGFydERhdGE+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBkYXRhc2V0czogT2JqZWN0LmVudHJpZXModGhpcy5ncm91cGVkVmFsdWVzKCkpLm1hcCgoW2xhYmVsLCBkYXRhXSkgPT4gKHtcbiAgICAgIGxhYmVsLFxuICAgICAgZGF0YTogZGF0YS5tYXAoKHsgcG9pbnQgfSkgPT4gcG9pbnQpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmNoYXJ0Q29sb3JzKClbbGFiZWxdLFxuICAgICAgYm9yZGVyQ29sb3I6IHRoaXMuY2hhcnRDb2xvcnMoKVtsYWJlbF0sXG4gICAgICBiYXJQZXJjZW50YWdlOiAyLFxuICAgICAgYmFyVGhpY2tuZXNzOiAnZmxleCdcbiAgICB9KSlcbiAgfSkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRDb25maWc6IFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPiA9IHtcbiAgICB0eXBlOiAnYmFyJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBsZWdlbmQ6IHtcbiAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB4QXhlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICd0aW1lJyxcbiAgICAgICAgICAgIHRpbWU6IHtcbiAgICAgICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YWNrZWQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHlBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICAgIHRpY2tzOiB7XG4gICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YWNrZWQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBtYWtlIHN1cmUgc2VsZWN0ZWQgdGVybSBleGlzdHNcbiAgICAgICAgY29uc3QgdGVybVR5cGVzID0gdGhpcy50ZXJtVHlwZXMoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtVHlwZSA9IHRoaXMuc2VsZWN0ZWRUZXJtVHlwZSgpO1xuICAgICAgICBpZiAoIXNlbGVjdGVkVGVybVR5cGUgfHwgIXRlcm1UeXBlcy5pbmNsdWRlcyhzZWxlY3RlZFRlcm1UeXBlKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtVHlwZS5zZXQodGVybVR5cGVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgQGlmICh0ZXJtVHlwZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHQtMiBweC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGEgVGVybSBUeXBlPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0ZWRUZXJtVHlwZS5zZXQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgIEBmb3IgKHRlcm1UeXBlIG9mIHRlcm1UeXBlcygpOyB0cmFjayB0ZXJtVHlwZSkge1xuICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ0ZXJtVHlwZVwiPnt7IHRlcm1UeXBlIHwga2V5VG9MYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImlzLW10LTFcIj5cbiAgICA8aGUtY2hhcnQgY2xhc3M9XCJpcy1yZWxhdGl2ZVwiIFtkYXRhXT1cImNoYXJ0RGF0YSgpXCIgW2NvbmZpZ109XCJjaGFydENvbmZpZ1wiPjwvaGUtY2hhcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMtbWFuYWdlbWVudC1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2l0ZXMvc2l0ZXMtbWFuYWdlbWVudC1jaGFydC9zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0L3NpdGVzLW1hbmFnZW1lbnQtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBa0J4RixNQUFNLFlBQVksR0FBRyxDQUFDLE1BQW1CLEVBQUUsRUFBRSxDQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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TixLQUFLLEVBQUU7d0JBQ0w7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFO2dDQUNKLElBQUksRUFBRSxPQUFPOzZCQUNkOzRCQUNELE9BQU8sRUFBRSxJQUFJO3lCQUNkO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTDs0QkFDRSxRQUFRLEVBQUUsTUFBTTs0QkFDaEIsS0FBSyxFQUFFO2dDQUNMLEdBQUcsRUFBRSxDQUFDOzZCQUNQOzRCQUNELE9BQU8sRUFBRSxJQUFJO3lCQUNkO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBR0EsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILGlDQUFpQztZQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDOytHQWhHVSw2QkFBNkI7bUdBQTdCLDZCQUE2QixxTkN2QzFDLDJ4QkFzQkEscUpEYVksV0FBVyw0T0FBRSxjQUFjLDRFQUFFLGNBQWM7OzRGQUkxQyw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbnB1dCwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSVNpdGVKU09OTEQsIE1hbmFnZW1lbnQsIFRlcm1UZXJtVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSB9IGZyb20gJ2NoYXJ0LmpzJztcblxuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydCc7XG5pbXBvcnQgeyBLZXlUb0xhYmVsUGlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9rZXktdG8tbGFiZWwucGlwZSc7XG5pbXBvcnQgeyBnZXRDb2xvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb2xvcic7XG5pbXBvcnQgeyBmb3JtYXREYXRlLCB1bmlxdWVEYXRlc0JldHdlZW4sIGlzRGF0ZUJldHdlZW4gfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5cbmludGVyZmFjZSBJQ29sb3JNYXBwaW5nIHtcbiAgW3Rlcm06IHN0cmluZ106IHN0cmluZztcbn1cblxudHlwZSBncm91cGVkTWFuYWdlbWVudCA9IHtcbiAgW3R5cGUgaW4gVGVybVRlcm1UeXBlXTogTWFuYWdlbWVudFtdO1xufTtcblxuaW50ZXJmYWNlIElDaGFydFZhbHVlIHtcbiAgW2RhdGU6IHN0cmluZ106IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElDaGFydFZhbHVlcyB7XG4gIFt0ZXJtOiBzdHJpbmddOiBJQ2hhcnRWYWx1ZTtcbn1cblxuY29uc3Qgc29ydGVkUG9pbnRzID0gKHZhbHVlczogSUNoYXJ0VmFsdWUpID0+XG4gIE9iamVjdC5lbnRyaWVzKHZhbHVlcylcbiAgICAubWFwKChbeCwgeV0pID0+ICh7IHgsIHkgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IG5ldyBEYXRlKGEueCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYi54KS5nZXRUaW1lKCkpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBDaGFydENvbXBvbmVudCwgS2V5VG9MYWJlbFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2l0ZXMtbWFuYWdlbWVudC1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zaXRlcy1tYW5hZ2VtZW50LWNoYXJ0LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBTaXRlc01hbmFnZW1lbnRDaGFydENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaXRlID0gaW5wdXQucmVxdWlyZWQ8SVNpdGVKU09OTEQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYW5hZ2VtZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaXRlKCkubWFuYWdlbWVudCA/PyBbXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYW5hZ2VtZW50UGVyVGVybVR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubWFuYWdlbWVudCgpXG4gICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOdW1iZXIodmFsdWUpKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBbY3Vyci50ZXJtLnRlcm1UeXBlXTogWy4uLihwcmV2W2N1cnIudGVybS50ZXJtVHlwZV0gfHwgW10pLCBjdXJyXVxuICAgICAgICB9KSxcbiAgICAgICAge30gYXMgZ3JvdXBlZE1hbmFnZW1lbnRcbiAgICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRlcm1UeXBlcyA9IGNvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKHRoaXMubWFuYWdlbWVudFBlclRlcm1UeXBlKCkpLnNvcnQoKSBhcyBUZXJtVGVybVR5cGVbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFRlcm1UeXBlID0gc2lnbmFsPFRlcm1UZXJtVHlwZT4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZE1hbmFnZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1hbmFnZW1lbnRQZXJUZXJtVHlwZSgpPy5bdGhpcy5zZWxlY3RlZFRlcm1UeXBlKCldID8/IFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5zZWxlY3RlZE1hbmFnZW1lbnQoKVxuICAgICAgLmZsYXRNYXAoKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pID0+IFtmb3JtYXREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSksIGZvcm1hdERhdGUoZW5kRGF0ZSwgZmFsc2UpXSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0Q29sb3JzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkTWFuYWdlbWVudCgpLnJlZHVjZShcbiAgICAgIChwcmV2LCB7IHRlcm0gfSwgaW5kZXgpID0+ICh7IC4uLnByZXYsIFt0ZXJtLm5hbWVdOiBnZXRDb2xvcihpbmRleCkgfSksXG4gICAgICB7fSBhcyBJQ29sb3JNYXBwaW5nXG4gICAgKVxuICApO1xuICAvLyBjb21wdXRlIGxpc3Qgb2YgYWxsIGRhdGVzIHVzZWQgb24gdGhlIGNoYXJ0LCBzb3J0ZWQgYXNjZW5kaW5nLlxuICAvLyBuZWVkIHRvIGFkZCBkYXRlcyBldmVuIHdoZW4gdGhlcmUgYXJlIG5vIGRhdGEsIG90aGVyd2lzZSB0aGUgY2hhcnQgd2lsbCBzdGFjayB3cm9uZ2x5XG4gIC8vIEBlZSBodHRwczovL2dpdGh1Yi5jb20vY2hhcnRqcy9DaGFydC5qcy9pc3N1ZXMvNTQwNVxuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0RGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB1bmlxdWVEYXRlc0JldHdlZW4odGhpcy5kYXRlcygpKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuc2VsZWN0ZWRNYW5hZ2VtZW50KCkucmVkdWNlKChwcmV2LCB7IHRlcm0sIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgdmFsdWUgfSkgPT4ge1xuICAgICAgcHJldlt0ZXJtLm5hbWVdID0gdGhpcy5jaGFydERhdGVzKCkucmVkdWNlKChncm91cCwgZGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBkYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGdyb3VwW2tleV0gPSAoZ3JvdXBba2V5XSB8fCAwKSArIChpc0RhdGVCZXR3ZWVuKGRhdGUsIHN0YXJ0RGF0ZSB8fCBlbmREYXRlLCBlbmREYXRlKSA/ICt2YWx1ZSA6IDApO1xuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICB9LCBwcmV2W3Rlcm0ubmFtZV0gfHwge30pO1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30gYXMgSUNoYXJ0VmFsdWVzKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnREYXRhOiBTaWduYWw8Q2hhcnREYXRhPiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZGF0YXNldHM6IE9iamVjdC5lbnRyaWVzKHRoaXMuY2hhcnRWYWx1ZXMoKSkubWFwKChbbGFiZWwsIGRhdGFdKSA9PiAoe1xuICAgICAgbGFiZWwsXG4gICAgICBkYXRhOiBzb3J0ZWRQb2ludHMoZGF0YSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuY2hhcnRDb2xvcnMoKVtsYWJlbF0sXG4gICAgICBib3JkZXJDb2xvcjogdGhpcy5jaGFydENvbG9ycygpW2xhYmVsXSxcbiAgICAgIGJhclBlcmNlbnRhZ2U6IDMsXG4gICAgICBiYXJUaGlja25lc3M6ICdmbGV4J1xuICAgIH0pKVxuICB9KSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydENvbmZpZzogUGFydGlhbDxDaGFydENvbmZpZ3VyYXRpb24+ID0ge1xuICAgIHR5cGU6ICdiYXInLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBkaXNwbGF5OiB0cnVlXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RpbWUnLFxuICAgICAgICAgICAgdGltZToge1xuICAgICAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBzZWxlY3RlZCB0ZXJtIGV4aXN0c1xuICAgICAgICBjb25zdCB0ZXJtVHlwZXMgPSB0aGlzLnRlcm1UeXBlcygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRlcm1UeXBlID0gdGhpcy5zZWxlY3RlZFRlcm1UeXBlKCk7XG4gICAgICAgIGlmICghc2VsZWN0ZWRUZXJtVHlwZSB8fCAhdGVybVR5cGVzLmluY2x1ZGVzKHNlbGVjdGVkVGVybVR5cGUpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm1UeXBlLnNldCh0ZXJtVHlwZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtM1wiPlxuICBAaWYgKHRlcm1UeXBlcygpLmxlbmd0aCA+IDEpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYSBUZXJtIFR5cGU8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RlZFRlcm1UeXBlLnNldCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgQGZvciAodGVybVR5cGUgb2YgdGVybVR5cGVzKCk7IHRyYWNrIHRlcm1UeXBlKSB7XG4gICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1UeXBlXCI+e3sgdGVybVR5cGUgfCBrZXlUb0xhYmVsIH19PC9vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8ZGl2IGNsYXNzPVwiaXMtbXQtMVwiPlxuICAgIDxoZS1jaGFydCBjbGFzcz1cImlzLXJlbGF0aXZlXCIgW2RhdGFdPVwiY2hhcnREYXRhKClcIiBbY29uZmlnXT1cImNoYXJ0Q29uZmlnXCI+PC9oZS1jaGFydD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -2524,7 +2524,7 @@ class DrawerContainerComponent {
|
|
|
2524
2524
|
return parseInt(padding, 10) + parseInt(margin, 10);
|
|
2525
2525
|
}
|
|
2526
2526
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2527
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", 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 }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", 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 (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "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"], outputs: ["closed"] }], animations: ANIMATIONS, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2527
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", 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 }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { width: "widthChange", 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 (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n @if (resizable()) {\n <svg-icon name=\"drag\" />\n } @else {\n <fa-icon [icon]=\"toggleIcon()\" />\n }\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "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"], outputs: ["closed"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }], animations: ANIMATIONS, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2528
2528
|
}
|
|
2529
2529
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DrawerContainerComponent, decorators: [{
|
|
2530
2530
|
type: Component$1,
|
|
@@ -2536,12 +2536,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
2536
2536
|
NgbDropdown,
|
|
2537
2537
|
NgbDropdownMenu,
|
|
2538
2538
|
NgbDropdownToggle,
|
|
2539
|
-
NavigationMenuComponent
|
|
2539
|
+
NavigationMenuComponent,
|
|
2540
|
+
SvgIconComponent
|
|
2540
2541
|
], changeDetection: ChangeDetectionStrategy.OnPush, animations: ANIMATIONS, host: {
|
|
2541
2542
|
'[class]': 'hostClass()',
|
|
2542
2543
|
'[attr.drawer-position]': 'position()',
|
|
2543
2544
|
'[attr.drawer-state]': 'menuState()'
|
|
2544
|
-
}, providers: [sidenavStore], template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n <fa-icon [icon]=\"toggleIcon()\" />\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
|
|
2545
|
+
}, providers: [sidenavStore], template: "@if (visible()) {\n @if (isCompact()) {\n <div class=\"compact-header\">\n <div [ngClass]=\"compactHeaderClass()\">\n <div class=\"is-flex is-align-items-flex-start is-justify-content-space-between w-100\">\n <div class=\"is-flex is-flex-grow-1 is-justify-content-space-between is-flex-direction-column\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (drawerMenuHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </div>\n\n @if (links()?.length > 0) {\n <div 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\" />\n </button>\n\n <div ngbDropdownMenu id=\"drawer-menu\">\n <div class=\"dropdown-content navigation-menu-dropdown\">\n <he-navigation-menu (closed)=\"optionDd.close()\" [links]=\"links()\" />\n </div>\n </div>\n </div>\n }\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 is-overflow-y-auto is-py-4 is-px-2\">\n @if (drawerHeaderTemplate()) {\n <ng-container [ngTemplateOutlet]=\"drawerHeaderTemplate()\" />\n }\n\n @if (links()?.length > 0) {\n <he-navigation-menu [links]=\"links()\">\n @if (drawerMenuHeaderTemplate()) {\n <ng-container outer-content [ngTemplateOutlet]=\"drawerMenuHeaderTemplate()\" />\n }\n </he-navigation-menu>\n }\n </div>\n <button\n (click)=\"toggleMenu()\"\n (mousedown)=\"startResizing($event)\"\n class=\"is-absolute is-overflow-hidden is-flex is-justify-content-center is-align-items-center | shell__menuContent--toggle\"\n pointer>\n @if (resizable()) {\n <svg-icon name=\"drag\" />\n } @else {\n <fa-icon [icon]=\"toggleIcon()\" />\n }\n </button>\n </div>\n </aside>\n }\n}\n\n<div [class.is-resizing]=\"isHoldingToggle()\" class=\"shell__content | h-100 w-100 is-flex\">\n <div class=\"shell__content--body | w-100\" [@reduceWidth]=\"reduceAnimation()\">\n <div #contentContainer class=\"w-100\" [className]=\"contentPaddingStyles()\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep :root{--drawer-toggle-position: -20px;--sidenav-left-width: 256px;--sidenav-right-width: 256px;--content-transition-left-x: 0;--content-transition-right-x: 0}:host-context[drawer-position=left]{--sidenav-side-transform: 1;--sidenav-width: var(--sidenav-left-width);--content-transition-x: var(--content-transition-left-x);--menu-transition-transform: -1}:host-context[drawer-position=right]{--sidenav-side-transform: 0;--sidenav-width: var(--sidenav-right-width);--content-transition-x: var(--content-transition-right-x);--menu-transition-transform: 1}:host-context[drawer-position=right] aside{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-toggle-position);border-radius:9px 0 0 9px}:host{position:relative;max-height:100%;display:flex;justify-content:space-between}: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)}:host aside .shell__menuContent--toggle{top:calc(50% - 24px);right:var(--drawer-toggle-position);background:#dbe3ea;border-radius:0 9px 9px 0;border:none;width:20px;height:48px}:host.is-resizable .shell__menuContent--toggle:active{cursor:col-resize}.shell__content--body{container-type:inline-size;transition:none}.shell__content:not(.is-resizing) .shell__content--body{transition:transform .3s ease-in-out,width .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)}he-navigation-menu ::ng-deep .menu{width:100%!important;min-width:100%!important;max-width:100%!important}\n"] }]
|
|
2545
2546
|
}], ctorParameters: () => [], propDecorators: { stopResizing: [{
|
|
2546
2547
|
type: HostListener,
|
|
2547
2548
|
args: ['window:mouseup']
|
|
@@ -12046,6 +12047,9 @@ const measurementValue = ({ value, depthLower, depthUpper, nodes }, termId) => n
|
|
|
12046
12047
|
? weighedAverage({ value, depthLower, depthUpper })
|
|
12047
12048
|
: propertyValue$1(value, termId);
|
|
12048
12049
|
|
|
12050
|
+
const sortedPoints = (values) => Object.entries(values)
|
|
12051
|
+
.map(([x, y]) => ({ x, y }))
|
|
12052
|
+
.sort((a, b) => new Date(a.x).getTime() - new Date(b.x).getTime());
|
|
12049
12053
|
class SitesManagementChartComponent {
|
|
12050
12054
|
constructor() {
|
|
12051
12055
|
this.site = input.required();
|
|
@@ -12064,26 +12068,24 @@ class SitesManagementChartComponent {
|
|
|
12064
12068
|
.filter(Boolean));
|
|
12065
12069
|
this.chartColors = computed(() => this.selectedManagement().reduce((prev, { term }, index) => ({ ...prev, [term.name]: getColor(index) }), {}));
|
|
12066
12070
|
// compute list of all dates used on the chart, sorted ascending.
|
|
12071
|
+
// need to add dates even when there are no data, otherwise the chart will stack wrongly
|
|
12067
12072
|
// @ee https://github.com/chartjs/Chart.js/issues/5405
|
|
12068
12073
|
this.chartDates = computed(() => uniqueDatesBetween(this.dates()));
|
|
12069
|
-
this.chartValues = computed(() => this.selectedManagement().
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
|
|
12074
|
-
|
|
12075
|
-
|
|
12076
|
-
|
|
12077
|
-
...prev,
|
|
12078
|
-
[curr.term.name]: [...(prev[curr.term.name] || []), curr]
|
|
12079
|
-
}), {}));
|
|
12074
|
+
this.chartValues = computed(() => this.selectedManagement().reduce((prev, { term, startDate, endDate, value }) => {
|
|
12075
|
+
prev[term.name] = this.chartDates().reduce((group, date) => {
|
|
12076
|
+
const key = date.toISOString();
|
|
12077
|
+
group[key] = (group[key] || 0) + (isDateBetween(date, startDate || endDate, endDate) ? +value : 0);
|
|
12078
|
+
return group;
|
|
12079
|
+
}, prev[term.name] || {});
|
|
12080
|
+
return prev;
|
|
12081
|
+
}, {}));
|
|
12080
12082
|
this.chartData = computed(() => ({
|
|
12081
|
-
datasets: Object.entries(this.
|
|
12083
|
+
datasets: Object.entries(this.chartValues()).map(([label, data]) => ({
|
|
12082
12084
|
label,
|
|
12083
|
-
data: data
|
|
12085
|
+
data: sortedPoints(data),
|
|
12084
12086
|
backgroundColor: this.chartColors()[label],
|
|
12085
12087
|
borderColor: this.chartColors()[label],
|
|
12086
|
-
barPercentage:
|
|
12088
|
+
barPercentage: 3,
|
|
12087
12089
|
barThickness: 'flex'
|
|
12088
12090
|
}))
|
|
12089
12091
|
}));
|