@clr/angular 16.3.1 → 17.0.0-beta.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/accordion/accordion-panel.d.ts +0 -12
- package/accordion/accordion.d.ts +0 -3
- package/clarity.api.md +49 -62
- package/data/datagrid/datagrid.module.d.ts +36 -37
- package/data/datagrid/index.d.ts +0 -1
- package/data/datagrid/providers/items.d.ts +2 -11
- package/emphasis/alert/alert.d.ts +6 -2
- package/emphasis/alert/alert.module.d.ts +2 -1
- package/esm2020/accordion/accordion-panel.mjs +1 -13
- package/esm2020/accordion/accordion.mjs +1 -4
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +3 -4
- package/esm2020/data/datagrid/datagrid-items.mjs +1 -2
- package/esm2020/data/datagrid/datagrid-row.mjs +3 -3
- package/esm2020/data/datagrid/datagrid.mjs +3 -5
- package/esm2020/data/datagrid/datagrid.module.mjs +1 -5
- package/esm2020/data/datagrid/index.mjs +1 -2
- package/esm2020/data/datagrid/providers/items.mjs +3 -21
- package/esm2020/data/datagrid/providers/selection.mjs +16 -22
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +2 -2
- package/esm2020/data/tree-view/tree-node.mjs +1 -1
- package/esm2020/emphasis/alert/alert-item.mjs +9 -3
- package/esm2020/emphasis/alert/alert.mjs +24 -9
- package/esm2020/emphasis/alert/alert.module.mjs +5 -4
- package/esm2020/emphasis/alert/alerts.mjs +3 -2
- package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +16 -1
- package/esm2020/emphasis/alert/utils/alert-types.mjs +2 -2
- package/esm2020/forms/common/abstract-container.mjs +20 -18
- package/esm2020/forms/common/error.mjs +3 -2
- package/esm2020/forms/common/success.mjs +3 -2
- package/esm2020/forms/password/password-container.mjs +3 -3
- package/esm2020/modal/modal.mjs +3 -8
- package/esm2020/progress/progress-bars/progress-bar.mjs +8 -26
- package/esm2020/utils/i18n/common-strings.default.mjs +3 -1
- package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
- package/esm2020/wizard/wizard.mjs +6 -29
- package/fesm2015/clr-angular.mjs +120 -212
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +120 -209
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/common/abstract-container.d.ts +4 -6
- package/modal/modal.d.ts +1 -2
- package/package.json +6 -6
- package/progress/progress-bars/progress-bar.d.ts +2 -10
- package/utils/i18n/common-strings.interface.d.ts +8 -0
- package/wizard/wizard.d.ts +2 -12
- package/data/datagrid/datagrid-items-trackby.d.ts +0 -10
- package/esm2020/data/datagrid/datagrid-items-trackby.mjs +0 -43
|
@@ -27,12 +27,10 @@ export declare abstract class ClrAbstractContainer implements DynamicWrapper, On
|
|
|
27
27
|
constructor(ifControlStateService: IfControlStateService, layoutService: LayoutService, controlClassService: ControlClassService, ngControlService: NgControlService);
|
|
28
28
|
/**
|
|
29
29
|
* @NOTE
|
|
30
|
-
* Helper control is a bit different than the others, it must be visible
|
|
31
|
-
* -
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* For example user implement only Error control then if CONTROL_STATE is VALID then helper
|
|
35
|
-
* control must be visible.
|
|
30
|
+
* Helper control is a bit different than the others, it must be always visible:
|
|
31
|
+
* - Labels and instructions must always accompany forms and are persistent.
|
|
32
|
+
* - The recommendation here is to always have helper text or anything instructions visible.
|
|
33
|
+
* - The expectation is to have error text + helper text in the errored state. this way all users will have the helper text information always available.
|
|
36
34
|
*/
|
|
37
35
|
get showHelper(): boolean;
|
|
38
36
|
get showValid(): boolean;
|
package/modal/modal.d.ts
CHANGED
|
@@ -19,7 +19,6 @@ export declare class ClrModal implements OnChanges, OnDestroy {
|
|
|
19
19
|
stopClose: boolean;
|
|
20
20
|
altClose: EventEmitter<boolean>;
|
|
21
21
|
labelledBy: string;
|
|
22
|
-
bypassScrollService: boolean;
|
|
23
22
|
constructor(_scrollingService: ScrollingService, commonStrings: ClrCommonStringsService, modalStackService: ModalStackService);
|
|
24
23
|
ngOnChanges(changes: {
|
|
25
24
|
[propName: string]: SimpleChange;
|
|
@@ -29,5 +28,5 @@ export declare class ClrModal implements OnChanges, OnDestroy {
|
|
|
29
28
|
close(): void;
|
|
30
29
|
fadeDone(e: AnimationEvent): void;
|
|
31
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<ClrModal, never>;
|
|
32
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ClrModal, "clr-modal", never, { "_open": "clrModalOpen"; "closable": "clrModalClosable"; "closeButtonAriaLabel": "clrModalCloseButtonAriaLabel"; "size": "clrModalSize"; "staticBackdrop": "clrModalStaticBackdrop"; "skipAnimation": "clrModalSkipAnimation"; "stopClose": "clrModalPreventClose"; "labelledBy": "clrModalLabelledById";
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ClrModal, "clr-modal", never, { "_open": "clrModalOpen"; "closable": "clrModalClosable"; "closeButtonAriaLabel": "clrModalCloseButtonAriaLabel"; "size": "clrModalSize"; "staticBackdrop": "clrModalStaticBackdrop"; "skipAnimation": "clrModalSkipAnimation"; "stopClose": "clrModalPreventClose"; "labelledBy": "clrModalLabelledById"; }, { "_openChanged": "clrModalOpenChange"; "altClose": "clrModalAlternateClose"; }, never, [".modal-nav", ".modal-title", ".modal-body", ".modal-footer"], false, never>;
|
|
33
32
|
}
|
package/package.json
CHANGED
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"url": "https://github.com/vmware-clarity/ng-clarity/issues"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
|
-
"@angular/cdk": "15 || 16",
|
|
22
|
-
"@angular/common": "15 || 16",
|
|
23
|
-
"@angular/core": "15 || 16",
|
|
24
|
-
"@cds/core": ">= 6.
|
|
25
|
-
"@clr/ui": "
|
|
21
|
+
"@angular/cdk": "15 || 16 || 17",
|
|
22
|
+
"@angular/common": "15 || 16 || 17",
|
|
23
|
+
"@angular/core": "15 || 16 || 17",
|
|
24
|
+
"@cds/core": ">= 6.8.0",
|
|
25
|
+
"@clr/ui": "17.0.0-beta.2"
|
|
26
26
|
},
|
|
27
27
|
"module": "fesm2015/clr-angular.mjs",
|
|
28
28
|
"es2020": "fesm2020/clr-angular.mjs",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"tslib": "^2.3.0"
|
|
49
49
|
},
|
|
50
|
-
"version": "
|
|
50
|
+
"version": "17.0.0-beta.2"
|
|
51
51
|
}
|
|
@@ -2,15 +2,13 @@ import * as i0 from "@angular/core";
|
|
|
2
2
|
export declare class ClrProgressBar {
|
|
3
3
|
max: number | string;
|
|
4
4
|
displayval: string;
|
|
5
|
+
color: string;
|
|
5
6
|
value: number | string;
|
|
6
7
|
externalId: string;
|
|
7
8
|
private _ID;
|
|
8
9
|
private _labeled;
|
|
9
10
|
private _fade;
|
|
10
11
|
private _loop;
|
|
11
|
-
private _success;
|
|
12
|
-
private _danger;
|
|
13
|
-
private _warning;
|
|
14
12
|
private _flash;
|
|
15
13
|
private _flashDanger;
|
|
16
14
|
private _compact;
|
|
@@ -25,14 +23,8 @@ export declare class ClrProgressBar {
|
|
|
25
23
|
get fadeClass(): boolean;
|
|
26
24
|
set clrLoop(value: boolean | string);
|
|
27
25
|
get loopClass(): boolean;
|
|
28
|
-
/** @deprecated since 2.0, remove in 4.0 */
|
|
29
|
-
set clrWarning(value: boolean | string);
|
|
30
26
|
get warningClass(): boolean;
|
|
31
|
-
/** @deprecated since 2.0, remove in 4.0 */
|
|
32
|
-
set clrSuccess(value: boolean | string);
|
|
33
27
|
get successClass(): boolean;
|
|
34
|
-
/** @deprecated since 2.0, remove in 4.0 */
|
|
35
|
-
set clrDanger(value: boolean | string);
|
|
36
28
|
get dangerClass(): boolean;
|
|
37
29
|
set clrFlash(value: boolean | string);
|
|
38
30
|
get flashClass(): boolean;
|
|
@@ -49,5 +41,5 @@ export declare class ClrProgressBar {
|
|
|
49
41
|
*/
|
|
50
42
|
displayStringValue(): boolean;
|
|
51
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<ClrProgressBar, never>;
|
|
52
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ClrProgressBar, "clr-progress-bar", never, { "max": "clrMax"; "displayval": "clrDisplayval"; "value": "clrValue"; "id": "id"; "clrCompact": "clrCompact"; "clrLabeled": "clrLabeled"; "clrFade": "clrFade"; "clrLoop": "clrLoop"; "
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ClrProgressBar, "clr-progress-bar", never, { "max": "clrMax"; "displayval": "clrDisplayval"; "color": "clrColor"; "value": "clrValue"; "id": "id"; "clrCompact": "clrCompact"; "clrLabeled": "clrLabeled"; "clrFade": "clrFade"; "clrLoop": "clrLoop"; "clrFlash": "clrFlash"; "clrFlashDanger": "clrFlashDanger"; }, {}, never, never, false, never>;
|
|
53
45
|
}
|
package/wizard/wizard.d.ts
CHANGED
|
@@ -15,7 +15,6 @@ export declare class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {
|
|
|
15
15
|
pageCollection: PageCollectionService;
|
|
16
16
|
buttonService: ButtonHubService;
|
|
17
17
|
headerActionService: HeaderActionService;
|
|
18
|
-
private elementRef;
|
|
19
18
|
/**
|
|
20
19
|
* Set the aria-label for the stepnav section of the wizard. Set using `[clrWizardStepnavAriaLabel]` input.
|
|
21
20
|
*/
|
|
@@ -29,12 +28,6 @@ export declare class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {
|
|
|
29
28
|
* in the top right corner. Set using `[clrWizardClosable]` input.
|
|
30
29
|
*/
|
|
31
30
|
closable: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Used to communicate to the underlying modal that animations are not
|
|
34
|
-
* wanted. Primary use is for the display of static/inline wizards.
|
|
35
|
-
* Set using `[clrWizardPreventModalAnimation]` input.
|
|
36
|
-
*/
|
|
37
|
-
_stopModalAnimations: boolean;
|
|
38
31
|
/**
|
|
39
32
|
* Emits when the wizard is opened or closed.
|
|
40
33
|
* Listen via `(clrWizardOpenChange)` event.
|
|
@@ -85,7 +78,7 @@ export declare class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {
|
|
|
85
78
|
private _disableStepnav;
|
|
86
79
|
private differ;
|
|
87
80
|
private subscriptions;
|
|
88
|
-
constructor(platformId: any, commonStrings: ClrCommonStringsService, navService: WizardNavigationService, pageCollection: PageCollectionService, buttonService: ButtonHubService, headerActionService: HeaderActionService,
|
|
81
|
+
constructor(platformId: any, commonStrings: ClrCommonStringsService, navService: WizardNavigationService, pageCollection: PageCollectionService, buttonService: ButtonHubService, headerActionService: HeaderActionService, differs: IterableDiffers);
|
|
89
82
|
/**
|
|
90
83
|
* Resets page completed states when navigating backwards.
|
|
91
84
|
* Set using `[clrWizardForceForwardNavigation]` input.
|
|
@@ -138,8 +131,6 @@ export declare class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {
|
|
|
138
131
|
set currentPage(page: ClrWizardPage);
|
|
139
132
|
get isLast(): boolean;
|
|
140
133
|
get isFirst(): boolean;
|
|
141
|
-
get isInline(): boolean;
|
|
142
|
-
get stopModalAnimations(): string;
|
|
143
134
|
ngAfterContentInit(): void;
|
|
144
135
|
ngDoCheck(): void;
|
|
145
136
|
ngOnDestroy(): void;
|
|
@@ -238,8 +229,7 @@ export declare class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {
|
|
|
238
229
|
private listenForFinishedChanges;
|
|
239
230
|
private listenForPageChanges;
|
|
240
231
|
private updateNavOnPageChanges;
|
|
241
|
-
private initializeButtons;
|
|
242
232
|
private emitWizardFinished;
|
|
243
233
|
static ɵfac: i0.ɵɵFactoryDeclaration<ClrWizard, never>;
|
|
244
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ClrWizard, "clr-wizard", never, { "stepnavAriaLabel": "clrWizardStepnavAriaLabel"; "size": "clrWizardSize"; "closable": "clrWizardClosable"; "
|
|
234
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ClrWizard, "clr-wizard", never, { "stepnavAriaLabel": "clrWizardStepnavAriaLabel"; "size": "clrWizardSize"; "closable": "clrWizardClosable"; "forceForward": "clrWizardForceForwardNavigation"; "clrWizardOpen": "clrWizardOpen"; "stopNext": "clrWizardPreventDefaultNext"; "stopCancel": "clrWizardPreventDefaultCancel"; "stopNavigation": "clrWizardPreventNavigation"; "disableStepnav": "clrWizardDisableStepnav"; }, { "_openChanged": "clrWizardOpenChange"; "onCancel": "clrWizardOnCancel"; "wizardFinished": "clrWizardOnFinish"; "onReset": "clrWizardOnReset"; "currentPageChanged": "clrWizardCurrentPageChanged"; "onMoveNext": "clrWizardOnNext"; "onMovePrevious": "clrWizardOnPrevious"; }, ["wizardTitle", "pages", "headerActions"], ["clr-wizard-title", "clr-wizard-header-action", "*", "clr-wizard-button"], false, never>;
|
|
245
235
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { TrackByFunction } from '@angular/core';
|
|
2
|
-
import { Items } from './providers/items';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class ClrDatagridItemsTrackBy<T = any> {
|
|
5
|
-
private _items;
|
|
6
|
-
constructor(_items: Items<T>);
|
|
7
|
-
set trackBy(value: TrackByFunction<T>);
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagridItemsTrackBy<any>, [{ optional: true; }]>;
|
|
9
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ClrDatagridItemsTrackBy<any>, "[ngForTrackBy]", never, { "trackBy": "ngForTrackBy"; }, {}, never, never, false, never>;
|
|
10
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
|
|
3
|
-
* This software is released under MIT license.
|
|
4
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5
|
-
*/
|
|
6
|
-
import { Directive, Input, Optional } from '@angular/core';
|
|
7
|
-
import { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./providers/items";
|
|
10
|
-
export class ClrDatagridItemsTrackBy {
|
|
11
|
-
constructor(_items) {
|
|
12
|
-
this._items = _items;
|
|
13
|
-
}
|
|
14
|
-
set trackBy(value) {
|
|
15
|
-
/**
|
|
16
|
-
* This is a workaround to prevent the items `trackBy` function from
|
|
17
|
-
* being replaced when the "manage columns" button is clicked. This is
|
|
18
|
-
* not a complete solution. If there is another `ngForTrackBy` function
|
|
19
|
-
* within the datagrid in application code, it could sill replace the
|
|
20
|
-
* items `trackBy` function whether it is the row iterator or not.
|
|
21
|
-
*/
|
|
22
|
-
if (value === columnToggleTrackByFn) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
if (this._items) {
|
|
26
|
-
this._items.iteratorTrackBy = value;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
ClrDatagridItemsTrackBy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridItemsTrackBy, deps: [{ token: i1.Items, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
31
|
-
ClrDatagridItemsTrackBy.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: { trackBy: ["ngForTrackBy", "trackBy"] }, ngImport: i0 });
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridItemsTrackBy, decorators: [{
|
|
33
|
-
type: Directive,
|
|
34
|
-
args: [{
|
|
35
|
-
selector: '[ngForTrackBy]',
|
|
36
|
-
}]
|
|
37
|
-
}], ctorParameters: function () { return [{ type: i1.Items, decorators: [{
|
|
38
|
-
type: Optional
|
|
39
|
-
}] }]; }, propDecorators: { trackBy: [{
|
|
40
|
-
type: Input,
|
|
41
|
-
args: ['ngForTrackBy']
|
|
42
|
-
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQtaXRlbXMtdHJhY2tieS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvZGF0YWdyaWQvZGF0YWdyaWQtaXRlbXMtdHJhY2tieS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBTXpFLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBZ0MsTUFBZ0I7UUFBaEIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtJQUFHLENBQUM7SUFFcEQsSUFDSSxPQUFPLENBQUMsS0FBeUI7UUFDbkM7Ozs7OztXQU1HO1FBQ0gsSUFBSSxLQUFLLEtBQUsscUJBQXFCLEVBQUU7WUFDbkMsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7b0hBbkJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQUVjLFFBQVE7NENBR2pCLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIzIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPcHRpb25hbCwgVHJhY2tCeUZ1bmN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbHVtblRvZ2dsZVRyYWNrQnlGbiB9IGZyb20gJy4vZGF0YWdyaWQtY29sdW1uLXRvZ2dsZS10cmFja2J5JztcbmltcG9ydCB7IEl0ZW1zIH0gZnJvbSAnLi9wcm92aWRlcnMvaXRlbXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdGb3JUcmFja0J5XScsXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGFncmlkSXRlbXNUcmFja0J5PFQgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaXRlbXM6IEl0ZW1zPFQ+KSB7fVxuXG4gIEBJbnB1dCgnbmdGb3JUcmFja0J5JylcbiAgc2V0IHRyYWNrQnkodmFsdWU6IFRyYWNrQnlGdW5jdGlvbjxUPikge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIHByZXZlbnQgdGhlIGl0ZW1zIGB0cmFja0J5YCBmdW5jdGlvbiBmcm9tXG4gICAgICogYmVpbmcgcmVwbGFjZWQgd2hlbiB0aGUgXCJtYW5hZ2UgY29sdW1uc1wiIGJ1dHRvbiBpcyBjbGlja2VkLiBUaGlzIGlzXG4gICAgICogbm90IGEgY29tcGxldGUgc29sdXRpb24uIElmIHRoZXJlIGlzIGFub3RoZXIgYG5nRm9yVHJhY2tCeWAgZnVuY3Rpb25cbiAgICAgKiB3aXRoaW4gdGhlIGRhdGFncmlkIGluIGFwcGxpY2F0aW9uIGNvZGUsIGl0IGNvdWxkIHNpbGwgcmVwbGFjZSB0aGVcbiAgICAgKiBpdGVtcyBgdHJhY2tCeWAgZnVuY3Rpb24gd2hldGhlciBpdCBpcyB0aGUgcm93IGl0ZXJhdG9yIG9yIG5vdC5cbiAgICAgKi9cbiAgICBpZiAodmFsdWUgPT09IGNvbHVtblRvZ2dsZVRyYWNrQnlGbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pdGVtcykge1xuICAgICAgdGhpcy5faXRlbXMuaXRlcmF0b3JUcmFja0J5ID0gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
|