cps-ui-kit 0.50.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1 -0
  2. package/esm2020/lib/base_components/cps-tree-dropdown-base.component.mjs +72 -45
  3. package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +62 -42
  4. package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +47 -26
  5. package/esm2020/lib/components/cps-input/cps-input.component.mjs +20 -6
  6. package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +35 -9
  7. package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +3 -3
  8. package/esm2020/lib/components/cps-select/cps-select.component.mjs +85 -55
  9. package/esm2020/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +37 -0
  10. package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +137 -0
  11. package/esm2020/lib/components/cps-table/cps-table.component.mjs +3 -3
  12. package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +16 -2
  13. package/esm2020/lib/components/cps-table/table-column-filter/table-column-filter-constraint/table-column-filter-constraint.component.mjs +4 -4
  14. package/esm2020/lib/components/cps-table/table-column-filter/table-column-filter.component.mjs +3 -3
  15. package/esm2020/lib/components/cps-table/table-row-menu/table-row-menu.component.mjs +1 -1
  16. package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +27 -37
  17. package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +14 -22
  18. package/esm2020/public-api.mjs +3 -1
  19. package/fesm2015/cps-ui-kit.mjs +2021 -1772
  20. package/fesm2015/cps-ui-kit.mjs.map +1 -1
  21. package/fesm2020/cps-ui-kit.mjs +2027 -1782
  22. package/fesm2020/cps-ui-kit.mjs.map +1 -1
  23. package/lib/base_components/cps-tree-dropdown-base.component.d.ts +16 -7
  24. package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +14 -7
  25. package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +10 -4
  26. package/lib/components/cps-input/cps-input.component.d.ts +7 -3
  27. package/lib/components/cps-menu/cps-menu.component.d.ts +7 -3
  28. package/lib/components/cps-select/cps-select.component.d.ts +16 -8
  29. package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +14 -0
  30. package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +25 -0
  31. package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -0
  32. package/lib/components/cps-table/table-column-filter/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +1 -1
  33. package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +5 -8
  34. package/lib/components/cps-tree-select/cps-tree-select.component.d.ts +4 -7
  35. package/package.json +1 -1
  36. package/public-api.d.ts +2 -0
  37. package/styles/cps-tooltip-style.scss +1 -1
  38. package/esm2020/lib/directives/internal/click-outside.directive.mjs +0 -45
  39. package/esm2020/lib/utils/internal/position-utils.mjs +0 -12
  40. package/lib/directives/internal/click-outside.directive.d.ts +0 -11
  41. package/lib/utils/internal/position-utils.d.ts +0 -1
