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.

285 lines (284 loc) 22.8 kB
/** * @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=