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.

189 lines (188 loc) 14.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Directive, ElementRef, Input, Renderer2, Optional, Self } from '@angular/core'; import { ReplaySubject } from 'rxjs'; import { FlexCssService } from './flex-css.service'; import { BaseDirective } from './directive'; import { LayoutDirective } from './layout.directive'; export class LayoutGapDirective extends BaseDirective { /** * @param {?} elementRef * @param {?} renderer * @param {?} service * @param {?} layout */ constructor(elementRef, renderer, service, layout) { super(elementRef, renderer); this.service = service; this.layout = layout; this.fcValues = {}; this.observer$ = new ReplaySubject(1); } /** * @param {?} val * @return {?} */ set gap(val) { this.fcValues['all'] = val; } /** * @param {?} val * @return {?} */ set gapXs(val) { this.fcValues['xs'] = val; } /** * @param {?} val * @return {?} */ set gapSm(val) { this.fcValues['sm'] = val; } /** * @param {?} val * @return {?} */ set gapMd(val) { this.fcValues['md'] = val; } /** * @param {?} val * @return {?} */ set gapLg(val) { this.fcValues['lg'] = val; } /** * @param {?} val * @return {?} */ set gapXl(val) { this.fcValues['xl'] = val; } /** * @param {?} val * @return {?} */ set gapGtXs(val) { this.fcValues['gt-xs'] = val; } /** * @param {?} val * @return {?} */ set gapGtSm(val) { this.fcValues['gt-sm'] = val; } /** * @param {?} val * @return {?} */ set gapGtMd(val) { this.fcValues['gt-md'] = val; } /** * @param {?} val * @return {?} */ set gapGtLg(val) { this.fcValues['gt-lg'] = val; } /** * @param {?} val * @return {?} */ set gapLtSm(val) { this.fcValues['lt-sm'] = val; } /** * @param {?} val * @return {?} */ set gapLtMd(val) { this.fcValues['lt-md'] = val; } /** * @param {?} val * @return {?} */ set gapLtLg(val) { this.fcValues['lt-lg'] = val; } /** * @param {?} val * @return {?} */ set gapLtXl(val) { this.fcValues['lt-xl'] = val; } /** * @return {?} */ ngOnInit() { this.dependsOnLayout(); } /** * @return {?} */ ngOnChanges() { this.reload(); } /** * @return {?} */ reload() { const /** @type {?} */ classNames = []; this.breakpoints.forEach(breakpoint => { Object.keys(this.layoutValues).forEach(layoutBreakpoint => { classNames.push(this.service.addLayoutGap(this.layoutValues[layoutBreakpoint], layoutBreakpoint, this.fcValues[breakpoint], breakpoint)); }); }); this.setClassNames(classNames); this.observer$.next(this.fcValues); } /** * @return {?} */ dependsOnLayout() { if (this.layout) { this.layout.addNewBreakpoints(this.breakpoints); } else { this.breakpoints.forEach(breakpoint => { this.addClassName(this.service.addLayout('row', breakpoint)); }); } } /** * @return {?} */ get layoutValues() { return this.layout ? this.layout.fcValues : { 'all': '' }; } /** * @return {?} */ get breakpoints() { return Object.keys(this.fcValues); } } LayoutGapDirective.decorators = [ { type: Directive, args: [{ selector: ` [fcLayoutGap], [fcLayoutGap.xs], [fcLayoutGap.sm], [fcLayoutGap.md], [fcLayoutGap.lg], [fcLayoutGap.xl], [fcLayoutGap.lt-sm], [fcLayoutGap.lt-md], [fcLayoutGap.lt-lg], [fcLayoutGap.lt-xl], [fcLayoutGap.gt-xs], [fcLayoutGap.gt-sm], [fcLayoutGap.gt-md], [fcLayoutGap.gt-lg] `, },] }, ]; /** @nocollapse */ LayoutGapDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 }, { type: FlexCssService }, { type: LayoutDirective, decorators: [{ type: Optional }, { type: Self }] } ]; LayoutGapDirective.propDecorators = { gap: [{ type: Input, args: ['fcLayoutGap',] }], gapXs: [{ type: Input, args: ['fcLayoutGap.xs',] }], gapSm: [{ type: Input, args: ['fcLayoutGap.sm',] }], gapMd: [{ type: Input, args: ['fcLayoutGap.md',] }], gapLg: [{ type: Input, args: ['fcLayoutGap.lg',] }], gapXl: [{ type: Input, args: ['fcLayoutGap.xl',] }], gapGtXs: [{ type: Input, args: ['fcLayoutGap.gt-xs',] }], gapGtSm: [{ type: Input, args: ['fcLayoutGap.gt-sm',] }], gapGtMd: [{ type: Input, args: ['fcLayoutGap.gt-md',] }], gapGtLg: [{ type: Input, args: ['fcLayoutGap.gt-lg',] }], gapLtSm: [{ type: Input, args: ['fcLayoutGap.lt-sm',] }], gapLtMd: [{ type: Input, args: ['fcLayoutGap.lt-md',] }], gapLtLg: [{ type: Input, args: ['fcLayoutGap.lt-lg',] }], gapLtXl: [{ type: Input, args: ['fcLayoutGap.lt-xl',] }] }; function LayoutGapDirective_tsickle_Closure_declarations() { /** @type {?} */ LayoutGapDirective.prototype.fcValues; /** @type {?} */ LayoutGapDirective.prototype.observer$; /** @type {?} */ LayoutGapDirective.prototype.service; /** @type {?} */ LayoutGapDirective.prototype.layout; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWdhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3JlZy1tZC9uZy1mbGV4LWNzcy1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvbGF5b3V0LWdhcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVVyRCxNQUFNLHlCQUEwQixTQUFRLGFBQWE7Ozs7Ozs7SUFzQm5ELFlBQ0UsVUFBc0IsRUFDdEIsUUFBbUIsRUFDWCxTQUNvQixNQUF1QjtRQUVuRCxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSHBCLFlBQU8sR0FBUCxPQUFPO1FBQ2EsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7d0JBekIxQyxFQUFFO3lCQUVELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQztLQTBCL0I7Ozs7O0lBeEJELElBQWdDLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7Ozs7SUFDeEUsSUFBZ0MsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFOzs7OztJQUN6RSxJQUFnQyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7Ozs7O0lBQ3pFLElBQWdDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7Ozs7SUFDekUsSUFBZ0MsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFOzs7OztJQUN6RSxJQUFnQyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7Ozs7O0lBRXpFLElBQWdDLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7Ozs7SUFDOUUsSUFBZ0MsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFOzs7OztJQUM5RSxJQUFnQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7Ozs7O0lBQzlFLElBQWdDLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7Ozs7SUFFOUUsSUFBZ0MsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFOzs7OztJQUM5RSxJQUFnQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7Ozs7O0lBQzlFLElBQWdDLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7Ozs7SUFDOUUsSUFBZ0MsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFOzs7O0lBVzlFLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7S0FDeEI7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ2Y7Ozs7SUFFRCxNQUFNO1FBQ0osdUJBQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDeEQsVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FDeEgsQ0FBQzthQUNILENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3BDOzs7O0lBRUQsZUFBZTtRQUNiLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2pEO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUM5RCxDQUFDLENBQUM7U0FDSjtLQUNGOzs7O0lBRUQsSUFBSSxZQUFZO1FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztLQUMzRDs7OztJQUVELElBQUksV0FBVztRQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNuQzs7O1lBL0VGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUU7Ozs7O0dBS1Q7YUFDRjs7OztZQWRtQixVQUFVO1lBQWlCLFNBQVM7WUFHL0MsY0FBYztZQUVkLGVBQWUsdUJBb0NuQixRQUFRLFlBQUksSUFBSTs7O2tCQXJCbEIsS0FBSyxTQUFDLGFBQWE7b0JBQ25CLEtBQUssU0FBQyxnQkFBZ0I7b0JBQ3RCLEtBQUssU0FBQyxnQkFBZ0I7b0JBQ3RCLEtBQUssU0FBQyxnQkFBZ0I7b0JBQ3RCLEtBQUssU0FBQyxnQkFBZ0I7b0JBQ3RCLEtBQUssU0FBQyxnQkFBZ0I7c0JBRXRCLEtBQUssU0FBQyxtQkFBbUI7c0JBQ3pCLEtBQUssU0FBQyxtQkFBbUI7c0JBQ3pCLEtBQUssU0FBQyxtQkFBbUI7c0JBQ3pCLEtBQUssU0FBQyxtQkFBbUI7c0JBRXpCLEtBQUssU0FBQyxtQkFBbUI7c0JBQ3pCLEtBQUssU0FBQyxtQkFBbUI7c0JBQ3pCLEtBQUssU0FBQyxtQkFBbUI7c0JBQ3pCLEtBQUssU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSW5wdXQsIFJlbmRlcmVyMiwgT3B0aW9uYWwsIFNlbGYsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGbGV4Q3NzU2VydmljZSB9IGZyb20gJy4vZmxleC1jc3Muc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9sYXlvdXQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgXG4gICAgW2ZjTGF5b3V0R2FwXSxcbiAgICBbZmNMYXlvdXRHYXAueHNdLCBbZmNMYXlvdXRHYXAuc21dLCBbZmNMYXlvdXRHYXAubWRdLCBbZmNMYXlvdXRHYXAubGddLCBbZmNMYXlvdXRHYXAueGxdLFxuICAgIFtmY0xheW91dEdhcC5sdC1zbV0sIFtmY0xheW91dEdhcC5sdC1tZF0sIFtmY0xheW91dEdhcC5sdC1sZ10sIFtmY0xheW91dEdhcC5sdC14bF0sXG4gICAgW2ZjTGF5b3V0R2FwLmd0LXhzXSwgW2ZjTGF5b3V0R2FwLmd0LXNtXSwgW2ZjTGF5b3V0R2FwLmd0LW1kXSwgW2ZjTGF5b3V0R2FwLmd0LWxnXVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRHYXBEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBmY1ZhbHVlcyA9IHt9O1xuXG4gIG9ic2VydmVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAnKSAgICAgICBzZXQgZ2FwKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydhbGwnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLnhzJykgICAgc2V0IGdhcFhzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWyd4cyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAuc20nKSAgICBzZXQgZ2FwU20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3NtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEdhcC5tZCcpICAgIHNldCBnYXBNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmxnJykgICAgc2V0IGdhcExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsZyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAueGwnKSAgICBzZXQgZ2FwWGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3hsJ10gPSB2YWw7IH1cblxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmd0LXhzJykgc2V0IGdhcEd0WHModmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LXhzJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEdhcC5ndC1zbScpIHNldCBnYXBHdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAuZ3QtbWQnKSBzZXQgZ2FwR3RNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmd0LWxnJykgc2V0IGdhcEd0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LWxnJ10gPSB2YWw7IH1cblxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmx0LXNtJykgc2V0IGdhcEx0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXNtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEdhcC5sdC1tZCcpIHNldCBnYXBMdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1tZCddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAubHQtbGcnKSBzZXQgZ2FwTHRMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtbGcnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmx0LXhsJykgc2V0IGdhcEx0WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXhsJ10gPSB2YWw7IH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBGbGV4Q3NzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbGF5b3V0OiBMYXlvdXREaXJlY3RpdmUsXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGVwZW5kc09uTGF5b3V0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbXTtcblxuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubGF5b3V0VmFsdWVzKS5mb3JFYWNoKGxheW91dEJyZWFrcG9pbnQgPT4ge1xuICAgICAgICBjbGFzc05hbWVzLnB1c2goXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmFkZExheW91dEdhcCh0aGlzLmxheW91dFZhbHVlc1tsYXlvdXRCcmVha3BvaW50XSwgbGF5b3V0QnJlYWtwb2ludCwgdGhpcy5mY1ZhbHVlc1ticmVha3BvaW50XSwgYnJlYWtwb2ludClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRDbGFzc05hbWVzKGNsYXNzTmFtZXMpO1xuXG4gICAgdGhpcy5vYnNlcnZlciQubmV4dCh0aGlzLmZjVmFsdWVzKTtcbiAgfVxuXG4gIGRlcGVuZHNPbkxheW91dCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQpIHtcbiAgICAgIHRoaXMubGF5b3V0LmFkZE5ld0JyZWFrcG9pbnRzKHRoaXMuYnJlYWtwb2ludHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goYnJlYWtwb2ludCA9PiB7XG4gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHRoaXMuc2VydmljZS5hZGRMYXlvdXQoJ3JvdycsIGJyZWFrcG9pbnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsYXlvdXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0ID8gdGhpcy5sYXlvdXQuZmNWYWx1ZXMgOiB7ICdhbGwnOiAnJyB9O1xuICB9XG5cbiAgZ2V0IGJyZWFrcG9pbnRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZjVmFsdWVzKTtcbiAgfVxufVxuIl19