@@ -0,0 +1,37 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class CpsTabComponent {
6
+ constructor() {
7
+ this.label = '';
8
+ this.icon = '';
9
+ this.tooltipText = '';
10
+ this.tooltipContentClass = 'cps-tooltip-content';
11
+ this.tooltipMaxWidth = '100%';
12
+ this.tooltipPersistent = false;
13
+ this.active = false;
14
+ }
15
+ }
16
+ CpsTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ CpsTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTabComponent, isStandalone: true, selector: "cps-tab", inputs: { label: "label", icon: "icon", tooltipText: "tooltipText", tooltipContentClass: "tooltipContentClass", tooltipMaxWidth: "tooltipMaxWidth", tooltipPersistent: "tooltipPersistent" }, viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTabComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ standalone: true, imports: [CommonModule], selector: 'cps-tab', template: "<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n" }]
21
+ }], propDecorators: { label: [{
22
+ type: Input
23
+ }], icon: [{
24
+ type: Input
25
+ }], tooltipText: [{
26
+ type: Input
27
+ }], tooltipContentClass: [{
28
+ type: Input
29
+ }], tooltipMaxWidth: [{
30
+ type: Input
31
+ }], tooltipPersistent: [{
32
+ type: Input
33
+ }], content: [{
34
+ type: ViewChild,
35
+ args: [TemplateRef]
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFiLWdyb3VwL2Nwcy10YWIvY3BzLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFiLWdyb3VwL2Nwcy10YWIvY3BzLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBU3pFLE1BQU0sT0FBTyxlQUFlO0lBUDVCO1FBUVcsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQUM1QyxvQkFBZSxHQUFvQixNQUFNLENBQUM7UUFDMUMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLFdBQU0sR0FBRyxLQUFLLENBQUM7S0FDaEI7OzRHQVRZLGVBQWU7Z0dBQWYsZUFBZSwwU0FPZixXQUFXLGdEQ2pCeEIsc0lBS0EseUREQVksWUFBWTsyRkFLWCxlQUFlO2tCQVAzQixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLFNBQVM7OEJBS1YsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDa0IsT0FBTztzQkFBOUIsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2Nwcy10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vY3BzLXRhYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy10YWIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNUYWJDb21wb25lbnQge1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBpY29uID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXBUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXBDb250ZW50Q2xhc3MgPSAnY3BzLXRvb2x0aXAtY29udGVudCc7XG4gIEBJbnB1dCgpIHRvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSB0b29sdGlwUGVyc2lzdGVudCA9IGZhbHNlO1xuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgYWN0aXZlID0gZmFsc2U7XG59XG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,137 @@
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
4
+ import { CpsIconComponent } from '../cps-icon/cps-icon.component';
5
+ import { CpsTabComponent } from './cps-tab/cps-tab.component';
6
+ import { CpsTooltipDirective } from '../../directives/cps-tooltip.directive';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ export class CpsTabGroupComponent {
10
+ // eslint-disable-next-line no-useless-constructor
11
+ constructor(cdRef) {
12
+ this.cdRef = cdRef;
13
+ this.selectedIndex = 0;
14
+ this.isSubTabs = false; // applies an alternative styling to tabs
15
+ this.animationType = 'slide';
16
+ this.initAllTabsContent = false;
17
+ this.animationState = 'slideLeft';
18
+ this.beforeTabChanged = new EventEmitter();
19
+ this.afterTabChanged = new EventEmitter();
20
+ }
21
+ ngAfterContentInit() {
22
+ this.selectTab(this.selectedIndex);
23
+ }
24
+ ngAfterViewInit() {
25
+ this.cdRef.detectChanges();
26
+ }
27
+ selectTab(newSelectedIndex) {
28
+ const _tabs = this.tabs.toArray();
29
+ const currentSelectedTab = _tabs && _tabs[this.selectedIndex];
30
+ this.beforeTabChanged.emit({
31
+ currentTabIndex: this.selectedIndex,
32
+ newTabIndex: newSelectedIndex
33
+ });
34
+ currentSelectedTab && (currentSelectedTab.active = false);
35
+ const newSelectedTab = _tabs && _tabs[newSelectedIndex];
36
+ newSelectedTab && (newSelectedTab.active = true);
37
+ if (newSelectedIndex === this.selectedIndex) {
38
+ return;
39
+ }
40
+ if (this.animationType === 'slide') {
41
+ this.animationState =
42
+ newSelectedIndex < this.selectedIndex ? 'slideLeft' : 'slideRight';
43
+ this.selectedIndex = newSelectedIndex;
44
+ this.afterTabChanged.emit({
45
+ currentTabIndex: newSelectedIndex
46
+ });
47
+ }
48
+ else if (this.animationType === 'fade') {
49
+ this.animationState = 'fadeOut';
50
+ setTimeout(() => {
51
+ this.animationState = 'fadeIn';
52
+ this.selectedIndex = newSelectedIndex;
53
+ this.afterTabChanged.emit({
54
+ currentTabIndex: newSelectedIndex
55
+ });
56
+ }, 100);
57
+ }
58
+ }
59
+ get selectedTab() {
60
+ return this.tabs.find((t) => t.active);
61
+ }
62
+ }
63
+ CpsTabGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
64
+ CpsTabGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTabGroupComponent, isStandalone: true, selector: "cps-tab-group", inputs: { selectedIndex: "selectedIndex", isSubTabs: "isSubTabs", animationType: "animationType", initAllTabsContent: "initAllTabsContent" }, outputs: { beforeTabChanged: "beforeTabChanged", afterTabChanged: "afterTabChanged" }, queries: [{ propertyName: "tabs", predicate: CpsTabComponent }], ngImport: i0, template: "<ul class=\"cps-tabs\" [ngClass]=\"{ 'cps-tabs-subtabs': isSubTabs }\">\n <ng-container *ngFor=\"let tab of tabs; let tabIndex = index\">\n <li\n *ngIf=\"tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"selectTab(tabIndex)\"\n [ngClass]=\"{ active: tab.active }\"\n [cpsTooltip]=\"tab.tooltipText\"\n tooltipOpenDelay=\"1000\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [tooltipMaxWidth]=\"tab.tooltipMaxWidth\"\n [tooltipPersistent]=\"tab.tooltipPersistent\"\n [tooltipContentClass]=\"tab.tooltipContentClass\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\">\n </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n </li>\n <li\n *ngIf=\"!tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"selectTab(tabIndex)\"\n [ngClass]=\"{ active: tab.active }\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\">\n </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n </li>\n </ng-container>\n</ul>\n<div\n class=\"cps-tab-content\"\n [ngClass]=\"{ 'cps-tab-content-subtabs': isSubTabs }\">\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n [@slideInOut]=\"animationState\"\n *ngIf=\"tab.active && !initAllTabsContent && animationType === 'slide'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n [@fadeInOut]=\"animationState\"\n *ngIf=\"tab.active && !initAllTabsContent && animationType === 'fade'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n *ngIf=\"initAllTabsContent && animationType === 'slide'\"\n [@slideInOut]=\"animationState\"\n [ngStyle]=\"{ display: tab.active ? null : 'none' }\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n *ngIf=\"initAllTabsContent && animationType === 'fade'\"\n [@fadeInOut]=\"animationState\"\n [ngStyle]=\"{ display: tab.active ? null : 'none' }\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host .cps-tab-content{position:relative;min-height:100px;padding:10px}:host .cps-tabs{display:flex;list-style:none;padding:0;margin:0}:host .cps-tabs .cps-tab{display:inline-flex;align-items:center;justify-content:center;min-width:150px;padding:0 24px;font-family:Source Sans Pro,sans-serif;font-style:normal;font-weight:500;font-size:15px;line-height:20px;color:var(--cps-color-text-dark);opacity:1;cursor:pointer;border-bottom:3px solid transparent}:host .cps-tabs .cps-tab.active{color:var(--cps-color-calm)}:host .cps-tabs .cps-tab-link{text-decoration:none;padding:10px;color:inherit;transition:border-bottom-color .3s}:host .cps-tabs:not(.cps-tabs-subtabs){border-bottom:1px solid rgba(0,0,0,.12)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tab.active{color:var(--cps-color-calm);border-bottom:3px solid var(--cps-color-surprise)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tab:hover:not(.active){border-bottom:3px solid var(--cps-color-line-light)}:host .cps-tabs.cps-tabs-subtabs .cps-tab{height:33px;background-color:#d7d7d759}:host .cps-tabs.cps-tabs-subtabs .cps-tab.active{background-color:#fff}:host .cps-tabs.cps-tabs-subtabs .cps-tab:hover{color:var(--cps-color-calm)}:host .cps-tab-content.cps-tab-content-subtabs{background-color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "directive", type: CpsTooltipDirective, selector: "[cpsTooltip]", inputs: ["cpsTooltip", "tooltipOpenDelay", "tooltipCloseDelay", "tooltipOpenOn", "tooltipPosition", "tooltipPersistent", "tooltipDisabled", "tooltipMaxWidth", "tooltipContentClass"] }], animations: [
65
+ trigger('slideInOut', [
66
+ state('slideLeft', style({ transform: 'translateX(0)' })),
67
+ state('slideRight', style({ transform: 'translateX(0)' })),
68
+ transition('* => slideLeft', [
69
+ style({ transform: 'translateX(-100%)' }),
70
+ animate('200ms ease-in')
71
+ ]),
72
+ transition('* => slideRight', [
73
+ style({ transform: 'translateX(100%)' }),
74
+ animate('200ms ease-in')
75
+ ])
76
+ ]),
77
+ trigger('fadeInOut', [
78
+ state('fadeIn', style({ opacity: 1 })),
79
+ state('fadeOut', style({ opacity: 0 })),
80
+ transition('fadeOut => fadeIn', [
81
+ style({ opacity: 0 }),
82
+ animate('100ms ease-in')
83
+ ]),
84
+ transition('fadeIn => fadeOut', [
85
+ animate('0ms ease-out', style({ opacity: 0 }))
86
+ ])
87
+ ])
88
+ ] });
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTabGroupComponent, decorators: [{
90
+ type: Component,
91
+ args: [{ standalone: true, imports: [
92
+ CommonModule,
93
+ CpsIconComponent,
94
+ CpsTabComponent,
95
+ CpsTooltipDirective
96
+ ], selector: 'cps-tab-group', animations: [
97
+ trigger('slideInOut', [
98
+ state('slideLeft', style({ transform: 'translateX(0)' })),
99
+ state('slideRight', style({ transform: 'translateX(0)' })),
100
+ transition('* => slideLeft', [
101
+ style({ transform: 'translateX(-100%)' }),
102
+ animate('200ms ease-in')
103
+ ]),
104
+ transition('* => slideRight', [
105
+ style({ transform: 'translateX(100%)' }),
106
+ animate('200ms ease-in')
107
+ ])
108
+ ]),
109
+ trigger('fadeInOut', [
110
+ state('fadeIn', style({ opacity: 1 })),
111
+ state('fadeOut', style({ opacity: 0 })),
112
+ transition('fadeOut => fadeIn', [
113
+ style({ opacity: 0 }),
114
+ animate('100ms ease-in')
115
+ ]),
116
+ transition('fadeIn => fadeOut', [
117
+ animate('0ms ease-out', style({ opacity: 0 }))
118
+ ])
119
+ ])
120
+ ], template: "<ul class=\"cps-tabs\" [ngClass]=\"{ 'cps-tabs-subtabs': isSubTabs }\">\n <ng-container *ngFor=\"let tab of tabs; let tabIndex = index\">\n <li\n *ngIf=\"tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"selectTab(tabIndex)\"\n [ngClass]=\"{ active: tab.active }\"\n [cpsTooltip]=\"tab.tooltipText\"\n tooltipOpenDelay=\"1000\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [tooltipMaxWidth]=\"tab.tooltipMaxWidth\"\n [tooltipPersistent]=\"tab.tooltipPersistent\"\n [tooltipContentClass]=\"tab.tooltipContentClass\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\">\n </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n </li>\n <li\n *ngIf=\"!tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"selectTab(tabIndex)\"\n [ngClass]=\"{ active: tab.active }\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\">\n </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n </li>\n </ng-container>\n</ul>\n<div\n class=\"cps-tab-content\"\n [ngClass]=\"{ 'cps-tab-content-subtabs': isSubTabs }\">\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n [@slideInOut]=\"animationState\"\n *ngIf=\"tab.active && !initAllTabsContent && animationType === 'slide'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n [@fadeInOut]=\"animationState\"\n *ngIf=\"tab.active && !initAllTabsContent && animationType === 'fade'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n *ngIf=\"initAllTabsContent && animationType === 'slide'\"\n [@slideInOut]=\"animationState\"\n [ngStyle]=\"{ display: tab.active ? null : 'none' }\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n *ngIf=\"initAllTabsContent && animationType === 'fade'\"\n [@fadeInOut]=\"animationState\"\n [ngStyle]=\"{ display: tab.active ? null : 'none' }\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host .cps-tab-content{position:relative;min-height:100px;padding:10px}:host .cps-tabs{display:flex;list-style:none;padding:0;margin:0}:host .cps-tabs .cps-tab{display:inline-flex;align-items:center;justify-content:center;min-width:150px;padding:0 24px;font-family:Source Sans Pro,sans-serif;font-style:normal;font-weight:500;font-size:15px;line-height:20px;color:var(--cps-color-text-dark);opacity:1;cursor:pointer;border-bottom:3px solid transparent}:host .cps-tabs .cps-tab.active{color:var(--cps-color-calm)}:host .cps-tabs .cps-tab-link{text-decoration:none;padding:10px;color:inherit;transition:border-bottom-color .3s}:host .cps-tabs:not(.cps-tabs-subtabs){border-bottom:1px solid rgba(0,0,0,.12)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tab.active{color:var(--cps-color-calm);border-bottom:3px solid var(--cps-color-surprise)}:host .cps-tabs:not(.cps-tabs-subtabs) .cps-tab:hover:not(.active){border-bottom:3px solid var(--cps-color-line-light)}:host .cps-tabs.cps-tabs-subtabs .cps-tab{height:33px;background-color:#d7d7d759}:host .cps-tabs.cps-tabs-subtabs .cps-tab.active{background-color:#fff}:host .cps-tabs.cps-tabs-subtabs .cps-tab:hover{color:var(--cps-color-calm)}:host .cps-tab-content.cps-tab-content-subtabs{background-color:#fff}\n"] }]
121
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { tabs: [{
122
+ type: ContentChildren,
123
+ args: [CpsTabComponent]
124
+ }], selectedIndex: [{
125
+ type: Input
126
+ }], isSubTabs: [{
127
+ type: Input
128
+ }], animationType: [{
129
+ type: Input
130
+ }], initAllTabsContent: [{
131
+ type: Input
132
+ }], beforeTabChanged: [{
133
+ type: Output
134
+ }], afterTabChanged: [{
135
+ type: Output
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFiLWdyb3VwL2Nwcy10YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYi1ncm91cC9jcHMtdGFiLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBNEM3RSxNQUFNLE9BQU8sb0JBQW9CO0lBYy9CLGtEQUFrRDtJQUNsRCxZQUFvQixLQUF3QjtRQUF4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQVpuQyxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMseUNBQXlDO1FBQzVELGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztRQUMxQyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFcEMsbUJBQWMsR0FDWixXQUFXLENBQUM7UUFFSixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUN0RCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBR2hCLENBQUM7SUFFaEQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUyxDQUFDLGdCQUF3QjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDbkMsV0FBVyxFQUFFLGdCQUFnQjtTQUM5QixDQUFDLENBQUM7UUFFSCxrQkFBa0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQztRQUMxRCxNQUFNLGNBQWMsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsY0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDM0MsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRTtZQUNsQyxJQUFJLENBQUMsY0FBYztnQkFDakIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUV0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDeEIsZUFBZSxFQUFFLGdCQUFnQjthQUNsQyxDQUFDLENBQUM7U0FDSjthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ3hCLGVBQWUsRUFBRSxnQkFBZ0I7aUJBQ2xDLENBQUMsQ0FBQztZQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDOztpSEEvRFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsbVVBQ2QsZUFBZSw2QkNsRWxDLGdxRUF5REEsZ3lDRDFCSSxZQUFZLDBsQkFDWixnQkFBZ0Isd0ZBRWhCLG1CQUFtQixrT0FLVDtRQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDcEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUN6RCxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQzFELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDM0IsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxlQUFlLENBQUM7YUFDekIsQ0FBQztZQUNGLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDNUIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxlQUFlLENBQUM7YUFDekIsQ0FBQztTQUNILENBQUM7UUFDRixPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ25CLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLGVBQWUsQ0FBQzthQUN6QixDQUFDO1lBQ0YsVUFBVSxDQUFDLG1CQUFtQixFQUFFO2dCQUM5QixPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQy9DLENBQUM7U0FDSCxDQUFDO0tBQ0g7MkZBRVUsb0JBQW9CO2tCQXJDaEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUNwQixZQUNTLGVBQWUsY0FHYjt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzRCQUMxRCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO2dDQUN6QyxPQUFPLENBQUMsZUFBZSxDQUFDOzZCQUN6QixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTtnQ0FDNUIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUM7Z0NBQ3hDLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQzt3QkFDRixPQUFPLENBQUMsV0FBVyxFQUFFOzRCQUNuQixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN0QyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN2QyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0NBQzlCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDckIsT0FBTyxDQUFDLGVBQWUsQ0FBQzs2QkFDekIsQ0FBQzs0QkFDRixVQUFVLENBQUMsbUJBQW1CLEVBQUU7Z0NBQzlCLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQy9DLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDt3R0FHaUMsSUFBSTtzQkFBckMsZUFBZTt1QkFBQyxlQUFlO2dCQUV2QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzVGFiQ29tcG9uZW50IH0gZnJvbSAnLi9jcHMtdGFiL2Nwcy10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IENwc1Rvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFiQ2hhbmdlRXZlbnQge1xuICBjdXJyZW50VGFiSW5kZXg6IG51bWJlcjtcbiAgbmV3VGFiSW5kZXg/OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzVGFiQ29tcG9uZW50LFxuICAgIENwc1Rvb2x0aXBEaXJlY3RpdmVcbiAgXSxcbiAgc2VsZWN0b3I6ICdjcHMtdGFiLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy10YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtdGFiLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzbGlkZUluT3V0JywgW1xuICAgICAgc3RhdGUoJ3NsaWRlTGVmdCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpLFxuICAgICAgc3RhdGUoJ3NsaWRlUmlnaHQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVMZWZ0JywgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVSaWdodCcsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2ZhZGVJbk91dCcsIFtcbiAgICAgIHN0YXRlKCdmYWRlSW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgc3RhdGUoJ2ZhZGVPdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxuICAgICAgdHJhbnNpdGlvbignZmFkZU91dCA9PiBmYWRlSW4nLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1pbicpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJ2ZhZGVJbiA9PiBmYWRlT3V0JywgW1xuICAgICAgICBhbmltYXRlKCcwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3BzVGFiR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihDcHNUYWJDb21wb25lbnQpIHRhYnMhOiBRdWVyeUxpc3Q8Q3BzVGFiQ29tcG9uZW50PjtcblxuICBASW5wdXQoKSBzZWxlY3RlZEluZGV4ID0gMDtcbiAgQElucHV0KCkgaXNTdWJUYWJzID0gZmFsc2U7IC8vIGFwcGxpZXMgYW4gYWx0ZXJuYXRpdmUgc3R5bGluZyB0byB0YWJzXG4gIEBJbnB1dCgpIGFuaW1hdGlvblR5cGU6ICdzbGlkZScgfCAnZmFkZScgPSAnc2xpZGUnO1xuICBASW5wdXQoKSBpbml0QWxsVGFic0NvbnRlbnQgPSBmYWxzZTtcblxuICBhbmltYXRpb25TdGF0ZTogJ3NsaWRlTGVmdCcgfCAnc2xpZGVSaWdodCcgfCAnZmFkZUluJyB8ICdmYWRlT3V0JyA9XG4gICAgJ3NsaWRlTGVmdCc7XG5cbiAgQE91dHB1dCgpIGJlZm9yZVRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYkNoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYWZ0ZXJUYWJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJDaGFuZ2VFdmVudD4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3RUYWIodGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHNlbGVjdFRhYihuZXdTZWxlY3RlZEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBfdGFicyA9IHRoaXMudGFicy50b0FycmF5KCk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGVkVGFiID0gX3RhYnMgJiYgX3RhYnNbdGhpcy5zZWxlY3RlZEluZGV4XTtcblxuICAgIHRoaXMuYmVmb3JlVGFiQ2hhbmdlZC5lbWl0KHtcbiAgICAgIGN1cnJlbnRUYWJJbmRleDogdGhpcy5zZWxlY3RlZEluZGV4LFxuICAgICAgbmV3VGFiSW5kZXg6IG5ld1NlbGVjdGVkSW5kZXhcbiAgICB9KTtcblxuICAgIGN1cnJlbnRTZWxlY3RlZFRhYiAmJiAoY3VycmVudFNlbGVjdGVkVGFiLmFjdGl2ZSA9IGZhbHNlKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZFRhYiA9IF90YWJzICYmIF90YWJzW25ld1NlbGVjdGVkSW5kZXhdO1xuICAgIG5ld1NlbGVjdGVkVGFiICYmIChuZXdTZWxlY3RlZFRhYi5hY3RpdmUgPSB0cnVlKTtcbiAgICBpZiAobmV3U2VsZWN0ZWRJbmRleCA9PT0gdGhpcy5zZWxlY3RlZEluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uVHlwZSA9PT0gJ3NsaWRlJykge1xuICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9XG4gICAgICAgIG5ld1NlbGVjdGVkSW5kZXggPCB0aGlzLnNlbGVjdGVkSW5kZXggPyAnc2xpZGVMZWZ0JyA6ICdzbGlkZVJpZ2h0JztcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG5ld1NlbGVjdGVkSW5kZXg7XG5cbiAgICAgIHRoaXMuYWZ0ZXJUYWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBjdXJyZW50VGFiSW5kZXg6IG5ld1NlbGVjdGVkSW5kZXhcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hbmltYXRpb25UeXBlID09PSAnZmFkZScpIHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUgPSAnZmFkZU91dCc7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9ICdmYWRlSW4nO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBuZXdTZWxlY3RlZEluZGV4O1xuICAgICAgICB0aGlzLmFmdGVyVGFiQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICBjdXJyZW50VGFiSW5kZXg6IG5ld1NlbGVjdGVkSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzZWxlY3RlZFRhYigpOiBDcHNUYWJDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5hY3RpdmUpO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJjcHMtdGFic1wiIFtuZ0NsYXNzXT1cInsgJ2Nwcy10YWJzLXN1YnRhYnMnOiBpc1N1YlRhYnMgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IHRhYkluZGV4ID0gaW5kZXhcIj5cbiAgICA8bGlcbiAgICAgICpuZ0lmPVwidGFiLnRvb2x0aXBUZXh0XCJcbiAgICAgIGNsYXNzPVwiY3BzLXRhYlwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYkluZGV4KVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdGFiLmFjdGl2ZSB9XCJcbiAgICAgIFtjcHNUb29sdGlwXT1cInRhYi50b29sdGlwVGV4dFwiXG4gICAgICB0b29sdGlwT3BlbkRlbGF5PVwiMTAwMFwiXG4gICAgICB0b29sdGlwQ2xvc2VEZWxheT1cIjBcIlxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgIFt0b29sdGlwTWF4V2lkdGhdPVwidGFiLnRvb2x0aXBNYXhXaWR0aFwiXG4gICAgICBbdG9vbHRpcFBlcnNpc3RlbnRdPVwidGFiLnRvb2x0aXBQZXJzaXN0ZW50XCJcbiAgICAgIFt0b29sdGlwQ29udGVudENsYXNzXT1cInRhYi50b29sdGlwQ29udGVudENsYXNzXCI+XG4gICAgICA8Y3BzLWljb24gKm5nSWY9XCJ0YWIuaWNvblwiIGNsYXNzPVwiY3BzLXRhYi1pY29uXCIgW2ljb25dPVwidGFiLmljb25cIj5cbiAgICAgIDwvY3BzLWljb24+XG4gICAgICA8YSBjbGFzcz1cImNwcy10YWItbGlua1wiPnt7IHRhYi5sYWJlbCB9fTwvYT5cbiAgICA8L2xpPlxuICAgIDxsaVxuICAgICAgKm5nSWY9XCIhdGFiLnRvb2x0aXBUZXh0XCJcbiAgICAgIGNsYXNzPVwiY3BzLXRhYlwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYkluZGV4KVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdGFiLmFjdGl2ZSB9XCI+XG4gICAgICA8Y3BzLWljb24gKm5nSWY9XCJ0YWIuaWNvblwiIGNsYXNzPVwiY3BzLXRhYi1pY29uXCIgW2ljb25dPVwidGFiLmljb25cIj5cbiAgICAgIDwvY3BzLWljb24+XG4gICAgICA8YSBjbGFzcz1cImNwcy10YWItbGlua1wiPnt7IHRhYi5sYWJlbCB9fTwvYT5cbiAgICA8L2xpPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdWw+XG48ZGl2XG4gIGNsYXNzPVwiY3BzLXRhYi1jb250ZW50XCJcbiAgW25nQ2xhc3NdPVwieyAnY3BzLXRhYi1jb250ZW50LXN1YnRhYnMnOiBpc1N1YlRhYnMgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxuICAgIDxkaXZcbiAgICAgIFtAc2xpZGVJbk91dF09XCJhbmltYXRpb25TdGF0ZVwiXG4gICAgICAqbmdJZj1cInRhYi5hY3RpdmUgJiYgIWluaXRBbGxUYWJzQ29udGVudCAmJiBhbmltYXRpb25UeXBlID09PSAnc2xpZGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi5jb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW0BmYWRlSW5PdXRdPVwiYW5pbWF0aW9uU3RhdGVcIlxuICAgICAgKm5nSWY9XCJ0YWIuYWN0aXZlICYmICFpbml0QWxsVGFic0NvbnRlbnQgJiYgYW5pbWF0aW9uVHlwZSA9PT0gJ2ZhZGUnXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi5jb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJpbml0QWxsVGFic0NvbnRlbnQgJiYgYW5pbWF0aW9uVHlwZSA9PT0gJ3NsaWRlJ1wiXG4gICAgICBbQHNsaWRlSW5PdXRdPVwiYW5pbWF0aW9uU3RhdGVcIlxuICAgICAgW25nU3R5bGVdPVwieyBkaXNwbGF5OiB0YWIuYWN0aXZlID8gbnVsbCA6ICdub25lJyB9XCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi5jb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJpbml0QWxsVGFic0NvbnRlbnQgJiYgYW5pbWF0aW9uVHlwZSA9PT0gJ2ZhZGUnXCJcbiAgICAgIFtAZmFkZUluT3V0XT1cImFuaW1hdGlvblN0YXRlXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogdGFiLmFjdGl2ZSA/IG51bGwgOiAnbm9uZScgfVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWIuY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19