carbon-components-angular
Version:
Next generation components
194 lines • 14.7 kB
JavaScript
import { Component, Input, HostBinding, Output, EventEmitter } from "@angular/core";
import { NG_VALUE_ACCESSOR } from "@angular/forms";
import { RadioChange } from "./radio-change.class";
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
/**
* class: Radio (extends Checkbox)
*
* selector: `n-radio`
*
* source: `src/forms/radio.component.ts`
*
* ```html
* <cds-radio [(ngModel)]="radioState">Radio</cds-radio>
* ```
*
* Also see: [`RadioGroup`](#cds-radio-group)
*/
export class Radio {
constructor() {
this.checked = false;
this.name = "";
this.disabled = false;
this.labelPlacement = "right";
/**
* Sets the HTML required attribute
*/
this.required = false;
/**
* Set to `true` for a loading table.
*/
this.skeleton = false;
/**
* The id for the `Radio`.
*/
this.id = `radio-${Radio.radioCount++}`;
/**
* emits when the state of the radio changes
*/
this.change = new EventEmitter();
this.hostClass = true;
/**
* Reflects whether or not the input is disabled at `RadioGroup` level.
*/
this.disabledFromGroup = false;
this._labelledby = "";
/**
* Handler provided by the `RadioGroup` to bubble events up
*/
this.radioChangeHandler = (event) => { };
}
set ariaLabelledby(value) {
this._labelledby = value;
}
get ariaLabelledby() {
if (this._labelledby) {
return this._labelledby;
}
return `label-${this.id}`;
}
get labelLeft() {
return this.labelPlacement === "left";
}
/**
* Synchronizes with the `RadioGroup` in the event of a changed `Radio`.
* Emits the changes of both the `RadioGroup` and `Radio`.
*/
onChange(event) {
event.stopPropagation();
}
onClick(event) {
this.checked = event.target.checked;
const radioEvent = new RadioChange(this, this.value);
this.change.emit(radioEvent);
this.radioChangeHandler(radioEvent);
}
/**
* Method called by `RadioGroup` with a callback function to bubble `RadioChange` events
* @param fn callback that expects a `RadioChange` as an argument
*/
registerRadioChangeHandler(fn) {
this.radioChangeHandler = fn;
}
setDisabledFromGroup(disabled) {
this.disabledFromGroup = disabled;
}
}
/**
* Used to dynamically create unique ids for the `Radio`.
*/
Radio.radioCount = 0;
Radio.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Radio, deps: [], target: i0.ɵɵFactoryTarget.Component });
Radio.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: Radio, selector: "cds-radio, ibm-radio", inputs: { checked: "checked", name: "name", disabled: "disabled", labelPlacement: "labelPlacement", ariaLabelledby: "ariaLabelledby", ariaLabel: "ariaLabel", required: "required", value: "value", skeleton: "skeleton", id: "id" }, outputs: { change: "change" }, host: { properties: { "class.cds--radio-button-wrapper": "this.hostClass", "class.cds--radio-button-wrapper--label-left": "this.labelLeft" } }, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: Radio,
multi: true
}
], ngImport: i0, template: `
<input
*ngIf="!skeleton"
class="cds--radio-button"
type="radio"
[checked]="checked"
[disabled]="disabled || disabledFromGroup"
[name]="name"
[id]="id"
[required]="required"
[attr.value]="value"
[attr.aria-labelledby]="ariaLabelledby"
(change)="onChange($event)"
(click)="onClick($event)">
<div *ngIf="skeleton" class="cds--radio-button cds--skeleton"></div>
<label
class="cds--radio-button__label"
[attr.aria-label]="ariaLabel"
[ngClass]="{
'cds--skeleton': skeleton
}"
[for]="id"
id="label-{{id}}">
<span class="cds--radio-button__appearance"></span>
<ng-content></ng-content>
</label>
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Radio, decorators: [{
type: Component,
args: [{
selector: "cds-radio, ibm-radio",
template: `
<input
*ngIf="!skeleton"
class="cds--radio-button"
type="radio"
[checked]="checked"
[disabled]="disabled || disabledFromGroup"
[name]="name"
[id]="id"
[required]="required"
[attr.value]="value"
[attr.aria-labelledby]="ariaLabelledby"
(change)="onChange($event)"
(click)="onClick($event)">
<div *ngIf="skeleton" class="cds--radio-button cds--skeleton"></div>
<label
class="cds--radio-button__label"
[attr.aria-label]="ariaLabel"
[ngClass]="{
'cds--skeleton': skeleton
}"
[for]="id"
id="label-{{id}}">
<span class="cds--radio-button__appearance"></span>
<ng-content></ng-content>
</label>
`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: Radio,
multi: true
}
]
}]
}], propDecorators: { checked: [{
type: Input
}], name: [{
type: Input
}], disabled: [{
type: Input
}], labelPlacement: [{
type: Input
}], ariaLabelledby: [{
type: Input
}], ariaLabel: [{
type: Input
}], required: [{
type: Input
}], value: [{
type: Input
}], skeleton: [{
type: Input
}], id: [{
type: Input
}], change: [{
type: Output
}], hostClass: [{
type: HostBinding,
args: ["class.cds--radio-button-wrapper"]
}], labelLeft: [{
type: HostBinding,
args: ["class.cds--radio-button-wrapper--label-left"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JhZGlvL3JhZGlvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVuRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFzQ0gsTUFBTSxPQUFPLEtBQUs7SUFyQ2xCO1FBMkNVLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVWLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsbUJBQWMsR0FBc0IsT0FBTyxDQUFDO1FBa0JyRDs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLMUI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sT0FBRSxHQUFHLFNBQVMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFDNUM7O1dBRUc7UUFDTyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUVILGNBQVMsR0FBRyxJQUFJLENBQUM7UUFNakU7O1dBRUc7UUFDSCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFM0I7O1dBRUc7UUFDSCx1QkFBa0IsR0FBRyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztLQTRCaEQ7SUFqRkEsSUFBYSxjQUFjLENBQUMsS0FBYTtRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDeEI7UUFDRCxPQUFPLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUE4QkQsSUFBZ0UsU0FBUztRQUN4RSxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssTUFBTSxDQUFDO0lBQ3ZDLENBQUM7SUFjRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBWTtRQUNwQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsT0FBTyxDQUFDO1FBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCwwQkFBMEIsQ0FBQyxFQUFnQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFpQjtRQUNyQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO0lBQ25DLENBQUM7O0FBN0ZEOztHQUVHO0FBQ0ksZ0JBQVUsR0FBRyxDQUFDLENBQUM7a0dBSlYsS0FBSztzRkFBTCxLQUFLLG9jQVJOO1FBQ1Y7WUFDQyxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEtBQUssRUFBRSxJQUFJO1NBQ1g7S0FDRCwwQkFqQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMEJUOzJGQVNXLEtBQUs7a0JBckNqQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQlQ7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsT0FBTzs0QkFDbEIsS0FBSyxFQUFFLElBQUk7eUJBQ1g7cUJBQ0Q7aUJBQ0Q7OEJBT1MsT0FBTztzQkFBZixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRU8sY0FBYztzQkFBMUIsS0FBSztnQkFjRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsRUFBRTtzQkFBVixLQUFLO2dCQUlJLE1BQU07c0JBQWYsTUFBTTtnQkFFeUMsU0FBUztzQkFBeEQsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBRWtCLFNBQVM7c0JBQXhFLFdBQVc7dUJBQUMsNkNBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0SG9zdEJpbmRpbmcsXG5cdE91dHB1dCxcblx0RXZlbnRFbWl0dGVyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgUmFkaW9DaGFuZ2UgfSBmcm9tIFwiLi9yYWRpby1jaGFuZ2UuY2xhc3NcIjtcblxuLyoqXG4gKiBjbGFzczogUmFkaW8gKGV4dGVuZHMgQ2hlY2tib3gpXG4gKlxuICogc2VsZWN0b3I6IGBuLXJhZGlvYFxuICpcbiAqIHNvdXJjZTogYHNyYy9mb3Jtcy9yYWRpby5jb21wb25lbnQudHNgXG4gKlxuICogYGBgaHRtbFxuICpcdDxjZHMtcmFkaW8gWyhuZ01vZGVsKV09XCJyYWRpb1N0YXRlXCI+UmFkaW88L2Nkcy1yYWRpbz5cbiAqIGBgYFxuICpcbiAqIEFsc28gc2VlOiBbYFJhZGlvR3JvdXBgXSgjY2RzLXJhZGlvLWdyb3VwKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLXJhZGlvLCBpYm0tcmFkaW9cIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8aW5wdXRcblx0XHRcdCpuZ0lmPVwiIXNrZWxldG9uXCJcblx0XHRcdGNsYXNzPVwiY2RzLS1yYWRpby1idXR0b25cIlxuXHRcdFx0dHlwZT1cInJhZGlvXCJcblx0XHRcdFtjaGVja2VkXT1cImNoZWNrZWRcIlxuXHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGRpc2FibGVkRnJvbUdyb3VwXCJcblx0XHRcdFtuYW1lXT1cIm5hbWVcIlxuXHRcdFx0W2lkXT1cImlkXCJcblx0XHRcdFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG5cdFx0XHRbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlcIlxuXHRcdFx0KGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcblx0XHRcdChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2tlbGV0b25cIiBjbGFzcz1cImNkcy0tcmFkaW8tYnV0dG9uIGNkcy0tc2tlbGV0b25cIj48L2Rpdj5cblx0XHQ8bGFiZWxcblx0XHRcdGNsYXNzPVwiY2RzLS1yYWRpby1idXR0b25fX2xhYmVsXCJcblx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0J2Nkcy0tc2tlbGV0b24nOiBza2VsZXRvblxuXHRcdFx0fVwiXG5cdFx0XHRbZm9yXT1cImlkXCJcblx0XHRcdGlkPVwibGFiZWwte3tpZH19XCI+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tcmFkaW8tYnV0dG9uX19hcHBlYXJhbmNlXCI+PC9zcGFuPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdDwvbGFiZWw+XG5cdGAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IFJhZGlvLFxuXHRcdFx0bXVsdGk6IHRydWVcblx0XHR9XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW8ge1xuXHQvKipcblx0ICogVXNlZCB0byBkeW5hbWljYWxseSBjcmVhdGUgdW5pcXVlIGlkcyBmb3IgdGhlIGBSYWRpb2AuXG5cdCAqL1xuXHRzdGF0aWMgcmFkaW9Db3VudCA9IDA7XG5cblx0QElucHV0KCkgY2hlY2tlZCA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpIG5hbWUgPSBcIlwiO1xuXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cblx0QElucHV0KCkgbGFiZWxQbGFjZW1lbnQ6IFwicmlnaHRcIiB8IFwibGVmdFwiID0gIFwicmlnaHRcIjtcblxuXHRASW5wdXQoKSBzZXQgYXJpYUxhYmVsbGVkYnkodmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMuX2xhYmVsbGVkYnkgPSB2YWx1ZTtcblx0fVxuXG5cdGdldCBhcmlhTGFiZWxsZWRieSgpIHtcblx0XHRpZiAodGhpcy5fbGFiZWxsZWRieSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2xhYmVsbGVkYnk7XG5cdFx0fVxuXHRcdHJldHVybiBgbGFiZWwtJHt0aGlzLmlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVXNlZCB0byBzZXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgb24gdGhlIGlucHV0IGxhYmVsLlxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIEhUTUwgcmVxdWlyZWQgYXR0cmlidXRlXG5cdCAqL1xuXHRASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuXHQvKipcblx0ICogVGhlIHZhbHVlIG9mIHRoZSBgUmFkaW9gLlxuXHQgKi9cblx0QElucHV0KCkgdmFsdWU7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgdGFibGUuXG5cdCAqL1xuXHRASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogVGhlIGlkIGZvciB0aGUgYFJhZGlvYC5cblx0ICovXG5cdEBJbnB1dCgpIGlkID0gYHJhZGlvLSR7UmFkaW8ucmFkaW9Db3VudCsrfWA7XG5cdC8qKlxuXHQgKiBlbWl0cyB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgcmFkaW8gY2hhbmdlc1xuXHQgKi9cblx0QE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmFkaW9DaGFuZ2U+KCk7XG5cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1yYWRpby1idXR0b24td3JhcHBlclwiKSBob3N0Q2xhc3MgPSB0cnVlO1xuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tcmFkaW8tYnV0dG9uLXdyYXBwZXItLWxhYmVsLWxlZnRcIikgZ2V0IGxhYmVsTGVmdCgpIHtcblx0XHRyZXR1cm4gdGhpcy5sYWJlbFBsYWNlbWVudCA9PT0gXCJsZWZ0XCI7XG5cdH1cblxuXHQvKipcblx0ICogUmVmbGVjdHMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGlzIGRpc2FibGVkIGF0IGBSYWRpb0dyb3VwYCBsZXZlbC5cblx0ICovXG5cdGRpc2FibGVkRnJvbUdyb3VwID0gZmFsc2U7XG5cblx0cHJvdGVjdGVkIF9sYWJlbGxlZGJ5ID0gXCJcIjtcblxuXHQvKipcblx0ICogSGFuZGxlciBwcm92aWRlZCBieSB0aGUgYFJhZGlvR3JvdXBgIHRvIGJ1YmJsZSBldmVudHMgdXBcblx0ICovXG5cdHJhZGlvQ2hhbmdlSGFuZGxlciA9IChldmVudDogUmFkaW9DaGFuZ2UpID0+IHt9O1xuXG5cdC8qKlxuXHQgKiBTeW5jaHJvbml6ZXMgd2l0aCB0aGUgYFJhZGlvR3JvdXBgIGluIHRoZSBldmVudCBvZiBhIGNoYW5nZWQgYFJhZGlvYC5cblx0ICogRW1pdHMgdGhlIGNoYW5nZXMgb2YgYm90aCB0aGUgYFJhZGlvR3JvdXBgIGFuZCBgUmFkaW9gLlxuXHQgKi9cblx0b25DaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cblxuXHRvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuXHRcdHRoaXMuY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcblx0XHRjb25zdCByYWRpb0V2ZW50ID0gbmV3IFJhZGlvQ2hhbmdlKHRoaXMsIHRoaXMudmFsdWUpO1xuXHRcdHRoaXMuY2hhbmdlLmVtaXQocmFkaW9FdmVudCk7XG5cdFx0dGhpcy5yYWRpb0NoYW5nZUhhbmRsZXIocmFkaW9FdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCBieSBgUmFkaW9Hcm91cGAgd2l0aCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJ1YmJsZSBgUmFkaW9DaGFuZ2VgIGV2ZW50c1xuXHQgKiBAcGFyYW0gZm4gY2FsbGJhY2sgdGhhdCBleHBlY3RzIGEgYFJhZGlvQ2hhbmdlYCBhcyBhbiBhcmd1bWVudFxuXHQgKi9cblx0cmVnaXN0ZXJSYWRpb0NoYW5nZUhhbmRsZXIoZm46IChldmVudDogUmFkaW9DaGFuZ2UpID0+IHZvaWQpIHtcblx0XHR0aGlzLnJhZGlvQ2hhbmdlSGFuZGxlciA9IGZuO1xuXHR9XG5cblx0c2V0RGlzYWJsZWRGcm9tR3JvdXAoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmRpc2FibGVkRnJvbUdyb3VwID0gZGlzYWJsZWQ7XG5cdH1cbn1cbiJdfQ==