UNPKG

lamb-web-lib

Version:

LambWebLib. Es un proyecto angular de tipo Librería. que contiene una Suit de componentes reutilizables para el proyecto [Lamb Financial](https://lamb.upeu.edu.pe).

346 lines 22.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; /** * @license * Copyright Lamb Team. All Rights Reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */ import { Injectable } from '@angular/core'; import { share } from 'rxjs/operators'; import { Location } from '@angular/common'; import { itemHover$, submenuToggle$, itemClick$, itemSelect$, navigateHome$, getSelectedItem$, addItems$, } from './variables'; var LambMenuInternalService = /** @class */ (function () { function LambMenuInternalService(location) { this.location = location; this.items = []; this.items = []; } /** * @return {?} */ LambMenuInternalService.prototype.getItems = /** * @return {?} */ function () { return this.items; }; /** * @param {?} items * @param {?} tag * @param {?=} except * @return {?} */ LambMenuInternalService.prototype.collapseAll = /** * @param {?} items * @param {?} tag * @param {?=} except * @return {?} */ function (items, tag, except) { var _this = this; /** @type {?} */ var excepts = this.getParent(tag, except); items.forEach(function (item) { return _this.collapseItem(item, tag, excepts); }); }; /** * @param {?} tag * @param {?=} item * @return {?} */ LambMenuInternalService.prototype.getParent = /** * @param {?} tag * @param {?=} item * @return {?} */ function (tag, item) { if (!item) { return; } /** @type {?} */ var arr = []; arr.push(item); if (item.parent) { arr.push.apply(arr, tslib_1.__spread(this.getParent(tag, item.parent))); } return arr; }; /** * @param {?} item * @param {?=} tag * @return {?} */ LambMenuInternalService.prototype.itemHover = /** * @param {?} item * @param {?=} tag * @return {?} */ function (item, tag) { itemHover$.next({ tag: tag, item: item }); }; /** * @param {?} item * @param {?=} tag * @return {?} */ LambMenuInternalService.prototype.submenuToggle = /** * @param {?} item * @param {?=} tag * @return {?} */ function (item, tag) { submenuToggle$.next({ tag: tag, item: item }); }; /** * @param {?} item * @param {?} tag * @return {?} */ LambMenuInternalService.prototype.selectItem = /** * @param {?} item * @param {?} tag * @return {?} */ function (item, tag) { item.selected = true; this.itemSelect(item, tag); this.selectParent(item, tag); }; /** * @param {?} __0 * @param {?} tag * @return {?} */ LambMenuInternalService.prototype.selectParent = /** * @param {?} __0 * @param {?} tag * @return {?} */ function (_a, tag) { var item = _a.parent; if (!item) { return; } if (!item.expanded) { item.expanded = true; this.submenuToggle(item, tag); } item.selected = true; this.selectParent(item, tag); }; /** * @param {?} item * @param {?=} tag * @return {?} */ LambMenuInternalService.prototype.itemClick = /** * @param {?} item * @param {?=} tag * @return {?} */ function (item, tag) { itemClick$.next({ tag: tag, item: item }); }; /** * @param {?} item * @param {?=} tag * @return {?} */ LambMenuInternalService.prototype.itemSelect = /** * @param {?} item * @param {?=} tag * @return {?} */ function (item, tag) { itemSelect$.next({ tag: tag, item: item }); }; /** * @return {?} */ LambMenuInternalService.prototype.onAddItem = /** * @return {?} */ function () { return addItems$.pipe(share()); }; /** * @return {?} */ LambMenuInternalService.prototype.onNavigateHome = /** * @return {?} */ function () { return navigateHome$.pipe(share()); }; /** * @return {?} */ LambMenuInternalService.prototype.onGetSelectedItem = /** * @return {?} */ function () { return getSelectedItem$.pipe(share()); }; /** * @param {?} items * @return {?} */ LambMenuInternalService.prototype.resetItems = /** * @param {?} items * @return {?} */ function (items) { var _this = this; items.forEach(function (item) { return _this.resetItem(item); }); }; /** * @param {?} item * @return {?} */ LambMenuInternalService.prototype.resetItem = /** * @param {?} item * @return {?} */ function (item) { var _this = this; item.selected = false; if (item.children) { item.children.forEach(function (child) { _this.resetItem(child); }); } }; /** * @param {?} items * @return {?} */ LambMenuInternalService.prototype.prepareItems = /** * @param {?} items * @return {?} */ function (items) { var _this = this; items.forEach(function (item) { return _this.setParent(item); }); }; /** * @param {?} item * @return {?} */ LambMenuInternalService.prototype.setParent = /** * @param {?} item * @return {?} */ function (item) { var _this = this; if (item.children) { item.children.forEach(function (child) { child.parent = item; _this.setParent(child); }); } }; /** * @param {?} items * @param {?} tag * @param {?=} collapseOther * @return {?} */ LambMenuInternalService.prototype.updateSelection = /** * @param {?} items * @param {?} tag * @param {?=} collapseOther * @return {?} */ function (items, tag, collapseOther) { var _this = this; if (collapseOther === void 0) { collapseOther = false; } if (collapseOther) { this.collapseAll(items, tag); } items.forEach(function (item) { return _this.selectItemByUrl(item, tag); }); }; /** * @param {?} item * @param {?} tag * @return {?} */ LambMenuInternalService.prototype.selectItemByUrl = /** * @param {?} item * @param {?} tag * @return {?} */ function (item, tag) { /** @type {?} */ var wasSelected = item.selected; /** @type {?} */ var isSelected = this.selectedInUrl(item); if (!wasSelected && isSelected) { this.selectItem(item, tag); } if (item.children) { this.updateSelection(item.children, tag); } }; /** * @param {?} item * @return {?} */ LambMenuInternalService.prototype.selectedInUrl = /** * @param {?} item * @return {?} */ function (item) { /** @type {?} */ var exact = item.pathMatch === 'full'; /** @type {?} */ var location = this.location.path(); return ((exact && location === item.link) || (!exact && location.includes(item.link)) || (exact && item.fragment && location.substr(location.indexOf('#') + 1).includes(item.fragment))); }; /** * @param {?} item * @param {?=} tag * @param {?=} excepts * @return {?} */ LambMenuInternalService.prototype.collapseItem = /** * @param {?} item * @param {?=} tag * @param {?=} excepts * @return {?} */ function (item, tag, excepts) { var _this = this; // if (except && except === item)) { if (excepts && excepts.some(function (it) { return it === item; })) { return; } /** @type {?} */ var wasExpanded = item.expanded; item.expanded = false; if (wasExpanded) { this.submenuToggle(item); } if (item.children) { item.children.forEach(function (child) { return _this.collapseItem(child, tag); }); } }; LambMenuInternalService.decorators = [ { type: Injectable }, ]; LambMenuInternalService.ctorParameters = function () { return [ { type: Location } ]; }; return LambMenuInternalService; }()); export { LambMenuInternalService }; if (false) { /** @type {?} */ LambMenuInternalService.prototype.items; /** @type {?} */ LambMenuInternalService.prototype.location; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pbnRlcm5hbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbGFtYi13ZWItbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbWVudS9tZW51LWludGVybmFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQU9BLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsVUFBVSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUNuRCxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxHQUMzQyxNQUFNLGFBQWEsQ0FBQztBQUdyQjtJQUlFLGlDQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRjlCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBR2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7Ozs7SUFFTSwwQ0FBUTs7O0lBQWY7UUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDOzs7Ozs7O0lBRU0sNkNBQVc7Ozs7OztJQUFsQixVQUFtQixLQUFxQixFQUFFLEdBQVcsRUFBRSxNQUFxQjtRQUE1RSxpQkFHQzs7WUFGTyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQXJDLENBQXFDLENBQUMsQ0FBQztJQUMvRCxDQUFDOzs7Ozs7SUFFTywyQ0FBUzs7Ozs7SUFBakIsVUFBa0IsR0FBVyxFQUFFLElBQW1C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QUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQy9GLENBQUM7SUFDSixDQUFDOzs7Ozs7O0lBRU8sOENBQVk7Ozs7OztJQUFwQixVQUFxQixJQUFrQixFQUFFLEdBQVksRUFBRSxPQUF3QjtRQUEvRSxpQkFjQztRQWJDLG9DQUFvQztRQUNwQyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLEVBQUUsS0FBSyxJQUFJLEVBQVgsQ0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQztRQUNULENBQUM7O1lBQ0ssV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDOztnQkFsSkYsVUFBVTs7O2dCQVBGLFFBQVE7O0lBMEpqQiw4QkFBQztDQUFBLEFBbkpELElBbUpDO1NBbEpZLHVCQUF1Qjs7O0lBQ2xDLHdDQUFtQzs7SUFFdkIsMkNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgTGFtYiBUZWFtLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGFtYk1lbnVJdGVtLCBMYW1iTWVudUJhZyB9IGZyb20gJy4vbWVudS1pdGVtJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgaXRlbUhvdmVyJCwgc3VibWVudVRvZ2dsZSQsIGl0ZW1DbGljayQsIGl0ZW1TZWxlY3QkLFxyXG4gIG5hdmlnYXRlSG9tZSQsIGdldFNlbGVjdGVkSXRlbSQsIGFkZEl0ZW1zJCxcclxufSBmcm9tICcuL3ZhcmlhYmxlcyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTGFtYk1lbnVJbnRlcm5hbFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgaXRlbXM6IExhbWJNZW51SXRlbVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7XHJcbiAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SXRlbXMoKTogTGFtYk1lbnVJdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sbGFwc2VBbGwoaXRlbXM6IExhbWJNZW51SXRlbVtdLCB0YWc6IHN0cmluZywgZXhjZXB0PzogTGFtYk1lbnVJdGVtKSB7XHJcbiAgICBjb25zdCBleGNlcHRzID0gdGhpcy5nZXRQYXJlbnQodGFnLCBleGNlcHQpO1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuY29sbGFwc2VJdGVtKGl0ZW0sIHRhZywgZXhjZXB0cykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnQodGFnOiBzdHJpbmcsIGl0ZW0/OiBMYW1iTWVudUl0ZW0pIHtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgIGFyci5wdXNoKGl0ZW0pO1xyXG4gICAgaWYgKGl0ZW0ucGFyZW50KSB7XHJcbiAgICAgIGFyci5wdXNoKC4uLnRoaXMuZ2V0UGFyZW50KHRhZywgaXRlbS5wYXJlbnQpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhcnI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXRlbUhvdmVyKGl0ZW06IExhbWJNZW51SXRlbSwgdGFnPzogc3RyaW5nKSB7XHJcbiAgICBpdGVtSG92ZXIkLm5leHQoeyB0YWcsIGl0ZW0gfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3VibWVudVRvZ2dsZShpdGVtOiBMYW1iTWVudUl0ZW0sIHRhZz86IHN0cmluZykge1xyXG4gICAgc3VibWVudVRvZ2dsZSQubmV4dCh7IHRhZywgaXRlbSB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RJdGVtKGl0ZW06IExhbWJNZW51SXRlbSwgdGFnOiBzdHJpbmcpIHtcclxuICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5pdGVtU2VsZWN0KGl0ZW0sIHRhZyk7XHJcbiAgICB0aGlzLnNlbGVjdFBhcmVudChpdGVtLCB0YWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RQYXJlbnQoeyBwYXJlbnQ6IGl0ZW0gfTogTGFtYk1lbnVJdGVtLCB0YWc6IHN0cmluZykge1xyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWl0ZW0uZXhwYW5kZWQpIHtcclxuICAgICAgaXRlbS5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3VibWVudVRvZ2dsZShpdGVtLCB0YWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RQYXJlbnQoaXRlbSwgdGFnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpdGVtQ2xpY2soaXRlbTogTGFtYk1lbnVJdGVtLCB0YWc/OiBzdHJpbmcpIHtcclxuICAgIGl0ZW1DbGljayQubmV4dCh7IHRhZywgaXRlbSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXRlbVNlbGVjdChpdGVtOiBMYW1iTWVudUl0ZW0sIHRhZz86IHN0cmluZykge1xyXG4gICAgaXRlbVNlbGVjdCQubmV4dCh7IHRhZywgaXRlbSB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFkZEl0ZW0oKTogT2JzZXJ2YWJsZTx7IHRhZzogc3RyaW5nLCBpdGVtczogTGFtYk1lbnVJdGVtW10gfT4ge1xyXG4gICAgcmV0dXJuIGFkZEl0ZW1zJC5waXBlKHNoYXJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmF2aWdhdGVIb21lKCk6IE9ic2VydmFibGU8eyB0YWc6IHN0cmluZyB9PiB7XHJcbiAgICByZXR1cm4gbmF2aWdhdGVIb21lJC5waXBlKHNoYXJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2V0U2VsZWN0ZWRJdGVtKCk6IE9ic2VydmFibGU8eyB0YWc6IHN0cmluZzsgbGlzdGVuZXI6IEJlaGF2aW9yU3ViamVjdDxMYW1iTWVudUJhZz4gfT4ge1xyXG4gICAgcmV0dXJuIGdldFNlbGVjdGVkSXRlbSQucGlwZShzaGFyZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldEl0ZW1zKGl0ZW1zOiBMYW1iTWVudUl0ZW1bXSkge1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMucmVzZXRJdGVtKGl0ZW0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRJdGVtKGl0ZW06IExhbWJNZW51SXRlbSkge1xyXG4gICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldEl0ZW0oY2hpbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmVwYXJlSXRlbXMoaXRlbXM6IExhbWJNZW51SXRlbVtdKSB7XHJcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5zZXRQYXJlbnQoaXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQYXJlbnQoaXRlbTogTGFtYk1lbnVJdGVtKSB7XHJcbiAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xyXG4gICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgIGNoaWxkLnBhcmVudCA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnQoY2hpbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb24oaXRlbXM6IExhbWJNZW51SXRlbVtdLCB0YWc6IHN0cmluZywgY29sbGFwc2VPdGhlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoY29sbGFwc2VPdGhlcikge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlQWxsKGl0ZW1zLCB0YWcpO1xyXG4gICAgfVxyXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHRoaXMuc2VsZWN0SXRlbUJ5VXJsKGl0ZW0sIHRhZykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RJdGVtQnlVcmwoaXRlbTogTGFtYk1lbnVJdGVtLCB0YWc6IHN0cmluZykge1xyXG4gICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSBpdGVtLnNlbGVjdGVkO1xyXG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJblVybChpdGVtKTtcclxuICAgIGlmICghd2FzU2VsZWN0ZWQgJiYgaXNTZWxlY3RlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSwgdGFnKTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKGl0ZW0uY2hpbGRyZW4sIHRhZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdGVkSW5VcmwoaXRlbTogTGFtYk1lbnVJdGVtKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleGFjdDogYm9vbGVhbiA9IGl0ZW0ucGF0aE1hdGNoID09PSAnZnVsbCc7XHJcbiAgICBjb25zdCBsb2NhdGlvbjogc3RyaW5nID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoZXhhY3QgJiYgbG9jYXRpb24gPT09IGl0ZW0ubGluaykgfHxcclxuICAgICAgKCFleGFjdCAmJiBsb2NhdGlvbi5pbmNsdWRlcyhpdGVtLmxpbmspKSB8fFxyXG4gICAgICAoZXhhY3QgJiYgaXRlbS5mcmFnbWVudCAmJiBsb2NhdGlvbi5zdWJzdHIobG9jYXRpb24uaW5kZXhPZignIycpICsgMSkuaW5jbHVkZXMoaXRlbS5mcmFnbWVudCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsYXBzZUl0ZW0oaXRlbTogTGFtYk1lbnVJdGVtLCB0YWc/OiBzdHJpbmcsIGV4Y2VwdHM/OiBMYW1iTWVudUl0ZW1bXSkge1xyXG4gICAgLy8gaWYgKGV4Y2VwdCAmJiBleGNlcHQgPT09IGl0ZW0pKSB7XHJcbiAgICBpZiAoZXhjZXB0cyAmJiBleGNlcHRzLnNvbWUoaXQgPT4gaXQgPT09IGl0ZW0pKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHdhc0V4cGFuZGVkID0gaXRlbS5leHBhbmRlZDtcclxuICAgIGl0ZW0uZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgIGlmICh3YXNFeHBhbmRlZCkge1xyXG4gICAgICB0aGlzLnN1Ym1lbnVUb2dnbGUoaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHRoaXMuY29sbGFwc2VJdGVtKGNoaWxkLCB0YWcpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==