UNPKG

ng-devui

Version:

DevUI components based on Angular

99 lines 15.6 kB
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, HostBinding, Input, QueryList, ViewChildren, } from '@angular/core'; import { SplitterPaneComponent } from './splitter-pane.component'; import { SplitterService } from './splitter.service'; import * as i0 from "@angular/core"; import * as i1 from "./splitter.service"; import * as i2 from "@angular/common"; import * as i3 from "./splitter-bar.component"; import * as i4 from "./resize.directive"; export class SplitterComponent { get class() { return 'devui-splitter devui-splitter-' + this.orientation; } constructor(el, splitter, cdr) { this.el = el; this.splitter = splitter; this.cdr = cdr; // 指定Splitter中窗格的方向,默认水平分割。 this.orientation = 'horizontal'; // 分隔条大小 this.splitBarSize = '2px'; // pane设置为不可调整大小时,生效 this.disabledBarSize = '1px'; // 是否显示展开/收缩按钮 this.showCollapseButton = true; } ngOnChanges(changes) { if (changes.orientation && !changes.orientation.isFirstChange()) { this.reconfigure(); } } ngAfterContentInit() { this.reconfigure(); // contentChildren 变化时,触发重新设置pane this.paneChangesSubscription = this.panes.changes.subscribe((panes) => { this.reconfigure(); this.cdr.detectChanges(); }); } toggleCollapsed(index = 0) { const target = this.splitterBars.toArray()[index]; target.collapsePrePane(); this.cdr.detectChanges(); } ngOnDestroy() { if (this.paneChangesSubscription) { this.paneChangesSubscription.unsubscribe(); } } // 配置pane reconfigure() { this.splitter.configPane({ panes: this.panes.toArray(), orientation: this.orientation, // 内容投影进组件之后,组件还没有渲染出dom,此时获取不到宽度,此处设置一个回调函数 containerSize: () => { if (this.orientation === 'vertical') { return this.el.nativeElement.clientHeight; } else { return this.el.nativeElement.clientWidth; } }, }); // 投影后获取panes才能循环渲染出bar setTimeout(() => { if (this.splitterBars.length) { this.splitter.bars = this.splitterBars.toArray(); } }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SplitterComponent, deps: [{ token: i0.ElementRef }, { token: i1.SplitterService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SplitterComponent, selector: "d-splitter", inputs: { orientation: "orientation", splitBarSize: "splitBarSize", disabledBarSize: "disabledBarSize", showCollapseButton: "showCollapseButton", collapsePosLeft: "collapsePosLeft", collapsePosTop: "collapsePosTop" }, host: { properties: { "class": "this.class" } }, providers: [SplitterService], queries: [{ propertyName: "panes", predicate: SplitterPaneComponent }], viewQueries: [{ propertyName: "splitterBars", predicate: ["bar"], descendants: true }], exportAs: ["dSplitter"], usesOnChanges: true, ngImport: i0, template: "<ng-content select=\"d-splitter-pane\"></ng-content>\n<ng-container *ngFor=\"let pane of panes; let index = index; let last = last\">\n <d-splitter-bar\n #bar\n dResize\n [style.order]=\"index * 2 + 1\"\n *ngIf=\"!last\"\n [index]=\"index\"\n [splitBarSize]=\"splitBarSize\"\n [disabledBarSize]=\"disabledBarSize\"\n [orientation]=\"orientation\"\n [showCollapseButton]=\"showCollapseButton\"\n [collapsePosLeft]=\"collapsePosLeft\"\n [collapsePosTop]=\"collapsePosTop\"\n >\n </d-splitter-bar>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:auto;position:relative;border-radius:var(--devui-border-radius, 2px)}:host.devui-splitter-horizontal{flex-direction:row}:host.devui-splitter-vertical{flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SplitterBarComponent, selector: "d-splitter-bar", inputs: ["index", "orientation", "showCollapseButton", "collapsePosLeft", "collapsePosTop", "splitBarSize", "disabledBarSize"] }, { kind: "directive", type: i4.ResizeDirective, selector: "[dResize]", inputs: ["enableResize"], outputs: ["pressEvent", "dragEvent", "releaseEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SplitterComponent, decorators: [{ type: Component, args: [{ selector: 'd-splitter', exportAs: 'dSplitter', changeDetection: ChangeDetectionStrategy.OnPush, providers: [SplitterService], preserveWhitespaces: false, template: "<ng-content select=\"d-splitter-pane\"></ng-content>\n<ng-container *ngFor=\"let pane of panes; let index = index; let last = last\">\n <d-splitter-bar\n #bar\n dResize\n [style.order]=\"index * 2 + 1\"\n *ngIf=\"!last\"\n [index]=\"index\"\n [splitBarSize]=\"splitBarSize\"\n [disabledBarSize]=\"disabledBarSize\"\n [orientation]=\"orientation\"\n [showCollapseButton]=\"showCollapseButton\"\n [collapsePosLeft]=\"collapsePosLeft\"\n [collapsePosTop]=\"collapsePosTop\"\n >\n </d-splitter-bar>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:auto;position:relative;border-radius:var(--devui-border-radius, 2px)}:host.devui-splitter-horizontal{flex-direction:row}:host.devui-splitter-vertical{flex-direction:column}\n"] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SplitterService }, { type: i0.ChangeDetectorRef }], propDecorators: { orientation: [{ type: Input }], splitBarSize: [{ type: Input }], disabledBarSize: [{ type: Input }], showCollapseButton: [{ type: Input }], collapsePosLeft: [{ type: Input }], collapsePosTop: [{ type: Input }], class: [{ type: HostBinding, args: ['class'] }], panes: [{ type: ContentChildren, args: [SplitterPaneComponent] }], splitterBars: [{ type: ViewChildren, args: ['bar'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2dWkvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2dWkvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEVBRVQsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBV3JELE1BQU0sT0FBTyxpQkFBaUI7SUFZNUIsSUFBMEIsS0FBSztRQUM3QixPQUFPLGdDQUFnQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDN0QsQ0FBQztJQU1ELFlBQW9CLEVBQWMsRUFBVSxRQUF5QixFQUFVLEdBQXNCO1FBQWpGLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkJyRywyQkFBMkI7UUFDbEIsZ0JBQVcsR0FBd0IsWUFBWSxDQUFDO1FBQ3pELFFBQVE7UUFDQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUM5QixvQkFBb0I7UUFDWCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQyxjQUFjO1FBQ0wsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO0lBWXFFLENBQUM7SUFFekcsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7SUFDVCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3Qiw0Q0FBNEM7WUFDNUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztnQkFDNUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNILHVCQUF1QjtRQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBckVVLGlCQUFpQjttR0FBakIsaUJBQWlCLGdUQUhqQixDQUFDLGVBQWUsQ0FBQyxnREFtQlgscUJBQXFCLG1LQzdDeEMsdWlCQWlCQTs7NEZEWWEsaUJBQWlCO2tCQVQ3QixTQUFTOytCQUNFLFlBQVksWUFDWixXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxlQUFlLENBQUMsdUJBQ1AsS0FBSzs2SUFJakIsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFb0IsS0FBSztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQUlvQixLQUFLO3NCQUE1QyxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDakIsWUFBWTtzQkFBaEMsWUFBWTt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNwbGl0dGVyQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zcGxpdHRlci1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3BsaXR0ZXJQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi9zcGxpdHRlci1wYW5lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwbGl0dGVyU2VydmljZSB9IGZyb20gJy4vc3BsaXR0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNwbGl0dGVyT3JpZW50YXRpb24gfSBmcm9tICcuL3NwbGl0dGVyLnR5cGVzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLXNwbGl0dGVyJyxcclxuICBleHBvcnRBczogJ2RTcGxpdHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NwbGl0dGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zcGxpdHRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1NwbGl0dGVyU2VydmljZV0sXHJcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGxpdHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcclxuICAvLyDmjIflrppTcGxpdHRlcuS4reeql+agvOeahOaWueWQke+8jOm7mOiupOawtOW5s+WIhuWJsuOAglxyXG4gIEBJbnB1dCgpIG9yaWVudGF0aW9uOiBTcGxpdHRlck9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xyXG4gIC8vIOWIhumalOadoeWkp+Wwj1xyXG4gIEBJbnB1dCgpIHNwbGl0QmFyU2l6ZSA9ICcycHgnO1xyXG4gIC8vIHBhbmXorr7nva7kuLrkuI3lj6/osIPmlbTlpKflsI/ml7bvvIznlJ/mlYhcclxuICBASW5wdXQoKSBkaXNhYmxlZEJhclNpemUgPSAnMXB4JztcclxuICAvLyDmmK/lkKbmmL7npLrlsZXlvIAv5pS257yp5oyJ6ZKuXHJcbiAgQElucHV0KCkgc2hvd0NvbGxhcHNlQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjb2xsYXBzZVBvc0xlZnQ6IHN0cmluZztcclxuICBASW5wdXQoKSBjb2xsYXBzZVBvc1RvcDogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzKCkge1xyXG4gICAgcmV0dXJuICdkZXZ1aS1zcGxpdHRlciBkZXZ1aS1zcGxpdHRlci0nICsgdGhpcy5vcmllbnRhdGlvbjtcclxuICB9XHJcbiAgLy8g5YaF5bWM6Z2i5p2/XHJcbiAgQENvbnRlbnRDaGlsZHJlbihTcGxpdHRlclBhbmVDb21wb25lbnQpIHBhbmVzOiBRdWVyeUxpc3Q8U3BsaXR0ZXJQYW5lQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKCdiYXInKSBzcGxpdHRlckJhcnM6IFF1ZXJ5TGlzdDxTcGxpdHRlckJhckNvbXBvbmVudD47XHJcbiAgcGFuZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBzcGxpdHRlcjogU3BsaXR0ZXJTZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLm9yaWVudGF0aW9uICYmICFjaGFuZ2VzLm9yaWVudGF0aW9uLmlzRmlyc3RDaGFuZ2UoKSkge1xyXG4gICAgICB0aGlzLnJlY29uZmlndXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLnJlY29uZmlndXJlKCk7XHJcbiAgICAvLyBjb250ZW50Q2hpbGRyZW4g5Y+Y5YyW5pe277yM6Kem5Y+R6YeN5paw6K6+572ucGFuZVxyXG4gICAgdGhpcy5wYW5lQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMucGFuZXMuY2hhbmdlcy5zdWJzY3JpYmUoKHBhbmVzKSA9PiB7XHJcbiAgICAgIHRoaXMucmVjb25maWd1cmUoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlQ29sbGFwc2VkKGluZGV4ID0gMCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5zcGxpdHRlckJhcnMudG9BcnJheSgpW2luZGV4XTtcclxuICAgIHRhcmdldC5jb2xsYXBzZVByZVBhbmUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMucGFuZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5wYW5lQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g6YWN572ucGFuZVxyXG4gIHJlY29uZmlndXJlKCkge1xyXG4gICAgdGhpcy5zcGxpdHRlci5jb25maWdQYW5lKHtcclxuICAgICAgcGFuZXM6IHRoaXMucGFuZXMudG9BcnJheSgpLFxyXG4gICAgICBvcmllbnRhdGlvbjogdGhpcy5vcmllbnRhdGlvbixcclxuICAgICAgLy8g5YaF5a655oqV5b2x6L+b57uE5Lu25LmL5ZCO77yM57uE5Lu26L+Y5rKh5pyJ5riy5p+T5Ye6ZG9t77yM5q2k5pe26I635Y+W5LiN5Yiw5a695bqm77yM5q2k5aSE6K6+572u5LiA5Liq5Zue6LCD5Ye95pWwXHJcbiAgICAgIGNvbnRhaW5lclNpemU6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICAvLyDmipXlvbHlkI7ojrflj5ZwYW5lc+aJjeiDveW+queOr+a4suafk+WHumJhclxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNwbGl0dGVyQmFycy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNwbGl0dGVyLmJhcnMgPSB0aGlzLnNwbGl0dGVyQmFycy50b0FycmF5KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJkLXNwbGl0dGVyLXBhbmVcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYW5lIG9mIHBhbmVzOyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gIDxkLXNwbGl0dGVyLWJhclxuICAgICNiYXJcbiAgICBkUmVzaXplXG4gICAgW3N0eWxlLm9yZGVyXT1cImluZGV4ICogMiArIDFcIlxuICAgICpuZ0lmPVwiIWxhc3RcIlxuICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgW3NwbGl0QmFyU2l6ZV09XCJzcGxpdEJhclNpemVcIlxuICAgIFtkaXNhYmxlZEJhclNpemVdPVwiZGlzYWJsZWRCYXJTaXplXCJcbiAgICBbb3JpZW50YXRpb25dPVwib3JpZW50YXRpb25cIlxuICAgIFtzaG93Q29sbGFwc2VCdXR0b25dPVwic2hvd0NvbGxhcHNlQnV0dG9uXCJcbiAgICBbY29sbGFwc2VQb3NMZWZ0XT1cImNvbGxhcHNlUG9zTGVmdFwiXG4gICAgW2NvbGxhcHNlUG9zVG9wXT1cImNvbGxhcHNlUG9zVG9wXCJcbiAgPlxuICA8L2Qtc3BsaXR0ZXItYmFyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=