carbon-components-angular
Version:
Next generation components
168 lines • 14.8 kB
JavaScript
import { Component, Input, Output, EventEmitter, ViewChild, HostListener } from "@angular/core";
import * as i0 from "@angular/core";
import * as i1 from "carbon-components-angular/i18n";
import * as i2 from "@angular/common";
import * as i3 from "carbon-components-angular/icon";
export class SelectionTile {
constructor(i18n) {
this.i18n = i18n;
/**
* @deprecated since v5 - Use `cdsLayer` directive instead
* Set to `"light"` to apply the light style
*/
this.theme = "dark";
/**
* The unique id for the input.
*/
this.id = `tile-${SelectionTile.tileCount}`;
/**
* Internal event used to notify the containing `TileGroup` of changes.
*/
this.change = new EventEmitter();
/**
* Set to `true` to disable the selection tile.
*/
this.disabled = false;
/**
* Set by the containing `TileGroup`. Used for the `name` property on the input.
*/
this.name = "tile-group-unbound";
/**
* Defines whether or not the `SelectionTile` supports selecting multiple tiles as opposed to single
* tile selection.
*/
this.multiple = true; // Set to true because of the way tile group sets it up.
// If an initial selected value is set before input exists, we save
// the value and check again when input exists in `AfterViewInit`.
this._selected = null;
SelectionTile.tileCount++;
}
/**
* Updating the state of the input to match the state of the parameter passed in.
* Set to `true` if this tile should be selected.
*/
set selected(value) {
// If an initial selected value is set before input exists, we save
// the value and check again when input exists in `AfterViewInit`.
this._selected = value ? true : null;
if (this.input) {
this.input.nativeElement.checked = this._selected;
}
}
get selected() {
return this.input ? this.input.nativeElement.checked : false;
}
ngAfterViewInit() {
if (this.input) {
setTimeout(() => {
this.input.nativeElement.checked = this._selected;
});
}
}
keyboardInput(event) {
if (event.key === "Enter" || event.key === "Spacebar" || event.key === " ") {
this.selected = !this.selected;
this.change.emit(event);
}
}
onChange(event) {
this.change.emit(event);
}
}
SelectionTile.tileCount = 0;
SelectionTile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectionTile, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component });
SelectionTile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SelectionTile, selector: "cds-selection-tile, ibm-selection-tile", inputs: { theme: "theme", id: "id", selected: "selected", value: "value", disabled: "disabled" }, outputs: { change: "change" }, host: { listeners: { "keydown": "keyboardInput($event)" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], ngImport: i0, template: `
<input
#input
[attr.tabindex]="disabled ? null : 0"
class="cds--tile-input"
[id]="id"
[disabled]="disabled"
[type]="(multiple ? 'checkbox': 'radio')"
[value]="value"
[name]="name"
(change)="onChange($event)"/>
<label
class="cds--tile cds--tile--selectable"
[for]="id"
[ngClass]="{
'cds--tile--is-selected' : selected,
'cds--tile--light': theme === 'light',
'cds--tile--disabled' : disabled
}"
[attr.aria-label]="i18n.get('TILES.TILE') | async">
<div class="cds--tile__checkmark"
[class.cds--tile__checkmark--persistent]="multiple">
<svg *ngIf="!selected; else selectedIcon"
[cdsIcon]="multiple ? 'checkbox' : 'checkmark'"
size="16">
</svg>
<ng-template #selectedIcon>
<svg [cdsIcon]="multiple ? 'checkbox--checked--filled' : 'checkmark--filled'" size="16"></svg>
</ng-template>
</div>
<div class="cds--tile-content">
<ng-content></ng-content>
</div>
</label>
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectionTile, decorators: [{
type: Component,
args: [{
selector: "cds-selection-tile, ibm-selection-tile",
template: `
<input
#input
[attr.tabindex]="disabled ? null : 0"
class="cds--tile-input"
[id]="id"
[disabled]="disabled"
[type]="(multiple ? 'checkbox': 'radio')"
[value]="value"
[name]="name"
(change)="onChange($event)"/>
<label
class="cds--tile cds--tile--selectable"
[for]="id"
[ngClass]="{
'cds--tile--is-selected' : selected,
'cds--tile--light': theme === 'light',
'cds--tile--disabled' : disabled
}"
[attr.aria-label]="i18n.get('TILES.TILE') | async">
<div class="cds--tile__checkmark"
[class.cds--tile__checkmark--persistent]="multiple">
<svg *ngIf="!selected; else selectedIcon"
[cdsIcon]="multiple ? 'checkbox' : 'checkmark'"
size="16">
</svg>
<ng-template #selectedIcon>
<svg [cdsIcon]="multiple ? 'checkbox--checked--filled' : 'checkmark--filled'" size="16"></svg>
</ng-template>
</div>
<div class="cds--tile-content">
<ng-content></ng-content>
</div>
</label>
`
}]
}], ctorParameters: function () { return [{ type: i1.I18n }]; }, propDecorators: { theme: [{
type: Input
}], id: [{
type: Input
}], selected: [{
type: Input
}], value: [{
type: Input
}], change: [{
type: Output
}], disabled: [{
type: Input
}], input: [{
type: ViewChild,
args: ["input", { static: true }]
}], keyboardInput: [{
type: HostListener,
args: ["keydown", ["$event"]]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RpbGVzL3NlbGVjdGlvbi10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxlQUFlLENBQUM7Ozs7O0FBeUN2QixNQUFNLE9BQU8sYUFBYTtJQTZEekIsWUFBbUIsSUFBVTtRQUFWLFNBQUksR0FBSixJQUFJLENBQU07UUExRDdCOzs7V0FHRztRQUNNLFVBQUssR0FBcUIsTUFBTSxDQUFDO1FBRTFDOztXQUVHO1FBQ00sT0FBRSxHQUFHLFFBQVEsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBc0JoRDs7V0FFRztRQUNPLFdBQU0sR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzRDs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDSCxTQUFJLEdBQUcsb0JBQW9CLENBQUM7UUFDNUI7OztXQUdHO1FBQ0gsYUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLHdEQUF3RDtRQUt6RSxtRUFBbUU7UUFDbkUsa0VBQWtFO1FBQ3hELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHMUIsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFqREQ7OztPQUdHO0lBQ0gsSUFBYSxRQUFRLENBQUMsS0FBYztRQUNuQyxtRUFBbUU7UUFDbkUsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUNsRDtJQUNGLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFvQ0QsZUFBZTtRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7U0FDSDtJQUNGLENBQUM7SUFHRCxhQUFhLENBQUMsS0FBSztRQUNsQixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssVUFBVSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO1lBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO0lBQ0YsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQzs7QUFsRk0sdUJBQVMsR0FBRyxDQUFDLENBQUM7MEdBRFQsYUFBYTs4RkFBYixhQUFhLDBYQXBDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtDVDsyRkFFVyxhQUFhO2tCQXRDekIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQ1Q7aUJBQ0Q7MkZBUVMsS0FBSztzQkFBYixLQUFLO2dCQUtHLEVBQUU7c0JBQVYsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQWVHLEtBQUs7c0JBQWIsS0FBSztnQkFJSSxNQUFNO3NCQUFmLE1BQU07Z0JBS0UsUUFBUTtzQkFBaEIsS0FBSztnQkFhZ0MsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW1CcEMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0RXZlbnRFbWl0dGVyLFxuXHRWaWV3Q2hpbGQsXG5cdEhvc3RMaXN0ZW5lcixcblx0QWZ0ZXJWaWV3SW5pdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2kxOG5cIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1zZWxlY3Rpb24tdGlsZSwgaWJtLXNlbGVjdGlvbi10aWxlXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGlucHV0XG5cdFx0XHQjaW5wdXRcblx0XHRcdFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gbnVsbCA6IDBcIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLXRpbGUtaW5wdXRcIlxuXHRcdFx0W2lkXT1cImlkXCJcblx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdFx0XHRbdHlwZV09XCIobXVsdGlwbGUgPyAnY2hlY2tib3gnOiAncmFkaW8nKVwiXG5cdFx0XHRbdmFsdWVdPVwidmFsdWVcIlxuXHRcdFx0W25hbWVdPVwibmFtZVwiXG5cdFx0XHQoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIi8+XG5cdFx0PGxhYmVsXG5cdFx0XHRjbGFzcz1cImNkcy0tdGlsZSBjZHMtLXRpbGUtLXNlbGVjdGFibGVcIlxuXHRcdFx0W2Zvcl09XCJpZFwiXG5cdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdCdjZHMtLXRpbGUtLWlzLXNlbGVjdGVkJyA6IHNlbGVjdGVkLFxuXHRcdFx0XHQnY2RzLS10aWxlLS1saWdodCc6IHRoZW1lID09PSAnbGlnaHQnLFxuXHRcdFx0XHQnY2RzLS10aWxlLS1kaXNhYmxlZCcgOiBkaXNhYmxlZFxuXHRcdFx0fVwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uZ2V0KCdUSUxFUy5USUxFJykgfCBhc3luY1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tdGlsZV9fY2hlY2ttYXJrXCJcblx0XHRcdFx0W2NsYXNzLmNkcy0tdGlsZV9fY2hlY2ttYXJrLS1wZXJzaXN0ZW50XT1cIm11bHRpcGxlXCI+XG5cdFx0XHRcdDxzdmcgKm5nSWY9XCIhc2VsZWN0ZWQ7IGVsc2Ugc2VsZWN0ZWRJY29uXCJcblx0XHRcdFx0XHRbY2RzSWNvbl09XCJtdWx0aXBsZSA/ICdjaGVja2JveCcgOiAnY2hlY2ttYXJrJ1wiXG5cdFx0XHRcdFx0c2l6ZT1cIjE2XCI+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgI3NlbGVjdGVkSWNvbj5cblx0XHRcdFx0XHQ8c3ZnIFtjZHNJY29uXT1cIm11bHRpcGxlID8gJ2NoZWNrYm94LS1jaGVja2VkLS1maWxsZWQnIDogJ2NoZWNrbWFyay0tZmlsbGVkJ1wiIHNpemU9XCIxNlwiPjwvc3ZnPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS10aWxlLWNvbnRlbnRcIj5cblx0XHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9sYWJlbD5cblx0YFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25UaWxlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdHN0YXRpYyB0aWxlQ291bnQgPSAwO1xuXG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBzaW5jZSB2NSAtIFVzZSBgY2RzTGF5ZXJgIGRpcmVjdGl2ZSBpbnN0ZWFkXG5cdCAqIFNldCB0byBgXCJsaWdodFwiYCB0byBhcHBseSB0aGUgbGlnaHQgc3R5bGVcblx0ICovXG5cdEBJbnB1dCgpIHRoZW1lOiBcImxpZ2h0XCIgfCBcImRhcmtcIiA9IFwiZGFya1wiO1xuXG5cdC8qKlxuXHQgKiBUaGUgdW5pcXVlIGlkIGZvciB0aGUgaW5wdXQuXG5cdCAqL1xuXHRASW5wdXQoKSBpZCA9IGB0aWxlLSR7U2VsZWN0aW9uVGlsZS50aWxlQ291bnR9YDtcblxuXHQvKipcblx0ICogVXBkYXRpbmcgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCB0byBtYXRjaCB0aGUgc3RhdGUgb2YgdGhlIHBhcmFtZXRlciBwYXNzZWQgaW4uXG5cdCAqIFNldCB0byBgdHJ1ZWAgaWYgdGhpcyB0aWxlIHNob3VsZCBiZSBzZWxlY3RlZC5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuXHRcdC8vIElmIGFuIGluaXRpYWwgc2VsZWN0ZWQgdmFsdWUgaXMgc2V0IGJlZm9yZSBpbnB1dCBleGlzdHMsIHdlIHNhdmVcblx0XHQvLyB0aGUgdmFsdWUgYW5kIGNoZWNrIGFnYWluIHdoZW4gaW5wdXQgZXhpc3RzIGluIGBBZnRlclZpZXdJbml0YC5cblx0XHR0aGlzLl9zZWxlY3RlZCA9IHZhbHVlID8gdHJ1ZSA6IG51bGw7XG5cdFx0aWYgKHRoaXMuaW5wdXQpIHtcblx0XHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5fc2VsZWN0ZWQ7XG5cdFx0fVxuXHR9XG5cblx0Z2V0IHNlbGVjdGVkKCkge1xuXHRcdHJldHVybiB0aGlzLmlucHV0ID8gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgOiBmYWxzZTtcblx0fVxuXHQvKipcblx0ICogVGhlIHZhbHVlIGZvciB0aGUgdGlsZS4gUmV0dXJuZWQgdmlhIGBuZ01vZGVsYCBvciBgc2VsZWN0ZWRgIGV2ZW50IG9uIHRoZSBjb250YWluaW5nIGBUaWxlR3JvdXBgLlxuXHQgKi9cblx0QElucHV0KCkgdmFsdWU6IHN0cmluZztcblx0LyoqXG5cdCAqIEludGVybmFsIGV2ZW50IHVzZWQgdG8gbm90aWZ5IHRoZSBjb250YWluaW5nIGBUaWxlR3JvdXBgIG9mIGNoYW5nZXMuXG5cdCAqL1xuXHRAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdGhlIHNlbGVjdGlvbiB0aWxlLlxuXHQgKi9cblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogU2V0IGJ5IHRoZSBjb250YWluaW5nIGBUaWxlR3JvdXBgLiBVc2VkIGZvciB0aGUgYG5hbWVgIHByb3BlcnR5IG9uIHRoZSBpbnB1dC5cblx0ICovXG5cdG5hbWUgPSBcInRpbGUtZ3JvdXAtdW5ib3VuZFwiO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYFNlbGVjdGlvblRpbGVgIHN1cHBvcnRzIHNlbGVjdGluZyBtdWx0aXBsZSB0aWxlcyBhcyBvcHBvc2VkIHRvIHNpbmdsZVxuXHQgKiB0aWxlIHNlbGVjdGlvbi5cblx0ICovXG5cdG11bHRpcGxlID0gdHJ1ZTtcdC8vIFNldCB0byB0cnVlIGJlY2F1c2Ugb2YgdGhlIHdheSB0aWxlIGdyb3VwIHNldHMgaXQgdXAuXG5cdFx0XHRcdFx0XHQvLyBJZiBpdCBpcyBmaXJzdCB1bmRlZmluZWQgdGhlbiBzZXQgdG8gdHJ1ZSwgdGhlIHR5cGUgd2lsbCBjaGFuZ2UgZnJvbSByYWRpbyB0byBjaGVja2JveCBhbmQgZGVzZWxlY3RzIHRoZSBpbnB1dHMuXG5cblx0QFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0O1xuXG5cdC8vIElmIGFuIGluaXRpYWwgc2VsZWN0ZWQgdmFsdWUgaXMgc2V0IGJlZm9yZSBpbnB1dCBleGlzdHMsIHdlIHNhdmVcblx0Ly8gdGhlIHZhbHVlIGFuZCBjaGVjayBhZ2FpbiB3aGVuIGlucHV0IGV4aXN0cyBpbiBgQWZ0ZXJWaWV3SW5pdGAuXG5cdHByb3RlY3RlZCBfc2VsZWN0ZWQgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBJMThuKSB7XG5cdFx0U2VsZWN0aW9uVGlsZS50aWxlQ291bnQrKztcblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHRpZiAodGhpcy5pbnB1dCkge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5fc2VsZWN0ZWQ7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG5cdGtleWJvYXJkSW5wdXQoZXZlbnQpIHtcblx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIlNwYWNlYmFyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuXHRcdFx0dGhpcy5zZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkO1xuXHRcdFx0dGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG5cdFx0fVxuXHR9XG5cblx0b25DaGFuZ2UoZXZlbnQpIHtcblx0XHR0aGlzLmNoYW5nZS5lbWl0KGV2ZW50KTtcblx0fVxufVxuXG5cbiJdfQ==