@skyux/tabs 11.21.0 → 11.23.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.
- package/documentation.json +397 -397
- package/esm2022/lib/modules/shared/sky-tabs-resources.module.mjs +3 -21
- package/esm2022/lib/modules/tabs/tab-button.component.mjs +2 -2
- package/esm2022/lib/modules/tabs/tabset.component.mjs +2 -2
- package/esm2022/testing/legacy/tabs/tab-fixture-tab.mjs +2 -0
- package/esm2022/testing/legacy/tabs/tabset-fixture.mjs +129 -0
- package/esm2022/testing/public-api.mjs +2 -2
- package/fesm2022/skyux-tabs-testing.mjs +5 -5
- package/fesm2022/skyux-tabs-testing.mjs.map +1 -1
- package/fesm2022/skyux-tabs.mjs +6 -24
- package/fesm2022/skyux-tabs.mjs.map +1 -1
- package/lib/modules/shared/sky-tabs-resources.module.d.ts +0 -4
- package/package.json +10 -10
- package/testing/{tabs → legacy/tabs}/tabset-fixture.d.ts +5 -5
- package/testing/public-api.d.ts +2 -2
- package/esm2022/testing/tabs/tab-fixture-tab.mjs +0 -2
- package/esm2022/testing/tabs/tabset-fixture.mjs +0 -129
- /package/testing/{tabs → legacy/tabs}/tab-fixture-tab.d.ts +0 -0
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { SkyAppLocaleInfo, SkyLibResourcesProvider } from '@skyux/i18n';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
2
|
import * as i1 from "@skyux/i18n";
|
|
4
|
-
export declare class SkyTabsResourcesProvider implements SkyLibResourcesProvider {
|
|
5
|
-
getString(localeInfo: SkyAppLocaleInfo, name: string): string | undefined;
|
|
6
|
-
}
|
|
7
3
|
/**
|
|
8
4
|
* Import into any component library module that needs to use resource strings.
|
|
9
5
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyux/tabs",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.23.0",
|
|
4
4
|
"author": "Blackbaud, Inc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blackbaud",
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
"@angular/core": "^18.2.8",
|
|
42
42
|
"@angular/platform-browser": "^18.2.8",
|
|
43
43
|
"@angular/router": "^18.2.8",
|
|
44
|
-
"@skyux-sdk/testing": "11.
|
|
45
|
-
"@skyux/animations": "11.
|
|
46
|
-
"@skyux/core": "11.
|
|
47
|
-
"@skyux/forms": "11.
|
|
48
|
-
"@skyux/i18n": "11.
|
|
49
|
-
"@skyux/icon": "11.
|
|
50
|
-
"@skyux/indicators": "11.
|
|
51
|
-
"@skyux/popovers": "11.
|
|
52
|
-
"@skyux/theme": "11.
|
|
44
|
+
"@skyux-sdk/testing": "11.23.0",
|
|
45
|
+
"@skyux/animations": "11.23.0",
|
|
46
|
+
"@skyux/core": "11.23.0",
|
|
47
|
+
"@skyux/forms": "11.23.0",
|
|
48
|
+
"@skyux/i18n": "11.23.0",
|
|
49
|
+
"@skyux/icon": "11.23.0",
|
|
50
|
+
"@skyux/indicators": "11.23.0",
|
|
51
|
+
"@skyux/popovers": "11.23.0",
|
|
52
|
+
"@skyux/theme": "11.23.0"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"tslib": "^2.6.3"
|
|
@@ -18,7 +18,7 @@ export declare class SkyTabsetFixture {
|
|
|
18
18
|
* The index of the currently selected tab.
|
|
19
19
|
*/
|
|
20
20
|
get activeTabIndex(): number;
|
|
21
|
-
constructor(fixture: ComponentFixture<
|
|
21
|
+
constructor(fixture: ComponentFixture<unknown>, skyTestId: string);
|
|
22
22
|
/**
|
|
23
23
|
* Retrieves information about the tab at the specified index.
|
|
24
24
|
* @param tabIndex The index of the tab.
|
|
@@ -27,19 +27,19 @@ export declare class SkyTabsetFixture {
|
|
|
27
27
|
/**
|
|
28
28
|
* Clicks the tabset's "new" button.
|
|
29
29
|
*/
|
|
30
|
-
clickNewButton(): Promise<
|
|
30
|
+
clickNewButton(): Promise<void>;
|
|
31
31
|
/**
|
|
32
32
|
* Clicks the tabset's "open" button.
|
|
33
33
|
*/
|
|
34
|
-
clickOpenButton(): Promise<
|
|
34
|
+
clickOpenButton(): Promise<void>;
|
|
35
35
|
/**
|
|
36
36
|
* Clicks the tab button at the specified index.
|
|
37
37
|
* @param tabIndex The index of the tab.
|
|
38
38
|
*/
|
|
39
|
-
clickTab(tabIndex: number): Promise<
|
|
39
|
+
clickTab(tabIndex: number): Promise<void>;
|
|
40
40
|
/**
|
|
41
41
|
* Click's the tab's close button at the specified index.
|
|
42
42
|
* @param tabIndex The index of the tab.
|
|
43
43
|
*/
|
|
44
|
-
clickTabClose(tabIndex: number): Promise<
|
|
44
|
+
clickTabClose(tabIndex: number): Promise<void>;
|
|
45
45
|
}
|
package/testing/public-api.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SkyTabsetFixtureTab } from './tabs/tab-fixture-tab';
|
|
2
|
-
export { SkyTabsetFixture } from './tabs/tabset-fixture';
|
|
1
|
+
export { SkyTabsetFixtureTab } from './legacy/tabs/tab-fixture-tab';
|
|
2
|
+
export { SkyTabsetFixture } from './legacy/tabs/tabset-fixture';
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWZpeHR1cmUtdGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYnMvdGVzdGluZy9zcmMvdGFicy90YWItZml4dHVyZS10YWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvcGVydGllcyBvZiBhIFNLWSBVWCB0YWIuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lUYWJzZXRGaXh0dXJlVGFiIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRhYiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIGFjdGl2ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFiIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJtYWxpbmsgdmFsdWUgc3BlY2lmaWVkIGZvciB0aGUgdGFiLlxuICAgKi9cbiAgcGVybWFsaW5rVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvdW50IGRpc3BsYXllZCBpbiB0aGUgdGFiIGhlYWRlci5cbiAgICovXG4gIHRhYkhlYWRlckNvdW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgdGFiIGhlYWRlci5cbiAgICovXG4gIHRhYkhlYWRpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { By } from '@angular/platform-browser';
|
|
2
|
-
import { SkyAppTestUtility } from '@skyux-sdk/testing';
|
|
3
|
-
/**
|
|
4
|
-
* Allows interaction with a SKY UX tabset component.
|
|
5
|
-
* @internal
|
|
6
|
-
*/
|
|
7
|
-
export class SkyTabsetFixture {
|
|
8
|
-
/**
|
|
9
|
-
* The tabset component's ARIA label.
|
|
10
|
-
*/
|
|
11
|
-
get ariaLabel() {
|
|
12
|
-
const tabsetEl = this.#getTabsetEl();
|
|
13
|
-
return tabsetEl.getAttribute('aria-label') || undefined;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* The tabset component's ARIA labelled by attribute.
|
|
17
|
-
*/
|
|
18
|
-
get ariaLabelledBy() {
|
|
19
|
-
const tabsetEl = this.#getTabsetEl();
|
|
20
|
-
return tabsetEl.getAttribute('aria-labelledby') || undefined;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The index of the currently selected tab.
|
|
24
|
-
*/
|
|
25
|
-
get activeTabIndex() {
|
|
26
|
-
const tabLinkEls = this.#getTabLinkEls();
|
|
27
|
-
for (let i = 0, n = tabLinkEls.length; i < n; i++) {
|
|
28
|
-
if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {
|
|
29
|
-
return i;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/* safety check */
|
|
33
|
-
/* istanbul ignore next */
|
|
34
|
-
return -1;
|
|
35
|
-
}
|
|
36
|
-
#debugEl;
|
|
37
|
-
#fixture;
|
|
38
|
-
constructor(fixture, skyTestId) {
|
|
39
|
-
this.#fixture = fixture;
|
|
40
|
-
this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-tabset');
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Retrieves information about the tab at the specified index.
|
|
44
|
-
* @param tabIndex The index of the tab.
|
|
45
|
-
*/
|
|
46
|
-
getTab(tabIndex) {
|
|
47
|
-
const tabLinkEl = this.#getTabLinkEl(tabIndex);
|
|
48
|
-
const active = this.activeTabIndex === tabIndex;
|
|
49
|
-
const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');
|
|
50
|
-
const tabHeading = this.#getTextContent(tabLinkEl.querySelector('.sky-tab-heading span')?.childNodes[0]);
|
|
51
|
-
const tabHeaderCount = this.#getTextContent(tabLinkEl.querySelector('.sky-tab-header-count'));
|
|
52
|
-
let permalinkValue;
|
|
53
|
-
if (tabLinkEl.href) {
|
|
54
|
-
const permalink = tabLinkEl.href.split('?')[1];
|
|
55
|
-
if (permalink) {
|
|
56
|
-
const permalinkParts = permalink.split('=');
|
|
57
|
-
permalinkValue = decodeURIComponent(permalinkParts[1]);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
active,
|
|
62
|
-
disabled,
|
|
63
|
-
permalinkValue,
|
|
64
|
-
tabHeaderCount,
|
|
65
|
-
tabHeading,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Clicks the tabset's "new" button.
|
|
70
|
-
*/
|
|
71
|
-
async clickNewButton() {
|
|
72
|
-
return this.#clickButton('sky-tabset-btn-new');
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Clicks the tabset's "open" button.
|
|
76
|
-
*/
|
|
77
|
-
async clickOpenButton() {
|
|
78
|
-
return this.#clickButton('sky-tabset-btn-open');
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Clicks the tab button at the specified index.
|
|
82
|
-
* @param tabIndex The index of the tab.
|
|
83
|
-
*/
|
|
84
|
-
async clickTab(tabIndex) {
|
|
85
|
-
const tabLinkEl = this.#getTabLinkEl(tabIndex);
|
|
86
|
-
tabLinkEl.click();
|
|
87
|
-
this.#fixture.detectChanges();
|
|
88
|
-
return this.#fixture.whenStable();
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Click's the tab's close button at the specified index.
|
|
92
|
-
* @param tabIndex The index of the tab.
|
|
93
|
-
*/
|
|
94
|
-
async clickTabClose(tabIndex) {
|
|
95
|
-
const tabWrapperEl = this.#getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab-wrapper`)[tabIndex];
|
|
96
|
-
const closeBtnEl = tabWrapperEl.querySelector('.sky-btn-tab-close');
|
|
97
|
-
if (!closeBtnEl) {
|
|
98
|
-
throw new Error('The specified tab does not have a close button.');
|
|
99
|
-
}
|
|
100
|
-
closeBtnEl.click();
|
|
101
|
-
this.#fixture.detectChanges();
|
|
102
|
-
return this.#fixture.whenStable();
|
|
103
|
-
}
|
|
104
|
-
async #clickButton(buttonCls) {
|
|
105
|
-
const tabsetEl = this.#getTabsetEl();
|
|
106
|
-
const newButtonEl = tabsetEl.querySelector(`.sky-tabset-btns .${buttonCls}`);
|
|
107
|
-
newButtonEl.click();
|
|
108
|
-
this.#fixture.detectChanges();
|
|
109
|
-
return this.#fixture.whenStable();
|
|
110
|
-
}
|
|
111
|
-
#getTabsetEl() {
|
|
112
|
-
const tabsetEl = this.#debugEl.query(By.css('.sky-tabset')).nativeElement;
|
|
113
|
-
return tabsetEl;
|
|
114
|
-
}
|
|
115
|
-
#getTabLinkEls() {
|
|
116
|
-
return this.#getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);
|
|
117
|
-
}
|
|
118
|
-
#getTabLinkEl(tabIndex) {
|
|
119
|
-
const tabLinkEl = this.#getTabLinkEls().item(tabIndex);
|
|
120
|
-
if (!tabLinkEl) {
|
|
121
|
-
throw new Error(`There is no tab at index ${tabIndex}.`);
|
|
122
|
-
}
|
|
123
|
-
return tabLinkEl;
|
|
124
|
-
}
|
|
125
|
-
#getTextContent(el) {
|
|
126
|
-
return (el && el.textContent?.trim()) || undefined;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LWZpeHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy90ZXN0aW5nL3NyYy90YWJzL3RhYnNldC1maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUl2RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksU0FBUyxDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksU0FBUyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUVELGtCQUFrQjtRQUNsQiww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bWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU2t5QXBwVGVzdFV0aWxpdHkgfSBmcm9tICdAc2t5dXgtc2RrL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lUYWJzZXRGaXh0dXJlVGFiIH0gZnJvbSAnLi90YWItZml4dHVyZS10YWInO1xuXG4vKipcbiAqIEFsbG93cyBpbnRlcmFjdGlvbiB3aXRoIGEgU0tZIFVYIHRhYnNldCBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRhYnNldEZpeHR1cmUge1xuICAvKipcbiAgICogVGhlIHRhYnNldCBjb21wb25lbnQncyBBUklBIGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0YWJzZXRFbCA9IHRoaXMuI2dldFRhYnNldEVsKCk7XG4gICAgcmV0dXJuIHRhYnNldEVsLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpIHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGFic2V0IGNvbXBvbmVudCdzIEFSSUEgbGFiZWxsZWQgYnkgYXR0cmlidXRlLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhTGFiZWxsZWRCeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRhYnNldEVsID0gdGhpcy4jZ2V0VGFic2V0RWwoKTtcbiAgICByZXR1cm4gdGFic2V0RWwuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgKi9cbiAgcHVibGljIGdldCBhY3RpdmVUYWJJbmRleCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRhYkxpbmtFbHMgPSB0aGlzLiNnZXRUYWJMaW5rRWxzKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRhYkxpbmtFbHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBpZiAodGFiTGlua0Vscy5pdGVtKGkpLmNsYXNzTGlzdC5jb250YWlucygnc2t5LWJ0bi10YWItc2VsZWN0ZWQnKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBzYWZldHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gICNkZWJ1Z0VsOiBEZWJ1Z0VsZW1lbnQ7XG4gICNmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT47XG5cbiAgY29uc3RydWN0b3IoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+LCBza3lUZXN0SWQ6IHN0cmluZykge1xuICAgIHRoaXMuI2ZpeHR1cmUgPSBmaXh0dXJlO1xuICAgIHRoaXMuI2RlYnVnRWwgPSBTa3lBcHBUZXN0VXRpbGl0eS5nZXREZWJ1Z0VsZW1lbnRCeVRlc3RJZChcbiAgICAgIGZpeHR1cmUsXG4gICAgICBza3lUZXN0SWQsXG4gICAgICAnc2t5LXRhYnNldCcsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhYiBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIuXG4gICAqL1xuICBwdWJsaWMgZ2V0VGFiKHRhYkluZGV4OiBudW1iZXIpOiBTa3lUYWJzZXRGaXh0dXJlVGFiIHtcbiAgICBjb25zdCB0YWJMaW5rRWwgPSB0aGlzLiNnZXRUYWJMaW5rRWwodGFiSW5kZXgpO1xuXG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5hY3RpdmVUYWJJbmRleCA9PT0gdGFiSW5kZXg7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0YWJMaW5rRWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktYnRuLXRhYi1kaXNhYmxlZCcpO1xuICAgIGNvbnN0IHRhYkhlYWRpbmcgPSB0aGlzLiNnZXRUZXh0Q29udGVudChcbiAgICAgIHRhYkxpbmtFbC5xdWVyeVNlbGVjdG9yKCcuc2t5LXRhYi1oZWFkaW5nIHNwYW4nKT8uY2hpbGROb2Rlc1swXSxcbiAgICApO1xuICAgIGNvbnN0IHRhYkhlYWRlckNvdW50ID0gdGhpcy4jZ2V0VGV4dENvbnRlbnQoXG4gICAgICB0YWJMaW5rRWwucXVlcnlTZWxlY3RvcignLnNreS10YWItaGVhZGVyLWNvdW50JyksXG4gICAgKTtcblxuICAgIGxldCBwZXJtYWxpbmtWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRhYkxpbmtFbC5ocmVmKSB7XG4gICAgICBjb25zdCBwZXJtYWxpbmsgPSB0YWJMaW5rRWwuaHJlZi5zcGxpdCgnPycpWzFdO1xuICAgICAgaWYgKHBlcm1hbGluaykge1xuICAgICAgICBjb25zdCBwZXJtYWxpbmtQYXJ0cyA9IHBlcm1hbGluay5zcGxpdCgnPScpO1xuXG4gICAgICAgIHBlcm1hbGlua1ZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHBlcm1hbGlua1BhcnRzWzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBwZXJtYWxpbmtWYWx1ZSxcbiAgICAgIHRhYkhlYWRlckNvdW50LFxuICAgICAgdGFiSGVhZGluZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgdGFic2V0J3MgXCJuZXdcIiBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tOZXdCdXR0b24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy4jY2xpY2tCdXR0b24oJ3NreS10YWJzZXQtYnRuLW5ldycpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgdGFic2V0J3MgXCJvcGVuXCIgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrT3BlbkJ1dHRvbigpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiNjbGlja0J1dHRvbignc2t5LXRhYnNldC1idG4tb3BlbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgdGFiIGJ1dHRvbiBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tUYWIodGFiSW5kZXg6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdGFiTGlua0VsID0gdGhpcy4jZ2V0VGFiTGlua0VsKHRhYkluZGV4KTtcblxuICAgIHRhYkxpbmtFbC5jbGljaygpO1xuXG4gICAgdGhpcy4jZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuI2ZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrJ3MgdGhlIHRhYidzIGNsb3NlIGJ1dHRvbiBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gdGFiSW5kZXggVGhlIGluZGV4IG9mIHRoZSB0YWIuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tUYWJDbG9zZSh0YWJJbmRleDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB0YWJXcmFwcGVyRWwgPSB0aGlzLiNnZXRUYWJzZXRFbCgpLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICBgLnNreS10YWJzZXQtdGFicyAuc2t5LWJ0bi10YWItd3JhcHBlcmAsXG4gICAgKVt0YWJJbmRleF07XG5cbiAgICBjb25zdCBjbG9zZUJ0bkVsID0gdGFiV3JhcHBlckVsLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLnNreS1idG4tdGFiLWNsb3NlJyxcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgaWYgKCFjbG9zZUJ0bkVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzcGVjaWZpZWQgdGFiIGRvZXMgbm90IGhhdmUgYSBjbG9zZSBidXR0b24uJyk7XG4gICAgfVxuXG4gICAgY2xvc2VCdG5FbC5jbGljaygpO1xuXG4gICAgdGhpcy4jZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuI2ZpeHR1cmUud2hlblN0YWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgI2NsaWNrQnV0dG9uKGJ1dHRvbkNsczogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB0YWJzZXRFbCA9IHRoaXMuI2dldFRhYnNldEVsKCk7XG5cbiAgICBjb25zdCBuZXdCdXR0b25FbCA9IHRhYnNldEVsLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgLnNreS10YWJzZXQtYnRucyAuJHtidXR0b25DbHN9YCxcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgbmV3QnV0dG9uRWwuY2xpY2soKTtcblxuICAgIHRoaXMuI2ZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiB0aGlzLiNmaXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gICNnZXRUYWJzZXRFbCgpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgY29uc3QgdGFic2V0RWwgPSB0aGlzLiNkZWJ1Z0VsLnF1ZXJ5KEJ5LmNzcygnLnNreS10YWJzZXQnKSkubmF0aXZlRWxlbWVudDtcblxuICAgIHJldHVybiB0YWJzZXRFbDtcbiAgfVxuXG4gICNnZXRUYWJMaW5rRWxzKCk6IE5vZGVMaXN0T2Y8SFRNTEFuY2hvckVsZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0VGFic2V0RWwoKS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgYC5za3ktdGFic2V0LXRhYnMgLnNreS1idG4tdGFiYCxcbiAgICApO1xuICB9XG5cbiAgI2dldFRhYkxpbmtFbCh0YWJJbmRleDogbnVtYmVyKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgIGNvbnN0IHRhYkxpbmtFbCA9IHRoaXMuI2dldFRhYkxpbmtFbHMoKS5pdGVtKHRhYkluZGV4KTtcblxuICAgIGlmICghdGFiTGlua0VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIHRhYiBhdCBpbmRleCAke3RhYkluZGV4fS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFiTGlua0VsO1xuICB9XG5cbiAgI2dldFRleHRDb250ZW50KGVsOiBFbGVtZW50IHwgTm9kZSB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZWwgJiYgZWwudGV4dENvbnRlbnQ/LnRyaW0oKSkgfHwgdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
File without changes
|