@rxap/layout 15.0.0 → 16.0.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/{esm2020 → esm2022}/lib/footer/footer.component.mjs +10 -9
  2. package/esm2022/lib/footer/footer.component.module.mjs +30 -0
  3. package/esm2022/lib/footer.directive.mjs +54 -0
  4. package/{esm2020 → esm2022}/lib/header/apps-button/apps-button.component.mjs +15 -14
  5. package/esm2022/lib/header/apps-button/apps-button.component.module.mjs +46 -0
  6. package/esm2022/lib/header/header.component.mjs +131 -0
  7. package/esm2022/lib/header/header.component.module.mjs +70 -0
  8. package/esm2022/lib/header/language-selector/language-selector.component.mjs +113 -0
  9. package/{esm2020 → esm2022}/lib/header/language-selector/language-selector.component.module.mjs +8 -7
  10. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +34 -0
  11. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.mjs +26 -0
  12. package/esm2022/lib/header/reset-button/reset-button.component.mjs +28 -0
  13. package/esm2022/lib/header/reset-button/reset-button.component.module.mjs +26 -0
  14. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +45 -0
  15. package/{esm2020 → esm2022}/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.module.mjs +8 -7
  16. package/esm2022/lib/header/sign-out/sign-out.component.mjs +32 -0
  17. package/esm2022/lib/header/sign-out/sign-out.component.module.mjs +30 -0
  18. package/{esm2020 → esm2022}/lib/header/user-profile-icon/user-profile-icon.component.mjs +21 -20
  19. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.module.mjs +38 -0
  20. package/esm2022/lib/layout/layout.component.mjs +79 -0
  21. package/esm2022/lib/layout/layout.component.module.mjs +70 -0
  22. package/esm2022/lib/layout/layout.component.service.mjs +44 -0
  23. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +287 -0
  24. package/esm2022/lib/navigation/navigation.component.mjs +131 -0
  25. package/{esm2020 → esm2022}/lib/navigation/navigation.component.module.mjs +16 -15
  26. package/esm2022/lib/navigation/navigation.service.mjs +144 -0
  27. package/esm2022/lib/navigation/replace-router-paths.pipe.mjs +36 -0
  28. package/esm2022/lib/navigation/replace-router-paths.service.mjs +16 -0
  29. package/esm2022/lib/sidenav/sidenav-footer.directive.mjs +20 -0
  30. package/esm2022/lib/sidenav/sidenav-header.directive.mjs +20 -0
  31. package/esm2022/lib/sidenav/sidenav.component.mjs +121 -0
  32. package/esm2022/lib/sidenav/sidenav.component.module.mjs +44 -0
  33. package/esm2022/lib/sidenav/sidenav.component.service.mjs +23 -0
  34. package/esm2022/lib/sidenav/version/version.component.mjs +63 -0
  35. package/{esm2020 → esm2022}/lib/sidenav/version/version.component.module.mjs +7 -6
  36. package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +46 -0
  37. package/{esm2020 → esm2022}/lib/sidenav-content/sidenav-content.component.module.mjs +7 -6
  38. package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +37 -0
  39. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +51 -0
  40. package/{esm2020 → esm2022}/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.module.mjs +8 -7
  41. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +74 -0
  42. package/{esm2020 → esm2022}/lib/window-container-sidenav/window-container-sidenav.component.module.mjs +8 -7
  43. package/{fesm2020 → fesm2022}/rxap-layout.mjs +436 -437
  44. package/fesm2022/rxap-layout.mjs.map +1 -0
  45. package/lib/header/header.component.d.ts +1 -1
  46. package/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +1 -1
  47. package/lib/navigation/navigation-item/navigation-item.component.d.ts +1 -1
  48. package/lib/navigation/navigation-item.d.ts +2 -2
  49. package/lib/navigation/navigation.component.d.ts +1 -1
  50. package/lib/sidenav-content/sidenav-content.component.d.ts +1 -1
  51. package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +1 -1
  52. package/package.json +26 -32
  53. package/esm2020/lib/footer/footer.component.module.mjs +0 -29
  54. package/esm2020/lib/footer.directive.mjs +0 -52
  55. package/esm2020/lib/header/apps-button/apps-button.component.module.mjs +0 -45
  56. package/esm2020/lib/header/header.component.mjs +0 -130
  57. package/esm2020/lib/header/header.component.module.mjs +0 -69
  58. package/esm2020/lib/header/language-selector/language-selector.component.mjs +0 -111
  59. package/esm2020/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -33
  60. package/esm2020/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.mjs +0 -25
  61. package/esm2020/lib/header/reset-button/reset-button.component.mjs +0 -27
  62. package/esm2020/lib/header/reset-button/reset-button.component.module.mjs +0 -25
  63. package/esm2020/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -44
  64. package/esm2020/lib/header/sign-out/sign-out.component.mjs +0 -31
  65. package/esm2020/lib/header/sign-out/sign-out.component.module.mjs +0 -29
  66. package/esm2020/lib/header/user-profile-icon/user-profile-icon.component.module.mjs +0 -37
  67. package/esm2020/lib/layout/layout.component.mjs +0 -78
  68. package/esm2020/lib/layout/layout.component.module.mjs +0 -69
  69. package/esm2020/lib/layout/layout.component.service.mjs +0 -43
  70. package/esm2020/lib/navigation/navigation-item/navigation-item.component.mjs +0 -286
  71. package/esm2020/lib/navigation/navigation.component.mjs +0 -130
  72. package/esm2020/lib/navigation/navigation.service.mjs +0 -143
  73. package/esm2020/lib/navigation/replace-router-paths.pipe.mjs +0 -34
  74. package/esm2020/lib/navigation/replace-router-paths.service.mjs +0 -15
  75. package/esm2020/lib/sidenav/sidenav-footer.directive.mjs +0 -19
  76. package/esm2020/lib/sidenav/sidenav-header.directive.mjs +0 -19
  77. package/esm2020/lib/sidenav/sidenav.component.mjs +0 -120
  78. package/esm2020/lib/sidenav/sidenav.component.module.mjs +0 -43
  79. package/esm2020/lib/sidenav/sidenav.component.service.mjs +0 -22
  80. package/esm2020/lib/sidenav/version/version.component.mjs +0 -62
  81. package/esm2020/lib/sidenav-content/sidenav-content.component.mjs +0 -45
  82. package/esm2020/lib/sidenav-content/sidenav-content.component.service.mjs +0 -36
  83. package/esm2020/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +0 -50
  84. package/esm2020/lib/window-container-sidenav/window-container-sidenav.component.mjs +0 -73
  85. package/fesm2015/rxap-layout.mjs +0 -2543
  86. package/fesm2015/rxap-layout.mjs.map +0 -1
  87. package/fesm2020/rxap-layout.mjs.map +0 -1
  88. /package/{esm2020 → esm2022}/index.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/navigation/navigation-item.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/tokens.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/types.mjs +0 -0
  92. /package/{esm2020 → esm2022}/rxap-layout.mjs +0 -0
