UNPKG

@stratio/egeo

Version:
348 lines 25.3 kB
/** * @fileoverview added by tsickle * Generated from: lib/st-sidebar/st-sidebar-item-list/st-sidebar-item-list.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /* * © 2017 Stratio Big Data Inc., Sucursal en España. * * This software is licensed under the Apache License, Version 2.0. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the terms of the License for more details. * * SPDX-License-Identifier: Apache-2.0. */ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { StSidebarVisualMode } from '../st-sidebar-visual-mode'; /** * \@description {Component} [SidebarItemList] * * The sidebar item list component has been designed to display a list of items in a sidebar. * * \@model * * [Sidebar items] {../st-sidebar-item.interface.ts#StSidebarItem} * * \@example * * {html} * * ``` * <st-sidebar-item-list [items]="items" (change)="onChange($event)" [active]="active" [deep]="deep"> * </st-sidebar-item-list> * ``` * */ var StSidebarItemListComponent = /** @class */ (function () { function StSidebarItemListComponent() { /** * \@Input {boolean} [defaultActive=true] Unset first item as active by default if false */ this.defaultActive = true; /** * \@Input {number} [deep=0] Deep of the item list in the sidebar */ this.deep = 0; /** * \@Input {StSidebarVisualMode} [visualMode='StSidebarVisualMode.normal'] Visual mode used to display the item list */ this.visualMode = StSidebarVisualMode.normal; /** * \@Output {StSidebarItem} [change=''] Event emitted when the active item is changed. This emit the active item */ this.change = new EventEmitter(); this.displayAsComplexModeValue = false; this.expanded = []; this._items = []; } Object.defineProperty(StSidebarItemListComponent.prototype, "items", { /** @Input {StSidebarItem[]} [items=''] List of items displayed on the menu */ get: /** * \@Input {StSidebarItem[]} [items=''] List of items displayed on the menu * @return {?} */ function () { return this._items; }, set: /** * @param {?} items * @return {?} */ function (items) { this._items = items; this._updateStatus(); }, enumerable: true, configurable: true }); Object.defineProperty(StSidebarItemListComponent.prototype, "active", { /** @Input {string} [active=''] The id of the current active item */ get: /** * \@Input {string} [active=''] The id of the current active item * @return {?} */ function () { return this._active; }, set: /** * @param {?} active * @return {?} */ function (active) { if (!this._isActive(active)) { this._active = active; this._updateStatus(); } }, enumerable: true, configurable: true }); /** * @return {?} */ StSidebarItemListComponent.prototype.ngOnInit = /** * @return {?} */ function () { if (this.defaultActive && !this._active && this._items && this._items.length) { this._active = this._items[0]; } this.displayAsComplexModeValue = this.displayAsComplexMode(); }; /** * @param {?} item * @param {?} index * @return {?} */ StSidebarItemListComponent.prototype.getItemClasses = /** * @param {?} item * @param {?} index * @return {?} */ function (item, index) { /** @type {?} */ var classes = {}; /** @type {?} */ var active = this._isActive(item); /** @type {?} */ var activeChild = this.hasActiveChild(item); classes[item.class] = item.class; classes['item--complex'] = item.items && item.items.length; classes['item--active'] = active; classes['item--expanded'] = this.expanded[index]; classes['item--has-active'] = activeChild; classes['item--disabled'] = item.disabled; return classes; }; /** * @param {?} item * @param {?} position * @return {?} */ StSidebarItemListComponent.prototype.onSelectItem = /** * @param {?} item * @param {?} position * @return {?} */ function (item, position) { if (!item.disabled) { if (item.items && item.items.length) { this.expanded[position] = !this.expanded[position]; } else { if (!this._active || this._active.id !== item.id) { this.change.emit(item); this._closeRestOfItems(item.id); } } } }; /** * @param {?} item * @return {?} */ StSidebarItemListComponent.prototype.hasActiveChild = /** * @param {?} item * @return {?} */ function (item) { /** @type {?} */ var found = false; /** @type {?} */ var i = 0; if (item.items && item.items.length) { while (!found && i < item.items.length) { if (this._isActive(item.items[i])) { found = true; } ++i; } if (!found && item.items && item.items.length) { return this._hasActiveChildInChildren(item.items); } } return found; }; /** * @param {?} item * @return {?} */ StSidebarItemListComponent.prototype.onChange = /** * @param {?} item * @return {?} */ function (item) { if (!this._isActive(item)) { this._closeRestOfItems(item.id); this.change.emit(item); } }; /** * @return {?} */ StSidebarItemListComponent.prototype.displayAsComplexMode = /** * @return {?} */ function () { return this.visualMode === StSidebarVisualMode.complex; }; /** * @private * @param {?} item * @return {?} */ StSidebarItemListComponent.prototype._isActive = /** * @private * @param {?} item * @return {?} */ function (item) { return item && this._active && this._active.id === item.id; }; /** * @private * @return {?} */ StSidebarItemListComponent.prototype._updateStatus = /** * @private * @return {?} */ function () { var _this = this; this.expanded = []; this._items.forEach((/** * @param {?} item * @param {?} i * @return {?} */ function (item, i) { if (_this.hasActiveChild(item)) { _this.expanded[i] = true; } })); }; /** * @private * @param {?} items * @return {?} */ StSidebarItemListComponent.prototype._hasActiveChildInChildren = /** * @private * @param {?} items * @return {?} */ function (items) { /** @type {?} */ var found = false; /** @type {?} */ var i = 0; while (!found && i < items.length) { if (this.hasActiveChild(items[i])) { found = true; } ++i; } return found; }; /** * @private * @param {?} itemId * @return {?} */ StSidebarItemListComponent.prototype._closeRestOfItems = /** * @private * @param {?} itemId * @return {?} */ function (itemId) { var _this = this; this.expanded.forEach((/** * @param {?} open * @param {?} i * @return {?} */ function (open, i) { if (open && _this._items[i].id !== itemId) { _this.expanded[i] = false; } })); }; StSidebarItemListComponent.decorators = [ { type: Component, args: [{ selector: 'st-sidebar-item-list', template: "<!--\n\n \u00A9 2017 Stratio Big Data Inc., Sucursal en Espa\u00F1a.\n\n This software is licensed under the Apache License, Version 2.0.\n This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;\n without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n See the terms of the License for more details.\n\n SPDX-License-Identifier: Apache-2.0.\n\n-->\n\n<ul class=\"item-list\" [ngClass]=\"{'item-list--inner': deep > 0, 'complex-mode': displayAsComplexModeValue}\">\n <li [id]=\"item.id\" class=\"item\" [ngClass]=\"getItemClasses(item, index)\" *ngFor=\"let item of items; let index = index\">\n <span class=\"item__label\" [ngClass]=\"{'item__label--with-results': item.result}\" (click)=\"onSelectItem(item, index)\">{{item.label}}</span>\n <span *ngIf=\"item.result\" class=\"result__box\"><span class=\"result__text\">{{item.result}}</span></span>\n <st-sidebar-item-list *ngIf=\"item.items && item.items.length && expanded[index]\"\n [items]=\"item.items\"\n [active]=\"active\"\n [visualMode]=\"visualMode\"\n [defaultActive]=\"defaultActive\"\n [deep]=\"deep + 1\"\n (change)=\"onChange($event)\">\n </st-sidebar-item-list>\n </li>\n</ul>\n", providers: [], host: { class: 'st-sidebar-item-list' }, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block}.item-list{list-style:none}.item{cursor:pointer}"] }] } ]; StSidebarItemListComponent.propDecorators = { defaultActive: [{ type: Input }], deep: [{ type: Input }], visualMode: [{ type: Input }], change: [{ type: Output }], items: [{ type: Input }], active: [{ type: Input }] }; return StSidebarItemListComponent; }()); export { StSidebarItemListComponent }; if (false) { /** * \@Input {boolean} [defaultActive=true] Unset first item as active by default if false * @type {?} */ StSidebarItemListComponent.prototype.defaultActive; /** * \@Input {number} [deep=0] Deep of the item list in the sidebar * @type {?} */ StSidebarItemListComponent.prototype.deep; /** * \@Input {StSidebarVisualMode} [visualMode='StSidebarVisualMode.normal'] Visual mode used to display the item list * @type {?} */ StSidebarItemListComponent.prototype.visualMode; /** * \@Output {StSidebarItem} [change=''] Event emitted when the active item is changed. This emit the active item * @type {?} */ StSidebarItemListComponent.prototype.change; /** @type {?} */ StSidebarItemListComponent.prototype.displayAsComplexModeValue; /** @type {?} */ StSidebarItemListComponent.prototype.expanded; /** * @type {?} * @private */ StSidebarItemListComponent.prototype._items; /** * @type {?} * @private */ StSidebarItemListComponent.prototype._active; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Qtc2lkZWJhci1pdGVtLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN0cmF0aW8vZWdlby8iLCJzb3VyY2VzIjpbImxpYi9zdC1zaWRlYmFyL3N0LXNpZGViYXItaXRlbS1saXN0L3N0LXNpZGViYXItaXRlbS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFVQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCaEU7SUFBQTs7OztRQVdZLGtCQUFhLEdBQVksSUFBSSxDQUFDOzs7O1FBRTlCLFNBQUksR0FBVyxDQUFDLENBQUM7Ozs7UUFFakIsZUFBVSxHQUF3QixtQkFBbUIsQ0FBQyxNQUFNLENBQUM7Ozs7UUFFNUQsV0FBTSxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUUzRSw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFDM0MsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUV4QixXQUFNLEdBQW9CLEVBQUUsQ0FBQztJQXlIeEMsQ0FBQztJQXJIRSxzQkFBYSw2Q0FBSztRQURsQiw4RUFBOEU7Ozs7O1FBQzlFO1lBQ0csT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RCLENBQUM7Ozs7O1FBRUQsVUFBVSxLQUFzQjtZQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsQ0FBQzs7O09BTEE7SUFRRCxzQkFBYSw4Q0FBTTtRQURuQixvRUFBb0U7Ozs7O1FBQ3BFO1lBQ0csT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLENBQUM7Ozs7O1FBRUQsVUFBVyxNQUFxQjtZQUM3QixJ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aW8gQmlnIERhdGEgSW5jLiwgU3VjdXJzYWwgZW4gRXNwYcOxYS5cbiAqXG4gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZO1xuICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS5cbiAqIFNlZSB0aGUgdGVybXMgb2YgdGhlIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMC5cbiAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3RTaWRlYmFySXRlbSB9IGZyb20gJy4uL3N0LXNpZGViYXItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3RTaWRlYmFyVmlzdWFsTW9kZSB9IGZyb20gJy4uL3N0LXNpZGViYXItdmlzdWFsLW1vZGUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiB7Q29tcG9uZW50fSBbU2lkZWJhckl0ZW1MaXN0XVxuICpcbiAqIFRoZSBzaWRlYmFyIGl0ZW0gbGlzdCBjb21wb25lbnQgaGFzIGJlZW4gZGVzaWduZWQgdG8gZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMgaW4gYSBzaWRlYmFyLlxuICpcbiAqICBAbW9kZWxcbiAqXG4gKiAgIFtTaWRlYmFyIGl0ZW1zXSB7Li4vc3Qtc2lkZWJhci1pdGVtLmludGVyZmFjZS50cyNTdFNpZGViYXJJdGVtfVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICoge2h0bWx9XG4gKlxuICogYGBgXG4gKiA8c3Qtc2lkZWJhci1pdGVtLWxpc3QgW2l0ZW1zXT1cIml0ZW1zXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW2FjdGl2ZV09XCJhY3RpdmVcIiBbZGVlcF09XCJkZWVwXCI+XG4gKiA8L3N0LXNpZGViYXItaXRlbS1saXN0PlxuICogYGBgXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAnc3Qtc2lkZWJhci1pdGVtLWxpc3QnLFxuICAgdGVtcGxhdGVVcmw6ICcuL3N0LXNpZGViYXItaXRlbS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL3N0LXNpZGViYXItaXRlbS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICBwcm92aWRlcnM6IFtdLFxuICAgaG9zdDogeyBjbGFzczogJ3N0LXNpZGViYXItaXRlbS1saXN0JyB9LFxuICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU3RTaWRlYmFySXRlbUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAvKiogQElucHV0IHtib29sZWFufSBbZGVmYXVsdEFjdGl2ZT10cnVlXSBVbnNldCBmaXJzdCBpdGVtIGFzIGFjdGl2ZSBieSBkZWZhdWx0IGlmIGZhbHNlICovXG4gICBASW5wdXQoKSBkZWZhdWx0QWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcbiAgIC8qKiBASW5wdXQge251bWJlcn0gW2RlZXA9MF0gRGVlcCBvZiB0aGUgaXRlbSBsaXN0IGluIHRoZSBzaWRlYmFyICovXG4gICBASW5wdXQoKSBkZWVwOiBudW1iZXIgPSAwO1xuICAgLyoqIEBJbnB1dCB7U3RTaWRlYmFyVmlzdWFsTW9kZX0gW3Zpc3VhbE1vZGU9J1N0U2lkZWJhclZpc3VhbE1vZGUubm9ybWFsJ10gVmlzdWFsIG1vZGUgdXNlZCB0byBkaXNwbGF5IHRoZSBpdGVtIGxpc3QgKi9cbiAgIEBJbnB1dCgpIHZpc3VhbE1vZGU6IFN0U2lkZWJhclZpc3VhbE1vZGUgPSBTdFNpZGViYXJWaXN1YWxNb2RlLm5vcm1hbDtcbiAgIC8qKiBAT3V0cHV0IHtTdFNpZGViYXJJdGVtfSBbY2hhbmdlPScnXSBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSBpdGVtIGlzIGNoYW5nZWQuIFRoaXMgZW1pdCB0aGUgYWN0aXZlIGl0ZW0gKi9cbiAgIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxTdFNpZGViYXJJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8U3RTaWRlYmFySXRlbT4oKTtcblxuICAgcHVibGljIGRpc3BsYXlBc0NvbXBsZXhNb2RlVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbltdID0gW107XG5cbiAgIHByaXZhdGUgX2l0ZW1zOiBTdFNpZGViYXJJdGVtW10gPSBbXTtcbiAgIHByaXZhdGUgX2FjdGl2ZTogU3RTaWRlYmFySXRlbTtcblxuICAgLyoqIEBJbnB1dCB7U3RTaWRlYmFySXRlbVtdfSBbaXRlbXM9JyddIExpc3Qgb2YgaXRlbXMgZGlzcGxheWVkIG9uIHRoZSBtZW51ICovXG4gICBASW5wdXQoKSBnZXQgaXRlbXMoKTogU3RTaWRlYmFySXRlbVtdIHtcbiAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgIH1cblxuICAgc2V0IGl0ZW1zKGl0ZW1zOiBTdFNpZGViYXJJdGVtW10pIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTtcbiAgIH1cblxuICAgLyoqIEBJbnB1dCB7c3RyaW5nfSBbYWN0aXZlPScnXSBUaGUgaWQgb2YgdGhlIGN1cnJlbnQgYWN0aXZlIGl0ZW0gKi9cbiAgIEBJbnB1dCgpIGdldCBhY3RpdmUoKTogU3RTaWRlYmFySXRlbSB7XG4gICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgfVxuXG4gICBzZXQgYWN0aXZlKGFjdGl2ZTogU3RTaWRlYmFySXRlbSkge1xuICAgICAgaWYgKCF0aGlzLl9pc0FjdGl2ZShhY3RpdmUpKSB7XG4gICAgICAgICB0aGlzLl9hY3RpdmUgPSBhY3RpdmU7XG4gICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTtcbiAgICAgIH1cbiAgIH1cblxuICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aXZlICYmICF0aGlzLl9hY3RpdmUgJiYgdGhpcy5faXRlbXMgJiYgdGhpcy5faXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICB0aGlzLl9hY3RpdmUgPSB0aGlzLl9pdGVtc1swXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheUFzQ29tcGxleE1vZGVWYWx1ZSA9IHRoaXMuZGlzcGxheUFzQ29tcGxleE1vZGUoKTtcbiAgIH1cblxuXG4gICBnZXRJdGVtQ2xhc3NlcyhpdGVtOiBTdFNpZGViYXJJdGVtLCBpbmRleDogbnVtYmVyKTogYW55IHtcbiAgICAgIGxldCBjbGFzc2VzOiBhbnkgPSB7fTtcbiAgICAgIGNvbnN0IGFjdGl2ZTogYm9vbGVhbiA9IHRoaXMuX2lzQWN0aXZlKGl0ZW0pO1xuICAgICAgY29uc3QgYWN0aXZlQ2hpbGQ6IGJvb2xlYW4gPSB0aGlzLmhhc0FjdGl2ZUNoaWxkKGl0ZW0pO1xuICAgICAgY2xhc3Nlc1tpdGVtLmNsYXNzXSA9IGl0ZW0uY2xhc3M7XG4gICAgICBjbGFzc2VzWydpdGVtLS1jb21wbGV4J10gPSBpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoO1xuICAgICAgY2xhc3Nlc1snaXRlbS0tYWN0aXZlJ10gPSBhY3RpdmU7XG4gICAgICBjbGFzc2VzWydpdGVtLS1leHBhbmRlZCddID0gdGhpcy5leHBhbmRlZFtpbmRleF07XG4gICAgICBjbGFzc2VzWydpdGVtLS1oYXMtYWN0aXZlJ10gPSBhY3RpdmVDaGlsZDtcbiAgICAgIGNsYXNzZXNbJ2l0ZW0tLWRpc2FibGVkJ10gPSBpdGVtLmRpc2FibGVkO1xuXG4gICAgICByZXR1cm4gY2xhc3NlcztcbiAgIH1cblxuICAgb25TZWxlY3RJdGVtKGl0ZW06IFN0U2lkZWJhckl0ZW0sIHBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgIGlmICghaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgaWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWRbcG9zaXRpb25dID0gIXRoaXMuZXhwYW5kZWRbcG9zaXRpb25dO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fYWN0aXZlIHx8IHRoaXMuX2FjdGl2ZS5pZCAhPT0gaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChpdGVtKTtcbiAgICAgICAgICAgICAgIHRoaXMuX2Nsb3NlUmVzdE9mSXRlbXMoaXRlbS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9XG5cbiAgIGhhc0FjdGl2ZUNoaWxkKGl0ZW06IFN0U2lkZWJhckl0ZW0pOiBib29sZWFuIHtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgaWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgIHdoaWxlICghZm91bmQgJiYgaSA8IGl0ZW0uaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNBY3RpdmUoaXRlbS5pdGVtc1tpXSkpIHtcbiAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICsraTtcbiAgICAgICAgIH1cbiAgICAgICAgIGlmICghZm91bmQgJiYgaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0FjdGl2ZUNoaWxkSW5DaGlsZHJlbihpdGVtLml0ZW1zKTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3VuZDtcbiAgIH1cblxuICAgb25DaGFuZ2UoaXRlbTogU3RTaWRlYmFySXRlbSk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLl9pc0FjdGl2ZShpdGVtKSkge1xuICAgICAgICAgdGhpcy5fY2xvc2VSZXN0T2ZJdGVtcyhpdGVtLmlkKTtcbiAgICAgICAgIHRoaXMuY2hhbmdlLmVtaXQoaXRlbSk7XG4gICAgICB9XG4gICB9XG5cbiAgIGRpc3BsYXlBc0NvbXBsZXhNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMudmlzdWFsTW9kZSA9PT0gU3RTaWRlYmFyVmlzdWFsTW9kZS5jb21wbGV4O1xuICAgfVxuXG4gICBwcml2YXRlIF9pc0FjdGl2ZShpdGVtOiBTdFNpZGViYXJJdGVtKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaXRlbSAmJiB0aGlzLl9hY3RpdmUgJiYgdGhpcy5fYWN0aXZlLmlkID09PSBpdGVtLmlkO1xuICAgfVxuXG4gICBwcml2YXRlIF91cGRhdGVTdGF0dXMoKTogdm9pZCB7XG4gICAgICB0aGlzLmV4cGFuZGVkID0gW107XG4gICAgICB0aGlzLl9pdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICBpZiAodGhpcy5oYXNBY3RpdmVDaGlsZChpdGVtKSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRlZFtpXSA9IHRydWU7XG4gICAgICAgICB9XG4gICAgICB9KTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfaGFzQWN0aXZlQ2hpbGRJbkNoaWxkcmVuKGl0ZW1zOiBTdFNpZGViYXJJdGVtW10pOiBib29sZWFuIHtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgbGV0IGkgPSAwO1xuICAgICAgd2hpbGUgKCFmb3VuZCAmJiBpIDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICBpZiAodGhpcy5oYXNBY3RpdmVDaGlsZChpdGVtc1tpXSkpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgIH1cbiAgICAgICAgICsraTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgfVxuXG4gICBwcml2YXRlIF9jbG9zZVJlc3RPZkl0ZW1zKGl0ZW1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICB0aGlzLmV4cGFuZGVkLmZvckVhY2goKG9wZW4sIGkpID0+IHtcbiAgICAgICAgIGlmIChvcGVuICYmIHRoaXMuX2l0ZW1zW2ldLmlkICE9PSBpdGVtSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWRbaV0gPSBmYWxzZTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgfVxufVxuIl19