ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
159 lines • 17.9 kB
JavaScript
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { __decorate, __metadata } from "tslib";
import { Platform } from '@angular/cdk/platform';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
import { NzBreakpointService, siderResponsiveMap } from 'ng-zorro-antd/core/services';
import { inNextTick, InputBoolean, toCssPixel } from 'ng-zorro-antd/core/util';
import { NzMenuDirective } from 'ng-zorro-antd/menu';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
export class NzSiderComponent {
constructor(platform, cdr, breakpointService, elementRef) {
this.platform = platform;
this.cdr = cdr;
this.breakpointService = breakpointService;
this.elementRef = elementRef;
this.destroy$ = new Subject();
this.nzMenuDirective = null;
this.nzCollapsedChange = new EventEmitter();
this.nzWidth = 200;
this.nzTheme = 'dark';
this.nzCollapsedWidth = 80;
this.nzBreakpoint = null;
this.nzZeroTrigger = null;
this.nzTrigger = undefined;
this.nzReverseArrow = false;
this.nzCollapsible = false;
this.nzCollapsed = false;
this.matchBreakPoint = false;
this.flexSetting = null;
this.widthSetting = null;
// TODO: move to host after View Engine deprecation
this.elementRef.nativeElement.classList.add('ant-layout-sider');
}
updateStyleMap() {
this.widthSetting = this.nzCollapsed ? `${this.nzCollapsedWidth}px` : toCssPixel(this.nzWidth);
this.flexSetting = `0 0 ${this.widthSetting}`;
this.cdr.markForCheck();
}
updateMenuInlineCollapsed() {
if (this.nzMenuDirective && this.nzMenuDirective.nzMode === 'inline' && this.nzCollapsedWidth !== 0) {
this.nzMenuDirective.setInlineCollapsed(this.nzCollapsed);
}
}
setCollapsed(collapsed) {
if (collapsed !== this.nzCollapsed) {
this.nzCollapsed = collapsed;
this.nzCollapsedChange.emit(collapsed);
this.updateMenuInlineCollapsed();
this.updateStyleMap();
this.cdr.markForCheck();
}
}
ngOnInit() {
this.updateStyleMap();
if (this.platform.isBrowser) {
this.breakpointService
.subscribe(siderResponsiveMap, true)
.pipe(takeUntil(this.destroy$))
.subscribe(map => {
const breakpoint = this.nzBreakpoint;
if (breakpoint) {
inNextTick().subscribe(() => {
this.matchBreakPoint = !map[breakpoint];
this.setCollapsed(this.matchBreakPoint);
this.cdr.markForCheck();
});
}
});
}
}
ngOnChanges(changes) {
const { nzCollapsed, nzCollapsedWidth, nzWidth } = changes;
if (nzCollapsed || nzCollapsedWidth || nzWidth) {
this.updateStyleMap();
}
if (nzCollapsed) {
this.updateMenuInlineCollapsed();
}
}
ngAfterContentInit() {
this.updateMenuInlineCollapsed();
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
}
NzSiderComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-sider',
exportAs: 'nzSider',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<div class="ant-layout-sider-children">
<ng-content></ng-content>
</div>
<div
*ngIf="nzCollapsible && nzTrigger !== null"
nz-sider-trigger
[matchBreakPoint]="matchBreakPoint"
[nzCollapsedWidth]="nzCollapsedWidth"
[nzCollapsed]="nzCollapsed"
[nzBreakpoint]="nzBreakpoint"
[nzReverseArrow]="nzReverseArrow"
[nzTrigger]="nzTrigger"
[nzZeroTrigger]="nzZeroTrigger"
[siderWidth]="widthSetting"
(click)="setCollapsed(!nzCollapsed)"
></div>
`,
host: {
'[class.ant-layout-sider-zero-width]': `nzCollapsed && nzCollapsedWidth === 0`,
'[class.ant-layout-sider-light]': `nzTheme === 'light'`,
'[class.ant-layout-sider-dark]': `nzTheme === 'dark'`,
'[class.ant-layout-sider-collapsed]': `nzCollapsed`,
'[style.flex]': 'flexSetting',
'[style.maxWidth]': 'widthSetting',
'[style.minWidth]': 'widthSetting',
'[style.width]': 'widthSetting'
}
},] }
];
NzSiderComponent.ctorParameters = () => [
{ type: Platform },
{ type: ChangeDetectorRef },
{ type: NzBreakpointService },
{ type: ElementRef }
];
NzSiderComponent.propDecorators = {
nzMenuDirective: [{ type: ContentChild, args: [NzMenuDirective,] }],
nzCollapsedChange: [{ type: Output }],
nzWidth: [{ type: Input }],
nzTheme: [{ type: Input }],
nzCollapsedWidth: [{ type: Input }],
nzBreakpoint: [{ type: Input }],
nzZeroTrigger: [{ type: Input }],
nzTrigger: [{ type: Input }],
nzReverseArrow: [{ type: Input }],
nzCollapsible: [{ type: Input }],
nzCollapsed: [{ type: Input }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzSiderComponent.prototype, "nzReverseArrow", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzSiderComponent.prototype, "nzCollapsible", void 0);
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzSiderComponent.prototype, "nzCollapsed", void 0);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3ZzdHMvd29yay8xL3MvY29tcG9uZW50cy9sYXlvdXQvIiwic291cmNlcyI6WyJzaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHOztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXZHLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXFDM0MsTUFBTSxPQUFPLGdCQUFnQjtJQTJDM0IsWUFDVSxRQUFrQixFQUNsQixHQUFzQixFQUN0QixpQkFBc0MsRUFDdEMsVUFBc0I7UUFIdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3RDLGVBQVUsR0FBVixVQUFVLENBQVk7UUExQ3hCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ0Ysb0JBQWUsR0FBMkIsSUFBSSxDQUFDO1FBQzNELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsWUFBTyxHQUFvQixHQUFHLENB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RTs7dURBQXVCO0FBQ3RCO0lBQWYsWUFBWSxFQUFFOztxREFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE56QnJlYWtwb2ludEtleSwgTnpCcmVha3BvaW50U2VydmljZSwgc2lkZXJSZXNwb25zaXZlTWFwIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3NlcnZpY2VzJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBpbk5leHRUaWNrLCBJbnB1dEJvb2xlYW4sIHRvQ3NzUGl4ZWwgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5pbXBvcnQgeyBOek1lbnVEaXJlY3RpdmUgfSBmcm9tICduZy16b3Jyby1hbnRkL21lbnUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduei1zaWRlcicsXG4gIGV4cG9ydEFzOiAnbnpTaWRlcicsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYW50LWxheW91dC1zaWRlci1jaGlsZHJlblwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwibnpDb2xsYXBzaWJsZSAmJiBuelRyaWdnZXIgIT09IG51bGxcIlxuICAgICAgbnotc2lkZXItdHJpZ2dlclxuICAgICAgW21hdGNoQnJlYWtQb2ludF09XCJtYXRjaEJyZWFrUG9pbnRcIlxuICAgICAgW256Q29sbGFwc2VkV2lkdGhdPVwibnpDb2xsYXBzZWRXaWR0aFwiXG4gICAgICBbbnpDb2xsYXBzZWRdPVwibnpDb2xsYXBzZWRcIlxuICAgICAgW256QnJlYWtwb2ludF09XCJuekJyZWFrcG9pbnRcIlxuICAgICAgW256UmV2ZXJzZUFycm93XT1cIm56UmV2ZXJzZUFycm93XCJcbiAgICAgIFtuelRyaWdnZXJdPVwibnpUcmlnZ2VyXCJcbiAgICAgIFtuelplcm9UcmlnZ2VyXT1cIm56WmVyb1RyaWdnZXJcIlxuICAgICAgW3NpZGVyV2lkdGhdPVwid2lkdGhTZXR0aW5nXCJcbiAgICAgIChjbGljayk9XCJzZXRDb2xsYXBzZWQoIW56Q29sbGFwc2VkKVwiXG4gICAgPjwvZGl2PlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5hbnQtbGF5b3V0LXNpZGVyLXplcm8td2lkdGhdJzogYG56Q29sbGFwc2VkICYmIG56Q29sbGFwc2VkV2lkdGggPT09IDBgLFxuICAgICdbY2xhc3MuYW50LWxheW91dC1zaWRlci1saWdodF0nOiBgbnpUaGVtZSA9PT0gJ2xpZ2h0J2AsXG4gICAgJ1tjbGFzcy5hbnQtbGF5b3V0LXNpZGVyLWRhcmtdJzogYG56VGhlbWUgPT09ICdkYXJrJ2AsXG4gICAgJ1tjbGFzcy5hbnQtbGF5b3V0LXNpZGVyLWNvbGxhcHNlZF0nOiBgbnpDb2xsYXBzZWRgLFxuICAgICdbc3R5bGUuZmxleF0nOiAnZmxleFNldHRpbmcnLFxuICAgICdbc3R5bGUubWF4V2lkdGhdJzogJ3dpZHRoU2V0dGluZycsXG4gICAgJ1tzdHlsZS5taW5XaWR0aF0nOiAnd2lkdGhTZXR0aW5nJyxcbiAgICAnW3N0eWxlLndpZHRoXSc6ICd3aWR0aFNldHRpbmcnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpTaWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpSZXZlcnNlQXJyb3c6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256Q29sbGFwc2libGU6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256Q29sbGFwc2VkOiBCb29sZWFuSW5wdXQ7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIEBDb250ZW50Q2hpbGQoTnpNZW51RGlyZWN0aXZlKSBuek1lbnVEaXJlY3RpdmU6IE56TWVudURpcmVjdGl2ZSB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpDb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG56V2lkdGg6IHN0cmluZyB8IG51bWJlciA9IDIwMDtcbiAgQElucHV0KCkgbnpUaGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdkYXJrJztcbiAgQElucHV0KCkgbnpDb2xsYXBzZWRXaWR0aCA9IDgwO1xuICBASW5wdXQoKSBuekJyZWFrcG9pbnQ6IE56QnJlYWtwb2ludEtleSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuelplcm9UcmlnZ2VyOiBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuelRyaWdnZXI6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgdW5kZWZpbmVkIHwgbnVsbCA9IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56UmV2ZXJzZUFycm93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekNvbGxhcHNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekNvbGxhcHNlZCA9IGZhbHNlO1xuICBtYXRjaEJyZWFrUG9pbnQgPSBmYWxzZTtcbiAgZmxleFNldHRpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICB3aWR0aFNldHRpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHVwZGF0ZVN0eWxlTWFwKCk6IHZvaWQge1xuICAgIHRoaXMud2lkdGhTZXR0aW5nID0gdGhpcy5uekNvbGxhcHNlZCA/IGAke3RoaXMubnpDb2xsYXBzZWRXaWR0aH1weGAgOiB0b0Nzc1BpeGVsKHRoaXMubnpXaWR0aCk7XG4gICAgdGhpcy5mbGV4U2V0dGluZyA9IGAwIDAgJHt0aGlzLndpZHRoU2V0dGluZ31gO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgdXBkYXRlTWVudUlubGluZUNvbGxhcHNlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uek1lbnVEaXJlY3RpdmUgJiYgdGhpcy5uek1lbnVEaXJlY3RpdmUubnpNb2RlID09PSAnaW5saW5lJyAmJiB0aGlzLm56Q29sbGFwc2VkV2lkdGggIT09IDApIHtcbiAgICAgIHRoaXMubnpNZW51RGlyZWN0aXZlLnNldElubGluZUNvbGxhcHNlZCh0aGlzLm56Q29sbGFwc2VkKTtcbiAgICB9XG4gIH1cblxuICBzZXRDb2xsYXBzZWQoY29sbGFwc2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGNvbGxhcHNlZCAhPT0gdGhpcy5uekNvbGxhcHNlZCkge1xuICAgICAgdGhpcy5uekNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgICAgIHRoaXMubnpDb2xsYXBzZWRDaGFuZ2UuZW1pdChjb2xsYXBzZWQpO1xuICAgICAgdGhpcy51cGRhdGVNZW51SW5saW5lQ29sbGFwc2VkKCk7XG4gICAgICB0aGlzLnVwZGF0ZVN0eWxlTWFwKCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBicmVha3BvaW50U2VydmljZTogTnpCcmVha3BvaW50U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgLy8gVE9ETzogbW92ZSB0byBob3N0IGFmdGVyIFZpZXcgRW5naW5lIGRlcHJlY2F0aW9uXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYW50LWxheW91dC1zaWRlcicpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdHlsZU1hcCgpO1xuXG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICB0aGlzLmJyZWFrcG9pbnRTZXJ2aWNlXG4gICAgICAgIC5zdWJzY3JpYmUoc2lkZXJSZXNwb25zaXZlTWFwLCB0cnVlKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUobWFwID0+IHtcbiAgICAgICAgICBjb25zdCBicmVha3BvaW50ID0gdGhpcy5uekJyZWFrcG9pbnQ7XG4gICAgICAgICAgaWYgKGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIGluTmV4dFRpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm1hdGNoQnJlYWtQb2ludCA9ICFtYXBbYnJlYWtwb2ludF07XG4gICAgICAgICAgICAgIHRoaXMuc2V0Q29sbGFwc2VkKHRoaXMubWF0Y2hCcmVha1BvaW50KTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IG56Q29sbGFwc2VkLCBuekNvbGxhcHNlZFdpZHRoLCBueldpZHRoIH0gPSBjaGFuZ2VzO1xuICAgIGlmIChuekNvbGxhcHNlZCB8fCBuekNvbGxhcHNlZFdpZHRoIHx8IG56V2lkdGgpIHtcbiAgICAgIHRoaXMudXBkYXRlU3R5bGVNYXAoKTtcbiAgICB9XG4gICAgaWYgKG56Q29sbGFwc2VkKSB7XG4gICAgICB0aGlzLnVwZGF0ZU1lbnVJbmxpbmVDb2xsYXBzZWQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNZW51SW5saW5lQ29sbGFwc2VkKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==