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.

273 lines (272 loc) 19.2 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 FlexOffsetDirective = /** @class */ (function (_super) { tslib_1.__extends(FlexOffsetDirective, _super); function FlexOffsetDirective(elementRef, renderer, service, layout) { var _this = _super.call(this, elementRef, renderer) || this; _this.service = service; _this.fcValues = {}; _this.observer$ = new ReplaySubject(1); if (layout && layout.elementRef.nativeElement === _this.parentElement) { _this.layout = layout; } return _this; } Object.defineProperty(FlexOffsetDirective.prototype, "offset", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['all'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xs'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['sm'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['md'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lg'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xl'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetGtXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-xs'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetGtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-sm'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetGtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-md'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetGtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-lg'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetLtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-sm'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetLtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-md'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetLtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-lg'] = val; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "offsetLtXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-xl'] = val; }, enumerable: true, configurable: true }); /** * @return {?} */ FlexOffsetDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.dependsOnParentLayout(); }; /** * @return {?} */ FlexOffsetDirective.prototype.ngOnChanges = /** * @return {?} */ function () { this.reload(); }; /** * @return {?} */ FlexOffsetDirective.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.addFlexOffset(_this.layoutValues[layoutBreakpoint], layoutBreakpoint, _this.fcValues[breakpoint], breakpoint)); }); }); this.setClassNames(classNames); this.observer$.next(this.fcValues); }; /** * @return {?} */ FlexOffsetDirective.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(FlexOffsetDirective.prototype, "parentElement", { get: /** * @return {?} */ function () { return this.renderer.parentNode(this.elementRef.nativeElement); }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "layoutValues", { get: /** * @return {?} */ function () { return this.layout ? this.layout.fcValues : { 'all': '' }; }, enumerable: true, configurable: true }); Object.defineProperty(FlexOffsetDirective.prototype, "breakpoints", { get: /** * @return {?} */ function () { return Object.keys(this.fcValues); }, enumerable: true, configurable: true }); FlexOffsetDirective.decorators = [ { type: Directive, args: [{ selector: "\n [fcFlexOffset],\n [fcFlexOffset.xs], [fcFlexOffset.sm], [fcFlexOffset.md], [fcFlexOffset.lg], [fcFlexOffset.xl],\n [fcFlexOffset.lt-sm], [fcFlexOffset.lt-md], [fcFlexOffset.lt-lg], [fcFlexOffset.lt-xl],\n [fcFlexOffset.gt-xs], [fcFlexOffset.gt-sm], [fcFlexOffset.gt-md], [fcFlexOffset.gt-lg]\n ", },] }, ]; /** @nocollapse */ FlexOffsetDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: FlexCssService }, { type: LayoutDirective, decorators: [{ type: Optional }, { type: Host }, { type: SkipSelf }] } ]; }; FlexOffsetDirective.propDecorators = { offset: [{ type: Input, args: ['fcFlexOffset',] }], offsetXs: [{ type: Input, args: ['fcFlexOffset.xs',] }], offsetSm: [{ type: Input, args: ['fcFlexOffset.sm',] }], offsetMd: [{ type: Input, args: ['fcFlexOffset.md',] }], offsetLg: [{ type: Input, args: ['fcFlexOffset.lg',] }], offsetXl: [{ type: Input, args: ['fcFlexOffset.xl',] }], offsetGtXs: [{ type: Input, args: ['fcFlexOffset.gt-xs',] }], offsetGtSm: [{ type: Input, args: ['fcFlexOffset.gt-sm',] }], offsetGtMd: [{ type: Input, args: ['fcFlexOffset.gt-md',] }], offsetGtLg: [{ type: Input, args: ['fcFlexOffset.gt-lg',] }], offsetLtSm: [{ type: Input, args: ['fcFlexOffset.lt-sm',] }], offsetLtMd: [{ type: Input, args: ['fcFlexOffset.lt-md',] }], offsetLtLg: [{ type: Input, args: ['fcFlexOffset.lt-lg',] }], offsetLtXl: [{ type: Input, args: ['fcFlexOffset.lt-xl',] }] }; return FlexOffsetDirective; }(BaseDirective)); export { FlexOffsetDirective }; function FlexOffsetDirective_tsickle_Closure_declarations() { /** @type {?} */ FlexOffsetDirective.prototype.fcValues; /** @type {?} */ FlexOffsetDirective.prototype.observer$; /** @type {?} */ FlexOffsetDirective.prototype.layout; /** @type {?} */ FlexOffsetDirective.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1vZmZzZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdyZWctbWQvbmctZmxleC1jc3MtbGF5b3V0LyIsInNvdXJjZXMiOlsibGliL2ZsZXgtb2Zmc2V0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0lBVVosK0NBQWE7SUF3QnBELDZCQUNFLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ1gsU0FDd0IsTUFBdUI7UUFKekQsWUFNRSxrQkFBTSxVQUFVLEVBQUUsUUFBUSxDQUFDLFNBSzVCO1FBUlMsYUFBTyxHQUFQLE9BQU87eUJBMUJOLEVBQUU7MEJBRUQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBNkI5QixFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEtBQUssS0FBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDckUsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdEI7O0tBQ0Y7SUE1QkQsc0JBQWlDLHVDQUFNOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDaEYsc0JBQWlDLHlDQUFROzs7OztRQUF6QyxVQUEwQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDL0Usc0JBQWlDLHlDQUFROzs7OztRQUF6QyxVQUEwQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDL0Usc0JBQWlDLHlDQUFROzs7OztRQUF6QyxVQUEwQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDL0Usc0JBQWlDLHlDQUFROzs7OztRQUF6QyxVQUEwQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDL0Usc0JBQWlDLHlDQUFROzs7OztRQUF6QyxVQUEwQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFFL0Usc0JBQWlDLDJDQUFVOzs7OztRQUEzQyxVQUE0QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDbEYsc0JBQWlDLDJDQUFVOzs7OztRQUEzQyxVQUE0QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDbEYsc0JBQWlDLDJDQUFVOzs7OztRQUEzQyxVQUE0QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDbEYsc0JBQWlDLDJDQUFVOzs7OztRQUEzQyxVQUE0QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFFbEYsc0JBQWlDLDJDQUFVOzs7OztRQUEzQyxVQUE0QyxHQUFH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QUFlLHVCQXNDbkIsUUFBUSxZQUFJLElBQUksWUFBSSxRQUFROzs7eUJBckI5QixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGlCQUFpQjsyQkFDdkIsS0FBSyxTQUFDLGlCQUFpQjsyQkFDdkIsS0FBSyxTQUFDLGlCQUFpQjsyQkFDdkIsS0FBSyxTQUFDLGlCQUFpQjsyQkFDdkIsS0FBSyxTQUFDLGlCQUFpQjs2QkFFdkIsS0FBSyxTQUFDLG9CQUFvQjs2QkFDMUIsS0FBSyxTQUFDLG9CQUFvQjs2QkFDMUIsS0FBSyxTQUFDLG9CQUFvQjs2QkFDMUIsS0FBSyxTQUFDLG9CQUFvQjs2QkFFMUIsS0FBSyxTQUFDLG9CQUFvQjs2QkFDMUIsS0FBSyxTQUFDLG9CQUFvQjs2QkFDMUIsS0FBSyxTQUFDLG9CQUFvQjs2QkFDMUIsS0FBSyxTQUFDLG9CQUFvQjs7OEJBckM3QjtFQWV5QyxhQUFhO1NBQXpDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBJbnB1dCwgUmVuZGVyZXIyLCBPcHRpb25hbCwgSG9zdCwgT25DaGFuZ2VzLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGbGV4Q3NzU2VydmljZSB9IGZyb20gJy4vZmxleC1jc3Muc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9sYXlvdXQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgXG4gICAgW2ZjRmxleE9mZnNldF0sXG4gICAgW2ZjRmxleE9mZnNldC54c10sIFtmY0ZsZXhPZmZzZXQuc21dLCBbZmNGbGV4T2Zmc2V0Lm1kXSwgW2ZjRmxleE9mZnNldC5sZ10sIFtmY0ZsZXhPZmZzZXQueGxdLFxuICAgIFtmY0ZsZXhPZmZzZXQubHQtc21dLCBbZmNGbGV4T2Zmc2V0Lmx0LW1kXSwgW2ZjRmxleE9mZnNldC5sdC1sZ10sIFtmY0ZsZXhPZmZzZXQubHQteGxdLFxuICAgIFtmY0ZsZXhPZmZzZXQuZ3QteHNdLCBbZmNGbGV4T2Zmc2V0Lmd0LXNtXSwgW2ZjRmxleE9mZnNldC5ndC1tZF0sIFtmY0ZsZXhPZmZzZXQuZ3QtbGddXG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZsZXhPZmZzZXREaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBmY1ZhbHVlcyA9IHt9O1xuXG4gIG9ic2VydmVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gIHByaXZhdGUgbGF5b3V0OiBMYXlvdXREaXJlY3RpdmU7XG5cbiAgQElucHV0KCdmY0ZsZXhPZmZzZXQnKSAgICAgICBzZXQgb2Zmc2V0KHZhbCkgICAgIHsgdGhpcy5mY1ZhbHVlc1snYWxsJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPZmZzZXQueHMnKSAgICBzZXQgb2Zmc2V0WHModmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1sneHMnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9mZnNldC5zbScpICAgIHNldCBvZmZzZXRTbSh2YWwpICAgeyB0aGlzLmZjVmFsdWVzWydzbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4T2Zmc2V0Lm1kJykgICAgc2V0IG9mZnNldE1kKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ21kJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPZmZzZXQubGcnKSAgICBzZXQgb2Zmc2V0TGcodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snbGcnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9mZnNldC54bCcpICAgIHNldCBvZmZzZXRYbCh2YWwpICAgeyB0aGlzLmZjVmFsdWVzWyd4bCddID0gdmFsOyB9XG5cbiAgQElucHV0KCdmY0ZsZXhPZmZzZXQuZ3QteHMnKSBzZXQgb2Zmc2V0R3RYcyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QteHMnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9mZnNldC5ndC1zbScpIHNldCBvZmZzZXRHdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4T2Zmc2V0Lmd0LW1kJykgc2V0IG9mZnNldEd0TWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LW1kJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPZmZzZXQuZ3QtbGcnKSBzZXQgb2Zmc2V0R3RMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbGcnXSA9IHZhbDsgfVxuXG4gIEBJbnB1dCgnZmNGbGV4T2Zmc2V0Lmx0LXNtJykgc2V0IG9mZnNldEx0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXNtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPZmZzZXQubHQtbWQnKSBzZXQgb2Zmc2V0THRNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9mZnNldC5sdC1sZycpIHNldCBvZmZzZXRMdExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1sZyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4T2Zmc2V0Lmx0LXhsJykgc2V0IG9mZnNldEx0WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXhsJ10gPSB2YWw7IH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBGbGV4Q3NzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIGxheW91dDogTGF5b3V0RGlyZWN0aXZlLFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlcik7XG5cbiAgICBpZiAobGF5b3V0ICYmIGxheW91dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgPT09IHRoaXMucGFyZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZXBlbmRzT25QYXJlbnRMYXlvdXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdO1xuXG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5sYXlvdXRWYWx1ZXMpLmZvckVhY2gobGF5b3V0QnJlYWtwb2ludCA9PiB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuYWRkRmxleE9mZnNldCh0aGlzLmxheW91dFZhbHVlc1tsYXlvdXRCcmVha3BvaW50XSwgbGF5b3V0QnJlYWtwb2ludCwgdGhpcy5mY1ZhbHVlc1ticmVha3BvaW50XSwgYnJlYWtwb2ludClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRDbGFzc05hbWVzKGNsYXNzTmFtZXMpO1xuXG4gICAgdGhpcy5vYnNlcnZlciQubmV4dCh0aGlzLmZjVmFsdWVzKTtcbiAgfVxuXG4gIGRlcGVuZHNPblBhcmVudExheW91dCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQpIHtcbiAgICAgIHRoaXMubGF5b3V0LmFkZE5ld0JyZWFrcG9pbnRzKHRoaXMuYnJlYWtwb2ludHMsICdyb3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucGFyZW50RWxlbWVudCwgdGhpcy5zZXJ2aWNlLmFkZExheW91dCgncm93JywgYnJlYWtwb2ludCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBnZXQgbGF5b3V0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLmxheW91dCA/IHRoaXMubGF5b3V0LmZjVmFsdWVzIDogeyAnYWxsJzogJycgfTtcbiAgfVxuXG4gIGdldCBicmVha3BvaW50cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5mY1ZhbHVlcyk7XG4gIH1cbn1cbiJdfQ==