@tetacom/ng-components 1.2.5 → 1.2.7
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/component/public-api.d.ts +1 -0
- package/component/tabs/tabs/tabs.component.d.ts +10 -1
- package/docs/badgeDocs.mdx +17 -22
- package/docs/chipDocs.mdx +13 -15
- package/docs/tabsDocs.mdx +107 -89
- package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +2 -2
- package/esm2022/component/public-api.mjs +3 -1
- package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +2 -2
- package/esm2022/component/tabs/tab/tab.component.mjs +2 -2
- package/esm2022/component/tabs/tabs/tabs.component.mjs +23 -11
- package/fesm2022/tetacom-ng-components.mjs +460 -448
- package/fesm2022/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
- package/style/badge.scss +11 -12
- package/style/chips.scss +102 -14
- package/style/presets/font-presets.scss +8 -0
- package/style/tabs.scss +42 -18
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild, Input
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';
|
|
2
2
|
import { TabContentDirective } from '../tab-content.directive';
|
|
3
3
|
import { TabTitleDirective } from '../tab-title.directive';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
39
39
|
type: ContentChild,
|
|
40
40
|
args: [TabContentDirective, { static: false }]
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFicy90YWIvdGFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUUzRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFTZixNQUFNLE9BQU8sWUFBWTtJQVB6QjtRQVFFOztXQUVHO1FBQ00sT0FBRSxHQUFHLFlBQVksTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUtyQzs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7S0FhM0I7SUFQQyxzQ0FBc0M7SUFDdEMsMENBQTBDO0lBRTFDLHFCQUFxQjtRQUNuQiw2Q0FBNkM7UUFDN0MsaURBQWlEO0lBQ25ELENBQUM7OEdBeEJVLFlBQVk7a0dBQVosWUFBWSxzS0FjVCxpQkFBaUIsNkVBRWpCLG1CQUFtQixnREFyQnZCLEVBQUU7OzJGQUtELFlBQVk7a0JBUHhCLFNBQVM7K0JBQ0UsVUFBVSxZQUNWLEVBQUUsbUJBRUssdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJOzhCQU1QLEVBQUU7c0JBQVYsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdsRCxVQUFVO3NCQURULFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFiQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uL3RhYi1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJUaXRsZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RhYi10aXRsZS5kaXJlY3RpdmUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10YWInLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlVXJsczogWycuL3RhYi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIC8qKlxuICAgKiBVbmlxdWUgdGFiIGlkZW50aWZpZXIuIE11c3QgYmUgdW5pcXVlIGZvciB0aGUgZW50aXJlIGRvY3VtZW50IGZvciBwcm9wZXIgYWNjZXNzaWJpbGl0eSBzdXBwb3J0LlxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgdGV0YS10YWItJHtuZXh0SWQrK31gO1xuICAvKipcbiAgICogU2ltcGxlIChzdHJpbmcgb25seSkgdGl0bGUuIFVzZSB0aGUgXCJJdHNrVGFiVGl0bGVEaXJlY3RpdmVcIiBkaXJlY3RpdmUgZm9yIG1vcmUgY29tcGxleCB1c2UtY2FzZXMuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogQWxsb3dzIHRvZ2dsaW5nIGRpc2FibGVkIHN0YXRlIG9mIGEgZ2l2ZW4gc3RhdGUuIERpc2FibGVkIHRhYnMgY2FuJ3QgYmUgc2VsZWN0ZWQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiVGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICB0aXRsZVRwbDogVGFiVGl0bGVEaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoVGFiQ29udGVudERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvbnRlbnRUcGw6IFRhYkNvbnRlbnREaXJlY3RpdmU7XG4gIC8vIHRpdGxlVHBsOiBUYWJUaXRsZURpcmVjdGl2ZSB8IG51bGw7XG4gIC8vIGNvbnRlbnRUcGw6IFRhYkNvbnRlbnREaXJlY3RpdmUgfCBudWxsO1xuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnRpdGxlVHBsID0gdGhpcy50aXRsZVRlbXBsYXRlcy5maXJzdDtcbiAgICAvLyB0aGlzLmNvbnRlbnRUcGwgPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMuZmlyc3Q7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,8 +3,19 @@ import { TabComponent } from '../tab/tab.component';
|
|
|
3
3
|
import { NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class TabsComponent {
|
|
6
|
+
get verticalClassTabs() {
|
|
7
|
+
return this.direction === 'vertical';
|
|
8
|
+
}
|
|
6
9
|
constructor() {
|
|
7
10
|
this.classTabs = true;
|
|
11
|
+
/**
|
|
12
|
+
* Tabs direction
|
|
13
|
+
*/
|
|
14
|
+
this.direction = 'horizontal';
|
|
15
|
+
/**
|
|
16
|
+
* Tabs size
|
|
17
|
+
*/
|
|
18
|
+
this.size = 'm';
|
|
8
19
|
/**
|
|
9
20
|
* Whether the closed tabs should be hidden without destroying them
|
|
10
21
|
*/
|
|
@@ -20,9 +31,7 @@ export class TabsComponent {
|
|
|
20
31
|
*/
|
|
21
32
|
select(tabId) {
|
|
22
33
|
const selectedTab = this._getTabById(tabId);
|
|
23
|
-
if (selectedTab &&
|
|
24
|
-
!selectedTab.disabled &&
|
|
25
|
-
this.activeId !== selectedTab.id) {
|
|
34
|
+
if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {
|
|
26
35
|
let defaultPrevented = false;
|
|
27
36
|
this.tabChange.emit({
|
|
28
37
|
activeId: this.activeId,
|
|
@@ -38,27 +47,30 @@ export class TabsComponent {
|
|
|
38
47
|
}
|
|
39
48
|
ngAfterContentChecked() {
|
|
40
49
|
const activeTab = this._getTabById(this.activeId);
|
|
41
|
-
this.activeId = activeTab
|
|
42
|
-
? activeTab.id
|
|
43
|
-
: this.tabs.length
|
|
44
|
-
? this.tabs.first.id
|
|
45
|
-
: null;
|
|
50
|
+
this.activeId = activeTab ? activeTab.id : this.tabs.length ? this.tabs.first.id : null;
|
|
46
51
|
}
|
|
47
52
|
_getTabById(id) {
|
|
48
53
|
const tabsWithId = this.tabs.filter((tab) => tab.id === id);
|
|
49
54
|
return tabsWithId.length ? tabsWithId[0] : null;
|
|
50
55
|
}
|
|
51
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TabsComponent, isStandalone: true, selector: "teta-tabs", inputs: { activeId: "activeId", destroyOnHide: "destroyOnHide" }, outputs: { tabChange: "tabChange" }, host: { properties: { "class.tabs": "this.classTabs" } }, queries: [{ propertyName: "tabs", predicate: TabComponent }], ngImport: i0, template: "<div class=\"tabs-head\"
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TabsComponent, isStandalone: true, selector: "teta-tabs", inputs: { activeId: "activeId", direction: "direction", size: "size", destroyOnHide: "destroyOnHide" }, outputs: { tabChange: "tabChange" }, host: { properties: { "class.tabs": "this.classTabs", "class.tabs_vertical": "this.verticalClassTabs" } }, queries: [{ propertyName: "tabs", predicate: TabComponent }], ngImport: i0, template: "<div role=\"tablist\" class=\"tabs-head\" [class.tabs-head_small]=\"size === 's'\">\n @for (tab of tabs; track tab) {\n <button\n type=\"button\"\n class=\"tabs-head-item\"\n (click)=\"select(tab.id)\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [disabled]=\"tab.disabled\"\n >\n <span\n [id]=\"tab.id\"\n class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"tab.disabled ? '-1' : undefined\"\n [attr.aria-controls]=\"!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\"\n >\n {{ tab.title }}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </button>\n }\n</div>\n<div class=\"tabs-content\">\n @for (tab of tabs; track tab) { @if (!destroyOnHide || tab.id === activeId) {\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n } }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
53
58
|
}
|
|
54
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TabsComponent, decorators: [{
|
|
55
60
|
type: Component,
|
|
56
|
-
args: [{ selector: 'teta-tabs', standalone: true, imports: [NgTemplateOutlet], template: "<div class=\"tabs-head\"
|
|
61
|
+
args: [{ selector: 'teta-tabs', standalone: true, imports: [NgTemplateOutlet], template: "<div role=\"tablist\" class=\"tabs-head\" [class.tabs-head_small]=\"size === 's'\">\n @for (tab of tabs; track tab) {\n <button\n type=\"button\"\n class=\"tabs-head-item\"\n (click)=\"select(tab.id)\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [disabled]=\"tab.disabled\"\n >\n <span\n [id]=\"tab.id\"\n class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"tab.disabled ? '-1' : undefined\"\n [attr.aria-controls]=\"!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\"\n >\n {{ tab.title }}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </button>\n }\n</div>\n<div class=\"tabs-content\">\n @for (tab of tabs; track tab) { @if (!destroyOnHide || tab.id === activeId) {\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n } }\n</div>\n" }]
|
|
57
62
|
}], ctorParameters: () => [], propDecorators: { classTabs: [{
|
|
58
63
|
type: HostBinding,
|
|
59
64
|
args: ['class.tabs']
|
|
65
|
+
}], verticalClassTabs: [{
|
|
66
|
+
type: HostBinding,
|
|
67
|
+
args: ['class.tabs_vertical']
|
|
60
68
|
}], activeId: [{
|
|
61
69
|
type: Input
|
|
70
|
+
}], direction: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], size: [{
|
|
73
|
+
type: Input
|
|
62
74
|
}], destroyOnHide: [{
|
|
63
75
|
type: Input
|
|
64
76
|
}], tabChange: [{
|
|
@@ -67,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
67
79
|
type: ContentChildren,
|
|
68
80
|
args: [TabComponent]
|
|
69
81
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYnMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFicy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBZW5ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLElBQXdDLGlCQUFpQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUE0QkQ7UUEvQjJCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFTNUM7O1dBRUc7UUFDTSxjQUFTLEdBQThCLFlBQVksQ0FBQztRQUU3RDs7V0FFRztRQUNNLFNBQUksR0FBYyxHQUFHLENBQUM7UUFFL0I7O1dBRUc7UUFDTSxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU5Qjs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUkzQyxDQUFDO0lBRWhCOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdFLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBRTdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDdEIsY0FBYyxFQUFFLEdBQUcsRUFBRTtvQkFDbkIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRixDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQWlCO1FBQ25DLE1BQU0sVUFBVSxHQUFtQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xELENBQUM7OEdBakVVLGFBQWE7a0dBQWIsYUFBYSxrVkE4QlAsWUFBWSw2QkN4RC9CLDIrQkE2QkEsMERETFksZ0JBQWdCOzsyRkFFZixhQUFhO2tCQVB6QixTQUFTOytCQUNFLFdBQVcsY0FHVCxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsQ0FBQzt3REFHQSxTQUFTO3NCQUFuQyxXQUFXO3VCQUFDLFlBQVk7Z0JBQ2UsaUJBQWlCO3NCQUF4RCxXQUFXO3VCQUFDLHFCQUFxQjtnQkFNekIsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRXdCLElBQUk7c0JBQWxDLGVBQWU7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFiL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYkNoYW5nZUV2ZW50IHtcbiAgYWN0aXZlSWQ6IHN0cmluZyB8IG51bGw7XG4gIG5leHRJZDogc3RyaW5nO1xuICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10YWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhYnMnKSBjbGFzc1RhYnMgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhYnNfdmVydGljYWwnKSBnZXQgdmVydGljYWxDbGFzc1RhYnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICB9XG4gIC8qKlxuICAgKiBBbiBpZGVudGlmaWVyIG9mIGFuIGluaXRpYWxseSBzZWxlY3RlZCAoYWN0aXZlKSB0YWIuIFVzZSB0aGUgXCJzZWxlY3RcIiBtZXRob2QgdG8gc3dpdGNoIGEgdGFiIHByb2dyYW1tYXRpY2FsbHkuXG4gICAqL1xuICBASW5wdXQoKSBhY3RpdmVJZDogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogVGFicyBkaXJlY3Rpb25cbiAgICovXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICAvKipcbiAgICogVGFicyBzaXplXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAncycgfCAnbScgPSAnbSc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNsb3NlZCB0YWJzIHNob3VsZCBiZSBoaWRkZW4gd2l0aG91dCBkZXN0cm95aW5nIHRoZW1cbiAgICovXG4gIEBJbnB1dCgpIGRlc3Ryb3lPbkhpZGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBIHRhYiBjaGFuZ2UgZXZlbnQgZmlyZWQgcmlnaHQgYmVmb3JlIHRoZSB0YWIgc2VsZWN0aW9uIGhhcHBlbnMuIFNlZSBOZ2JUYWJDaGFuZ2VFdmVudCBmb3IgcGF5bG9hZCBkZXRhaWxzXG4gICAqL1xuICBAT3V0cHV0KCkgdGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJDb21wb25lbnQpIHRhYnM6IFF1ZXJ5TGlzdDxUYWJDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgdGFiIHdpdGggdGhlIGdpdmVuIGlkIGFuZCBzaG93cyBpdHMgYXNzb2NpYXRlZCBwYW5lLlxuICAgKiBBbnkgb3RoZXIgdGFiIHRoYXQgd2FzIHByZXZpb3VzbHkgc2VsZWN0ZWQgYmVjb21lcyB1bnNlbGVjdGVkIGFuZCBpdHMgYXNzb2NpYXRlZCBwYW5lIGlzIGhpZGRlbi5cbiAgICovXG4gIHNlbGVjdCh0YWJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRUYWIgPSB0aGlzLl9nZXRUYWJCeUlkKHRhYklkKTtcbiAgICBpZiAoc2VsZWN0ZWRUYWIgJiYgIXNlbGVjdGVkVGFiLmRpc2FibGVkICYmIHRoaXMuYWN0aXZlSWQgIT09IHNlbGVjdGVkVGFiLmlkKSB7XG4gICAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xuXG4gICAgICB0aGlzLnRhYkNoYW5nZS5lbWl0KHtcbiAgICAgICAgYWN0aXZlSWQ6IHRoaXMuYWN0aXZlSWQsXG4gICAgICAgIG5leHRJZDogc2VsZWN0ZWRUYWIuaWQsXG4gICAgICAgIHByZXZlbnREZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgICAgZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSWQgPSBzZWxlY3RlZFRhYi5pZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5fZ2V0VGFiQnlJZCh0aGlzLmFjdGl2ZUlkKTtcbiAgICB0aGlzLmFjdGl2ZUlkID0gYWN0aXZlVGFiID8gYWN0aXZlVGFiLmlkIDogdGhpcy50YWJzLmxlbmd0aCA/IHRoaXMudGFicy5maXJzdC5pZCA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUYWJCeUlkKGlkOiBzdHJpbmcgfCBudWxsKTogVGFiQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgY29uc3QgdGFic1dpdGhJZDogVGFiQ29tcG9uZW50W10gPSB0aGlzLnRhYnMuZmlsdGVyKCh0YWIpID0+IHRhYi5pZCA9PT0gaWQpO1xuICAgIHJldHVybiB0YWJzV2l0aElkLmxlbmd0aCA/IHRhYnNXaXRoSWRbMF0gOiBudWxsO1xuICB9XG59XG4iLCI8ZGl2IHJvbGU9XCJ0YWJsaXN0XCIgY2xhc3M9XCJ0YWJzLWhlYWRcIiBbY2xhc3MudGFicy1oZWFkX3NtYWxsXT1cInNpemUgPT09ICdzJ1wiPlxuICBAZm9yICh0YWIgb2YgdGFiczsgdHJhY2sgdGFiKSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInRhYnMtaGVhZC1pdGVtXCJcbiAgICAoY2xpY2spPVwic2VsZWN0KHRhYi5pZClcIlxuICAgIFtjbGFzcy50YWJzLWhlYWQtaXRlbV9hY3RpdmVdPVwidGFiLmlkID09PSBhY3RpdmVJZFwiXG4gICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gID5cbiAgICA8c3BhblxuICAgICAgW2lkXT1cInRhYi5pZFwiXG4gICAgICBjbGFzcz1cInRhYnMtdGl0bGVcIlxuICAgICAgcm9sZT1cInRhYlwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWIuZGlzYWJsZWQgPyAnLTEnIDogdW5kZWZpbmVkXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiIWRlc3Ryb3lPbkhpZGUgfHwgdGFiLmlkID09PSBhY3RpdmVJZCA/IHRhYi5pZCArICctcGFuZWwnIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInRhYi5pZCA9PT0gYWN0aXZlSWRcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIHt7IHRhYi50aXRsZSB9fVxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYi50aXRsZVRwbD8udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInRhYnMtY29udGVudFwiPlxuICBAZm9yICh0YWIgb2YgdGFiczsgdHJhY2sgdGFiKSB7IEBpZiAoIWRlc3Ryb3lPbkhpZGUgfHwgdGFiLmlkID09PSBhY3RpdmVJZCkge1xuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLmNvbnRlbnRUcGw/LnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgfSB9XG48L2Rpdj5cbiJdfQ==
|