@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.
285 lines (284 loc) • 22.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Directive, ElementRef, Input, Renderer2, Optional, Self, Inject, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { ReplaySubject } from 'rxjs';
import { FlexCssService } from './flex-css.service';
import { BaseDirective } from './directive';
import { LayoutDirective } from './layout.directive';
const /** @type {?} */ TRULY = ['true', true, 1];
/**
* @param {?} value
* @return {?}
*/
export function isTrueValue(value) {
return value === '' || TRULY.indexOf(value) >= 0;
}
export class ShowHideDirective extends BaseDirective {
/**
* @param {?} elementRef
* @param {?} renderer
* @param {?} service
* @param {?} layout
* @param {?} platformId
*/
constructor(elementRef, renderer, service, layout, platformId) {
super(elementRef, renderer);
this.service = service;
this.layout = layout;
this.platformId = platformId;
this.fcValues = {};
this.observer$ = new ReplaySubject(1);
}
/**
* @param {?} val
* @return {?}
*/
set show(val) { this.fcValues['all'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showXs(val) { this.fcValues['xs'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showSm(val) { this.fcValues['sm'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showMd(val) { this.fcValues['md'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showLg(val) { this.fcValues['lg'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showXl(val) { this.fcValues['xl'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showLtSm(val) { this.fcValues['lt-sm'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showLtMd(val) { this.fcValues['lt-md'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showLtLg(val) { this.fcValues['lt-lg'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showLtXl(val) { this.fcValues['lt-xl'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showGtXs(val) { this.fcValues['gt-xs'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showGtSm(val) { this.fcValues['gt-sm'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showGtMd(val) { this.fcValues['gt-md'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set showGtLg(val) { this.fcValues['gt-lg'] = isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hide(val) { this.fcValues['all'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideXs(val) { this.fcValues['xs'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideSm(val) { this.fcValues['sm'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideMd(val) { this.fcValues['md'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideLg(val) { this.fcValues['lg'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideXl(val) { this.fcValues['xl'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideLtSm(val) { this.fcValues['lt-sm'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideLtMd(val) { this.fcValues['lt-md'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideLtLg(val) { this.fcValues['lt-lg'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideLtXl(val) { this.fcValues['lt-xl'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideGtXs(val) { this.fcValues['gt-xs'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideGtSm(val) { this.fcValues['gt-sm'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideGtMd(val) { this.fcValues['gt-md'] = !isTrueValue(val); }
/**
* @param {?} val
* @return {?}
*/
set hideGtLg(val) { this.fcValues['gt-lg'] = !isTrueValue(val); }
/**
* @return {?}
*/
ngOnChanges() {
this.reload();
}
/**
* @return {?}
*/
reload() {
const /** @type {?} */ classNames = [];
const /** @type {?} */ display = this.getDisplayStyle();
this.breakpoints.forEach(breakpoint => {
classNames.push(this.service.addShowHide(display, this.fcValues[breakpoint], breakpoint));
});
this.setClassNames(classNames);
this.observer$.next(this.fcValues);
}
/**
* @return {?}
*/
getDisplayStyle() {
return this.layout ? 'flex' : (this.getElementStyle(this.elementRef.nativeElement, 'display')
|| this.fcDisplayDefault
|| 'block');
}
/**
* @param {?} element
* @param {?} styleName
* @return {?}
*/
getElementStyle(element, styleName) {
return (element ? element.style[styleName] || element.style.getPropertyValue(styleName) : '')
|| (isPlatformBrowser(this.platformId) ? getComputedStyle(element).getPropertyValue(styleName) : '');
}
/**
* @return {?}
*/
get breakpoints() {
return Object.keys(this.fcValues);
}
}
ShowHideDirective.decorators = [
{ type: Directive, args: [{
selector: `
[fcShow],
[fcShow.xs], [fcShow.sm], [fcShow.md], [fcShow.lg], [fcShow.xl],
[fcShow.lt-sm], [fcShow.lt-md], [fcShow.lt-lg], [fcShow.lt-xl],
[fcShow.gt-xs], [fcShow.gt-sm], [fcShow.gt-md], [fcShow.gt-lg],
[fcHide],
[fcHide.xs], [fcHide.sm], [fcHide.md], [fcHide.lg], [fcHide.xl],
[fcHide.lt-sm], [fcHide.lt-md], [fcHide.lt-lg], [fcHide.lt-xl],
[fcHide.gt-xs], [fcHide.gt-sm], [fcHide.gt-md], [fcHide.gt-lg]
`,
},] },
];
/** @nocollapse */
ShowHideDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 },
{ type: FlexCssService },
{ type: LayoutDirective, decorators: [{ type: Optional }, { type: Self }] },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
];
ShowHideDirective.propDecorators = {
fcDisplayDefault: [{ type: Input }],
show: [{ type: Input, args: ['fcShow',] }],
showXs: [{ type: Input, args: ['fcShow.xs',] }],
showSm: [{ type: Input, args: ['fcShow.sm',] }],
showMd: [{ type: Input, args: ['fcShow.md',] }],
showLg: [{ type: Input, args: ['fcShow.lg',] }],
showXl: [{ type: Input, args: ['fcShow.xl',] }],
showLtSm: [{ type: Input, args: ['fcShow.lt-sm',] }],
showLtMd: [{ type: Input, args: ['fcShow.lt-md',] }],
showLtLg: [{ type: Input, args: ['fcShow.lt-lg',] }],
showLtXl: [{ type: Input, args: ['fcShow.lt-xl',] }],
showGtXs: [{ type: Input, args: ['fcShow.gt-xs',] }],
showGtSm: [{ type: Input, args: ['fcShow.gt-sm',] }],
showGtMd: [{ type: Input, args: ['fcShow.gt-md',] }],
showGtLg: [{ type: Input, args: ['fcShow.gt-lg',] }],
hide: [{ type: Input, args: ['fcHide',] }],
hideXs: [{ type: Input, args: ['fcHide.xs',] }],
hideSm: [{ type: Input, args: ['fcHide.sm',] }],
hideMd: [{ type: Input, args: ['fcHide.md',] }],
hideLg: [{ type: Input, args: ['fcHide.lg',] }],
hideXl: [{ type: Input, args: ['fcHide.xl',] }],
hideLtSm: [{ type: Input, args: ['fcHide.lt-sm',] }],
hideLtMd: [{ type: Input, args: ['fcHide.lt-md',] }],
hideLtLg: [{ type: Input, args: ['fcHide.lt-lg',] }],
hideLtXl: [{ type: Input, args: ['fcHide.lt-xl',] }],
hideGtXs: [{ type: Input, args: ['fcHide.gt-xs',] }],
hideGtSm: [{ type: Input, args: ['fcHide.gt-sm',] }],
hideGtMd: [{ type: Input, args: ['fcHide.gt-md',] }],
hideGtLg: [{ type: Input, args: ['fcHide.gt-lg',] }]
};
function ShowHideDirective_tsickle_Closure_declarations() {
/** @type {?} */
ShowHideDirective.prototype.fcValues;
/** @type {?} */
ShowHideDirective.prototype.observer$;
/** @type {?} */
ShowHideDirective.prototype.fcDisplayDefault;
/** @type {?} */
ShowHideDirective.prototype.service;
/** @type {?} */
ShowHideDirective.prototype.layout;
/** @type {?} */
ShowHideDirective.prototype.platformId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1oaWRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BncmVnLW1kL25nLWZsZXgtY3NzLWxheW91dC8iLCJzb3VyY2VzIjpbImxpYi9zaG93LWhpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCx1QkFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7OztBQUVoQyxNQUFNLHNCQUFzQixLQUFVO0lBQ3BDLE1BQU0sQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ2xEO0FBY0QsTUFBTSx3QkFBeUIsU0FBUSxhQUFhOzs7Ozs7OztJQXlDbEQsWUFDRSxVQUFzQixFQUN0QixRQUFtQixFQUNYLFNBQ29CLE1BQXVCLEVBQ3BCLFVBQWtCO1FBRWpELEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFKcEIsWUFBTyxHQUFQLE9BQU87UUFDYSxXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFRO3dCQTdDL0IsRUFBRTt5QkFFRCxJQUFJLGFBQWEsQ0FB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SyxTQUFDLFdBQVc7cUJBQ2pCLEtBQUssU0FBQyxXQUFXO3FCQUNqQixLQUFLLFNBQUMsV0FBVzt1QkFFakIsS0FBSyxTQUFDLGNBQWM7dUJBQ3BCLEtBQUssU0FBQyxjQUFjO3VCQUNwQixLQUFLLFNBQUMsY0FBYzt1QkFDcEIsS0FBSyxTQUFDLGNBQWM7dUJBRXBCLEtBQUssU0FBQyxjQUFjO3VCQUNwQixLQUFLLFNBQUMsY0FBYzt1QkFDcEIsS0FBSyxTQUFDLGNBQWM7dUJBQ3BCLEtBQUssU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBTZWxmLCBJbmplY3QsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZsZXhDc3NTZXJ2aWNlIH0gZnJvbSAnLi9mbGV4LWNzcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuL2xheW91dC5kaXJlY3RpdmUnO1xuXG5jb25zdCBUUlVMWSA9IFsndHJ1ZScsIHRydWUsIDFdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNUcnVlVmFsdWUodmFsdWU6IGFueSkge1xuICByZXR1cm4gdmFsdWUgPT09ICcnIHx8IFRSVUxZLmluZGV4T2YodmFsdWUpID49IDA7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogYFxuICBbZmNTaG93XSxcbiAgW2ZjU2hvdy54c10sIFtmY1Nob3cuc21dLCBbZmNTaG93Lm1kXSwgW2ZjU2hvdy5sZ10sIFtmY1Nob3cueGxdLFxuICBbZmNTaG93Lmx0LXNtXSwgW2ZjU2hvdy5sdC1tZF0sIFtmY1Nob3cubHQtbGddLCBbZmNTaG93Lmx0LXhsXSxcbiAgW2ZjU2hvdy5ndC14c10sIFtmY1Nob3cuZ3Qtc21dLCBbZmNTaG93Lmd0LW1kXSwgW2ZjU2hvdy5ndC1sZ10sXG4gIFtmY0hpZGVdLFxuICBbZmNIaWRlLnhzXSwgW2ZjSGlkZS5zbV0sIFtmY0hpZGUubWRdLCBbZmNIaWRlLmxnXSwgW2ZjSGlkZS54bF0sXG4gIFtmY0hpZGUubHQtc21dLCBbZmNIaWRlLmx0LW1kXSwgW2ZjSGlkZS5sdC1sZ10sIFtmY0hpZGUubHQteGxdLFxuICBbZmNIaWRlLmd0LXhzXSwgW2ZjSGlkZS5ndC1zbV0sIFtmY0hpZGUuZ3QtbWRdLCBbZmNIaWRlLmd0LWxnXVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTaG93SGlkZURpcmVjdGl2ZSBleHRlbmRzIEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICByZWFkb25seSBmY1ZhbHVlcyA9IHt9O1xuXG4gIHJlYWRvbmx5IG9ic2VydmVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gIEBJbnB1dCgpIGZjRGlzcGxheURlZmF1bHQ7XG5cbiAgQElucHV0KCdmY1Nob3cnKSAgICAgICBzZXQgc2hvdyh2YWwpICB7IHRoaXMuZmNWYWx1ZXNbJ2FsbCddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy54cycpICAgIHNldCBzaG93WHModmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3hzJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93LnNtJykgICAgc2V0IHNob3dTbSh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snc20nXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cubWQnKSAgICBzZXQgc2hvd01kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydtZCddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy5sZycpICAgIHNldCBzaG93TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2xnJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93LnhsJykgICAgc2V0IHNob3dYbCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1sneGwnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cblxuICBASW5wdXQoJ2ZjU2hvdy5sdC1zbScpIHNldCBzaG93THRTbSh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtc20nXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cubHQtbWQnKSBzZXQgc2hvd0x0TWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LW1kJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93Lmx0LWxnJykgc2V0IHNob3dMdExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1sZyddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy5sdC14bCcpIHNldCBzaG93THRYbCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQteGwnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cblxuICBASW5wdXQoJ2ZjU2hvdy5ndC14cycpIHNldCBzaG93R3RYcyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QteHMnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cuZ3Qtc20nKSBzZXQgc2hvd0d0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LXNtJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93Lmd0LW1kJykgc2V0IHNob3dHdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1tZCddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy5ndC1sZycpIHNldCBzaG93R3RMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbGcnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cblxuICBASW5wdXQoJ2ZjSGlkZScpICAgICAgIHNldCBoaWRlKHZhbCkgIHsgdGhpcy5mY1ZhbHVlc1snYWxsJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS54cycpICAgIHNldCBoaWRlWHModmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3hzJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5zbScpICAgIHNldCBoaWRlU20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3NtJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5tZCcpICAgIHNldCBoaWRlTWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ21kJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5sZycpICAgIHNldCBoaWRlTGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2xnJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS54bCcpICAgIHNldCBoaWRlWGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3hsJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuXG4gIEBJbnB1dCgnZmNIaWRlLmx0LXNtJykgc2V0IGhpZGVMdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1zbSddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUubHQtbWQnKSBzZXQgaGlkZUx0TWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LW1kJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5sdC1sZycpIHNldCBoaWRlTHRMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtbGcnXSA9ICFpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNIaWRlLmx0LXhsJykgc2V0IGhpZGVMdFhsKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC14bCddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cblxuICBASW5wdXQoJ2ZjSGlkZS5ndC14cycpIHNldCBoaWRlR3RYcyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QteHMnXSA9ICFpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNIaWRlLmd0LXNtJykgc2V0IGhpZGVHdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUuZ3QtbWQnKSBzZXQgaGlkZUd0TWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LW1kJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5ndC1sZycpIHNldCBoaWRlR3RMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbGcnXSA9ICFpc1RydWVWYWx1ZSh2YWwpOyB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc2VydmljZTogRmxleENzc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIGxheW91dDogTGF5b3V0RGlyZWN0aXZlLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByb3RlY3RlZCBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgcmVuZGVyZXIpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5yZWxvYWQoKTtcbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW107XG5cbiAgICBjb25zdCBkaXNwbGF5ID0gdGhpcy5nZXREaXNwbGF5U3R5bGUoKTtcblxuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaCh0aGlzLnNlcnZpY2UuYWRkU2hvd0hpZGUoZGlzcGxheSwgdGhpcy5mY1ZhbHVlc1ticmVha3BvaW50XSwgYnJlYWtwb2ludCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRDbGFzc05hbWVzKGNsYXNzTmFtZXMpO1xuXG4gICAgdGhpcy5vYnNlcnZlciQubmV4dCh0aGlzLmZjVmFsdWVzKTtcbiAgfVxuXG4gIGdldERpc3BsYXlTdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQgPyAnZmxleCcgOiAoXG4gICAgICB0aGlzLmdldEVsZW1lbnRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknKVxuICAgICAgfHwgdGhpcy5mY0Rpc3BsYXlEZWZhdWx0XG4gICAgICB8fCAnYmxvY2snXG4gICAgKTtcbiAgfVxuXG4gIGdldEVsZW1lbnRTdHlsZShlbGVtZW50LCBzdHlsZU5hbWUpIHtcbiAgICByZXR1cm4gKGVsZW1lbnQgPyBlbGVtZW50LnN0eWxlW3N0eWxlTmFtZV0gfHwgZWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlTmFtZSkgOiAnJylcbiAgICAgIHx8IChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlTmFtZSkgOiAnJyk7XG4gIH1cblxuICBnZXQgYnJlYWtwb2ludHMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmNWYWx1ZXMpO1xuICB9XG59XG4iXX0=