ngx-foldable
Version:
Angular library to help you build dual-screen experiences for foldable or dual-screen devices
124 lines • 14.6 kB
JavaScript
import { Directive, Input, } from '@angular/core';
import { ScreenSpanning } from './screen-spanning';
import * as i0 from "@angular/core";
import * as i1 from "./screen-context";
/**
* Enumeration of spanning mode conditions values for use with
* {@link IfSpanDirective}.
*/
export const SpanCondition = {
/** Screen spanning mode is dual horizontal viewports. */
Vertical: 'dual-horizontal',
/** Screen spanning mode is dual vertical viewports. */
Horizontal: 'dual-vertical',
/** No screen spanning (single screen mode). */
None: 'none',
/** Any screen spanning mode is active (multi screen mode). */
Multi: 'multi',
};
/**
* Shows template only if the current screen spanning mode matches
* specified {@link SpanCondition}.
*
* Behaves like `ngIf`, except that it accepts a {@link SpanCondition} instead of
* a boolean expression.
*
* @example
* <p *fdIdSpan="'multi'">This text will only be visible on multi screen devices.</p>
* @example
* <p *fdIdSpan="'none'; else alt">This text will only be visible on single screen devices.</p>
* <ng-template #alt">This text will only be visible on multi screen devices.</ng-template>
*/
export class IfSpanDirective {
constructor(screenContext, viewContainer, templateRef) {
this.screenContext = screenContext;
this.viewContainer = viewContainer;
this.screenContextSubscription = null;
this.condition = null;
this.thenTemplateRef = null;
this.elseTemplateRef = null;
this.thenViewRef = null;
this.elseViewRef = null;
this.thenTemplateRef = templateRef;
this.screenContextSubscription = this.screenContext
.asObservable()
.subscribe(() => this.updateView());
}
/**
* The spanning mode condition that defines if the template should be shown.
*
* @param condition The spanning mode condition for showing the template.
*/
set fdIfSpan(condition) {
if (condition !== this.condition) {
this.condition = condition;
this.updateView();
}
}
/** A template to show if the span condition evaluates to true. */
set fdIfSpanThen(templateRef) {
this.thenTemplateRef = templateRef;
this.thenViewRef = null;
this.updateView();
}
/** A template to show if the span condition evaluates to false. */
set fdIfSpanElse(templateRef) {
this.elseTemplateRef = templateRef;
this.thenViewRef = null;
this.updateView();
}
/** ignore */
ngOnDestroy() {
if (this.screenContextSubscription !== null) {
this.screenContextSubscription.unsubscribe();
}
}
matchCondition() {
switch (this.condition) {
case SpanCondition.Multi:
return this.screenContext.isMultiScreen;
case SpanCondition.Horizontal:
return this.screenContext.screenSpanning === ScreenSpanning.DualVertical;
case SpanCondition.Vertical:
return this.screenContext.screenSpanning === ScreenSpanning.DualHorizontal;
default:
return this.screenContext.screenSpanning === ScreenSpanning.None;
}
}
updateView() {
const match = this.matchCondition();
if (match) {
if (!this.thenViewRef) {
this.viewContainer.clear();
this.elseViewRef = null;
if (this.thenTemplateRef) {
this.thenViewRef = this.viewContainer.createEmbeddedView(this.thenTemplateRef);
}
}
}
else {
if (!this.elseViewRef) {
this.viewContainer.clear();
this.thenViewRef = null;
if (this.elseTemplateRef) {
this.elseViewRef = this.viewContainer.createEmbeddedView(this.elseTemplateRef);
}
}
}
}
}
IfSpanDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IfSpanDirective, deps: [{ token: i1.ScreenContext }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
IfSpanDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: IfSpanDirective, selector: "[fdIfSpan]", inputs: { fdIfSpan: "fdIfSpan", fdIfSpanThen: "fdIfSpanThen", fdIfSpanElse: "fdIfSpanElse" }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IfSpanDirective, decorators: [{
type: Directive,
args: [{
selector: '[fdIfSpan]',
}]
}], ctorParameters: function () { return [{ type: i1.ScreenContext }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { fdIfSpan: [{
type: Input
}], fdIfSpanThen: [{
type: Input
}], fdIfSpanElse: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtc3Bhbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2NvcmUvaWYtc3Bhbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFRbkQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLHlEQUF5RDtJQUN6RCxRQUFRLEVBQUUsaUJBQWtDO0lBQzVDLHVEQUF1RDtJQUN2RCxVQUFVLEVBQUUsZUFBZ0M7SUFDNUMsK0NBQStDO0lBQy9DLElBQUksRUFBRSxNQUF1QjtJQUM3Qiw4REFBOEQ7SUFDOUQsS0FBSyxFQUFFLE9BQXdCO0NBQ2hDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQXFDMUIsWUFDVSxhQUE0QixFQUM1QixhQUErQixFQUN2QyxXQUEyQjtRQUZuQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUF0Q2pDLDhCQUF5QixHQUF3QixJQUFJLENBQUM7UUFDdEQsY0FBUyxHQUF5QixJQUFJLENBQUM7UUFDdkMsb0JBQWUsR0FBMEIsSUFBSSxDQUFDO1FBQzlDLG9CQUFlLEdBQTBCLElBQUksQ0FBQztRQUM5QyxnQkFBVyxHQUE4QixJQUFJLENBQUM7UUFDOUMsZ0JBQVcsR0FBOEIsSUFBSSxDQUFDO1FBb0NwRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDaEQsWUFBWSxFQUFFO2FBQ2QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUF0Q0Q7Ozs7T0FJRztJQUNILElBQ0ksUUFBUSxDQUFDLFNBQXdCO1FBQ25DLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxJQUNJLFlBQVksQ0FBQyxXQUFrQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxJQUNJLFlBQVksQ0FBQyxXQUFrQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQWFELGFBQWE7SUFDYixXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxFQUFFO1lBQzNDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0QixLQUFLLGFBQWEsQ0FBQyxLQUFLO2dCQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQzFDLEtBQUssYUFBYSxDQUFDLFVBQVU7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQztZQUMzRSxLQUFLLGFBQWEsQ0FBQyxRQUFRO2dCQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxLQUFLLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDN0U7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDdEQsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztpQkFDSDthQUNGO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQ3RELElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7aUJBQ0g7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7NEdBNUZVLGVBQWU7Z0dBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUgzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2Qjs2SkFlSyxRQUFRO3NCQURYLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQVNGLFlBQVk7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNjcmVlbkNvbnRleHQgfSBmcm9tICcuL3NjcmVlbi1jb250ZXh0JztcbmltcG9ydCB7IFNjcmVlblNwYW5uaW5nIH0gZnJvbSAnLi9zY3JlZW4tc3Bhbm5pbmcnO1xuXG4vKiogU3Bhbm5pbmcgbW9kZSBjb25kaXRpb25zIGZvciB1c2Ugd2l0aCB7QGxpbmsgSWZTcGFuRGlyZWN0aXZlfS4gKi9cbmV4cG9ydCB0eXBlIFNwYW5Db25kaXRpb24gPVxuICB8ICdkdWFsLWhvcml6b250YWwnXG4gIHwgJ2R1YWwtdmVydGljYWwnXG4gIHwgJ25vbmUnXG4gIHwgJ211bHRpJztcbi8qKlxuICogRW51bWVyYXRpb24gb2Ygc3Bhbm5pbmcgbW9kZSBjb25kaXRpb25zIHZhbHVlcyBmb3IgdXNlIHdpdGhcbiAqIHtAbGluayBJZlNwYW5EaXJlY3RpdmV9LlxuICovXG5leHBvcnQgY29uc3QgU3BhbkNvbmRpdGlvbiA9IHtcbiAgLyoqIFNjcmVlbiBzcGFubmluZyBtb2RlIGlzIGR1YWwgaG9yaXpvbnRhbCB2aWV3cG9ydHMuICovXG4gIFZlcnRpY2FsOiAnZHVhbC1ob3Jpem9udGFsJyBhcyBTcGFuQ29uZGl0aW9uLFxuICAvKiogU2NyZWVuIHNwYW5uaW5nIG1vZGUgaXMgZHVhbCB2ZXJ0aWNhbCB2aWV3cG9ydHMuICovXG4gIEhvcml6b250YWw6ICdkdWFsLXZlcnRpY2FsJyBhcyBTcGFuQ29uZGl0aW9uLFxuICAvKiogTm8gc2NyZWVuIHNwYW5uaW5nIChzaW5nbGUgc2NyZWVuIG1vZGUpLiAqL1xuICBOb25lOiAnbm9uZScgYXMgU3BhbkNvbmRpdGlvbixcbiAgLyoqIEFueSBzY3JlZW4gc3Bhbm5pbmcgbW9kZSBpcyBhY3RpdmUgKG11bHRpIHNjcmVlbiBtb2RlKS4gKi9cbiAgTXVsdGk6ICdtdWx0aScgYXMgU3BhbkNvbmRpdGlvbixcbn07XG5cbi8qKlxuICogU2hvd3MgdGVtcGxhdGUgb25seSBpZiB0aGUgY3VycmVudCBzY3JlZW4gc3Bhbm5pbmcgbW9kZSBtYXRjaGVzXG4gKiBzcGVjaWZpZWQge0BsaW5rIFNwYW5Db25kaXRpb259LlxuICpcbiAqIEJlaGF2ZXMgbGlrZSBgbmdJZmAsIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSB7QGxpbmsgU3BhbkNvbmRpdGlvbn0gaW5zdGVhZCBvZlxuICogYSBib29sZWFuIGV4cHJlc3Npb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDxwICpmZElkU3Bhbj1cIidtdWx0aSdcIj5UaGlzIHRleHQgd2lsbCBvbmx5IGJlIHZpc2libGUgb24gbXVsdGkgc2NyZWVuIGRldmljZXMuPC9wPlxuICogQGV4YW1wbGVcbiAqIDxwICpmZElkU3Bhbj1cIidub25lJzsgZWxzZSBhbHRcIj5UaGlzIHRleHQgd2lsbCBvbmx5IGJlIHZpc2libGUgb24gc2luZ2xlIHNjcmVlbiBkZXZpY2VzLjwvcD5cbiAqIDxuZy10ZW1wbGF0ZSAjYWx0XCI+VGhpcyB0ZXh0IHdpbGwgb25seSBiZSB2aXNpYmxlIG9uIG11bHRpIHNjcmVlbiBkZXZpY2VzLjwvbmctdGVtcGxhdGU+XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmZElmU3Bhbl0nLFxufSlcbmV4cG9ydCBjbGFzcyBJZlNwYW5EaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNjcmVlbkNvbnRleHRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbmRpdGlvbjogU3BhbkNvbmRpdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHRoZW5UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBlbHNlVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGhlblZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxUPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVsc2VWaWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8VD4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIHNwYW5uaW5nIG1vZGUgY29uZGl0aW9uIHRoYXQgZGVmaW5lcyBpZiB0aGUgdGVtcGxhdGUgc2hvdWxkIGJlIHNob3duLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZGl0aW9uIFRoZSBzcGFubmluZyBtb2RlIGNvbmRpdGlvbiBmb3Igc2hvd2luZyB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZmRJZlNwYW4oY29uZGl0aW9uOiBTcGFuQ29uZGl0aW9uKSB7XG4gICAgaWYgKGNvbmRpdGlvbiAhPT0gdGhpcy5jb25kaXRpb24pIHtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEEgdGVtcGxhdGUgdG8gc2hvdyBpZiB0aGUgc3BhbiBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuICovXG4gIEBJbnB1dCgpXG4gIHNldCBmZElmU3BhblRoZW4odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMudGhlblRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gICAgdGhpcy50aGVuVmlld1JlZiA9IG51bGw7XG4gICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gIH1cblxuICAvKiogQSB0ZW1wbGF0ZSB0byBzaG93IGlmIHRoZSBzcGFuIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gZmFsc2UuICovXG4gIEBJbnB1dCgpXG4gIHNldCBmZElmU3BhbkVsc2UodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuZWxzZVRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gICAgdGhpcy50aGVuVmlld1JlZiA9IG51bGw7XG4gICAgdGhpcy51cGRhdGVWaWV3KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjcmVlbkNvbnRleHQ6IFNjcmVlbkNvbnRleHQsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxUPlxuICApIHtcbiAgICB0aGlzLnRoZW5UZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICAgIHRoaXMuc2NyZWVuQ29udGV4dFN1YnNjcmlwdGlvbiA9IHRoaXMuc2NyZWVuQ29udGV4dFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlVmlldygpKTtcbiAgfVxuXG4gIC8qKiBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc2NyZWVuQ29udGV4dFN1YnNjcmlwdGlvbiAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5zY3JlZW5Db250ZXh0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaENvbmRpdGlvbigpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZGl0aW9uKSB7XG4gICAgICBjYXNlIFNwYW5Db25kaXRpb24uTXVsdGk6XG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlbkNvbnRleHQuaXNNdWx0aVNjcmVlbjtcbiAgICAgIGNhc2UgU3BhbkNvbmRpdGlvbi5Ib3Jpem9udGFsOlxuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5Db250ZXh0LnNjcmVlblNwYW5uaW5nID09PSBTY3JlZW5TcGFubmluZy5EdWFsVmVydGljYWw7XG4gICAgICBjYXNlIFNwYW5Db25kaXRpb24uVmVydGljYWw6XG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlbkNvbnRleHQuc2NyZWVuU3Bhbm5pbmcgPT09IFNjcmVlblNwYW5uaW5nLkR1YWxIb3Jpem9udGFsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuQ29udGV4dC5zY3JlZW5TcGFubmluZyA9PT0gU2NyZWVuU3Bhbm5pbmcuTm9uZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZpZXcoKSB7XG4gICAgY29uc3QgbWF0Y2ggPSB0aGlzLm1hdGNoQ29uZGl0aW9uKCk7XG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGlmICghdGhpcy50aGVuVmlld1JlZikge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5lbHNlVmlld1JlZiA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnRoZW5UZW1wbGF0ZVJlZikge1xuICAgICAgICAgIHRoaXMudGhlblZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgdGhpcy50aGVuVGVtcGxhdGVSZWZcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5lbHNlVmlld1JlZikge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgdGhpcy50aGVuVmlld1JlZiA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmVsc2VUZW1wbGF0ZVJlZikge1xuICAgICAgICAgIHRoaXMuZWxzZVZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgdGhpcy5lbHNlVGVtcGxhdGVSZWZcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=