@valtimo/components 11.0.0 → 11.1.2
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/assets/css/carbon.scss +4 -0
- package/esm2022/lib/components/carbon-list/carbon-list.component.mjs +9 -4
- package/esm2022/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.formio.mjs +4 -1
- package/esm2022/lib/components/form-io/form-io-uploader/form-io-uploader.formio.mjs +4 -1
- package/esm2022/lib/components/form-io/form-io.component.mjs +97 -57
- package/esm2022/lib/components/form-io/form-io.module.mjs +19 -4
- package/esm2022/lib/components/form-io/formio-config.mjs +11 -6
- package/esm2022/lib/components/left-sidebar/left-sidebar.component.mjs +15 -34
- package/esm2022/lib/components/menu/menu.service.mjs +15 -28
- package/esm2022/lib/components/pending-changes/pending-changes.component.mjs +74 -0
- package/esm2022/lib/components/pending-changes/pending-changes.service.mjs +37 -0
- package/esm2022/lib/constants/index.mjs +2 -1
- package/esm2022/lib/constants/view-type-converter.constants.mjs +3 -0
- package/esm2022/lib/guards/index.mjs +17 -0
- package/esm2022/lib/guards/pending-changes.guard.mjs +2 -0
- package/esm2022/lib/models/form-io.model.mjs +1 -1
- package/esm2022/lib/pipes/index.mjs +2 -1
- package/esm2022/lib/pipes/is-array.pipe.mjs +29 -0
- package/esm2022/public_api.mjs +5 -1
- package/fesm2022/valtimo-components.mjs +404 -217
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/carbon-list/carbon-list.component.d.ts.map +1 -1
- package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.formio.d.ts.map +1 -1
- package/lib/components/form-io/form-io-uploader/form-io-uploader.formio.d.ts.map +1 -1
- package/lib/components/form-io/form-io.component.d.ts +26 -16
- package/lib/components/form-io/form-io.component.d.ts.map +1 -1
- package/lib/components/form-io/form-io.module.d.ts.map +1 -1
- package/lib/components/form-io/formio-config.d.ts +3 -1
- package/lib/components/form-io/formio-config.d.ts.map +1 -1
- package/lib/components/left-sidebar/left-sidebar.component.d.ts +5 -8
- package/lib/components/left-sidebar/left-sidebar.component.d.ts.map +1 -1
- package/lib/components/menu/menu.service.d.ts +11 -9
- package/lib/components/menu/menu.service.d.ts.map +1 -1
- package/lib/components/pending-changes/pending-changes.component.d.ts +15 -0
- package/lib/components/pending-changes/pending-changes.component.d.ts.map +1 -0
- package/lib/components/pending-changes/pending-changes.service.d.ts +9 -0
- package/lib/components/pending-changes/pending-changes.service.d.ts.map +1 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/constants/view-type-converter.constants.d.ts +3 -0
- package/lib/constants/view-type-converter.constants.d.ts.map +1 -0
- package/lib/guards/index.d.ts +2 -0
- package/lib/guards/index.d.ts.map +1 -0
- package/lib/guards/pending-changes.guard.d.ts +4 -0
- package/lib/guards/pending-changes.guard.d.ts.map +1 -0
- package/lib/models/form-io.model.d.ts +2 -1
- package/lib/models/form-io.model.d.ts.map +1 -1
- package/lib/pipes/index.d.ts +1 -0
- package/lib/pipes/index.d.ts.map +1 -1
- package/lib/pipes/is-array.pipe.d.ts +8 -0
- package/lib/pipes/is-array.pipe.d.ts.map +1 -0
- package/package.json +1 -1
- package/public_api.d.ts +3 -0
- package/public_api.d.ts.map +1 -1
|
@@ -1,34 +1,17 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
1
|
import { Component, HostListener, ViewChild, } from '@angular/core';
|
|
17
2
|
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
18
3
|
import { take } from 'rxjs/operators';
|
|
19
4
|
import * as i0 from "@angular/core";
|
|
20
|
-
import * as i1 from "
|
|
21
|
-
import * as i2 from "
|
|
22
|
-
import * as i3 from "
|
|
23
|
-
import * as i4 from "
|
|
24
|
-
import * as i5 from "@angular/
|
|
25
|
-
import * as i6 from "
|
|
26
|
-
import * as i7 from "
|
|
27
|
-
import * as i8 from "
|
|
28
|
-
import * as i9 from "
|
|
29
|
-
import * as i10 from "../../
|
|
30
|
-
import * as i11 from "../../pipes/menu-item-translation.pipe";
|
|
31
|
-
import * as i12 from "../../pipes/case-count.pipe";
|
|
5
|
+
import * as i1 from "../menu/menu.service";
|
|
6
|
+
import * as i2 from "../../services/shell.service";
|
|
7
|
+
import * as i3 from "@angular/cdk/layout";
|
|
8
|
+
import * as i4 from "@angular/router";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
import * as i6 from "../menu/menu-item-text.component";
|
|
11
|
+
import * as i7 from "carbon-components-angular";
|
|
12
|
+
import * as i8 from "../../directives/command-click/command-click.directive";
|
|
13
|
+
import * as i9 from "../../pipes/menu-item-translation.pipe";
|
|
14
|
+
import * as i10 from "../../pipes/case-count.pipe";
|
|
32
15
|
export class LeftSidebarComponent {
|
|
33
16
|
onPageClick(targetElement) {
|
|
34
17
|
combineLatest([
|
|
@@ -45,10 +28,8 @@ export class LeftSidebarComponent {
|
|
|
45
28
|
}
|
|
46
29
|
});
|
|
47
30
|
}
|
|
48
|
-
constructor(
|
|
49
|
-
this.translateService = translateService;
|
|
31
|
+
constructor(elementRef, menuService, shellService, breakpointObserver, router) {
|
|
50
32
|
this.elementRef = elementRef;
|
|
51
|
-
this.configService = configService;
|
|
52
33
|
this.menuService = menuService;
|
|
53
34
|
this.shellService = shellService;
|
|
54
35
|
this.breakpointObserver = breakpointObserver;
|
|
@@ -132,17 +113,17 @@ export class LeftSidebarComponent {
|
|
|
132
113
|
});
|
|
133
114
|
});
|
|
134
115
|
}
|
|
135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LeftSidebarComponent, deps: [{ token:
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LeftSidebarComponent, selector: "valtimo-left-sidebar", host: { listeners: { "document:click": "onPageClick($event.target)" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleButton"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-sidenav\n *ngIf=\"{\n closestSequence: closestSequence$ | async,\n overflowMenuSequence: overflowMenuSequence$ | async,\n sideBarExpanded: sideBarExpanded$ | async\n } as obs\"\n [allowExpansion]=\"false\"\n [expanded]=\"obs.sideBarExpanded\"\n>\n <ng-container *ngFor=\"let menuItem of menuItems$ | async\">\n <ng-container *ngIf=\"!menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n menuItem: menuItem,\n closestSequence: obs.closestSequence,\n overflowMenuSequence: obs.overflowMenuSequence\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n closestSequence: obs.closestSequence,\n menuItem: menuItem,\n overflowMenuSequence: obs.overflowMenuSequence\n }\n \"\n ></ng-container>\n\n <ng-container *ngTemplateOutlet=\"subMenuIcon; context: {menuItem: menuItem}\"></ng-container>\n\n <cds-sidenav-menu [title]=\"menuItem | menuItemTranslate | async\">\n <ng-container *ngFor=\"let childMenuItem of menuItem.children\">\n <ng-container\n *ngIf=\"{\n count: childMenuItem?.count$ && (childMenuItem?.count$ | async),\n sequence: '' + menuItem.sequence + childMenuItem.sequence\n } as vars\"\n >\n <cds-sidenav-item\n [ngClass]=\"{\n 'cds--side-nav__item--empty': !childMenuItem.link,\n 'menu-item--hidden': childMenuItem.includeFunction !== undefined,\n 'menu-item--visible':\n childMenuItem.includeFunction !== undefined &&\n (includeFunctionObservables[childMenuItem.title] | async)\n }\"\n [active]=\"vars.sequence === obs.closestSequence\"\n [href]=\"vars?.count ? 'javascript:return false;' : 'javascript:void(0);'\"\n (click)=\"navigateToRoute(childMenuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(childMenuItem.link)\"\n >\n <valtimo-menu-item-text\n [accent]=\"!childMenuItem.link\"\n [menuItem]=\"childMenuItem\"\n [showOverFlowMenu]=\"obs.overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(childMenuItem.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text>\n\n <ng-container\n *ngTemplateOutlet=\"countTemplate; context: {count: vars.count}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\n </ng-container>\n </ng-container>\n</cds-sidenav>\n\n<ng-template #subMenuIcon let-menuItem=\"menuItem\">\n <div class=\"menu-item-icon-container\"><i class=\"{{ menuItem.iconClass }}\"></i></div>\n</ng-template>\n\n<ng-template\n #topMenuItem\n let-closestSequence=\"closestSequence\"\n let-menuItem=\"menuItem\"\n let-overflowMenuSequence=\"overflowMenuSequence\"\n>\n <ng-container *ngIf=\"{sequence: '' + menuItem.sequence} as vars\"\n ><cds-sidenav-item\n *ngIf=\"!menuItem.children\"\n [ngClass]=\"{\n 'menu-item--hidden': menuItem.includeFunction !== undefined,\n 'menu-item--visible':\n menuItem.includeFunction !== undefined &&\n (includeFunctionObservables[menuItem.title] | async)\n }\"\n [active]=\"vars.sequence === closestSequence\"\n (click)=\"navigateToRoute(menuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(menuItem.link.link)\"\n href=\"javascript:void(0)\"\n >\n <valtimo-menu-item-text\n [menuItem]=\"menuItem\"\n [showOverFlowMenu]=\"overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(menuItem.link.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text> </cds-sidenav-item\n ></ng-container>\n</ng-template>\n\n<ng-template #countTemplate let-count=\"count\">\n <ng-container *ngIf=\"count\">\n <span class=\"case-count\">\n {{ count | caseCount }}\n </span>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */@media screen and (max-width: 767px){.be-left-sidebar{width:100%!important}}.be-left-sidebar .left-sidebar-toggle{padding:20px}.be-left-sidebar .left-sidebar-toggle:before{font-size:1.615rem}.be-left-sidebar .sidebar-elements>li>a.be-toggle-left-sidebar{height:32px;display:flex;align-items:center}.be-left-sidebar .left-sidebar-content{padding-top:20px}.be-toggle-left-sidebar svg{margin-right:7px;min-width:21px;height:auto;overflow:visible}.be-toggle-left-sidebar svg path{transition:.27s ease;fill:#696969}::ng-deep .resize-border{position:absolute;width:3px;height:100%;top:0;right:0;cursor:col-resize;background-color:var(--cds-border-strong);opacity:0;transition:opacity .11s cubic-bezier(.2,0,1,.9)}::ng-deep .resize-hover{opacity:1}::ng-deep .resize-border--invisible{display:none}.no-transition{transition:none}.d-1{d:path(\"M3 18v-2h13v2z\")}.d-1-flipped{d:path(\"M3 18v-2h11v2z\")}.d-2{d:path(\"M3 13v-2h10v2H3\")}.d-2-flipped{d:path(\"M3 13v-2h12v2H3\")}.d-3{d:path(\"M3 6h13v2H3V6\")}.d-3-flipped{d:path(\"M3 6h11v2H3V6\")}.d-4{d:path(\"M21 15.61L19.59 17l-5.01-5 5.01-5L21 8.39 17.44 12 21 15.61\")}.d-4-flipped{d:path(\"M15.58 15.61L16.99 17 22 12l-5.01-5-1.41 1.39L19.14 12l-3.56 3.61\")}::ng-deep .cds--side-nav__menu{padding-left:0}::ng-deep .cds--side-nav__navigation{border-right:1px solid #e0e0e0;height:100%}::ng-deep .cds--side-nav--ux{width:0}::ng-deep .cds--side-nav--expanded{width:16rem}::ng-deep .cds--side-nav__header-divider{display:none!important}.menu-item-icon-container{position:relative;top:8px;left:13px;height:0}.menu-item-icon-container i{width:0px;height:16px}.menu-item--hidden{display:none}.menu-item--visible{display:block}::ng-deep .cds--side-nav__item--empty{pointer-events:none}::ng-deep .cds--side-nav__item--empty .menu-item-icon-container{display:none}::ng-deep .cds--side-nav__link[href*=\"javascript:return false;\"]{padding-right:3rem!important}.case-count{position:absolute;right:0;padding-right:1rem;height:100%;top:0;display:flex;align-items:center;justify-content:center;font-size:.875rem;letter-spacing:.1px;line-height:1.25rem;font-weight:500!important}::ng-deep .cds--side-nav__icon{margin-left:-16px}::ng-deep .cds--side-nav__item.cds--side-nav__item--icon a.cds--side-nav__link{padding-left:3.5rem}::ng-deep .cds--side-nav__submenu-title{padding-right:1.5rem}::ng-deep .cds--side-nav__items{display:flex!important;flex-direction:column!important;overflow:visible!important}::ng-deep .cds--side-nav__navigation{top:3rem;height:calc(100% - 3rem)!important;overflow-x:hidden!important;overflow-y:auto!important}::ng-deep .cds--side-nav__navigation:not(.cds--side-nav--expanded){width:0}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.MenuItemTextComponent, selector: "valtimo-menu-item-text", inputs: ["menuItem", "accent", "showOverFlowMenu"], outputs: ["overflowMenuClosed", "openInNewTab"] }, { kind: "component", type: i9.SideNav, selector: "cds-sidenav, ibm-sidenav", inputs: ["ariaLabel", "expanded", "hidden", "rail", "allowExpansion", "navigationItems"] }, { kind: "component", type: i9.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }, { kind: "component", type: i9.SideNavMenu, selector: "cds-sidenav-menu, ibm-sidenav-menu", inputs: ["title", "expanded", "hasActiveChild", "menuItems"] }, { kind: "directive", type: i10.CtrlClickDirective, selector: "[ctrl-click]", outputs: ["ctrl-click"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.MenuItemTranslationPipe, name: "menuItemTranslate" }, { kind: "pipe", type: i12.CaseCountPipe, name: "caseCount" }] }); }
|
|
116
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LeftSidebarComponent, deps: [{ token: i0.ElementRef }, { token: i1.MenuService }, { token: i2.ShellService }, { token: i3.BreakpointObserver }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
117
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LeftSidebarComponent, selector: "valtimo-left-sidebar", host: { listeners: { "document:click": "onPageClick($event.target)" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleButton"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-sidenav\n *ngIf=\"{\n closestSequence: closestSequence$ | async,\n overflowMenuSequence: overflowMenuSequence$ | async,\n sideBarExpanded: sideBarExpanded$ | async\n } as obs\"\n [allowExpansion]=\"false\"\n [expanded]=\"obs.sideBarExpanded\"\n>\n <ng-container *ngFor=\"let menuItem of menuItems$ | async\">\n <ng-container *ngIf=\"!menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n menuItem: menuItem,\n closestSequence: obs.closestSequence,\n overflowMenuSequence: obs.overflowMenuSequence\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n closestSequence: obs.closestSequence,\n menuItem: menuItem,\n overflowMenuSequence: obs.overflowMenuSequence\n }\n \"\n ></ng-container>\n\n <ng-container *ngTemplateOutlet=\"subMenuIcon; context: {menuItem: menuItem}\"></ng-container>\n\n <cds-sidenav-menu [title]=\"menuItem | menuItemTranslate | async\">\n <ng-container *ngFor=\"let childMenuItem of menuItem.children\">\n <ng-container\n *ngIf=\"{\n count: childMenuItem?.count$ && (childMenuItem?.count$ | async),\n sequence: '' + menuItem.sequence + childMenuItem.sequence\n } as vars\"\n >\n <cds-sidenav-item\n [ngClass]=\"{\n 'cds--side-nav__item--empty': !childMenuItem.link,\n 'menu-item--hidden': childMenuItem.includeFunction !== undefined,\n 'menu-item--visible':\n childMenuItem.includeFunction !== undefined &&\n (includeFunctionObservables[childMenuItem.title] | async)\n }\"\n [active]=\"vars.sequence === obs.closestSequence\"\n [href]=\"vars?.count ? 'javascript:return false;' : 'javascript:void(0);'\"\n (click)=\"navigateToRoute(childMenuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(childMenuItem.link)\"\n >\n <valtimo-menu-item-text\n [accent]=\"!childMenuItem.link\"\n [menuItem]=\"childMenuItem\"\n [showOverFlowMenu]=\"obs.overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(childMenuItem.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text>\n\n <ng-container\n *ngTemplateOutlet=\"countTemplate; context: {count: vars.count}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\n </ng-container>\n </ng-container>\n</cds-sidenav>\n\n<ng-template #subMenuIcon let-menuItem=\"menuItem\">\n <div class=\"menu-item-icon-container\"><i class=\"{{ menuItem.iconClass }}\"></i></div>\n</ng-template>\n\n<ng-template\n #topMenuItem\n let-closestSequence=\"closestSequence\"\n let-menuItem=\"menuItem\"\n let-overflowMenuSequence=\"overflowMenuSequence\"\n>\n <ng-container *ngIf=\"{sequence: '' + menuItem.sequence} as vars\"\n ><cds-sidenav-item\n *ngIf=\"!menuItem.children\"\n [ngClass]=\"{\n 'menu-item--hidden': menuItem.includeFunction !== undefined,\n 'menu-item--visible':\n menuItem.includeFunction !== undefined &&\n (includeFunctionObservables[menuItem.title] | async)\n }\"\n [active]=\"vars.sequence === closestSequence\"\n (click)=\"navigateToRoute(menuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(menuItem.link.link)\"\n href=\"javascript:void(0)\"\n >\n <valtimo-menu-item-text\n [menuItem]=\"menuItem\"\n [showOverFlowMenu]=\"overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(menuItem.link.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text> </cds-sidenav-item\n ></ng-container>\n</ng-template>\n\n<ng-template #countTemplate let-count=\"count\">\n <ng-container *ngIf=\"count\">\n <span class=\"case-count\">\n {{ count | caseCount }}\n </span>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */@media screen and (max-width: 767px){.be-left-sidebar{width:100%!important}}.be-left-sidebar .left-sidebar-toggle{padding:20px}.be-left-sidebar .left-sidebar-toggle:before{font-size:1.615rem}.be-left-sidebar .sidebar-elements>li>a.be-toggle-left-sidebar{height:32px;display:flex;align-items:center}.be-left-sidebar .left-sidebar-content{padding-top:20px}.be-toggle-left-sidebar svg{margin-right:7px;min-width:21px;height:auto;overflow:visible}.be-toggle-left-sidebar svg path{transition:.27s ease;fill:#696969}::ng-deep .resize-border{position:absolute;width:3px;height:100%;top:0;right:0;cursor:col-resize;background-color:var(--cds-border-strong);opacity:0;transition:opacity .11s cubic-bezier(.2,0,1,.9)}::ng-deep .resize-hover{opacity:1}::ng-deep .resize-border--invisible{display:none}.no-transition{transition:none}.d-1{d:path(\"M3 18v-2h13v2z\")}.d-1-flipped{d:path(\"M3 18v-2h11v2z\")}.d-2{d:path(\"M3 13v-2h10v2H3\")}.d-2-flipped{d:path(\"M3 13v-2h12v2H3\")}.d-3{d:path(\"M3 6h13v2H3V6\")}.d-3-flipped{d:path(\"M3 6h11v2H3V6\")}.d-4{d:path(\"M21 15.61L19.59 17l-5.01-5 5.01-5L21 8.39 17.44 12 21 15.61\")}.d-4-flipped{d:path(\"M15.58 15.61L16.99 17 22 12l-5.01-5-1.41 1.39L19.14 12l-3.56 3.61\")}::ng-deep .cds--side-nav__menu{padding-left:0}::ng-deep .cds--side-nav__navigation{border-right:1px solid #e0e0e0;height:100%}::ng-deep .cds--side-nav--ux{width:0}::ng-deep .cds--side-nav--expanded{width:16rem}::ng-deep .cds--side-nav__header-divider{display:none!important}.menu-item-icon-container{position:relative;top:8px;left:13px;height:0}.menu-item-icon-container i{width:0px;height:16px}.menu-item--hidden{display:none}.menu-item--visible{display:block}::ng-deep .cds--side-nav__item--empty{pointer-events:none}::ng-deep .cds--side-nav__item--empty .menu-item-icon-container{display:none}::ng-deep .cds--side-nav__link[href*=\"javascript:return false;\"]{padding-right:3rem!important}.case-count{position:absolute;right:0;padding-right:1rem;height:100%;top:0;display:flex;align-items:center;justify-content:center;font-size:.875rem;letter-spacing:.1px;line-height:1.25rem;font-weight:500!important}::ng-deep .cds--side-nav__icon{margin-left:-16px}::ng-deep .cds--side-nav__item.cds--side-nav__item--icon a.cds--side-nav__link{padding-left:3.5rem}::ng-deep .cds--side-nav__submenu-title{padding-right:1.5rem}::ng-deep .cds--side-nav__items{display:flex!important;flex-direction:column!important;overflow:visible!important}::ng-deep .cds--side-nav__navigation{top:3rem;height:calc(100% - 3rem)!important;overflow-x:hidden!important;overflow-y:auto!important}::ng-deep .cds--side-nav__navigation:not(.cds--side-nav--expanded){width:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MenuItemTextComponent, selector: "valtimo-menu-item-text", inputs: ["menuItem", "accent", "showOverFlowMenu"], outputs: ["overflowMenuClosed", "openInNewTab"] }, { kind: "component", type: i7.SideNav, selector: "cds-sidenav, ibm-sidenav", inputs: ["ariaLabel", "expanded", "hidden", "rail", "allowExpansion", "navigationItems"] }, { kind: "component", type: i7.SideNavItem, selector: "cds-sidenav-item, ibm-sidenav-item", inputs: ["href", "active", "route", "isSubMenu", "routeExtras", "title"], outputs: ["navigation", "selected"] }, { kind: "component", type: i7.SideNavMenu, selector: "cds-sidenav-menu, ibm-sidenav-menu", inputs: ["title", "expanded", "hasActiveChild", "menuItems"] }, { kind: "directive", type: i8.CtrlClickDirective, selector: "[ctrl-click]", outputs: ["ctrl-click"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.MenuItemTranslationPipe, name: "menuItemTranslate" }, { kind: "pipe", type: i10.CaseCountPipe, name: "caseCount" }] }); }
|
|
137
118
|
}
|
|
138
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LeftSidebarComponent, decorators: [{
|
|
139
120
|
type: Component,
|
|
140
121
|
args: [{ selector: 'valtimo-left-sidebar', template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-sidenav\n *ngIf=\"{\n closestSequence: closestSequence$ | async,\n overflowMenuSequence: overflowMenuSequence$ | async,\n sideBarExpanded: sideBarExpanded$ | async\n } as obs\"\n [allowExpansion]=\"false\"\n [expanded]=\"obs.sideBarExpanded\"\n>\n <ng-container *ngFor=\"let menuItem of menuItems$ | async\">\n <ng-container *ngIf=\"!menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n menuItem: menuItem,\n closestSequence: obs.closestSequence,\n overflowMenuSequence: obs.overflowMenuSequence\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"menuItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n topMenuItem;\n context: {\n closestSequence: obs.closestSequence,\n menuItem: menuItem,\n overflowMenuSequence: obs.overflowMenuSequence\n }\n \"\n ></ng-container>\n\n <ng-container *ngTemplateOutlet=\"subMenuIcon; context: {menuItem: menuItem}\"></ng-container>\n\n <cds-sidenav-menu [title]=\"menuItem | menuItemTranslate | async\">\n <ng-container *ngFor=\"let childMenuItem of menuItem.children\">\n <ng-container\n *ngIf=\"{\n count: childMenuItem?.count$ && (childMenuItem?.count$ | async),\n sequence: '' + menuItem.sequence + childMenuItem.sequence\n } as vars\"\n >\n <cds-sidenav-item\n [ngClass]=\"{\n 'cds--side-nav__item--empty': !childMenuItem.link,\n 'menu-item--hidden': childMenuItem.includeFunction !== undefined,\n 'menu-item--visible':\n childMenuItem.includeFunction !== undefined &&\n (includeFunctionObservables[childMenuItem.title] | async)\n }\"\n [active]=\"vars.sequence === obs.closestSequence\"\n [href]=\"vars?.count ? 'javascript:return false;' : 'javascript:void(0);'\"\n (click)=\"navigateToRoute(childMenuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(childMenuItem.link)\"\n >\n <valtimo-menu-item-text\n [accent]=\"!childMenuItem.link\"\n [menuItem]=\"childMenuItem\"\n [showOverFlowMenu]=\"obs.overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(childMenuItem.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text>\n\n <ng-container\n *ngTemplateOutlet=\"countTemplate; context: {count: vars.count}\"\n ></ng-container>\n </cds-sidenav-item>\n </ng-container>\n </ng-container>\n </cds-sidenav-menu>\n </ng-container>\n </ng-container>\n</cds-sidenav>\n\n<ng-template #subMenuIcon let-menuItem=\"menuItem\">\n <div class=\"menu-item-icon-container\"><i class=\"{{ menuItem.iconClass }}\"></i></div>\n</ng-template>\n\n<ng-template\n #topMenuItem\n let-closestSequence=\"closestSequence\"\n let-menuItem=\"menuItem\"\n let-overflowMenuSequence=\"overflowMenuSequence\"\n>\n <ng-container *ngIf=\"{sequence: '' + menuItem.sequence} as vars\"\n ><cds-sidenav-item\n *ngIf=\"!menuItem.children\"\n [ngClass]=\"{\n 'menu-item--hidden': menuItem.includeFunction !== undefined,\n 'menu-item--visible':\n menuItem.includeFunction !== undefined &&\n (includeFunctionObservables[menuItem.title] | async)\n }\"\n [active]=\"vars.sequence === closestSequence\"\n (click)=\"navigateToRoute(menuItem.link, $event)\"\n (contextmenu)=\"onRightClick(vars.sequence)\"\n (ctrl-click)=\"openInNewTab(menuItem.link.link)\"\n href=\"javascript:void(0)\"\n >\n <valtimo-menu-item-text\n [menuItem]=\"menuItem\"\n [showOverFlowMenu]=\"overflowMenuSequence === vars.sequence\"\n (openInNewTab)=\"openInNewTab(menuItem.link.link)\"\n (overflowMenuClosed)=\"onOverflowMenuClosed(vars.sequence)\"\n ></valtimo-menu-item-text> </cds-sidenav-item\n ></ng-container>\n</ng-template>\n\n<ng-template #countTemplate let-count=\"count\">\n <ng-container *ngIf=\"count\">\n <span class=\"case-count\">\n {{ count | caseCount }}\n </span>\n </ng-container>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */@media screen and (max-width: 767px){.be-left-sidebar{width:100%!important}}.be-left-sidebar .left-sidebar-toggle{padding:20px}.be-left-sidebar .left-sidebar-toggle:before{font-size:1.615rem}.be-left-sidebar .sidebar-elements>li>a.be-toggle-left-sidebar{height:32px;display:flex;align-items:center}.be-left-sidebar .left-sidebar-content{padding-top:20px}.be-toggle-left-sidebar svg{margin-right:7px;min-width:21px;height:auto;overflow:visible}.be-toggle-left-sidebar svg path{transition:.27s ease;fill:#696969}::ng-deep .resize-border{position:absolute;width:3px;height:100%;top:0;right:0;cursor:col-resize;background-color:var(--cds-border-strong);opacity:0;transition:opacity .11s cubic-bezier(.2,0,1,.9)}::ng-deep .resize-hover{opacity:1}::ng-deep .resize-border--invisible{display:none}.no-transition{transition:none}.d-1{d:path(\"M3 18v-2h13v2z\")}.d-1-flipped{d:path(\"M3 18v-2h11v2z\")}.d-2{d:path(\"M3 13v-2h10v2H3\")}.d-2-flipped{d:path(\"M3 13v-2h12v2H3\")}.d-3{d:path(\"M3 6h13v2H3V6\")}.d-3-flipped{d:path(\"M3 6h11v2H3V6\")}.d-4{d:path(\"M21 15.61L19.59 17l-5.01-5 5.01-5L21 8.39 17.44 12 21 15.61\")}.d-4-flipped{d:path(\"M15.58 15.61L16.99 17 22 12l-5.01-5-1.41 1.39L19.14 12l-3.56 3.61\")}::ng-deep .cds--side-nav__menu{padding-left:0}::ng-deep .cds--side-nav__navigation{border-right:1px solid #e0e0e0;height:100%}::ng-deep .cds--side-nav--ux{width:0}::ng-deep .cds--side-nav--expanded{width:16rem}::ng-deep .cds--side-nav__header-divider{display:none!important}.menu-item-icon-container{position:relative;top:8px;left:13px;height:0}.menu-item-icon-container i{width:0px;height:16px}.menu-item--hidden{display:none}.menu-item--visible{display:block}::ng-deep .cds--side-nav__item--empty{pointer-events:none}::ng-deep .cds--side-nav__item--empty .menu-item-icon-container{display:none}::ng-deep .cds--side-nav__link[href*=\"javascript:return false;\"]{padding-right:3rem!important}.case-count{position:absolute;right:0;padding-right:1rem;height:100%;top:0;display:flex;align-items:center;justify-content:center;font-size:.875rem;letter-spacing:.1px;line-height:1.25rem;font-weight:500!important}::ng-deep .cds--side-nav__icon{margin-left:-16px}::ng-deep .cds--side-nav__item.cds--side-nav__item--icon a.cds--side-nav__link{padding-left:3.5rem}::ng-deep .cds--side-nav__submenu-title{padding-right:1.5rem}::ng-deep .cds--side-nav__items{display:flex!important;flex-direction:column!important;overflow:visible!important}::ng-deep .cds--side-nav__navigation{top:3rem;height:calc(100% - 3rem)!important;overflow-x:hidden!important;overflow-y:auto!important}::ng-deep .cds--side-nav__navigation:not(.cds--side-nav--expanded){width:0}\n"] }]
|
|
141
|
-
}], ctorParameters: function () { return [{ type:
|
|
122
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MenuService }, { type: i2.ShellService }, { type: i3.BreakpointObserver }, { type: i4.Router }]; }, propDecorators: { toggleButtonRef: [{
|
|
142
123
|
type: ViewChild,
|
|
143
124
|
args: ['toggleButton']
|
|
144
125
|
}], onPageClick: [{
|
|
145
126
|
type: HostListener,
|
|
146
127
|
args: ['document:click', ['$event.target']]
|
|
147
128
|
}] } });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbGVmdC1zaWRlYmFyL2xlZnQtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xlZnQtc2lkZWJhci9sZWZ0LXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFFWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFZcEMsTUFBTSxPQUFPLG9CQUFvQjtJQUl4QixXQUFXLENBQUMsYUFBYTtRQUM5QixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQjtZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCO1NBQzdDLENBQUM7YUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQyxFQUFFLEVBQUU7WUFDdEYsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFB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QUksV0FBVyxJQUFJLHlCQUF5QixFQUFFO3dCQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUNyQztvQkFDRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2lCQUNyQztnQkFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQzlCLElBQ0UsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksV0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDO3dCQUMxRCxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLElBQUksZUFBZSxDQUFDLEVBQ3pEO3dCQUNBLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ25DO2lCQUNGO2dCQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXBJVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixzUEN0Q2pDLG9sS0F1SUE7OzRGRGpHYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usc0JBQXNCO3VRQUtMLGVBQWU7c0JBQXpDLFNBQVM7dUJBQUMsY0FBYztnQkFHbEIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgTWVudUl0ZW19IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge01lbnVTZXJ2aWNlfSBmcm9tICcuLi9tZW51L21lbnUuc2VydmljZSc7XG5pbXBvcnQge1NoZWxsU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hlbGwuc2VydmljZSc7XG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1sZWZ0LXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGVmdC1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGVmdC1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExlZnRTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndG9nZ2xlQnV0dG9uJykgdG9nZ2xlQnV0dG9uUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHB1YmxpYyBvblBhZ2VDbGljayh0YXJnZXRFbGVtZW50KSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnNoZWxsU2VydmljZS5zaWRlQmFyRXhwYW5kZWQkLFxuICAgICAgdGhpcy5zaGVsbFNlcnZpY2UubW91c2VPblRvcEJhciQsXG4gICAgICB0aGlzLnNoZWxsU2VydmljZS5sYXJnZVNjcmVlbiQsXG4gICAgICB0aGlzLnNoZWxsU2VydmljZS5jb2xsYXBzaWJsZVdpZGVzY3JlZW5NZW51JCxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtzaWRlQmFyRXhwYW5kZWQsIG1vdXNlT25Ub3BCYXIsIGxhcmdlU2NyZWVuLCBjb2xsYXBzaWJsZVdpZGVzY3JlZW5NZW51XSkgPT4ge1xuICAgICAgICBjb25zdCBjbGlja2VkSW5zaWRlID1cbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KSB8fCBtb3VzZU9uVG9wQmFyO1xuXG4gICAgICAgIGlmICghY2xpY2tlZEluc2lkZSAmJiAoIWxhcmdlU2NyZWVuIHx8IGNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnUpICYmIHNpZGVCYXJFeHBhbmRlZCkge1xuICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnNldFNpZGVCYXJFeHBhbmRlZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluY2x1ZGVGdW5jdGlvbk9ic2VydmFibGVzOiB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxib29sZWFuPn0gPSB7fTtcbiAgcHVibGljIHJlYWRvbmx5IG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8TWVudUl0ZW0+PiA9IHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zJDtcbiAgcHVibGljIHJlYWRvbmx5IHNpZGVCYXJFeHBhbmRlZCQgPSB0aGlzLnNoZWxsU2VydmljZS5zaWRlQmFyRXhwYW5kZWQkO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VzdFNlcXVlbmNlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5tZW51U2VydmljZS5jbG9zZXN0U2VxdWVuY2UkO1xuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcmZsb3dNZW51U2VxdWVuY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwcml2YXRlIF9icmVha3BvaW50U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9icmVha3BvaW50c0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhc3RTbWFsbFNjcmVlbiE6IGJvb2xlYW47XG4gIHByaXZhdGUgX2xhc3RMYXJnZVNjcmVlbiE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGVsbFNlcnZpY2U6IFNoZWxsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5pbmNsdWRlRnVuY3Rpb25PYnNlcnZhYmxlcyA9IHRoaXMubWVudVNlcnZpY2UuaW5jbHVkZUZ1bmN0aW9uT2JzZXJ2YWJsZXM7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkJyZWFrcG9pbnRTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLnNoZWxsU2VydmljZS5zZXRTaWRlbmF2RWxlbWVudChcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZHMtLXNpZGUtbmF2JylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2JyZWFrcG9pbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1JvdXRlKHJvdXRlOiBBcnJheTxzdHJpbmc+LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcblxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnNpZGVCYXJFeHBhbmRlZCQsXG4gICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmxhcmdlU2NyZWVuJCxcbiAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2UuY29sbGFwc2libGVXaWRlc2NyZWVuTWVudSQsXG4gICAgICBdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbc2lkZUJhckV4cGFuZGVkLCBsYXJnZVNjcmVlbiwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudV0pID0+IHtcbiAgICAgICAgICBpZiAoKCFsYXJnZVNjcmVlbiB8fCBjb2xsYXBzaWJsZVdpZGVzY3JlZW5NZW51KSAmJiBzaWRlQmFyRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnNldFNpZGVCYXJFeHBhbmRlZChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25SaWdodENsaWNrKHNlcXVlbmNlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLm92ZXJmbG93TWVudVNlcXVlbmNlJC5uZXh0KHNlcXVlbmNlKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbk92ZXJmbG93TWVudUNsb3NlZChzZXF1ZW5jZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vdmVyZmxvd01lbnVTZXF1ZW5jZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3ZlcmZsb3dNZW51U2VxdWVuY2UgPT4ge1xuICAgICAgaWYgKG92ZXJmbG93TWVudVNlcXVlbmNlID09PSBzZXF1ZW5jZSkge1xuICAgICAgICB0aGlzLm92ZXJmbG93TWVudVNlcXVlbmNlJC5uZXh0KCcnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuSW5OZXdUYWIobGluazogQXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGxpbmsgfHwgWycvJ10pKTtcblxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQnJlYWtwb2ludFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoWycobWF4LXdpZHRoOiAxMDU1cHgpJywgJyhtaW4td2lkdGg6IDEwNTZweCknXSlcbiAgICAgIC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLnNoZWxsU2VydmljZS5zaWRlQmFyRXhwYW5kZWQkLFxuICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnUkLFxuICAgICAgICBdKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoW3NpZGVCYXJFeHBhbmRlZCwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJyZWFrcG9pbnRzID0gc3RhdGUuYnJlYWtwb2ludHM7XG4gICAgICAgICAgICBjb25zdCBicmVha3BvaW50S2V5cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IHNtYWxsU2NyZWVuID0gYnJlYWtwb2ludHNbYnJlYWtwb2ludEtleXNbMF1dO1xuICAgICAgICAgICAgY29uc3QgbGFyZ2VTY3JlZW4gPSBicmVha3BvaW50c1ticmVha3BvaW50S2V5c1sxXV07XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fYnJlYWtwb2ludHNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICBpZiAoc21hbGxTY3JlZW4gfHwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNvbGxhcHNlU2lkZUJhcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnUpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0aGlzLl9sYXN0U21hbGxTY3JlZW4gJiYgbGFyZ2VTY3JlZW4gJiYgIXNpZGVCYXJFeHBhbmRlZCkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fbGFzdExhcmdlU2NyZWVuICYmIHNtYWxsU2NyZWVuICYmIHNpZGVCYXJFeHBhbmRlZClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2UudG9nZ2xlU2lkZUJhcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2xhc3RTbWFsbFNjcmVlbiA9IHNtYWxsU2NyZWVuO1xuICAgICAgICAgICAgdGhpcy5fbGFzdExhcmdlU2NyZWVuID0gbGFyZ2VTY3JlZW47XG4gICAgICAgICAgICB0aGlzLnNoZWxsU2VydmljZS5zZXRMYXJnZVNjcmVlbihsYXJnZVNjcmVlbik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLXNpZGVuYXZcbiAgKm5nSWY9XCJ7XG4gICAgY2xvc2VzdFNlcXVlbmNlOiBjbG9zZXN0U2VxdWVuY2UkIHwgYXN5bmMsXG4gICAgb3ZlcmZsb3dNZW51U2VxdWVuY2U6IG92ZXJmbG93TWVudVNlcXVlbmNlJCB8IGFzeW5jLFxuICAgIHNpZGVCYXJFeHBhbmRlZDogc2lkZUJhckV4cGFuZGVkJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgW2FsbG93RXhwYW5zaW9uXT1cImZhbHNlXCJcbiAgW2V4cGFuZGVkXT1cIm9icy5zaWRlQmFyRXhwYW5kZWRcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBtZW51SXRlbXMkIHwgYXN5bmNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lbnVJdGVtLmNoaWxkcmVuXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdG9wTWVudUl0ZW07XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgbWVudUl0ZW06IG1lbnVJdGVtLFxuICAgICAgICAgICAgY2xvc2VzdFNlcXVlbmNlOiBvYnMuY2xvc2VzdFNlcXVlbmNlLFxuICAgICAgICAgICAgb3ZlcmZsb3dNZW51U2VxdWVuY2U6IG9icy5vdmVyZmxvd01lbnVTZXF1ZW5jZVxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51SXRlbS5jaGlsZHJlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHRvcE1lbnVJdGVtO1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNsb3Nlc3RTZXF1ZW5jZTogb2JzLmNsb3Nlc3RTZXF1ZW5jZSxcbiAgICAgICAgICAgIG1lbnVJdGVtOiBtZW51SXRlbSxcbiAgICAgICAgICAgIG92ZXJmbG93TWVudVNlcXVlbmNlOiBvYnMub3ZlcmZsb3dNZW51U2VxdWVuY2VcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJNZW51SWNvbjsgY29udGV4dDoge21lbnVJdGVtOiBtZW51SXRlbX1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGNkcy1zaWRlbmF2LW1lbnUgW3RpdGxlXT1cIm1lbnVJdGVtIHwgbWVudUl0ZW1UcmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZE1lbnVJdGVtIG9mIG1lbnVJdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJ7XG4gICAgICAgICAgICAgIGNvdW50OiBjaGlsZE1lbnVJdGVtPy5jb3VudCQgJiYgKGNoaWxkTWVudUl0ZW0/LmNvdW50JCB8IGFzeW5jKSxcbiAgICAgICAgICAgICAgc2VxdWVuY2U6ICcnICsgbWVudUl0ZW0uc2VxdWVuY2UgKyBjaGlsZE1lbnVJdGVtLnNlcXVlbmNlXG4gICAgICAgICAgICB9IGFzIHZhcnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjZHMtc2lkZW5hdi1pdGVtXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnY2RzLS1zaWRlLW5hdl9faXRlbS0tZW1wdHknOiAhY2hpbGRNZW51SXRlbS5saW5rLFxuICAgICAgICAgICAgICAgICdtZW51LWl0ZW0tLWhpZGRlbic6IGNoaWxkTWVudUl0ZW0uaW5jbHVkZUZ1bmN0aW9uICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgJ21lbnUtaXRlbS0tdmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgICBjaGlsZE1lbnVJdGVtLmluY2x1ZGVGdW5jdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAoaW5jbHVkZUZ1bmN0aW9uT2JzZXJ2YWJsZXNbY2hpbGRNZW51SXRlbS50aXRsZV0gfCBhc3luYylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFthY3RpdmVdPVwidmFycy5zZXF1ZW5jZSA9PT0gb2JzLmNsb3Nlc3RTZXF1ZW5jZVwiXG4gICAgICAgICAgICAgIFtocmVmXT1cInZhcnM/LmNvdW50ID8gJ2phdmFzY3JpcHQ6cmV0dXJuIGZhbHNlOycgOiAnamF2YXNjcmlwdDp2b2lkKDApOydcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1JvdXRlKGNoaWxkTWVudUl0ZW0ubGluaywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2sodmFycy5zZXF1ZW5jZSlcIlxuICAgICAgICAgICAgICAoY3RybC1jbGljayk9XCJvcGVuSW5OZXdUYWIoY2hpbGRNZW51SXRlbS5saW5rKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx2YWx0aW1vLW1lbnUtaXRlbS10ZXh0XG4gICAgICAgICAgICAgICAgW2FjY2VudF09XCIhY2hpbGRNZW51SXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICBbbWVudUl0ZW1dPVwiY2hpbGRNZW51SXRlbVwiXG4gICAgICAgICAgICAgICAgW3Nob3dPdmVyRmxvd01lbnVdPVwib2JzLm92ZXJmbG93TWVudVNlcXVlbmNlID09PSB2YXJzLnNlcXVlbmNlXCJcbiAgICAgICAgICAgICAgICAob3BlbkluTmV3VGFiKT1cIm9wZW5Jbk5ld1RhYihjaGlsZE1lbnVJdGVtLmxpbmspXCJcbiAgICAgICAgICAgICAgICAob3ZlcmZsb3dNZW51Q2xvc2VkKT1cIm9uT3ZlcmZsb3dNZW51Q2xvc2VkKHZhcnMuc2VxdWVuY2UpXCJcbiAgICAgICAgICAgICAgPjwvdmFsdGltby1tZW51LWl0ZW0tdGV4dD5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb3VudFRlbXBsYXRlOyBjb250ZXh0OiB7Y291bnQ6IHZhcnMuY291bnR9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9jZHMtc2lkZW5hdi1pdGVtPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2RzLXNpZGVuYXYtbWVudT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Nkcy1zaWRlbmF2PlxuXG48bmctdGVtcGxhdGUgI3N1Yk1lbnVJY29uIGxldC1tZW51SXRlbT1cIm1lbnVJdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0taWNvbi1jb250YWluZXJcIj48aSBjbGFzcz1cInt7IG1lbnVJdGVtLmljb25DbGFzcyB9fVwiPjwvaT48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdG9wTWVudUl0ZW1cbiAgbGV0LWNsb3Nlc3RTZXF1ZW5jZT1cImNsb3Nlc3RTZXF1ZW5jZVwiXG4gIGxldC1tZW51SXRlbT1cIm1lbnVJdGVtXCJcbiAgbGV0LW92ZXJmbG93TWVudVNlcXVlbmNlPVwib3ZlcmZsb3dNZW51U2VxdWVuY2VcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwie3NlcXVlbmNlOiAnJyArIG1lbnVJdGVtLnNlcXVlbmNlfSBhcyB2YXJzXCJcbiAgICA+PGNkcy1zaWRlbmF2LWl0ZW1cbiAgICAgICpuZ0lmPVwiIW1lbnVJdGVtLmNoaWxkcmVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ21lbnUtaXRlbS0taGlkZGVuJzogbWVudUl0ZW0uaW5jbHVkZUZ1bmN0aW9uICE9PSB1bmRlZmluZWQsXG4gICAgICAgICdtZW51LWl0ZW0tLXZpc2libGUnOlxuICAgICAgICAgIG1lbnVJdGVtLmluY2x1ZGVGdW5jdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgKGluY2x1ZGVGdW5jdGlvbk9ic2VydmFibGVzW21lbnVJdGVtLnRpdGxlXSB8IGFzeW5jKVxuICAgICAgfVwiXG4gICAgICBbYWN0aXZlXT1cInZhcnMuc2VxdWVuY2UgPT09IGNsb3Nlc3RTZXF1ZW5jZVwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1JvdXRlKG1lbnVJdGVtLmxpbmssICRldmVudClcIlxuICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljayh2YXJzLnNlcXVlbmNlKVwiXG4gICAgICAoY3RybC1jbGljayk9XCJvcGVuSW5OZXdUYWIobWVudUl0ZW0ubGluay5saW5rKVwiXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICA+XG4gICAgICA8dmFsdGltby1tZW51LWl0ZW0tdGV4dFxuICAgICAgICBbbWVudUl0ZW1dPVwibWVudUl0ZW1cIlxuICAgICAgICBbc2hvd092ZXJGbG93TWVudV09XCJvdmVyZmxvd01lbnVTZXF1ZW5jZSA9PT0gdmFycy5zZXF1ZW5jZVwiXG4gICAgICAgIChvcGVuSW5OZXdUYWIpPVwib3BlbkluTmV3VGFiKG1lbnVJdGVtLmxpbmsubGluaylcIlxuICAgICAgICAob3ZlcmZsb3dNZW51Q2xvc2VkKT1cIm9uT3ZlcmZsb3dNZW51Q2xvc2VkKHZhcnMuc2VxdWVuY2UpXCJcbiAgICAgID48L3ZhbHRpbW8tbWVudS1pdGVtLXRleHQ+IDwvY2RzLXNpZGVuYXYtaXRlbVxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvdW50VGVtcGxhdGUgbGV0LWNvdW50PVwiY291bnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjYXNlLWNvdW50XCI+XG4gICAgICB7eyBjb3VudCB8IGNhc2VDb3VudCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbGVmdC1zaWRlYmFyL2xlZnQtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2xlZnQtc2lkZWJhci9sZWZ0LXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFVcEMsTUFBTSxPQUFPLG9CQUFvQjtJQUl4QixXQUFXLENBQUMsYUFBYTtRQUM5QixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQjtZQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCO1NBQzdDLENBQUM7YUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQyxFQUFFLEVBQUU7WUFDdEYsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxhQUFhLENBQUM7WUFFekUsSUFBSSxD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QUFDO2lCQUNyQztnQkFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQzlCLElBQ0UsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksV0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDO3dCQUMxRCxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLElBQUksZUFBZSxDQUFDLEVBQ3pEO3dCQUNBLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ25DO2lCQUNGO2dCQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWxJVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixzUENyQ2pDLG9sS0F1SUE7OzRGRGxHYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usc0JBQXNCOzRNQUtMLGVBQWU7c0JBQXpDLFNBQVM7dUJBQUMsY0FBYztnQkFHbEIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtTaGVsbFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoZWxsLnNlcnZpY2UnO1xuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi4vbWVudS9tZW51LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWxlZnQtc2lkZWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sZWZ0LXNpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sZWZ0LXNpZGViYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGVmdFNpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd0b2dnbGVCdXR0b24nKSB0b2dnbGVCdXR0b25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgcHVibGljIG9uUGFnZUNsaWNrKHRhcmdldEVsZW1lbnQpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnNpZGVCYXJFeHBhbmRlZCQsXG4gICAgICB0aGlzLnNoZWxsU2VydmljZS5tb3VzZU9uVG9wQmFyJCxcbiAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmxhcmdlU2NyZWVuJCxcbiAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnUkLFxuICAgIF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW3NpZGVCYXJFeHBhbmRlZCwgbW91c2VPblRvcEJhciwgbGFyZ2VTY3JlZW4sIGNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPVxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpIHx8IG1vdXNlT25Ub3BCYXI7XG5cbiAgICAgICAgaWYgKCFjbGlja2VkSW5zaWRlICYmICghbGFyZ2VTY3JlZW4gfHwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudSkgJiYgc2lkZUJhckV4cGFuZGVkKSB7XG4gICAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2Uuc2V0U2lkZUJhckV4cGFuZGVkKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5jbHVkZUZ1bmN0aW9uT2JzZXJ2YWJsZXM6IHtba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPGJvb2xlYW4+fSA9IHt9O1xuICBwdWJsaWMgcmVhZG9ubHkgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxNZW51SXRlbT4+ID0gdGhpcy5tZW51U2VydmljZS5tZW51SXRlbXMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2lkZUJhckV4cGFuZGVkJCA9IHRoaXMuc2hlbGxTZXJ2aWNlLnNpZGVCYXJFeHBhbmRlZCQ7XG4gIHB1YmxpYyByZWFkb25seSBjbG9zZXN0U2VxdWVuY2UkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLm1lbnVTZXJ2aWNlLmNsb3Nlc3RTZXF1ZW5jZSQ7XG4gIHB1YmxpYyByZWFkb25seSBvdmVyZmxvd01lbnVTZXF1ZW5jZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgX2JyZWFrcG9pbnRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2JyZWFrcG9pbnRzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbGFzdFNtYWxsU2NyZWVuITogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfbGFzdExhcmdlU2NyZWVuITogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGVsbFNlcnZpY2U6IFNoZWxsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5pbmNsdWRlRnVuY3Rpb25PYnNlcnZhYmxlcyA9IHRoaXMubWVudVNlcnZpY2UuaW5jbHVkZUZ1bmN0aW9uT2JzZXJ2YWJsZXM7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkJyZWFrcG9pbnRTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLnNoZWxsU2VydmljZS5zZXRTaWRlbmF2RWxlbWVudChcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZHMtLXNpZGUtbmF2JylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2JyZWFrcG9pbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1JvdXRlKHJvdXRlOiBBcnJheTxzdHJpbmc+LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcblxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnNpZGVCYXJFeHBhbmRlZCQsXG4gICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmxhcmdlU2NyZWVuJCxcbiAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2UuY29sbGFwc2libGVXaWRlc2NyZWVuTWVudSQsXG4gICAgICBdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbc2lkZUJhckV4cGFuZGVkLCBsYXJnZVNjcmVlbiwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudV0pID0+IHtcbiAgICAgICAgICBpZiAoKCFsYXJnZVNjcmVlbiB8fCBjb2xsYXBzaWJsZVdpZGVzY3JlZW5NZW51KSAmJiBzaWRlQmFyRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLnNldFNpZGVCYXJFeHBhbmRlZChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25SaWdodENsaWNrKHNlcXVlbmNlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLm92ZXJmbG93TWVudVNlcXVlbmNlJC5uZXh0KHNlcXVlbmNlKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbk92ZXJmbG93TWVudUNsb3NlZChzZXF1ZW5jZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vdmVyZmxvd01lbnVTZXF1ZW5jZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3ZlcmZsb3dNZW51U2VxdWVuY2UgPT4ge1xuICAgICAgaWYgKG92ZXJmbG93TWVudVNlcXVlbmNlID09PSBzZXF1ZW5jZSkge1xuICAgICAgICB0aGlzLm92ZXJmbG93TWVudVNlcXVlbmNlJC5uZXh0KCcnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuSW5OZXdUYWIobGluazogQXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGxpbmsgfHwgWycvJ10pKTtcblxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQnJlYWtwb2ludFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoWycobWF4LXdpZHRoOiAxMDU1cHgpJywgJyhtaW4td2lkdGg6IDEwNTZweCknXSlcbiAgICAgIC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLnNoZWxsU2VydmljZS5zaWRlQmFyRXhwYW5kZWQkLFxuICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnUkLFxuICAgICAgICBdKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoW3NpZGVCYXJFeHBhbmRlZCwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJyZWFrcG9pbnRzID0gc3RhdGUuYnJlYWtwb2ludHM7XG4gICAgICAgICAgICBjb25zdCBicmVha3BvaW50S2V5cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IHNtYWxsU2NyZWVuID0gYnJlYWtwb2ludHNbYnJlYWtwb2ludEtleXNbMF1dO1xuICAgICAgICAgICAgY29uc3QgbGFyZ2VTY3JlZW4gPSBicmVha3BvaW50c1ticmVha3BvaW50S2V5c1sxXV07XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fYnJlYWtwb2ludHNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICBpZiAoc21hbGxTY3JlZW4gfHwgY29sbGFwc2libGVXaWRlc2NyZWVuTWVudSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hlbGxTZXJ2aWNlLmNvbGxhcHNlU2lkZUJhcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWNvbGxhcHNpYmxlV2lkZXNjcmVlbk1lbnUpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0aGlzLl9sYXN0U21hbGxTY3JlZW4gJiYgbGFyZ2VTY3JlZW4gJiYgIXNpZGVCYXJFeHBhbmRlZCkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fbGFzdExhcmdlU2NyZWVuICYmIHNtYWxsU2NyZWVuICYmIHNpZGVCYXJFeHBhbmRlZClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGVsbFNlcnZpY2UudG9nZ2xlU2lkZUJhcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2xhc3RTbWFsbFNjcmVlbiA9IHNtYWxsU2NyZWVuO1xuICAgICAgICAgICAgdGhpcy5fbGFzdExhcmdlU2NyZWVuID0gbGFyZ2VTY3JlZW47XG4gICAgICAgICAgICB0aGlzLnNoZWxsU2VydmljZS5zZXRMYXJnZVNjcmVlbihsYXJnZVNjcmVlbik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLXNpZGVuYXZcbiAgKm5nSWY9XCJ7XG4gICAgY2xvc2VzdFNlcXVlbmNlOiBjbG9zZXN0U2VxdWVuY2UkIHwgYXN5bmMsXG4gICAgb3ZlcmZsb3dNZW51U2VxdWVuY2U6IG92ZXJmbG93TWVudVNlcXVlbmNlJCB8IGFzeW5jLFxuICAgIHNpZGVCYXJFeHBhbmRlZDogc2lkZUJhckV4cGFuZGVkJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgW2FsbG93RXhwYW5zaW9uXT1cImZhbHNlXCJcbiAgW2V4cGFuZGVkXT1cIm9icy5zaWRlQmFyRXhwYW5kZWRcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBtZW51SXRlbXMkIHwgYXN5bmNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lbnVJdGVtLmNoaWxkcmVuXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdG9wTWVudUl0ZW07XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgbWVudUl0ZW06IG1lbnVJdGVtLFxuICAgICAgICAgICAgY2xvc2VzdFNlcXVlbmNlOiBvYnMuY2xvc2VzdFNlcXVlbmNlLFxuICAgICAgICAgICAgb3ZlcmZsb3dNZW51U2VxdWVuY2U6IG9icy5vdmVyZmxvd01lbnVTZXF1ZW5jZVxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51SXRlbS5jaGlsZHJlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHRvcE1lbnVJdGVtO1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNsb3Nlc3RTZXF1ZW5jZTogb2JzLmNsb3Nlc3RTZXF1ZW5jZSxcbiAgICAgICAgICAgIG1lbnVJdGVtOiBtZW51SXRlbSxcbiAgICAgICAgICAgIG92ZXJmbG93TWVudVNlcXVlbmNlOiBvYnMub3ZlcmZsb3dNZW51U2VxdWVuY2VcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJNZW51SWNvbjsgY29udGV4dDoge21lbnVJdGVtOiBtZW51SXRlbX1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGNkcy1zaWRlbmF2LW1lbnUgW3RpdGxlXT1cIm1lbnVJdGVtIHwgbWVudUl0ZW1UcmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZE1lbnVJdGVtIG9mIG1lbnVJdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJ7XG4gICAgICAgICAgICAgIGNvdW50OiBjaGlsZE1lbnVJdGVtPy5jb3VudCQgJiYgKGNoaWxkTWVudUl0ZW0/LmNvdW50JCB8IGFzeW5jKSxcbiAgICAgICAgICAgICAgc2VxdWVuY2U6ICcnICsgbWVudUl0ZW0uc2VxdWVuY2UgKyBjaGlsZE1lbnVJdGVtLnNlcXVlbmNlXG4gICAgICAgICAgICB9IGFzIHZhcnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjZHMtc2lkZW5hdi1pdGVtXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnY2RzLS1zaWRlLW5hdl9faXRlbS0tZW1wdHknOiAhY2hpbGRNZW51SXRlbS5saW5rLFxuICAgICAgICAgICAgICAgICdtZW51LWl0ZW0tLWhpZGRlbic6IGNoaWxkTWVudUl0ZW0uaW5jbHVkZUZ1bmN0aW9uICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgJ21lbnUtaXRlbS0tdmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgICBjaGlsZE1lbnVJdGVtLmluY2x1ZGVGdW5jdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAoaW5jbHVkZUZ1bmN0aW9uT2JzZXJ2YWJsZXNbY2hpbGRNZW51SXRlbS50aXRsZV0gfCBhc3luYylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFthY3RpdmVdPVwidmFycy5zZXF1ZW5jZSA9PT0gb2JzLmNsb3Nlc3RTZXF1ZW5jZVwiXG4gICAgICAgICAgICAgIFtocmVmXT1cInZhcnM/LmNvdW50ID8gJ2phdmFzY3JpcHQ6cmV0dXJuIGZhbHNlOycgOiAnamF2YXNjcmlwdDp2b2lkKDApOydcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1JvdXRlKGNoaWxkTWVudUl0ZW0ubGluaywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2sodmFycy5zZXF1ZW5jZSlcIlxuICAgICAgICAgICAgICAoY3RybC1jbGljayk9XCJvcGVuSW5OZXdUYWIoY2hpbGRNZW51SXRlbS5saW5rKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx2YWx0aW1vLW1lbnUtaXRlbS10ZXh0XG4gICAgICAgICAgICAgICAgW2FjY2VudF09XCIhY2hpbGRNZW51SXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICBbbWVudUl0ZW1dPVwiY2hpbGRNZW51SXRlbVwiXG4gICAgICAgICAgICAgICAgW3Nob3dPdmVyRmxvd01lbnVdPVwib2JzLm92ZXJmbG93TWVudVNlcXVlbmNlID09PSB2YXJzLnNlcXVlbmNlXCJcbiAgICAgICAgICAgICAgICAob3BlbkluTmV3VGFiKT1cIm9wZW5Jbk5ld1RhYihjaGlsZE1lbnVJdGVtLmxpbmspXCJcbiAgICAgICAgICAgICAgICAob3ZlcmZsb3dNZW51Q2xvc2VkKT1cIm9uT3ZlcmZsb3dNZW51Q2xvc2VkKHZhcnMuc2VxdWVuY2UpXCJcbiAgICAgICAgICAgICAgPjwvdmFsdGltby1tZW51LWl0ZW0tdGV4dD5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb3VudFRlbXBsYXRlOyBjb250ZXh0OiB7Y291bnQ6IHZhcnMuY291bnR9XCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9jZHMtc2lkZW5hdi1pdGVtPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2RzLXNpZGVuYXYtbWVudT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Nkcy1zaWRlbmF2PlxuXG48bmctdGVtcGxhdGUgI3N1Yk1lbnVJY29uIGxldC1tZW51SXRlbT1cIm1lbnVJdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0taWNvbi1jb250YWluZXJcIj48aSBjbGFzcz1cInt7IG1lbnVJdGVtLmljb25DbGFzcyB9fVwiPjwvaT48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdG9wTWVudUl0ZW1cbiAgbGV0LWNsb3Nlc3RTZXF1ZW5jZT1cImNsb3Nlc3RTZXF1ZW5jZVwiXG4gIGxldC1tZW51SXRlbT1cIm1lbnVJdGVtXCJcbiAgbGV0LW92ZXJmbG93TWVudVNlcXVlbmNlPVwib3ZlcmZsb3dNZW51U2VxdWVuY2VcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwie3NlcXVlbmNlOiAnJyArIG1lbnVJdGVtLnNlcXVlbmNlfSBhcyB2YXJzXCJcbiAgICA+PGNkcy1zaWRlbmF2LWl0ZW1cbiAgICAgICpuZ0lmPVwiIW1lbnVJdGVtLmNoaWxkcmVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ21lbnUtaXRlbS0taGlkZGVuJzogbWVudUl0ZW0uaW5jbHVkZUZ1bmN0aW9uICE9PSB1bmRlZmluZWQsXG4gICAgICAgICdtZW51LWl0ZW0tLXZpc2libGUnOlxuICAgICAgICAgIG1lbnVJdGVtLmluY2x1ZGVGdW5jdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgKGluY2x1ZGVGdW5jdGlvbk9ic2VydmFibGVzW21lbnVJdGVtLnRpdGxlXSB8IGFzeW5jKVxuICAgICAgfVwiXG4gICAgICBbYWN0aXZlXT1cInZhcnMuc2VxdWVuY2UgPT09IGNsb3Nlc3RTZXF1ZW5jZVwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1JvdXRlKG1lbnVJdGVtLmxpbmssICRldmVudClcIlxuICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljayh2YXJzLnNlcXVlbmNlKVwiXG4gICAgICAoY3RybC1jbGljayk9XCJvcGVuSW5OZXdUYWIobWVudUl0ZW0ubGluay5saW5rKVwiXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICA+XG4gICAgICA8dmFsdGltby1tZW51LWl0ZW0tdGV4dFxuICAgICAgICBbbWVudUl0ZW1dPVwibWVudUl0ZW1cIlxuICAgICAgICBbc2hvd092ZXJGbG93TWVudV09XCJvdmVyZmxvd01lbnVTZXF1ZW5jZSA9PT0gdmFycy5zZXF1ZW5jZVwiXG4gICAgICAgIChvcGVuSW5OZXdUYWIpPVwib3BlbkluTmV3VGFiKG1lbnVJdGVtLmxpbmsubGluaylcIlxuICAgICAgICAob3ZlcmZsb3dNZW51Q2xvc2VkKT1cIm9uT3ZlcmZsb3dNZW51Q2xvc2VkKHZhcnMuc2VxdWVuY2UpXCJcbiAgICAgID48L3ZhbHRpbW8tbWVudS1pdGVtLXRleHQ+IDwvY2RzLXNpZGVuYXYtaXRlbVxuICA+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvdW50VGVtcGxhdGUgbGV0LWNvdW50PVwiY291bnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjYXNlLWNvdW50XCI+XG4gICAgICB7eyBjb3VudCB8IGNhc2VDb3VudCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
1
|
import { Injectable } from '@angular/core';
|
|
17
2
|
import { NavigationEnd, NavigationStart, ResolveEnd } from '@angular/router';
|
|
18
3
|
import { BehaviorSubject, combineLatest, Observable, Subject, timer } from 'rxjs';
|
|
@@ -20,24 +5,26 @@ import { filter, map, take } from 'rxjs/operators';
|
|
|
20
5
|
import * as i0 from "@angular/core";
|
|
21
6
|
import * as i1 from "@valtimo/config";
|
|
22
7
|
import * as i2 from "@valtimo/document";
|
|
23
|
-
import * as i3 from "@
|
|
24
|
-
import * as i4 from "
|
|
25
|
-
import * as i5 from "
|
|
26
|
-
import * as i6 from "
|
|
27
|
-
import * as i7 from "@angular/
|
|
8
|
+
import * as i3 from "@angular/common/http";
|
|
9
|
+
import * as i4 from "keycloak-angular";
|
|
10
|
+
import * as i5 from "ngx-logger";
|
|
11
|
+
import * as i6 from "../pending-changes/pending-changes.service";
|
|
12
|
+
import * as i7 from "@angular/router";
|
|
13
|
+
import * as i8 from "@valtimo/security";
|
|
28
14
|
export class MenuService {
|
|
29
15
|
get activeParentSequenceNumber$() {
|
|
30
16
|
return this._activeParentSequenceNumber$.asObservable();
|
|
31
17
|
}
|
|
32
|
-
constructor(configService, documentService,
|
|
18
|
+
constructor(configService, documentService, http, keycloakService, logger, menuIncludeService, pendingChangesService, router, userProviderService) {
|
|
33
19
|
this.configService = configService;
|
|
34
20
|
this.documentService = documentService;
|
|
35
|
-
this.
|
|
21
|
+
this.http = http;
|
|
22
|
+
this.keycloakService = keycloakService;
|
|
36
23
|
this.logger = logger;
|
|
37
24
|
this.menuIncludeService = menuIncludeService;
|
|
25
|
+
this.pendingChangesService = pendingChangesService;
|
|
38
26
|
this.router = router;
|
|
39
|
-
this.
|
|
40
|
-
this.http = http;
|
|
27
|
+
this.userProviderService = userProviderService;
|
|
41
28
|
this._activeParentSequenceNumber$ = new BehaviorSubject('');
|
|
42
29
|
this.includeFunctionObservables = {};
|
|
43
30
|
this._menuItems$ = new BehaviorSubject([]);
|
|
@@ -58,7 +45,7 @@ export class MenuService {
|
|
|
58
45
|
this.objectsItemsAppended$,
|
|
59
46
|
this.currentRoute$,
|
|
60
47
|
this.menuItems$,
|
|
61
|
-
]).pipe(filter(([dossierItemsAppended, objectsItemsAppended]) => dossierItemsAppended || objectsItemsAppended), map(([
|
|
48
|
+
]).pipe(filter(() => !this.pendingChangesService.pendingChanges), filter(([dossierItemsAppended, objectsItemsAppended]) => dossierItemsAppended || objectsItemsAppended), map(([_1, _2, currentRoute, menuItems]) => {
|
|
62
49
|
let closestSequence = '0';
|
|
63
50
|
let highestDifference = 0;
|
|
64
51
|
// recursive function to check how closely each item matches to the current url
|
|
@@ -246,7 +233,7 @@ export class MenuService {
|
|
|
246
233
|
getAllObjects() {
|
|
247
234
|
return this.http.get(`${this.configService.config.valtimoApi.endpointUri}v1/object/management/configuration`);
|
|
248
235
|
}
|
|
249
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuService, deps: [{ token: i1.ConfigService }, { token: i2.DocumentService }, { token: i3.
|
|
236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuService, deps: [{ token: i1.ConfigService }, { token: i2.DocumentService }, { token: i3.HttpClient }, { token: i4.KeycloakService }, { token: i5.NGXLogger }, { token: i1.MenuIncludeService }, { token: i6.PendingChangesService }, { token: i7.Router }, { token: i8.UserProviderService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
250
237
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuService, providedIn: 'root' }); }
|
|
251
238
|
}
|
|
252
239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuService, decorators: [{
|
|
@@ -254,5 +241,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
254
241
|
args: [{
|
|
255
242
|
providedIn: 'root',
|
|
256
243
|
}]
|
|
257
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.DocumentService }, { type: i3.
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51L21lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDbkYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU9qRCxNQUFNLE9BQU8sV0FBVztJQVV0QixJQUFJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsWUFDbUIsYUFBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsbUJBQXdDLEVBQ3hDLE1BQWlCLEVBQ2pCLGtCQUFzQyxFQUN0QyxNQUFjLEVBQ2QsZUFBZ0MsRUFDekMsSUFBZ0I7UUFQUCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBckJULGlDQUE0QixHQUFHLElB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SUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTt3QkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUMzRCxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztxQkFDeEI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWtCLEVBQUUsS0FBZTtRQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLG9DQUFvQyxDQUN4RixDQUFDO0lBQ0osQ0FBQzsrR0E1U1UsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBNZW51Q29uZmlnLCBNZW51SW5jbHVkZVNlcnZpY2UsIE1lbnVJdGVtfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtVc2VyUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQge05hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUmVzb2x2ZUVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RG9jdW1lbnREZWZpbml0aW9ucywgRG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0tleWNsb2FrU2VydmljZX0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIGluY2x1ZGVGdW5jdGlvbk9ic2VydmFibGVzOiB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxib29sZWFuPn0gPSB7fTtcblxuICBwcml2YXRlIF9tZW51SXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gIHByaXZhdGUgbWVudUNvbmZpZzogTWVudUNvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVDYXNlQ291bnQhOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZU9iamVjdE1hbmFnZW1lbnQhOiBib29sZWFuO1xuXG4gIGdldCBhY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51SW5jbHVkZVNlcnZpY2U6IE1lbnVJbmNsdWRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWtTZXJ2aWNlOiBLZXljbG9ha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbmZpZ1NlcnZpY2U/LmNvbmZpZztcbiAgICB0aGlzLm1lbnVDb25maWcgPSBjb25maWc/Lm1lbnU7XG4gICAgdGhpcy5kaXNhYmxlQ2FzZUNvdW50ID0gY29uZmlnPy5mZWF0dXJlVG9nZ2xlcz8uZGlzYWJsZUNhc2VDb3VudDtcbiAgICB0aGlzLmVuYWJsZU9iamVjdE1hbmFnZW1lbnQgPSBjb25maWc/LmZlYXR1cmVUb2dnbGVzPy5lbmFibGVPYmplY3RNYW5hZ2VtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50Um91dGUkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKFxuICAgICAgZXZlbnQgPT5cbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8XG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUmVzb2x2ZUVuZFxuICAgICksXG4gICAgbWFwKGV2ZW50ID0+IChldmVudCBhcyBOYXZpZ2F0aW9uRW5kKT8udXJsKSxcbiAgICBmaWx0ZXIodXJsID0+ICEhdXJsKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llckl0ZW1zQXBwZW5kZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0c0l0ZW1zQXBwZW5kZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gRmluZCBvdXQgd2hpY2ggbWVudSBpdGVtIHNlcXVlbmNlIG51bWJlciBtYXRjaGVzIHRoZSBjdXJyZW50IHVybCB0aGUgY2xvc2VzdFxuICBwdWJsaWMgZ2V0IGNsb3Nlc3RTZXF1ZW5jZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmRvc3NpZXJJdGVtc0FwcGVuZGVkJCxcbiAgICAgIHRoaXMub2JqZWN0c0l0ZW1zQXBwZW5kZWQkLFxuICAgICAgdGhpcy5jdXJyZW50Um91dGUkLFxuICAgICAgdGhpcy5tZW51SXRlbXMkLFxuICAgIF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChbZG9zc2llckl0ZW1zQXBwZW5kZWQsIG9iamVjdHNJdGVtc0FwcGVuZGVkXSkgPT5cbiAgICAgICAgICBkb3NzaWVySXRlbXNBcHBlbmRlZCB8fCBvYmplY3RzSXRlbXNBcHBlbmRlZFxuICAgICAgKSxcbiAgICAgIG1hcCgoW2Rvc3NpZXJJdGVtc0FwcGVuZGVkLCBvYmplY3RzSXRlbXNBcHBlbmRlZCwgY3VycmVudFJvdXRlLCBtZW51SXRlbXNdKSA9PiB7XG4gICAgICAgIGxldCBjbG9zZXN0U2VxdWVuY2UgPSAnMCc7XG4gICAgICAgIGxldCBoaWdoZXN0RGlmZmVyZW5jZSA9IDA7XG5cbiAgICAgICAgLy8gcmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGNoZWNrIGhvdyBjbG9zZWx5IGVhY2ggaXRlbSBtYXRjaGVzIHRvIHRoZSBjdXJyZW50IHVybFxuICAgICAgICBjb25zdCBjaGVja0l0ZW1NYXRjaCA9IChcbiAgICAgICAgICBzdHJpbmdVcmw6IHN0cmluZyxcbiAgICAgICAgICBzZXF1ZW5jZTogc3RyaW5nLFxuICAgICAgICAgIHBhcmVudFNlcXVlbmNlPzogc3RyaW5nXG4gICAgICAgICk6IHZvaWQgPT4ge1xuICAgICAgICAgIC8vIGxlbmd0aCBvZiB0aGUgY3VycmVudCBmdWxsIHVybFxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZVVybExlbmd0aCA9IGN1cnJlbnRSb3V0ZS5sZW5ndGg7XG4gICAgICAgICAgLy8gbGVuZ3RoIG9mIHRoZSBjdXJyZW50IGZ1bGwgdXJsIHdpdGggdGhlIGl0ZW0ncyB1cmwgc3Vic3RyYWN0ZWRcbiAgICAgICAgICBjb25zdCBjdXJyZW50Um91dGVTdWJzdHJhY3RMZW5ndGggPSBjdXJyZW50Um91dGUucmVwbGFjZShzdHJpbmdVcmwsICcnKS5sZW5ndGg7XG4gICAgICAgICAgLy8gdGhlIGFtb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgY291bGQgYmUgc3Vic3RyYWN0ZWRcbiAgICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gY3VycmVudFJvdXRlVXJsTGVuZ3RoIC0gY3VycmVudFJvdXRlU3Vic3RyYWN0TGVuZ3RoO1xuXG4gICAgICAgICAgLy8gdGhlIGxhcmdlciB0aGUgYW1vdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBjb3VsZCBiZSBzdWJzdHJhY3RlZCwgdGhlIG1vcmUgY2xvc2VseSB0aGUgbWVudSBpdGVtIHVybCBtYXRjaGVzIHRoZSBjdXJyZW50IHVybFxuICAgICAgICAgIGlmIChkaWZmZXJlbmNlID4gaGlnaGVzdERpZmZlcmVuY2UpIHtcbiAgICAgICAgICAgIGhpZ2hlc3REaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIGNsb3Nlc3RTZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50U2VxdWVuY2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkLm5leHQocGFyZW50U2VxdWVuY2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkLm5leHQoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBjaGVjayBob3cgY2xvc2VseSBlYWNoIG1lbnUgaXRlbSAoYW5kIGNoaWxkIG1lbnUgaXRlbSkgbWF0Y2hlcyB0aGUgY3VycmVudCB1cmwgdXNpbmcgYSByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICAgICAgbWVudUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgY2hlY2tJdGVtTWF0Y2goaXRlbS5saW5rPy5qb2luKCcnKSB8fCAnJywgYCR7aXRlbS5zZXF1ZW5jZX1gKTtcblxuICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goY2hpbGRJdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRJdGVtLmxpbmspKSB7XG4gICAgICAgICAgICAgICAgY2hlY2tJdGVtTWF0Y2goXG4gICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGl0ZW0ubGluaylcbiAgICAgICAgICAgICAgICAgICAgPyBbLi4uaXRlbS5saW5rLCAuLi5jaGlsZEl0ZW0ubGlua10uam9pbignJylcbiAgICAgICAgICAgICAgICAgICAgOiBjaGlsZEl0ZW0ubGluay5qb2luKCcnKSxcbiAgICAgICAgICAgICAgICAgIGAke2l0ZW0uc2VxdWVuY2V9JHtjaGlsZEl0ZW0uc2VxdWVuY2V9YCxcbiAgICAgICAgICAgICAgICAgIGAke2l0ZW0uc2VxdWVuY2V9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcmV0dXJucyB0aGUgY2xvc2VzdCBzZXF1ZW5jZSBudW1iZXIgKGVhY2ggbWVudSBpdGVtIGhhcyBhIHNlcXVlbmNlIG51bWJlcilcblxuICAgICAgICByZXR1cm4gY2xvc2VzdFNlcXVlbmNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBtZW51SXRlbXMkKCk6IE9ic2VydmFibGU8TWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9tZW51SXRlbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdNZW51IGluaXRpYWxpemVkJyk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvbGVzID0gdGhpcy5rZXljbG9ha1NlcnZpY2UuZ2V0VXNlclJvbGVzKHRydWUpO1xuICAgIHJldHVybiB0aGlzLl9tZW51SXRlbXMkLm5leHQodGhpcy5sb2FkTWVudUl0ZW1zKHJvbGVzKSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNZW51SXRlbXModXNlclJvbGVzOiBBcnJheTxzdHJpbmc+KTogTWVudUl0ZW1bXSB7XG4gICAgbGV0IG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICAgIHRoaXMubWVudUNvbmZpZy5tZW51SXRlbXMuZm9yRWFjaCgobWVudUl0ZW06IE1lbnVJdGVtKSA9PiB7XG4gICAgICBpZiAobWVudUl0ZW0uaW5jbHVkZUZ1bmN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5pbmNsdWRlRnVuY3Rpb25PYnNlcnZhYmxlc1ttZW51SXRlbS50aXRsZV0gPVxuICAgICAgICAgIHRoaXMubWVudUluY2x1ZGVTZXJ2aWNlLmdldEluY2x1ZGVGdW5jdGlvbihtZW51SXRlbS5pbmNsdWRlRnVuY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBtZW51SXRlbS5zaG93ID0gdHJ1ZTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIHRvcCBsZXZlbCBtZW51IGl0ZW0gc3BlY2lmaWVzIHJvbGVzIGl0IHJlcXVpcmVzLiBJZiBzbywgY2hlY2sgaWYgdGhlIHVzZXIgcm9sZXMgY29udGFpbiBhdCBsZWFzdCBvbmUgb2YgdGhlc2Ugcm9sZXNcbiAgICAgIGlmIChcbiAgICAgICAgQXJyYXkuaXNBcnJheShtZW51SXRlbT8ucm9sZXMpXG4gICAgICAgICAgPyB1c2VyUm9sZXMuZmluZCh1c2VyUm9sZSA9PiBtZW51SXRlbS5yb2xlcy5pbmNsdWRlcyh1c2VyUm9sZSkpXG4gICAgICAgICAgOiB0cnVlXG4gICAgICApIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgbWVudSBpdGVtIGhhcyBjaGlsZHJlbi4gSWYgc28sIGNoZWNrIGlmIGNoaWxkcmVuIHNwZWNpZnkgcmVxdWlyZWQgcm9sZXMuIElmIHNvLCBjaGVjayBpZiB0aGUgdXNlciByb2xlcyBjb250YWluIGF0IGxlYXN0IG9uZSBvZiB0aGVzZSByb2xlc1xuICAgICAgICBjb25zdCBmaWx0ZXJlZE1lbnVJdGVtQ2hpbGRyZW4gPVxuICAgICAgICAgIG1lbnVJdGVtPy5jaGlsZHJlbiAmJlxuICAgICAgICAgIG1lbnVJdGVtPy5jaGlsZHJlbi5maWx0ZXIoY2hpbGRNZW51SXRlbSA9PlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjaGlsZE1lbnVJdGVtPy5yb2xlcylcbiAgICAgICAgICAgICAgPyB1c2VyUm9sZXMuZmluZCh1c2VyUm9sZSA9PiBjaGlsZE1lbnVJdGVtLnJvbGVzLmluY2x1ZGVzKHVzZXJSb2xlKSlcbiAgICAgICAgICAgICAgOiB0cnVlXG4gICAgICAgICAgKTtcblxuICAgICAgICAvLyBpZiB0aGUgbWVudSBpdGVtIGhhcyBjaGlsZHJlbiwgc2V0IHRoZSBtZW51IGl0ZW0gY2hpbGRyZW4gdG8gZmlsdGVyZWQgbWVudSBpdGVtIGNoaWxkcmVuXG4gICAgICAgIGNvbnN0IG1lbnVJdGVtV2l0aEZpbHRlcmVkQ2hpbGRyZW46IE1lbnVJdGVtID0ge1xuICAgICAgICAgIC4uLm1lbnVJdGVtLFxuICAgICAgICAgIC4uLihtZW51SXRlbT8uY2hpbGRyZW4gJiYge2NoaWxkcmVuOiBmaWx0ZXJlZE1lbnVJdGVtQ2hpbGRyZW59KSxcbiAgICAgICAgfTtcblxuICAgICAgICBtZW51SXRlbXMucHVzaChtZW51SXRlbVdpdGhGaWx0ZXJlZENoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtZW51SXRlbXMgPSB0aGlzLnNvcnRNZW51SXRlbXMobWVudUl0ZW1zKTtcbiAgICB0aGlzLmFwcGVuZERvc3NpZXJTdWJNZW51SXRlbXMobWVudUl0ZW1zKS5zdWJzY3JpYmUoXG4gICAgICB2YWx1ZSA9PiAobWVudUl0ZW1zID0gdGhpcy5hcHBseU1lbnVSb2xlU2VjdXJpdHkodmFsdWUpKVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5lbmFibGVPYmplY3RNYW5hZ2VtZW50KSB7XG4gICAgICB0aGlzLmFwcGVuZE9iamVjdHNTdWJNZW51SXRlbXMobWVudUl0ZW1zKS5zdWJzY3JpYmUoXG4gICAgICAgIHZhbHVlID0+IChtZW51SXRlbXMgPSB0aGlzLmFwcGx5TWVudVJvbGVTZWN1cml0eSh2YWx1ZSkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbWVudUl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0TWVudUl0ZW1zKG1lbnVJdGVtczogTWVudUl0ZW1bXSk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiBtZW51SXRlbXMuc29ydCgoYSwgYikgPT4gYS5zZXF1ZW5jZSAtIGIuc2VxdWVuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmREb3NzaWVyU3ViTWVudUl0ZW1zKG1lbnVJdGVtczogTWVudUl0ZW1bXSk6IE9ic2VydmFibGU8TWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdhcHBlbmREb3NzaWVyU3ViTWVudUl0ZW1zJyk7XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRBbGxEZWZpbml0aW9ucygpLnN1YnNjcmliZShkZWZpbml0aW9ucyA9PiB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIC4uLmRlZmluaXRpb25zLmNvbnRlbnQubWFwKGRlZmluaXRpb24gPT5cbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VTZXR0aW5ncyhkZWZpbml0aW9uPy5pZD8ubmFtZSlcbiAgICAgICAgICApLFxuICAgICAgICBdKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZShhbGxDYXNlU2V0dGluZ3MgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkRvY3VtZW50Q291bnRNYXAgPVxuICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlQ2FzZUNvdW50ICYmIHRoaXMuZ2V0T3BlbkRvY3VtZW50Q291bnRNYXAoZGVmaW5pdGlvbnMpO1xuXG4gICAgICAgICAgICBjb25zdCBkb3NzaWVyTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gZGVmaW5pdGlvbnMuY29udGVudC5tYXAoKGRlZmluaXRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhc2VTZXR0aW5ncyA9IGFsbENhc2VTZXR0aW5ncz8uZmluZChcbiAgICAgICAgICAgICAgICBzZXR0aW5nID0+IHNldHRpbmcubmFtZSA9PT0gZGVmaW5pdGlvbi5pZC5uYW1lXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsaW5rOiBbJy9kb3NzaWVycy8nICsgZGVmaW5pdGlvbi5pZC5uYW1lXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZGVmaW5pdGlvbi5zY2hlbWEudGl0bGUsXG4gICAgICAgICAgICAgICAgaWNvbkNsYXNzOiAnaWNvbiBtZGkgbWRpLWRvdC1jaXJjbGUnLFxuICAgICAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCxcbiAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICAgIC4uLighdGhpcy5kaXNhYmxlQ2FzZUNvdW50ICYmXG4gICAgICAgICAgICAgICAgICBjYXNlU2V0dGluZ3M/LmNhbkhhdmVBc3NpZ25lZSAmJiB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50JDogb3BlbkRvY3VtZW50Q291bnRNYXAuZ2V0KGRlZmluaXRpb24uaWQubmFtZSksXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSBhcyBNZW51SXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2ZvdW5kIGRvc3NpZXJNZW51SXRlbXMnLCBkb3NzaWVyTWVudUl0ZW1zKTtcbiAgICAgICAgICAgIGNvbnN0IG1lbnVJdGVtSW5kZXggPSBtZW51SXRlbXMuZmluZEluZGV4KCh7dGl0bGV9KSA9PiB0aXRsZSA9PT0gJ0Rvc3NpZXJzJyk7XG4gICAgICAgICAgICBpZiAobWVudUl0ZW1JbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llck1lbnUgPSBtZW51SXRlbXNbbWVudUl0ZW1JbmRleF07XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd1cGRhdGluZyBkb3NzaWVyTWVudScsIGRvc3NpZXJNZW51KTtcbiAgICAgICAgICAgICAgZG9zc2llck1lbnUuY2hpbGRyZW4gPSBkb3NzaWVyTWVudUl0ZW1zO1xuICAgICAgICAgICAgICBtZW51SXRlbXNbbWVudUl0ZW1JbmRleF0gPSBkb3NzaWVyTWVudTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChtZW51SXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5kb3NzaWVySXRlbXNBcHBlbmRlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdhcHBlbmREb3NzaWVyU3ViTWVudUl0ZW1zIGZpbmlzaGVkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kT2JqZWN0c1N1Yk1lbnVJdGVtcyhtZW51SXRlbXM6IE1lbnVJdGVtW10pOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnYXBwZW5kT2JqZWN0TWFuYWdlbWVudFN1Yk1lbnVJdGVtcycpO1xuICAgICAgdGhpcy5nZXRBbGxPYmplY3RzKCkuc3Vic2NyaWJlKG9iamVjdHMgPT4ge1xuICAgICAgICBjb25zdCB2aXNpYmxlT2JqZWN0cyA9IG9iamVjdHMuZmlsdGVyKG9iamVjdCA9PiBvYmplY3Q/LnNob3dJbkRhdGFNZW51ICE9PSBmYWxzZSk7XG4gICAgICAgIGlmICh2aXNpYmxlT2JqZWN0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IG9iamVjdHNNZW51SXRlbXM6IE1lbnVJdGVtW10gPSB2aXNpYmxlT2JqZWN0cy5tYXAoXG4gICAgICAgICAgICAob2JqZWN0LCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICBsaW5rOiBbJy9vYmplY3RzLycgKyBvYmplY3QuaWRdLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBvYmplY3QudGl0bGUsXG4gICAgICAgICAgICAgICAgaWNvbkNsYXNzOiAnaWNvbiBtZGkgbWRpLWRvdC1jaXJjbGUnLFxuICAgICAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCxcbiAgICAgICAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgICAgICB9KSBhcyBNZW51SXRlbVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2ZvdW5kIG9iamVjdHNNZW51SXRlbXMnLCBvYmplY3RzTWVudUl0ZW1zKTtcbiAgICAgICAgICBjb25zdCBtZW51SXRlbUluZGV4ID0gbWVudUl0ZW1zLmZpbmRJbmRleCgoe3RpdGxlfSkgPT4gdGl0bGUgPT09ICdPYmplY3RzJyk7XG4gICAgICAgICAgaWYgKG1lbnVJdGVtSW5kZXggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvYmplY3RzTWVudSA9IG1lbnVJdGVtc1ttZW51SXRlbUluZGV4XTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd1cGRhdGluZyBvYmplY3RzTWVudScsIG9iamVjdHNNZW51KTtcbiAgICAgICAgICAgIG9iamVjdHNNZW51LmNoaWxkcmVuID0gb2JqZWN0c01lbnVJdGVtcztcbiAgICAgICAgICAgIG1lbnVJdGVtc1ttZW51SXRlbUluZGV4XSA9IG9iamVjdHNNZW51O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobWVudUl0ZW1zKTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNJdGVtc0FwcGVuZGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdhcHBlbmRPYmplY3RzU3ViTWVudUl0ZW1zIGZpbmlzaGVkJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcGVuRG9jdW1lbnRDb3VudE1hcChkZWZpbml0aW9uczogRG9jdW1lbnREZWZpbml0aW9ucyk6IE1hcDxzdHJpbmcsIFN1YmplY3Q8bnVtYmVyPj4ge1xuICAgIGNvbnN0IGNvdW50TWFwID0gbmV3IE1hcDxzdHJpbmcsIFN1YmplY3Q8bnVtYmVyPj4oKTtcbiAgICBkZWZpbml0aW9ucy5jb250ZW50LmZvckVhY2goZGVmaW5pdGlvbiA9PlxuICAgICAgY291bnRNYXAuc2V0KGRlZmluaXRpb24uaWQubmFtZSwgbmV3IFN1YmplY3Q8bnVtYmVyPigpKVxuICAgICk7XG5cbiAgICB0aW1lcigwLCA1MDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0T3BlbkRvY3VtZW50Q291bnQoKS5zdWJzY3JpYmUob3BlbkRvY3VtZW50Q291bnRMaXN0ID0+IHtcbiAgICAgICAgb3BlbkRvY3VtZW50Q291bnRMaXN0LmZvckVhY2gob3BlbkRvY3VtZW50Q291bnQgPT5cbiAgICAgICAgICBjb3VudE1hcFxuICAgICAgICAgICAgLmdldChvcGVuRG9jdW1lbnRDb3VudC5kb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICAgICAgLm5leHQob3BlbkRvY3VtZW50Q291bnQub3BlbkRvY3VtZW50Q291bnQpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gY291bnRNYXA7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5TWVudVJvbGVTZWN1cml0eShtZW51SXRlbXM6IE1lbnVJdGVtW10pOiBNZW51SXRlbVtdIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICBpZiAodXNlci5yb2xlcyAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdhcHBseU1lbnVSb2xlU2VjdXJpdHknKTtcbiAgICAgICAgY29uc3QgdXNlclJvbGVzID0gdXNlci5yb2xlcztcbiAgICAgICAgbWVudUl0ZW1zLmZvckVhY2goKG1lbnVJdGVtOiBNZW51SXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjY2VzcyA9IHRoaXMuZGV0ZXJtaW5lUm9sZUFjY2VzcyhtZW51SXRlbSwgdXNlclJvbGVzKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTWVudTogY2hlY2sgcm9sZSBhY2Nlc3MnLCBtZW51SXRlbS5yb2xlcywgYWNjZXNzKTtcbiAgICAgICAgICBpZiAobWVudUl0ZW0uc2hvdyAhPT0gYWNjZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTWVudTogQ2hhbmdlIGFjY2VzcycsIG1lbnVJdGVtLCBhY2Nlc3MpO1xuICAgICAgICAgICAgbWVudUl0ZW0uc2hvdyA9IGFjY2VzcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtZW51SXRlbXM7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVJvbGVBY2Nlc3MobWVudUl0ZW06IE1lbnVJdGVtLCByb2xlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gIW1lbnVJdGVtLnJvbGVzIHx8IG1lbnVJdGVtLnJvbGVzLnNvbWUocm9sZSA9PiByb2xlcy5pbmNsdWRlcyhyb2xlKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbE9iamVjdHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5jb25maWcudmFsdGltb0FwaS5lbmRwb2ludFVyaX12MS9vYmplY3QvbWFuYWdlbWVudC9jb25maWd1cmF0aW9uYFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
244
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.DocumentService }, { type: i3.HttpClient }, { type: i4.KeycloakService }, { type: i5.NGXLogger }, { type: i1.MenuIncludeService }, { type: i6.PendingChangesService }, { type: i7.Router }, { type: i8.UserProviderService }]; } });
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51L21lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQU1uRixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU1qRCxNQUFNLE9BQU8sV0FBVztJQVV0QixJQUFJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsWUFDbUIsYUFBNEIsRUFDNUIsZUFBZ0MsRUFDaEMsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsTUFBaUIsRUFDakIsa0JBQXNDLEVBQ3RDLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsbUJBQXdDO1FBUnhDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixD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QkFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDckUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTt3QkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUMzRCxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztxQkFDeEI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWtCLEVBQUUsS0FBZTtRQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLG9DQUFvQyxDQUN4RixDQUFDO0lBQ0osQ0FBQzsrR0E5U1UsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJlc29sdmVFbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgTWVudUNvbmZpZywgTWVudUluY2x1ZGVTZXJ2aWNlLCBNZW51SXRlbX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnREZWZpbml0aW9ucywgRG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7S2V5Y2xvYWtTZXJ2aWNlfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIGluY2x1ZGVGdW5jdGlvbk9ic2VydmFibGVzOiB7W2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxib29sZWFuPn0gPSB7fTtcblxuICBwcml2YXRlIF9tZW51SXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG4gIHByaXZhdGUgbWVudUNvbmZpZzogTWVudUNvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVDYXNlQ291bnQhOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZU9iamVjdE1hbmFnZW1lbnQhOiBib29sZWFuO1xuXG4gIGdldCBhY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWtTZXJ2aWNlOiBLZXljbG9ha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lbnVJbmNsdWRlU2VydmljZTogTWVudUluY2x1ZGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVuZGluZ0NoYW5nZXNTZXJ2aWNlOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2VcbiAgKSB7XG4gICAgY29uc3QgY29uZmlnID0gY29uZmlnU2VydmljZT8uY29uZmlnO1xuICAgIHRoaXMubWVudUNvbmZpZyA9IGNvbmZpZz8ubWVudTtcbiAgICB0aGlzLmRpc2FibGVDYXNlQ291bnQgPSBjb25maWc/LmZlYXR1cmVUb2dnbGVzPy5kaXNhYmxlQ2FzZUNvdW50O1xuICAgIHRoaXMuZW5hYmxlT2JqZWN0TWFuYWdlbWVudCA9IGNvbmZpZz8uZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZU9iamVjdE1hbmFnZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRSb3V0ZSQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoXG4gICAgICBldmVudCA9PlxuICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHxcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgfHxcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlRW5kXG4gICAgKSxcbiAgICBtYXAoZXZlbnQgPT4gKGV2ZW50IGFzIE5hdmlnYXRpb25FbmQpPy51cmwpLFxuICAgIGZpbHRlcih1cmwgPT4gISF1cmwpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVySXRlbXNBcHBlbmRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvYmplY3RzSXRlbXNBcHBlbmRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBGaW5kIG91dCB3aGljaCBtZW51IGl0ZW0gc2VxdWVuY2UgbnVtYmVyIG1hdGNoZXMgdGhlIGN1cnJlbnQgdXJsIHRoZSBjbG9zZXN0XG4gIHB1YmxpYyBnZXQgY2xvc2VzdFNlcXVlbmNlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZG9zc2llckl0ZW1zQXBwZW5kZWQkLFxuICAgICAgdGhpcy5vYmplY3RzSXRlbXNBcHBlbmRlZCQsXG4gICAgICB0aGlzLmN1cnJlbnRSb3V0ZSQsXG4gICAgICB0aGlzLm1lbnVJdGVtcyQsXG4gICAgXSkucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5wZW5kaW5nQ2hhbmdlc1NlcnZpY2UucGVuZGluZ0NoYW5nZXMpLFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoW2Rvc3NpZXJJdGVtc0FwcGVuZGVkLCBvYmplY3RzSXRlbXNBcHBlbmRlZF0pID0+XG4gICAgICAgICAgZG9zc2llckl0ZW1zQXBwZW5kZWQgfHwgb2JqZWN0c0l0ZW1zQXBwZW5kZWRcbiAgICAgICksXG4gICAgICBtYXAoKFtfMSwgXzIsIGN1cnJlbnRSb3V0ZSwgbWVudUl0ZW1zXSkgPT4ge1xuICAgICAgICBsZXQgY2xvc2VzdFNlcXVlbmNlID0gJzAnO1xuICAgICAgICBsZXQgaGlnaGVzdERpZmZlcmVuY2UgPSAwO1xuXG4gICAgICAgIC8vIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBjaGVjayBob3cgY2xvc2VseSBlYWNoIGl0ZW0gbWF0Y2hlcyB0byB0aGUgY3VycmVudCB1cmxcbiAgICAgICAgY29uc3QgY2hlY2tJdGVtTWF0Y2ggPSAoXG4gICAgICAgICAgc3RyaW5nVXJsOiBzdHJpbmcsXG4gICAgICAgICAgc2VxdWVuY2U6IHN0cmluZyxcbiAgICAgICAgICBwYXJlbnRTZXF1ZW5jZT86IHN0cmluZ1xuICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAvLyBsZW5ndGggb2YgdGhlIGN1cnJlbnQgZnVsbCB1cmxcbiAgICAgICAgICBjb25zdCBjdXJyZW50Um91dGVVcmxMZW5ndGggPSBjdXJyZW50Um91dGUubGVuZ3RoO1xuICAgICAgICAgIC8vIGxlbmd0aCBvZiB0aGUgY3VycmVudCBmdWxsIHVybCB3aXRoIHRoZSBpdGVtJ3MgdXJsIHN1YnN0cmFjdGVkXG4gICAgICAgICAgY29uc3QgY3VycmVudFJvdXRlU3Vic3RyYWN0TGVuZ3RoID0gY3VycmVudFJvdXRlLnJlcGxhY2Uoc3RyaW5nVXJsLCAnJykubGVuZ3RoO1xuICAgICAgICAgIC8vIHRoZSBhbW91bnQgb2YgY2hhcmFjdGVycyB0aGF0IGNvdWxkIGJlIHN1YnN0cmFjdGVkXG4gICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IGN1cnJlbnRSb3V0ZVVybExlbmd0aCAtIGN1cnJlbnRSb3V0ZVN1YnN0cmFjdExlbmd0aDtcblxuICAgICAgICAgIC8vIHRoZSBsYXJnZXIgdGhlIGFtb3VudCBvZiBjaGFyYWN0ZXJzIHRoYXQgY291bGQgYmUgc3Vic3RyYWN0ZWQsIHRoZSBtb3JlIGNsb3NlbHkgdGhlIG1lbnUgaXRlbSB1cmwgbWF0Y2hlcyB0aGUgY3VycmVudCB1cmxcbiAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA+IGhpZ2hlc3REaWZmZXJlbmNlKSB7XG4gICAgICAgICAgICBoaWdoZXN0RGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgICAgICAgICBjbG9zZXN0U2VxdWVuY2UgPSBzZXF1ZW5jZTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudFNlcXVlbmNlKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVBhcmVudFNlcXVlbmNlTnVtYmVyJC5uZXh0KHBhcmVudFNlcXVlbmNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVBhcmVudFNlcXVlbmNlTnVtYmVyJC5uZXh0KCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gY2hlY2sgaG93IGNsb3NlbHkgZWFjaCBtZW51IGl0ZW0gKGFuZCBjaGlsZCBtZW51IGl0ZW0pIG1hdGNoZXMgdGhlIGN1cnJlbnQgdXJsIHVzaW5nIGEgcmVjdXJzaXZlIGZ1bmN0aW9uXG4gICAgICAgIG1lbnVJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGNoZWNrSXRlbU1hdGNoKGl0ZW0ubGluaz8uam9pbignJykgfHwgJycsIGAke2l0ZW0uc2VxdWVuY2V9YCk7XG5cbiAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkSXRlbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkSXRlbS5saW5rKSkge1xuICAgICAgICAgICAgICAgIGNoZWNrSXRlbU1hdGNoKFxuICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpdGVtLmxpbmspXG4gICAgICAgICAgICAgICAgICAgID8gWy4uLml0ZW0ubGluaywgLi4uY2hpbGRJdGVtLmxpbmtdLmpvaW4oJycpXG4gICAgICAgICAgICAgICAgICAgIDogY2hpbGRJdGVtLmxpbmsuam9pbignJyksXG4gICAgICAgICAgICAgICAgICBgJHtpdGVtLnNlcXVlbmNlfSR7Y2hpbGRJdGVtLnNlcXVlbmNlfWAsXG4gICAgICAgICAgICAgICAgICBgJHtpdGVtLnNlcXVlbmNlfWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHJldHVybnMgdGhlIGNsb3Nlc3Qgc2VxdWVuY2UgbnVtYmVyIChlYWNoIG1lbnUgaXRlbSBoYXMgYSBzZXF1ZW5jZSBudW1iZXIpXG5cbiAgICAgICAgcmV0dXJuIGNsb3Nlc3RTZXF1ZW5jZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudUl0ZW1zJCgpOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbWVudUl0ZW1zJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWQoKTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTWVudSBpbml0aWFsaXplZCcpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICBjb25zdCByb2xlcyA9IHRoaXMua2V5Y2xvYWtTZXJ2aWNlLmdldFVzZXJSb2xlcyh0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5fbWVudUl0ZW1zJC5uZXh0KHRoaXMubG9hZE1lbnVJdGVtcyhyb2xlcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTWVudUl0ZW1zKHVzZXJSb2xlczogQXJyYXk8c3RyaW5nPik6IE1lbnVJdGVtW10ge1xuICAgIGxldCBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcbiAgICB0aGlzLm1lbnVDb25maWcubWVudUl0ZW1zLmZvckVhY2goKG1lbnVJdGVtOiBNZW51SXRlbSkgPT4ge1xuICAgICAgaWYgKG1lbnVJdGVtLmluY2x1ZGVGdW5jdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZUZ1bmN0aW9uT2JzZXJ2YWJsZXNbbWVudUl0ZW0udGl0bGVdID1cbiAgICAgICAgICB0aGlzLm1lbnVJbmNsdWRlU2VydmljZS5nZXRJbmNsdWRlRnVuY3Rpb24obWVudUl0ZW0uaW5jbHVkZUZ1bmN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgbWVudUl0ZW0uc2hvdyA9IHRydWU7XG5cbiAgICAgIC8vIGNoZWNrIGlmIHRoZSB0b3AgbGV2ZWwgbWVudSBpdGVtIHNwZWNpZmllcyByb2xlcyBpdCByZXF1aXJlcy4gSWYgc28sIGNoZWNrIGlmIHRoZSB1c2VyIHJvbGVzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIG9mIHRoZXNlIHJvbGVzXG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkobWVudUl0ZW0/LnJvbGVzKVxuICAgICAgICAgID8gdXNlclJvbGVzLmZpbmQodXNlclJvbGUgPT4gbWVudUl0ZW0ucm9sZXMuaW5jbHVkZXModXNlclJvbGUpKVxuICAgICAgICAgIDogdHJ1ZVxuICAgICAgKSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIG1lbnUgaXRlbSBoYXMgY2hpbGRyZW4uIElmIHNvLCBjaGVjayBpZiBjaGlsZHJlbiBzcGVjaWZ5IHJlcXVpcmVkIHJvbGVzLiBJZiBzbywgY2hlY2sgaWYgdGhlIHVzZXIgcm9sZXMgY29udGFpbiBhdCBsZWFzdCBvbmUgb2YgdGhlc2Ugcm9sZXNcbiAgICAgICAgY29uc3QgZmlsdGVyZWRNZW51SXRlbUNoaWxkcmVuID1cbiAgICAgICAgICBtZW51SXRlbT8uY2hpbGRyZW4gJiZcbiAgICAgICAgICBtZW51SXRlbT8uY2hpbGRyZW4uZmlsdGVyKGNoaWxkTWVudUl0ZW0gPT5cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRNZW51SXRlbT8ucm9sZXMpXG4gICAgICAgICAgICAgID8gdXNlclJvbGVzLmZpbmQodXNlclJvbGUgPT4gY2hpbGRNZW51SXRlbS5yb2xlcy5pbmNsdWRlcyh1c2VyUm9sZSkpXG4gICAgICAgICAgICAgIDogdHJ1ZVxuICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gaWYgdGhlIG1lbnUgaXRlbSBoYXMgY2hpbGRyZW4sIHNldCB0aGUgbWVudSBpdGVtIGNoaWxkcmVuIHRvIGZpbHRlcmVkIG1lbnUgaXRlbSBjaGlsZHJlblxuICAgICAgICBjb25zdCBtZW51SXRlbVdpdGhGaWx0ZXJlZENoaWxkcmVuOiBNZW51SXRlbSA9IHtcbiAgICAgICAgICAuLi5tZW51SXRlbSxcbiAgICAgICAgICAuLi4obWVudUl0ZW0/LmNoaWxkcmVuICYmIHtjaGlsZHJlbjogZmlsdGVyZWRNZW51SXRlbUNoaWxkcmVufSksXG4gICAgICAgIH07XG5cbiAgICAgICAgbWVudUl0ZW1zLnB1c2gobWVudUl0ZW1XaXRoRmlsdGVyZWRDaGlsZHJlbik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbWVudUl0ZW1zID0gdGhpcy5zb3J0TWVudUl0ZW1zKG1lbnVJdGVtcyk7XG4gICAgdGhpcy5hcHBlbmREb3NzaWVyU3ViTWVudUl0ZW1zKG1lbnVJdGVtcykuc3Vic2NyaWJlKFxuICAgICAgdmFsdWUgPT4gKG1lbnVJdGVtcyA9IHRoaXMuYXBwbHlNZW51Um9sZVNlY3VyaXR5KHZhbHVlKSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlT2JqZWN0TWFuYWdlbWVudCkge1xuICAgICAgdGhpcy5hcHBlbmRPYmplY3RzU3ViTWVudUl0ZW1zKG1lbnVJdGVtcykuc3Vic2NyaWJlKFxuICAgICAgICB2YWx1ZSA9PiAobWVudUl0ZW1zID0gdGhpcy5hcHBseU1lbnVSb2xlU2VjdXJpdHkodmFsdWUpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgc29ydE1lbnVJdGVtcyhtZW51SXRlbXM6IE1lbnVJdGVtW10pOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gbWVudUl0ZW1zLnNvcnQoKGEsIGIpID0+IGEuc2VxdWVuY2UgLSBiLnNlcXVlbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kRG9zc2llclN1Yk1lbnVJdGVtcyhtZW51SXRlbXM6IE1lbnVJdGVtW10pOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnYXBwZW5kRG9zc2llclN1Yk1lbnVJdGVtcycpO1xuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0QWxsRGVmaW5pdGlvbnMoKS5zdWJzY3JpYmUoZGVmaW5pdGlvbnMgPT4ge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAuLi5kZWZpbml0aW9ucy5jb250ZW50Lm1hcChkZWZpbml0aW9uID0+XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRDYXNlU2V0dGluZ3MoZGVmaW5pdGlvbj8uaWQ/Lm5hbWUpXG4gICAgICAgICAgKSxcbiAgICAgICAgXSlcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoYWxsQ2FzZVNldHRpbmdzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW5Eb2N1bWVudENvdW50TWFwID1cbiAgICAgICAgICAgICAgIXRoaXMuZGlzYWJsZUNhc2VDb3VudCAmJiB0aGlzLmdldE9wZW5Eb2N1bWVudENvdW50TWFwKGRlZmluaXRpb25zKTtcblxuICAgICAgICAgICAgY29uc3QgZG9zc2llck1lbnVJdGVtczogTWVudUl0ZW1bXSA9IGRlZmluaXRpb25zLmNvbnRlbnQubWFwKChkZWZpbml0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjYXNlU2V0dGluZ3MgPSBhbGxDYXNlU2V0dGluZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgc2V0dGluZyA9PiBzZXR0aW5nLm5hbWUgPT09IGRlZmluaXRpb24uaWQubmFtZVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGluazogWycvZG9zc2llcnMvJyArIGRlZmluaXRpb24uaWQubmFtZV0sXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRlZmluaXRpb24uc2NoZW1hLnRpdGxlLFxuICAgICAgICAgICAgICAgIGljb25DbGFzczogJ2ljb24gbWRpIG1kaS1kb3QtY2lyY2xlJyxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAuLi4oIXRoaXMuZGlzYWJsZUNhc2VDb3VudCAmJlxuICAgICAgICAgICAgICAgICAgY2FzZVNldHRpbmdzPy5jYW5IYXZlQXNzaWduZWUgJiYge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCQ6IG9wZW5Eb2N1bWVudENvdW50TWFwLmdldChkZWZpbml0aW9uLmlkLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0gYXMgTWVudUl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdmb3VuZCBkb3NzaWVyTWVudUl0ZW1zJywgZG9zc2llck1lbnVJdGVtcyk7XG4gICAgICAgICAgICBjb25zdCBtZW51SXRlbUluZGV4ID0gbWVudUl0ZW1zLmZpbmRJbmRleCgoe3RpdGxlfSkgPT4gdGl0bGUgPT09ICdEb3NzaWVycycpO1xuICAgICAgICAgICAgaWYgKG1lbnVJdGVtSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJNZW51ID0gbWVudUl0ZW1zW21lbnVJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndXBkYXRpbmcgZG9zc2llck1lbnUnLCBkb3NzaWVyTWVudSk7XG4gICAgICAgICAgICAgIGRvc3NpZXJNZW51LmNoaWxkcmVuID0gZG9zc2llck1lbnVJdGVtcztcbiAgICAgICAgICAgICAgbWVudUl0ZW1zW21lbnVJdGVtSW5kZXhdID0gZG9zc2llck1lbnU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobWVudUl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuZG9zc2llckl0ZW1zQXBwZW5kZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnYXBwZW5kRG9zc2llclN1Yk1lbnVJdGVtcyBmaW5pc2hlZCcpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZE9iamVjdHNTdWJNZW51SXRlbXMobWVudUl0ZW1zOiBNZW51SXRlbVtdKTogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZXIgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2FwcGVuZE9iamVjdE1hbmFnZW1lbnRTdWJNZW51SXRlbXMnKTtcbiAgICAgIHRoaXMuZ2V0QWxsT2JqZWN0cygpLnN1YnNjcmliZShvYmplY3RzID0+IHtcbiAgICAgICAgY29uc3QgdmlzaWJsZU9iamVjdHMgPSBvYmplY3RzLmZpbHRlcihvYmplY3QgPT4gb2JqZWN0Py5zaG93SW5EYXRhTWVudSAhPT0gZmFsc2UpO1xuICAgICAgICBpZiAodmlzaWJsZU9iamVjdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBvYmplY3RzTWVudUl0ZW1zOiBNZW51SXRlbVtdID0gdmlzaWJsZU9iamVjdHMubWFwKFxuICAgICAgICAgICAgKG9iamVjdCwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgbGluazogWycvb2JqZWN0cy8nICsgb2JqZWN0LmlkXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogb2JqZWN0LnRpdGxlLFxuICAgICAgICAgICAgICAgIGljb25DbGFzczogJ2ljb24gbWRpIG1kaS1kb3QtY2lyY2xlJyxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgfSkgYXMgTWVudUl0ZW1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdmb3VuZCBvYmplY3RzTWVudUl0ZW1zJywgb2JqZWN0c01lbnVJdGVtcyk7XG4gICAgICAgICAgY29uc3QgbWVudUl0ZW1JbmRleCA9IG1lbnVJdGVtcy5maW5kSW5kZXgoKHt0aXRsZX0pID0+IHRpdGxlID09PSAnT2JqZWN0cycpO1xuICAgICAgICAgIGlmIChtZW51SXRlbUluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgb2JqZWN0c01lbnUgPSBtZW51SXRlbXNbbWVudUl0ZW1JbmRleF07XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndXBkYXRpbmcgb2JqZWN0c01lbnUnLCBvYmplY3RzTWVudSk7XG4gICAgICAgICAgICBvYmplY3RzTWVudS5jaGlsZHJlbiA9IG9iamVjdHNNZW51SXRlbXM7XG4gICAgICAgICAgICBtZW51SXRlbXNbbWVudUl0ZW1JbmRleF0gPSBvYmplY3RzTWVudTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG1lbnVJdGVtcyk7XG4gICAgICAgICAgdGhpcy5vYmplY3RzSXRlbXNBcHBlbmRlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnYXBwZW5kT2JqZWN0c1N1Yk1lbnVJdGVtcyBmaW5pc2hlZCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3BlbkRvY3VtZW50Q291bnRNYXAoZGVmaW5pdGlvbnM6IERvY3VtZW50RGVmaW5pdGlvbnMpOiBNYXA8c3RyaW5nLCBTdWJqZWN0PG51bWJlcj4+IHtcbiAgICBjb25zdCBjb3VudE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTdWJqZWN0PG51bWJlcj4+KCk7XG4gICAgZGVmaW5pdGlvbnMuY29udGVudC5mb3JFYWNoKGRlZmluaXRpb24gPT5cbiAgICAgIGNvdW50TWFwLnNldChkZWZpbml0aW9uLmlkLm5hbWUsIG5ldyBTdWJqZWN0PG51bWJlcj4oKSlcbiAgICApO1xuXG4gICAgdGltZXIoMCwgNTAwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldE9wZW5Eb2N1bWVudENvdW50KCkuc3Vic2NyaWJlKG9wZW5Eb2N1bWVudENvdW50TGlzdCA9PiB7XG4gICAgICAgIG9wZW5Eb2N1bWVudENvdW50TGlzdC5mb3JFYWNoKG9wZW5Eb2N1bWVudENvdW50ID0+XG4gICAgICAgICAgY291bnRNYXBcbiAgICAgICAgICAgIC5nZXQob3BlbkRvY3VtZW50Q291bnQuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgICAgICAgIC5uZXh0KG9wZW5Eb2N1bWVudENvdW50Lm9wZW5Eb2N1bWVudENvdW50KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50TWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU1lbnVSb2xlU2VjdXJpdHkobWVudUl0ZW1zOiBNZW51SXRlbVtdKTogTWVudUl0ZW1bXSB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLmdldFVzZXJTdWJqZWN0KCkuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgaWYgKHVzZXIucm9sZXMgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnYXBwbHlNZW51Um9sZVNlY3VyaXR5Jyk7XG4gICAgICAgIGNvbnN0IHVzZXJSb2xlcyA9IHVzZXIucm9sZXM7XG4gICAgICAgIG1lbnVJdGVtcy5mb3JFYWNoKChtZW51SXRlbTogTWVudUl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBhY2Nlc3MgPSB0aGlzLmRldGVybWluZVJvbGVBY2Nlc3MobWVudUl0ZW0sIHVzZXJSb2xlcyk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ01lbnU6IGNoZWNrIHJvbGUgYWNjZXNzJywgbWVudUl0ZW0ucm9sZXMsIGFjY2Vzcyk7XG4gICAgICAgICAgaWYgKG1lbnVJdGVtLnNob3cgIT09IGFjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ01lbnU6IENoYW5nZSBhY2Nlc3MnLCBtZW51SXRlbSwgYWNjZXNzKTtcbiAgICAgICAgICAgIG1lbnVJdGVtLnNob3cgPSBhY2Nlc3M7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWVudUl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlcm1pbmVSb2xlQWNjZXNzKG1lbnVJdGVtOiBNZW51SXRlbSwgcm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFtZW51SXRlbS5yb2xlcyB8fCBtZW51SXRlbS5yb2xlcy5zb21lKHJvbGUgPT4gcm9sZXMuaW5jbHVkZXMocm9sZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxPYmplY3RzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnZhbHRpbW9BcGkuZW5kcG9pbnRVcml9djEvb2JqZWN0L21hbmFnZW1lbnQvY29uZmlndXJhdGlvbmBcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { inject } from '@angular/core';
|
|
17
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
18
|
+
import { ModalButtonType, ModalService } from 'carbon-components-angular';
|
|
19
|
+
import { Subject } from 'rxjs';
|
|
20
|
+
import { PendingChangesService } from './pending-changes.service';
|
|
21
|
+
export class PendingChangesComponent {
|
|
22
|
+
set pendingChanges(value) {
|
|
23
|
+
this._pendingChangesService.pendingChanges = value;
|
|
24
|
+
}
|
|
25
|
+
get pendingChanges() {
|
|
26
|
+
return this._pendingChangesService.pendingChanges;
|
|
27
|
+
}
|
|
28
|
+
constructor() {
|
|
29
|
+
this._activeModal = null;
|
|
30
|
+
this._modalService = inject(ModalService);
|
|
31
|
+
this._pendingChangesService = inject(PendingChangesService);
|
|
32
|
+
this._translateService = inject(TranslateService);
|
|
33
|
+
}
|
|
34
|
+
canDeactivate() {
|
|
35
|
+
if (!this.pendingChanges) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
const deactivateSubject = new Subject();
|
|
39
|
+
if (!!this._activeModal) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
this._activeModal = this._modalService.show({
|
|
43
|
+
title: this._translateService.instant('interface.pendingChanges.title'),
|
|
44
|
+
content: this._translateService.instant('interface.pendingChanges.content'),
|
|
45
|
+
showCloseButton: false,
|
|
46
|
+
buttons: [
|
|
47
|
+
{
|
|
48
|
+
text: this._translateService.instant('interface.cancel'),
|
|
49
|
+
type: ModalButtonType.secondary,
|
|
50
|
+
click: () => {
|
|
51
|
+
this.onCancelRedirect();
|
|
52
|
+
deactivateSubject.next(false);
|
|
53
|
+
this._activeModal = null;
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
text: this._translateService.instant('interface.confirm'),
|
|
58
|
+
type: ModalButtonType.primary,
|
|
59
|
+
click: () => {
|
|
60
|
+
this.onConfirmRedirect();
|
|
61
|
+
deactivateSubject.next(true);
|
|
62
|
+
this._activeModal = null;
|
|
63
|
+
this.pendingChanges = false;
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
close: () => false,
|
|
68
|
+
});
|
|
69
|
+
return deactivateSubject;
|
|
70
|
+
}
|
|
71
|
+
onCancelRedirect() { }
|
|
72
|
+
onConfirmRedirect() { }
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1jaGFuZ2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQWUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRSxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDLElBQWMsY0FBYyxDQUFDLEtBQWM7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVELElBQWMsY0FBYztRQUMxQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUM7SUFDcEQsQ0FBQztJQUVEO1FBYlEsaUJBQVksR0FBNkIsSUFBSSxDQUFDO1FBY3BELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLGFBQWE7UUFLbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVqRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3ZFLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDO1lBQzNFLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztvQkFDeEQsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTO29CQUMvQixLQUFLLEVBQUUsR0FBRyxFQUFFO3dCQUNWLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUN4QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUMzQixDQUFDO2lCQUNGO2dCQUNEO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO29CQUN6RCxJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU87b0JBQzdCLEtBQUssRUFBRSxHQUFHLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7d0JBQ3pCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO29CQUM5QixDQUFDO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUM7UUFFSCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFUyxnQkFBZ0IsS0FBVSxDQUFDO0lBRTNCLGlCQUFpQixLQUFVLENBQUM7Q0FDdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnRSZWYsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNb2RhbEJ1dHRvblR5cGUsIE1vZGFsU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4vcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgUGVuZGluZ0NoYW5nZXNDb21wb25lbnQge1xuICBwcml2YXRlIF9hY3RpdmVNb2RhbDogQ29tcG9uZW50UmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2U7XG4gIHByaXZhdGUgX3BlbmRpbmdDaGFuZ2VzU2VydmljZTogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlO1xuICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBzZXQgcGVuZGluZ0NoYW5nZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9wZW5kaW5nQ2hhbmdlc1NlcnZpY2UucGVuZGluZ0NoYW5nZXMgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgcGVuZGluZ0NoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdDaGFuZ2VzU2VydmljZS5wZW5kaW5nQ2hhbmdlcztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX21vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICAgIHRoaXMuX3BlbmRpbmdDaGFuZ2VzU2VydmljZSA9IGluamVjdChQZW5kaW5nQ2hhbmdlc1NlcnZpY2UpO1xuICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgY2FuRGVhY3RpdmF0ZSgpOlxuICAgIHwgT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT5cbiAgICB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+XG4gICAgfCBib29sZWFuXG4gICAgfCBVcmxUcmVlIHtcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGRlYWN0aXZhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGlmICghIXRoaXMuX2FjdGl2ZU1vZGFsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlTW9kYWwgPSB0aGlzLl9tb2RhbFNlcnZpY2Uuc2hvdyh7XG4gICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdpbnRlcmZhY2UucGVuZGluZ0NoYW5nZXMudGl0bGUnKSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnaW50ZXJmYWNlLnBlbmRpbmdDaGFuZ2VzLmNvbnRlbnQnKSxcbiAgICAgIHNob3dDbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2ludGVyZmFjZS5jYW5jZWwnKSxcbiAgICAgICAgICB0eXBlOiBNb2RhbEJ1dHRvblR5cGUuc2Vjb25kYXJ5LFxuICAgICAgICAgIGNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2FuY2VsUmVkaXJlY3QoKTtcbiAgICAgICAgICAgIGRlYWN0aXZhdGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlTW9kYWwgPSBudWxsO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2ludGVyZmFjZS5jb25maXJtJyksXG4gICAgICAgICAgdHlwZTogTW9kYWxCdXR0b25UeXBlLnByaW1hcnksXG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Db25maXJtUmVkaXJlY3QoKTtcbiAgICAgICAgICAgIGRlYWN0aXZhdGVTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVNb2RhbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzID0gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjbG9zZTogKCkgPT4gZmFsc2UsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVhY3RpdmF0ZVN1YmplY3Q7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DYW5jZWxSZWRpcmVjdCgpOiB2b2lkIHt9XG5cbiAgcHJvdGVjdGVkIG9uQ29uZmlybVJlZGlyZWN0KCk6IHZvaWQge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Injectable } from '@angular/core';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
export class PendingChangesService {
|
|
19
|
+
constructor() {
|
|
20
|
+
this._pendingChanges = false;
|
|
21
|
+
}
|
|
22
|
+
set pendingChanges(value) {
|
|
23
|
+
this._pendingChanges = value;
|
|
24
|
+
}
|
|
25
|
+
get pendingChanges() {
|
|
26
|
+
return this._pendingChanges;
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PendingChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
29
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PendingChangesService, providedIn: 'root' }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PendingChangesService, decorators: [{
|
|
32
|
+
type: Injectable,
|
|
33
|
+
args: [{
|
|
34
|
+
providedIn: 'root',
|
|
35
|
+
}]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3pDLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJVSxvQkFBZSxHQUFHLEtBQUssQ0FBQztLQU9qQztJQU5DLElBQVcsY0FBYyxDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzsrR0FQVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZW5kaW5nQ2hhbmdlc1NlcnZpY2Uge1xuICBwcml2YXRlIF9wZW5kaW5nQ2hhbmdlcyA9IGZhbHNlO1xuICBwdWJsaWMgc2V0IHBlbmRpbmdDaGFuZ2VzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcGVuZGluZ0NoYW5nZXMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBlbmRpbmdDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQ2hhbmdlcztcbiAgfVxufVxuIl19
|