UNPKG

carbon-components-angular

Version:
173 lines 16.2 kB
import { Component, EventEmitter, Input, Output } 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/button"; /** * The table toolbar is reserved for global table actions such as table settings, complex filter, export, or editing table data. * * ## Basic usage * * ```html * <cds-table-toolbar [model]="model"> * <cds-table-toolbar-actions> * <button cdsButton="primary"> * Delete * <svg cdsIcon="trash-can" size="16" class="cds--btn__icon"></svg> * </button> * <button cdsButton="primary"> * Save * <svg cdsIcon="save" size="16" class="cds--btn__icon"></svg> * </button> * <button cdsButton="primary"> * Download * <svg cdsIcon="download" size="16" class="cds--btn__icon"></svg> * </button> * </cds-table-toolbar-actions> * <cds-table-toolbar-content> * <cds-table-toolbar-search [expandable]="true"></cds-table-toolbar-search> * <button cdsButton="toolbar-action"> * <svg cdsIcon="settings" size="16" class="cds--toolbar-action__icon"></svg> * </button> * <button cdsButton="primary" size="sm"> * Primary Button * <svg cdsIcon="add" size="20" class="cds--btn__icon"></svg> * </button> * </cds-table-toolbar-content> * </cds-table-toolbar> * ``` * */ export class TableToolbar { constructor(i18n) { this.i18n = i18n; this.size = "md"; this.cancel = new EventEmitter(); this.actionBarLabel = this.i18n.getOverridable("TABLE_TOOLBAR.ACTION_BAR"); this._cancelText = this.i18n.getOverridable("TABLE_TOOLBAR.CANCEL"); this._batchTextLegacy = this.i18n.getOverridable("TABLE_TOOLBAR.BATCH_TEXT"); this._batchTextSingle = this.i18n.getOverridable("TABLE_TOOLBAR.BATCH_TEXT_SINGLE"); this._batchTextMultiple = this.i18n.getOverridable("TABLE_TOOLBAR.BATCH_TEXT_MULTIPLE"); } set batchText(value) { if (typeof value === "object") { this._batchTextSingle.override(value.SINGLE); this._batchTextMultiple.override(value.MULTIPLE); } else { // For compatibility with old code this._batchTextLegacy.override(value); } } set ariaLabel(value) { this.actionBarLabel.override(value.ACTION_BAR); } set cancelText(value) { this._cancelText.override(value.CANCEL); } get cancelText() { return { CANCEL: this._cancelText.value }; } get count() { return this.model.totalDataLength > 0 ? this.model.rowsSelected.reduce((previous, current) => previous + (current ? 1 : 0), 0) : 0; } get selected() { return this.model.totalDataLength > 0 ? this.model.rowsSelected.some(item => item) : false; } onCancel() { this.model.selectAll(false); this.cancel.emit(); } } TableToolbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableToolbar, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); TableToolbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableToolbar, selector: "cds-table-toolbar, ibm-table-toolbar", inputs: { model: "model", batchText: "batchText", ariaLabel: "ariaLabel", cancelText: "cancelText", size: "size" }, outputs: { cancel: "cancel" }, ngImport: i0, template: ` <section class="cds--table-toolbar" [ngClass]="{'cds--table-toolbar--sm' : size === 'sm'}" [attr.aria-label]="actionBarLabel.subject | async"> <div *ngIf="model" class="cds--batch-actions" [ngClass]="{ 'cds--batch-actions--active': selected }"> <div class="cds--batch-summary"> <p class="cds--batch-summary__para" *ngIf="count as n"> <ng-container *ngIf="_batchTextLegacy.subject | async as legacyText; else batchTextBlock"> <span>{{n}}</span> {{legacyText}} </ng-container> <ng-template #batchTextBlock> <span *ngIf="n === 1">{{_batchTextSingle.subject | async}}</span> <span *ngIf="n !== 1">{{_batchTextMultiple.subject | i18nReplace: {count: n} | async}}</span> </ng-template> </p> </div> <div class="cds--action-list"> <ng-content select="cds-table-toolbar-actions,ibm-table-toolbar-actions"></ng-content> <button cdsButton="primary" class="cds--batch-summary__cancel" [tabindex]="selected ? 0 : -1" (click)="onCancel()"> {{_cancelText.subject | async}} </button> </div> </div> <ng-content></ng-content> </section> `, 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.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.ReplacePipe, name: "i18nReplace" }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableToolbar, decorators: [{ type: Component, args: [{ selector: "cds-table-toolbar, ibm-table-toolbar", template: ` <section class="cds--table-toolbar" [ngClass]="{'cds--table-toolbar--sm' : size === 'sm'}" [attr.aria-label]="actionBarLabel.subject | async"> <div *ngIf="model" class="cds--batch-actions" [ngClass]="{ 'cds--batch-actions--active': selected }"> <div class="cds--batch-summary"> <p class="cds--batch-summary__para" *ngIf="count as n"> <ng-container *ngIf="_batchTextLegacy.subject | async as legacyText; else batchTextBlock"> <span>{{n}}</span> {{legacyText}} </ng-container> <ng-template #batchTextBlock> <span *ngIf="n === 1">{{_batchTextSingle.subject | async}}</span> <span *ngIf="n !== 1">{{_batchTextMultiple.subject | i18nReplace: {count: n} | async}}</span> </ng-template> </p> </div> <div class="cds--action-list"> <ng-content select="cds-table-toolbar-actions,ibm-table-toolbar-actions"></ng-content> <button cdsButton="primary" class="cds--batch-summary__cancel" [tabindex]="selected ? 0 : -1" (click)="onCancel()"> {{_cancelText.subject | async}} </button> </div> </div> <ng-content></ng-content> </section> ` }] }], ctorParameters: function () { return [{ type: i1.I18n }]; }, propDecorators: { model: [{ type: Input }], batchText: [{ type: Input }], ariaLabel: [{ type: Input }], cancelText: [{ type: Input }], size: [{ type: Input }], cancel: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGFibGUvdG9vbGJhci90YWJsZS10b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDOzs7OztBQUl2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQXdDSCxNQUFNLE9BQU8sWUFBWTtJQWdDeEIsWUFBc0IsSUFBVTtRQUFWLFNBQUksR0FBSixJQUFJLENBQU07UUFkdkIsU0FBSSxHQUFpQixJQUFJLENBQUM7UUFNekIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEMsbUJBQWMsR0FBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNuRixnQkFBVyxHQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzVFLHFCQUFnQixHQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3JGLHFCQUFnQixHQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzVGLHVCQUFrQixHQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBRTdELENBQUM7SUE3QnBDLElBQWEsU0FBUyxDQUFFLEtBQW9EO1FBQzNFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2pEO2FBQU07WUFDTixrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QztJQUNGLENBQUM7SUFDRCxJQUFhLFNBQVMsQ0FBRSxLQUE2QjtRQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQWEsVUFBVSxDQUFDLEtBQXlCO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBR0QsSUFBSSxVQUFVO1FBQ2IsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQWUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFZRCxJQUFJLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUNELElBQUksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVGLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOzt5R0E1Q1csWUFBWTs2RkFBWixZQUFZLCtOQXJDZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQ1Q7MkZBRVcsWUFBWTtrQkF2Q3hCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1DVDtpQkFDRDsyRkFFUyxLQUFLO3NCQUFiLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSztnQkFTTyxTQUFTO3NCQUFyQixLQUFLO2dCQUdPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQU1JLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tIFwiLi4vdGFibGUtbW9kZWwuY2xhc3NcIjtcbmltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T3V0cHV0XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJMThuLCBPdmVycmlkYWJsZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2kxOG5cIjtcbmltcG9ydCB7IFRhYmxlUm93U2l6ZSB9IGZyb20gXCIuLi90YWJsZS50eXBlc1wiO1xuXG4vKipcbiAqIFRoZSB0YWJsZSB0b29sYmFyIGlzIHJlc2VydmVkIGZvciBnbG9iYWwgdGFibGUgYWN0aW9ucyBzdWNoIGFzIHRhYmxlIHNldHRpbmdzLCBjb21wbGV4IGZpbHRlciwgZXhwb3J0LCBvciBlZGl0aW5nIHRhYmxlIGRhdGEuXG4gKlxuICogIyMgQmFzaWMgdXNhZ2VcbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXRhYmxlLXRvb2xiYXIgW21vZGVsXT1cIm1vZGVsXCI+XG4gKlx0XHQ8Y2RzLXRhYmxlLXRvb2xiYXItYWN0aW9ucz5cbiAqXHRcdFx0PGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCI+XG4gKlx0XHRcdFx0RGVsZXRlXG4gKlx0XHRcdFx0PHN2ZyBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICpcdFx0XHQ8L2J1dHRvbj5cbiAqXHRcdFx0PGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCI+XG4gKlx0XHRcdFx0U2F2ZVxuICpcdFx0XHRcdDxzdmcgY2RzSWNvbj1cInNhdmVcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gKlx0XHRcdDwvYnV0dG9uPlxuICpcdFx0XHQ8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIj5cbiAqXHRcdFx0XHREb3dubG9hZFxuICpcdFx0XHRcdDxzdmcgY2RzSWNvbj1cImRvd25sb2FkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICpcdFx0XHQ8L2J1dHRvbj5cbiAqXHRcdDwvY2RzLXRhYmxlLXRvb2xiYXItYWN0aW9ucz5cbiAqXHRcdFx0PGNkcy10YWJsZS10b29sYmFyLWNvbnRlbnQ+XG4gKlx0XHRcdDxjZHMtdGFibGUtdG9vbGJhci1zZWFyY2ggW2V4cGFuZGFibGVdPVwidHJ1ZVwiPjwvY2RzLXRhYmxlLXRvb2xiYXItc2VhcmNoPlxuICpcdFx0XHQ8YnV0dG9uIGNkc0J1dHRvbj1cInRvb2xiYXItYWN0aW9uXCI+XG4gKlx0XHRcdFx0PHN2ZyBjZHNJY29uPVwic2V0dGluZ3NcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tdG9vbGJhci1hY3Rpb25fX2ljb25cIj48L3N2Zz5cbiAqXHRcdFx0PC9idXR0b24+XG4gKlx0XHRcdDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIHNpemU9XCJzbVwiPlxuICpcdFx0XHRcdFByaW1hcnkgQnV0dG9uXG4gKlx0XHRcdFx0PHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjIwXCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICpcdFx0XHQ8L2J1dHRvbj5cbiAqXHRcdDwvY2RzLXRhYmxlLXRvb2xiYXItY29udGVudD5cbiAqXHQ8L2Nkcy10YWJsZS10b29sYmFyPlxuICogYGBgXG4gKlxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLXRhYmxlLXRvb2xiYXIsIGlibS10YWJsZS10b29sYmFyXCIsXG5cdHRlbXBsYXRlOiBgXG5cdDxzZWN0aW9uXG5cdFx0Y2xhc3M9XCJjZHMtLXRhYmxlLXRvb2xiYXJcIlxuXHRcdFtuZ0NsYXNzXT1cInsnY2RzLS10YWJsZS10b29sYmFyLS1zbScgOiBzaXplID09PSAnc20nfVwiXG5cdFx0W2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb25CYXJMYWJlbC5zdWJqZWN0IHwgYXN5bmNcIj5cblx0XHQ8ZGl2XG5cdFx0XHQqbmdJZj1cIm1vZGVsXCJcblx0XHRcdGNsYXNzPVwiY2RzLS1iYXRjaC1hY3Rpb25zXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0J2Nkcy0tYmF0Y2gtYWN0aW9ucy0tYWN0aXZlJzogc2VsZWN0ZWRcblx0XHRcdH1cIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLWJhdGNoLXN1bW1hcnlcIj5cblx0XHRcdFx0PHAgY2xhc3M9XCJjZHMtLWJhdGNoLXN1bW1hcnlfX3BhcmFcIiAqbmdJZj1cImNvdW50IGFzIG5cIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiX2JhdGNoVGV4dExlZ2FjeS5zdWJqZWN0IHwgYXN5bmMgYXMgbGVnYWN5VGV4dDsgZWxzZSBiYXRjaFRleHRCbG9ja1wiPlxuXHRcdFx0XHRcdFx0PHNwYW4+e3tufX08L3NwYW4+IHt7bGVnYWN5VGV4dH19XG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlICNiYXRjaFRleHRCbG9jaz5cblx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibiA9PT0gMVwiPnt7X2JhdGNoVGV4dFNpbmdsZS5zdWJqZWN0IHwgYXN5bmN9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwibiAhPT0gMVwiPnt7X2JhdGNoVGV4dE11bHRpcGxlLnN1YmplY3QgfCBpMThuUmVwbGFjZToge2NvdW50OiBufSB8IGFzeW5jfX08L3NwYW4+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9wPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1hY3Rpb24tbGlzdFwiPlxuXHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJjZHMtdGFibGUtdG9vbGJhci1hY3Rpb25zLGlibS10YWJsZS10b29sYmFyLWFjdGlvbnNcIj48L25nLWNvbnRlbnQ+XG5cdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRjZHNCdXR0b249XCJwcmltYXJ5XCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tYmF0Y2gtc3VtbWFyeV9fY2FuY2VsXCJcblx0XHRcdFx0XHRbdGFiaW5kZXhdPVwic2VsZWN0ZWQgPyAwIDogLTFcIlxuXHRcdFx0XHRcdChjbGljayk9XCJvbkNhbmNlbCgpXCI+XG5cdFx0XHRcdFx0e3tfY2FuY2VsVGV4dC5zdWJqZWN0IHwgYXN5bmN9fVxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0PC9zZWN0aW9uPlxuXHRgXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlVG9vbGJhciB7XG5cdEBJbnB1dCgpIG1vZGVsOiBUYWJsZU1vZGVsO1xuXG5cdEBJbnB1dCgpIHNldCBiYXRjaFRleHQgKHZhbHVlOiBzdHJpbmcgfCB7IFNJTkdMRTogc3RyaW5nLCBNVUxUSVBMRTogc3RyaW5nIH0pIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHR0aGlzLl9iYXRjaFRleHRTaW5nbGUub3ZlcnJpZGUodmFsdWUuU0lOR0xFKTtcblx0XHRcdHRoaXMuX2JhdGNoVGV4dE11bHRpcGxlLm92ZXJyaWRlKHZhbHVlLk1VTFRJUExFKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgY29kZVxuXHRcdFx0dGhpcy5fYmF0Y2hUZXh0TGVnYWN5Lm92ZXJyaWRlKHZhbHVlKTtcblx0XHR9XG5cdH1cblx0QElucHV0KCkgc2V0IGFyaWFMYWJlbCAodmFsdWU6IHsgQUNUSU9OX0JBUjogc3RyaW5nIH0pIHtcblx0XHR0aGlzLmFjdGlvbkJhckxhYmVsLm92ZXJyaWRlKHZhbHVlLkFDVElPTl9CQVIpO1xuXHR9XG5cdEBJbnB1dCgpIHNldCBjYW5jZWxUZXh0KHZhbHVlOiB7IENBTkNFTDogc3RyaW5nIH0pIHtcblx0XHR0aGlzLl9jYW5jZWxUZXh0Lm92ZXJyaWRlKHZhbHVlLkNBTkNFTCk7XG5cdH1cblx0QElucHV0KCkgc2l6ZTogVGFibGVSb3dTaXplID0gXCJtZFwiO1xuXG5cdGdldCBjYW5jZWxUZXh0KCk6IHsgQ0FOQ0VMOiBzdHJpbmcgfSB7XG5cdFx0cmV0dXJuIHsgQ0FOQ0VMOiB0aGlzLl9jYW5jZWxUZXh0LnZhbHVlIGFzIHN0cmluZyB9O1xuXHR9XG5cblx0QE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRhY3Rpb25CYXJMYWJlbDogT3ZlcnJpZGFibGUgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRV9UT09MQkFSLkFDVElPTl9CQVJcIik7XG5cdF9jYW5jZWxUZXh0OiBPdmVycmlkYWJsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFX1RPT0xCQVIuQ0FOQ0VMXCIpO1xuXHRfYmF0Y2hUZXh0TGVnYWN5OiBPdmVycmlkYWJsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFX1RPT0xCQVIuQkFUQ0hfVEVYVFwiKTtcblx0X2JhdGNoVGV4dFNpbmdsZTogT3ZlcnJpZGFibGUgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRV9UT09MQkFSLkJBVENIX1RFWFRfU0lOR0xFXCIpO1xuXHRfYmF0Y2hUZXh0TXVsdGlwbGU6IE92ZXJyaWRhYmxlID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEVfVE9PTEJBUi5CQVRDSF9URVhUX01VTFRJUExFXCIpO1xuXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpMThuOiBJMThuKSB7fVxuXG5cdGdldCBjb3VudCgpIHtcblx0XHRyZXR1cm4gdGhpcy5tb2RlbC50b3RhbERhdGFMZW5ndGggPiAwID8gdGhpcy5tb2RlbC5yb3dzU2VsZWN0ZWQucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gcHJldmlvdXMgKyAoY3VycmVudCA/IDEgOiAwKSwgMCkgOiAwO1xuXHR9XG5cdGdldCBzZWxlY3RlZCgpIHtcblx0XHRyZXR1cm4gdGhpcy5tb2RlbC50b3RhbERhdGFMZW5ndGggPiAwID8gdGhpcy5tb2RlbC5yb3dzU2VsZWN0ZWQuc29tZShpdGVtID0+IGl0ZW0pIDogZmFsc2U7XG5cdH1cblxuXHRvbkNhbmNlbCgpIHtcblx0XHR0aGlzLm1vZGVsLnNlbGVjdEFsbChmYWxzZSk7XG5cdFx0dGhpcy5jYW5jZWwuZW1pdCgpO1xuXHR9XG59XG4iXX0=