@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
JavaScript
/**
* @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