UNPKG

@greg-md/ng-flex-css-layout

Version:

Flex-CSS-Layout is an alternative behaviour of Flex-Layout directives, that will still work with Angular Universal and App Shell.

281 lines (280 loc) 18.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, ElementRef, Input, Renderer2, Optional, Host, SkipSelf } from '@angular/core'; import { ReplaySubject } from 'rxjs'; import { FlexCssService } from './flex-css.service'; import { BaseDirective } from './directive'; import { LayoutDirective } from './layout.directive'; var FlexDirective = /** @class */ (function (_super) { tslib_1.__extends(FlexDirective, _super); function FlexDirective(elementRef, renderer, service, layout) { var _this = _super.call(this, elementRef, renderer) || this; _this.service = service; _this.fcValues = {}; _this.observer$ = new ReplaySubject(1); _this.fcShrink = 1; _this.fcGrow = 1; if (layout && layout.elementRef.nativeElement === _this.parentElement) { _this.layout = layout; } return _this; } Object.defineProperty(FlexDirective.prototype, "flex", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['all'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xs'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['sm'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['md'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lg'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xl'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexGtXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-xs'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexGtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-sm'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexGtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-md'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexGtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-lg'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexLtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-sm'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexLtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-md'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexLtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-lg'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "flexLtXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-xl'] = val; }, enumerable: true, configurable: true }); /** * @return {?} */ FlexDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.dependsOnParentLayout(); }; /** * @return {?} */ FlexDirective.prototype.ngOnChanges = /** * @return {?} */ function () { this.reload(); }; /** * @return {?} */ FlexDirective.prototype.reload = /** * @return {?} */ function () { var _this = this; var /** @type {?} */ classNames = []; this.breakpoints.forEach(function (breakpoint) { Object.keys(_this.layoutValues).forEach(function (layoutBreakpoint) { classNames.push(_this.service.addFlex(_this.layoutValues[layoutBreakpoint], layoutBreakpoint, _this.fcValues[breakpoint], breakpoint, _this.fcGrow, _this.fcShrink)); }); }); this.setClassNames(classNames); this.observer$.next(this.fcValues); }; /** * @return {?} */ FlexDirective.prototype.dependsOnParentLayout = /** * @return {?} */ function () { var _this = this; if (this.layout) { this.layout.addNewBreakpoints(this.breakpoints, 'row'); } else { this.breakpoints.forEach(function (breakpoint) { _this.renderer.addClass(_this.parentElement, _this.service.addLayout('row', breakpoint)); }); } }; Object.defineProperty(FlexDirective.prototype, "layoutValues", { get: /** * @return {?} */ function () { return this.layout ? this.layout.fcValues : { 'all': '' }; }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "parentElement", { get: /** * @return {?} */ function () { return this.renderer.parentNode(this.elementRef.nativeElement); }, enumerable: true, configurable: true }); Object.defineProperty(FlexDirective.prototype, "breakpoints", { get: /** * @return {?} */ function () { return Object.keys(this.fcValues); }, enumerable: true, configurable: true }); FlexDirective.decorators = [ { type: Directive, args: [{ selector: "\n [fcFlex],\n [fcFlex.xs], [fcFlex.sm], [fcFlex.md], [fcFlex.lg], [fcFlex.xl],\n [fcFlex.lt-sm], [fcFlex.lt-md], [fcFlex.lt-lg], [fcFlex.lt-xl],\n [fcFlex.gt-xs], [fcFlex.gt-sm], [fcFlex.gt-md], [fcFlex.gt-lg],\n ", },] }, ]; /** @nocollapse */ FlexDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: FlexCssService }, { type: LayoutDirective, decorators: [{ type: Optional }, { type: Host }, { type: SkipSelf }] } ]; }; FlexDirective.propDecorators = { fcShrink: [{ type: Input }], fcGrow: [{ type: Input }], flex: [{ type: Input, args: ['fcFlex',] }], flexXs: [{ type: Input, args: ['fcFlex.xs',] }], flexSm: [{ type: Input, args: ['fcFlex.sm',] }], flexMd: [{ type: Input, args: ['fcFlex.md',] }], flexLg: [{ type: Input, args: ['fcFlex.lg',] }], flexXl: [{ type: Input, args: ['fcFlex.xl',] }], flexGtXs: [{ type: Input, args: ['fcFlex.gt-xs',] }], flexGtSm: [{ type: Input, args: ['fcFlex.gt-sm',] }], flexGtMd: [{ type: Input, args: ['fcFlex.gt-md',] }], flexGtLg: [{ type: Input, args: ['fcFlex.gt-lg',] }], flexLtSm: [{ type: Input, args: ['fcFlex.lt-sm',] }], flexLtMd: [{ type: Input, args: ['fcFlex.lt-md',] }], flexLtLg: [{ type: Input, args: ['fcFlex.lt-lg',] }], flexLtXl: [{ type: Input, args: ['fcFlex.lt-xl',] }] }; return FlexDirective; }(BaseDirective)); export { FlexDirective }; function FlexDirective_tsickle_Closure_declarations() { /** @type {?} */ FlexDirective.prototype.fcValues; /** @type {?} */ FlexDirective.prototype.observer$; /** @type {?} */ FlexDirective.prototype.layout; /** @type {?} */ FlexDirective.prototype.fcShrink; /** @type {?} */ FlexDirective.prototype.fcGrow; /** @type {?} */ FlexDirective.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3JlZy1tZC9uZy1mbGV4LWNzcy1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvZmxleC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztJQVVsQix5Q0FBYTtJQTJCOUMsdUJBQ0UsVUFBc0IsRUFDdEIsUUFBbUIsRUFDWCxTQUN3QixNQUF1QjtRQUp6RCxZQU1FLGtCQUFNLFVBQVUsRUFBRSxRQUFRLENBQUMsU0FLNUI7UUFSUyxhQUFPLEdBQVAsT0FBTzt5QkE3Qk4sRUFBRTswQkFFRCxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7eUJBSVosQ0FBQzt1QkFDSCxDQUFDO1FBMkJqQixFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEtBQUssS0FBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDckUsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdEI7O0tBQ0Y7SUE1QkQsc0JBQTJCLCtCQUFJOzs7OztRQUEvQixVQUFnQyxHQUFHLElBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDeEUsc0JBQTJCLGlDQUFNOzs7OztRQUFqQyxVQUFrQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDdkUsc0JBQTJCLGlDQUFNOzs7OztRQUFqQyxVQUFrQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDdkUsc0JBQTJCLGlDQUFNOzs7OztRQUFqQyxVQUFrQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDdkUsc0JBQTJCLGlDQUFNOzs7OztRQUFqQyxVQUFrQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDdkUsc0JBQTJCLGlDQUFNOzs7OztRQUFqQyxVQUFrQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFFdkUsc0JBQTJCLG1DQUFROzs7OztRQUFuQyxVQUFvQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDMUUsc0JBQTJCLG1DQUFROzs7OztRQUFuQyxVQUFvQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDMUUsc0JBQTJCLG1DQUFROzs7OztRQUFuQyxVQUFvQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDMUUsc0JBQTJCLG1DQUFROzs7OztRQUFuQyxVQUFvQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFFMUUsc0JBQTJCLG1DQUFROzs7OztRQUFuQyxV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QkFDRjs7OztnQkFkbUIsVUFBVTtnQkFBaUIsU0FBUztnQkFHL0MsY0FBYztnQkFFZCxlQUFlLHVCQXlDbkIsUUFBUSxZQUFJLElBQUksWUFBSSxRQUFROzs7MkJBeEI5QixLQUFLO3lCQUNMLEtBQUs7dUJBRUwsS0FBSyxTQUFDLFFBQVE7eUJBQ2QsS0FBSyxTQUFDLFdBQVc7eUJBQ2pCLEtBQUssU0FBQyxXQUFXO3lCQUNqQixLQUFLLFNBQUMsV0FBVzt5QkFDakIsS0FBSyxTQUFDLFdBQVc7eUJBQ2pCLEtBQUssU0FBQyxXQUFXOzJCQUVqQixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxjQUFjOzJCQUNwQixLQUFLLFNBQUMsY0FBYzsyQkFFcEIsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxjQUFjOzJCQUNwQixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGNBQWM7O3dCQXhDdkI7RUFlbUMsYUFBYTtTQUFuQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIElucHV0LCBSZW5kZXJlcjIsIE9wdGlvbmFsLCBIb3N0LCBPbkNoYW5nZXMsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZsZXhDc3NTZXJ2aWNlIH0gZnJvbSAnLi9mbGV4LWNzcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuL2xheW91dC5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IGBcbiAgICBbZmNGbGV4XSxcbiAgICBbZmNGbGV4LnhzXSwgW2ZjRmxleC5zbV0sIFtmY0ZsZXgubWRdLCBbZmNGbGV4LmxnXSwgW2ZjRmxleC54bF0sXG4gICAgW2ZjRmxleC5sdC1zbV0sIFtmY0ZsZXgubHQtbWRdLCBbZmNGbGV4Lmx0LWxnXSwgW2ZjRmxleC5sdC14bF0sXG4gICAgW2ZjRmxleC5ndC14c10sIFtmY0ZsZXguZ3Qtc21dLCBbZmNGbGV4Lmd0LW1kXSwgW2ZjRmxleC5ndC1sZ10sXG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZsZXhEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBmY1ZhbHVlcyA9IHt9O1xuXG4gIG9ic2VydmVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gIHByaXZhdGUgbGF5b3V0OiBMYXlvdXREaXJlY3RpdmU7XG5cbiAgQElucHV0KCkgZmNTaHJpbmsgPSAxO1xuICBASW5wdXQoKSBmY0dyb3cgPSAxO1xuXG4gIEBJbnB1dCgnZmNGbGV4JykgICAgICAgc2V0IGZsZXgodmFsKSAgICAgeyB0aGlzLmZjVmFsdWVzWydhbGwnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleC54cycpICAgIHNldCBmbGV4WHModmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1sneHMnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleC5zbScpICAgIHNldCBmbGV4U20odmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snc20nXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleC5tZCcpICAgIHNldCBmbGV4TWQodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleC5sZycpICAgIHNldCBmbGV4TGcodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snbGcnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleC54bCcpICAgIHNldCBmbGV4WGwodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1sneGwnXSA9IHZhbDsgfVxuXG4gIEBJbnB1dCgnZmNGbGV4Lmd0LXhzJykgc2V0IGZsZXhHdFhzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC14cyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4Lmd0LXNtJykgc2V0IGZsZXhHdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4Lmd0LW1kJykgc2V0IGZsZXhHdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1tZCddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4Lmd0LWxnJykgc2V0IGZsZXhHdExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1sZyddID0gdmFsOyB9XG5cbiAgQElucHV0KCdmY0ZsZXgubHQtc20nKSBzZXQgZmxleEx0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXNtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXgubHQtbWQnKSBzZXQgZmxleEx0TWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LW1kJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXgubHQtbGcnKSBzZXQgZmxleEx0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LWxnJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXgubHQteGwnKSBzZXQgZmxleEx0WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXhsJ10gPSB2YWw7IH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBGbGV4Q3NzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIGxheW91dDogTGF5b3V0RGlyZWN0aXZlLFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlcik7XG5cbiAgICBpZiAobGF5b3V0ICYmIGxheW91dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgPT09IHRoaXMucGFyZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZXBlbmRzT25QYXJlbnRMYXlvdXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdO1xuXG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5sYXlvdXRWYWx1ZXMpLmZvckVhY2gobGF5b3V0QnJlYWtwb2ludCA9PiB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuYWRkRmxleChcbiAgICAgICAgICAgIHRoaXMubGF5b3V0VmFsdWVzW2xheW91dEJyZWFrcG9pbnRdLCBsYXlvdXRCcmVha3BvaW50LCB0aGlzLmZjVmFsdWVzW2JyZWFrcG9pbnRdLCBicmVha3BvaW50LCB0aGlzLmZjR3JvdywgdGhpcy5mY1Nocmlua1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRDbGFzc05hbWVzKGNsYXNzTmFtZXMpO1xuXG4gICAgdGhpcy5vYnNlcnZlciQubmV4dCh0aGlzLmZjVmFsdWVzKTtcbiAgfVxuXG4gIGRlcGVuZHNPblBhcmVudExheW91dCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQpIHtcbiAgICAgIHRoaXMubGF5b3V0LmFkZE5ld0JyZWFrcG9pbnRzKHRoaXMuYnJlYWtwb2ludHMsICdyb3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucGFyZW50RWxlbWVudCwgdGhpcy5zZXJ2aWNlLmFkZExheW91dCgncm93JywgYnJlYWtwb2ludCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxheW91dFZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQgPyB0aGlzLmxheW91dC5mY1ZhbHVlcyA6IHsgJ2FsbCc6ICcnIH07XG4gIH1cblxuICBnZXQgcGFyZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGdldCBicmVha3BvaW50cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5mY1ZhbHVlcyk7XG4gIH1cbn1cbiJdfQ==