@@ -1,73 +0,0 @@
1
- import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';
2
- import { WindowContainerSidenavService } from '@rxap/services';
3
- import { ComponentPortal } from '@angular/cdk/portal';
4
- import { tap } from 'rxjs/operators';
5
- import { Subscription } from 'rxjs';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/flex-layout/flex";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/cdk/portal";
10
- import * as i4 from "@rxap/services";
11
- function WindowContainerSidenavComponent_div_1_ng_template_1_Template(rf, ctx) { }
12
- function WindowContainerSidenavComponent_div_1_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "div", 2);
14
- i0.ɵɵtemplate(1, WindowContainerSidenavComponent_div_1_ng_template_1_Template, 0, 0, "ng-template", 3);
15
- i0.ɵɵelementEnd();
16
- } if (rf & 2) {
17
- const portalId_r1 = ctx.$implicit;
18
- const ctx_r0 = i0.ɵɵnextContext();
19
- i0.ɵɵadvance(1);
20
- i0.ɵɵproperty("cdkPortalOutlet", ctx_r0.portals.get(portalId_r1));
21
- } }
22
- export class WindowContainerSidenavComponent {
23
- constructor(service) {
24
- this.service = service;
25
- this.portals = new Map();
26
- this.subscription = new Subscription();
27
- }
28
- ngOnInit() {
29
- const components = this.service.getAll();
30
- for (const component of components) {
31
- this.add(component);
32
- }
33
- this.subscription.add(this.service.add$.pipe(tap(component => this.add(component))).subscribe());
34
- this.subscription.add(this.service.remove$.pipe(tap(component => this.remove(component))).subscribe());
35
- }
36
- ngOnDestroy() {
37
- this.subscription.unsubscribe();
38
- }
39
- trackBy(index, id) {
40
- return id;
41
- }
42
- add(component) {
43
- if (this.portals.has(component.id)) {
44
- throw new Error(`Component portal with id ${component.id} already exists`);
45
- }
46
- const portal = new ComponentPortal(component.component, component.viewContainerRef, component.injector, component.componentFactoryResolver);
47
- this.portals.set(component.id, portal);
48
- }
49
- remove(component) {
50
- if (this.portals.has(component.id)) {
51
- const portal = this.portals.get(component.id);
52
- this.portals.delete(component.id);
53
- portal.detach();
54
- }
55
- }
56
- }
57
- WindowContainerSidenavComponent.ɵfac = function WindowContainerSidenavComponent_Factory(t) { return new (t || WindowContainerSidenavComponent)(i0.ɵɵdirectiveInject(WindowContainerSidenavService)); };
58
- WindowContainerSidenavComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WindowContainerSidenavComponent, selectors: [["rxap-window-container-sidenav"]], decls: 2, vars: 2, consts: [["fxLayout", "column", "fxLayoutGap", "16px", 1, "container"], ["fxFlex", "nogrow", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["fxFlex", "nogrow"], [3, "cdkPortalOutlet"]], template: function WindowContainerSidenavComponent_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "div", 0);
60
- i0.ɵɵtemplate(1, WindowContainerSidenavComponent_div_1_Template, 2, 1, "div", 1);
61
- i0.ɵɵelementEnd();
62
- } if (rf & 2) {
63
- i0.ɵɵadvance(1);
64
- i0.ɵɵproperty("ngForOf", ctx.portals.keys())("ngForTrackBy", ctx.trackBy);
65
- } }, dependencies: [i1.DefaultLayoutDirective, i1.DefaultLayoutGapDirective, i1.DefaultFlexDirective, i2.NgForOf, i3.CdkPortalOutlet], styles: [".container[_ngcontent-%COMP%]{padding:8px}"], changeDetection: 0 });
66
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WindowContainerSidenavComponent, [{
67
- type: Component,
68
- args: [{ selector: 'rxap-window-container-sidenav', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fxLayout=\"column\" fxLayoutGap=\"16px\" class=\"container\">\n\n <div fxFlex=\"nogrow\" *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n", styles: [".container{padding:8px}\n"] }]
69
- }], function () { return [{ type: i4.WindowContainerSidenavService, decorators: [{
70
- type: Inject,
71
- args: [WindowContainerSidenavService]
72
- }] }]; }, null); })();
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LWNvbnRhaW5lci1zaWRlbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbGF5b3V0L3NyYy9saWIvd2luZG93LWNvbnRhaW5lci1zaWRlbmF2L3dpbmRvdy1jb250YWluZXItc2lkZW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2xheW91dC9zcmMvbGliL3dpbmRvdy1jb250YWluZXItc2lkZW5hdi93aW5kb3ctY29udGFpbmVyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCw2QkFBNkIsRUFFOUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0lDWGxDLDhCQUErRTtJQUM3RSxzR0FBcUU7SUFDdkUsaUJBQU07Ozs7SUFEUyxlQUF5QztJQUF6QyxpRUFBeUM7O0FEa0IxRCxNQUFNLE9BQU8sK0JBQStCO0lBTTFDLFlBRWtCLE9BQXNDO1FBQXRDLFlBQU8sR0FBUCxPQUFPLENBQStCO1FBTmpELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztRQUVqRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFLdEMsQ0FBQztJQUVFLFFBQVE7UUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDdEMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ3pDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBYSxFQUFFLEVBQVU7UUFDdEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sR0FBRyxDQUFDLFNBQTZCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7U0FDNUU7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzVJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUE2QjtRQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7OzhHQTlDVSwrQkFBK0IsdUJBT2hDLDZCQUE2QjtrRkFQNUIsK0JBQStCO1FDckI1Qyw4QkFBNEQ7UUFFMUQsZ0ZBRU07UUFFUixpQkFBTTs7UUFKc0MsZUFBbUI7UUFBbkIsNENBQW1CLDZCQUFBOzt1RkRtQmxELCtCQUErQjtjQU4zQyxTQUFTOzJCQUNTLCtCQUErQixtQkFHL0IsdUJBQXVCLENBQUMsTUFBTTs7c0JBUzVDLE1BQU07dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbmplY3QsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFdpbmRvd0NvbnRhaW5lclNpZGVuYXZTZXJ2aWNlLFxuICBDb250YWluZXJDb21wb25lbnRcbn0gZnJvbSAnQHJ4YXAvc2VydmljZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAgICAgICAgJ3J4YXAtd2luZG93LWNvbnRhaW5lci1zaWRlbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICAgICAnLi93aW5kb3ctY29udGFpbmVyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6ICAgICAgIFsgJy4vd2luZG93LWNvbnRhaW5lci1zaWRlbmF2LmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBXaW5kb3dDb250YWluZXJTaWRlbmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBwb3J0YWxzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFBvcnRhbDxhbnk+PigpO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoV2luZG93Q29udGFpbmVyU2lkZW5hdlNlcnZpY2UpXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFdpbmRvd0NvbnRhaW5lclNpZGVuYXZTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLnNlcnZpY2UuZ2V0QWxsKCk7XG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xuICAgICAgdGhpcy5hZGQoY29tcG9uZW50KTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuc2VydmljZS5hZGQkLnBpcGUoXG4gICAgICB0YXAoY29tcG9uZW50ID0+IHRoaXMuYWRkKGNvbXBvbmVudCkpXG4gICAgKS5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuc2VydmljZS5yZW1vdmUkLnBpcGUoXG4gICAgICB0YXAoY29tcG9uZW50ID0+IHRoaXMucmVtb3ZlKGNvbXBvbmVudCkpXG4gICAgKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5KGluZGV4OiBudW1iZXIsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcml2YXRlIGFkZChjb21wb25lbnQ6IENvbnRhaW5lckNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLnBvcnRhbHMuaGFzKGNvbXBvbmVudC5pZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHBvcnRhbCB3aXRoIGlkICR7Y29tcG9uZW50LmlkfSBhbHJlYWR5IGV4aXN0c2ApO1xuICAgIH1cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudC5jb21wb25lbnQsIGNvbXBvbmVudC52aWV3Q29udGFpbmVyUmVmLCBjb21wb25lbnQuaW5qZWN0b3IsIGNvbXBvbmVudC5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuICAgIHRoaXMucG9ydGFscy5zZXQoY29tcG9uZW50LmlkLCBwb3J0YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmUoY29tcG9uZW50OiBDb250YWluZXJDb21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5wb3J0YWxzLmhhcyhjb21wb25lbnQuaWQpKSB7XG4gICAgICBjb25zdCBwb3J0YWwgPSB0aGlzLnBvcnRhbHMuZ2V0KGNvbXBvbmVudC5pZCkhO1xuICAgICAgdGhpcy5wb3J0YWxzLmRlbGV0ZShjb21wb25lbnQuaWQpO1xuICAgICAgcG9ydGFsLmRldGFjaCgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIxNnB4XCIgY2xhc3M9XCJjb250YWluZXJcIj5cblxuICA8ZGl2IGZ4RmxleD1cIm5vZ3Jvd1wiICpuZ0Zvcj1cImxldCBwb3J0YWxJZCBvZiBwb3J0YWxzLmtleXMoKTsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBvcnRhbHMuZ2V0KHBvcnRhbElkKVwiPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==