UNPKG

carbon-components-angular

Version:
168 lines 14.8 kB
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==