UNPKG

@nativescript-community/ui-drawer

Version:

Easily add a side drawer (side menu) to your projects.

224 lines 21.7 kB
import { Component, Directive, ElementRef, Inject, NgModule, ViewContainerRef } from '@angular/core'; import { registerElement } from '@nativescript/angular'; import { Drawer } from '@nativescript-community/ui-drawer'; import * as i0 from "@angular/core"; const _c0 = ["*"]; const LEFTDRAWER = 'LeftDrawer'; const RIGHTDRAWER = 'RightDrawer'; const TOPDRAWER = 'TopDrawer'; const BOTTOMDRAWER = 'BottomDrawer'; const MAINCONTENT = 'MainContent'; /** * This is the SideDrawer component. It separates your mobile app's screen * into a main part and a menu part whereby the menu part is shown upon a swipe * gesture using a transition effect. */ export class DrawerComponent { elementRef; viewContainer; drawer; mainTemplate; drawerTemplate; _gestureEnabled; constructor(elementRef, viewContainer) { this.elementRef = elementRef; this.viewContainer = viewContainer; this.drawer = this.elementRef.nativeElement; } get nativeElement() { return this.drawer; } set gestureEnabled(value) { this._gestureEnabled = value; this.updateGestureEnabled(); } updateGestureEnabled() { this.drawer.gestureEnabled = this._gestureEnabled; } static ɵfac = function DrawerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DrawerComponent)(i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(ViewContainerRef)); }; static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawerComponent, selectors: [["Drawer"]], ngContentSelectors: _c0, decls: 1, vars: 0, template: function DrawerComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵprojectionDef(); i0.ɵɵprojection(0); } }, encapsulation: 2 }); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawerComponent, [{ type: Component, args: [{ selector: 'Drawer', template: '<ng-content></ng-content>' }] }], () => [{ type: i0.ElementRef, decorators: [{ type: Inject, args: [ElementRef] }] }, { type: i0.ViewContainerRef, decorators: [{ type: Inject, args: [ViewContainerRef] }] }], null); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DrawerComponent, { className: "DrawerComponent", filePath: "module.ts", lineNumber: 26 }); })(); /** * Directive identifying the left drawer */ export class LeftDrawerDirective { _elementRef; constructor(_elementRef) { this._elementRef = _elementRef; this._elementRef.nativeElement.id = LEFTDRAWER; } static ɵfac = function LeftDrawerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LeftDrawerDirective)(i0.ɵɵdirectiveInject(ElementRef)); }; static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: LeftDrawerDirective, selectors: [["", "leftDrawer", ""]] }); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LeftDrawerDirective, [{ type: Directive, args: [{ selector: '[leftDrawer]' }] }], () => [{ type: i0.ElementRef, decorators: [{ type: Inject, args: [ElementRef] }] }], null); })(); /** * Directive identifying the right drawer */ export class RightDrawerDirective { _elementRef; constructor(_elementRef) { this._elementRef = _elementRef; this._elementRef.nativeElement.id = RIGHTDRAWER; } static ɵfac = function RightDrawerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RightDrawerDirective)(i0.ɵɵdirectiveInject(ElementRef)); }; static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: RightDrawerDirective, selectors: [["", "rightDrawer", ""]] }); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RightDrawerDirective, [{ type: Directive, args: [{ selector: '[rightDrawer]' }] }], () => [{ type: i0.ElementRef, decorators: [{ type: Inject, args: [ElementRef] }] }], null); })(); /** * Directive identifying the right drawer */ export class TopDrawerDirective { _elementRef; constructor(_elementRef) { this._elementRef = _elementRef; this._elementRef.nativeElement.id = TOPDRAWER; } static ɵfac = function TopDrawerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TopDrawerDirective)(i0.ɵɵdirectiveInject(ElementRef)); }; static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TopDrawerDirective, selectors: [["", "topDrawer", ""]] }); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TopDrawerDirective, [{ type: Directive, args: [{ selector: '[topDrawer]' }] }], () => [{ type: i0.ElementRef, decorators: [{ type: Inject, args: [ElementRef] }] }], null); })(); /** * Directive identifying the right drawer */ export class BottomDrawerDirective { _elementRef; constructor(_elementRef) { this._elementRef = _elementRef; this._elementRef.nativeElement.id = BOTTOMDRAWER; } static ɵfac = function BottomDrawerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || BottomDrawerDirective)(i0.ɵɵdirectiveInject(ElementRef)); }; static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BottomDrawerDirective, selectors: [["", "bottomDrawer", ""]] }); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BottomDrawerDirective, [{ type: Directive, args: [{ selector: '[bottomDrawer]' }] }], () => [{ type: i0.ElementRef, decorators: [{ type: Inject, args: [ElementRef] }] }], null); })(); /** * Directive identifying the main content. */ export class MainContentDirective { _elementRef; constructor(_elementRef) { this._elementRef = _elementRef; this._elementRef.nativeElement.id = MAINCONTENT; } static ɵfac = function MainContentDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MainContentDirective)(i0.ɵɵdirectiveInject(ElementRef)); }; static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: MainContentDirective, selectors: [["", "mainContent", ""]] }); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MainContentDirective, [{ type: Directive, args: [{ selector: '[mainContent]' }] }], () => [{ type: i0.ElementRef, decorators: [{ type: Inject, args: [ElementRef] }] }], null); })(); const sideDrawerMeta = { insertChild: (parent, child) => { const drawer = parent; const childView = child; if (childView.id === MAINCONTENT) { drawer.mainContent = childView; } if (childView.id === LEFTDRAWER) { drawer.leftDrawer = childView; } if (childView.id === RIGHTDRAWER) { drawer.rightDrawer = childView; } if (childView.id === TOPDRAWER) { drawer.topDrawer = childView; } if (childView.id === BOTTOMDRAWER) { drawer.bottomDrawer = childView; } }, removeChild: (parent, child) => { const drawer = parent; const childView = child; if (childView.id === MAINCONTENT) { drawer.mainContent = null; } if (childView.id === LEFTDRAWER) { drawer.leftDrawer = null; } if (childView.id === RIGHTDRAWER) { drawer.rightDrawer = null; } if (childView.id === TOPDRAWER) { drawer.topDrawer = null; } if (childView.id === BOTTOMDRAWER) { drawer.bottomDrawer = null; } } }; /** * Directives identifying the Drawer. */ export const SIDEDRAWER_DIRECTIVES = [LeftDrawerDirective, RightDrawerDirective, TopDrawerDirective, BottomDrawerDirective, MainContentDirective]; registerElement('Drawer', () => Drawer, sideDrawerMeta); /** * NgModule containing all of the RadSideDrawer directives. */ export class DrawerModule { static ɵfac = function DrawerModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DrawerModule)(); }; static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DrawerModule }); static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({}); } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawerModule, [{ type: NgModule, args: [{ declarations: [DrawerComponent, SIDEDRAWER_DIRECTIVES], exports: [DrawerComponent, SIDEDRAWER_DIRECTIVES] }] }], null, null); })(); (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DrawerModule, { declarations: [DrawerComponent, LeftDrawerDirective, RightDrawerDirective, TopDrawerDirective, BottomDrawerDirective, MainContentDirective], exports: [DrawerComponent, LeftDrawerDirective, RightDrawerDirective, TopDrawerDirective, BottomDrawerDirective, MainContentDirective] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3VpLWRyYXdlci9hbmd1bGFyL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQWlDLE1BQU0sRUFBUyxRQUFRLEVBQXVCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hLLE9BQU8sRUFBeUIsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFFM0QsTUFBTSxVQUFVLEdBQVcsWUFBWSxDQUFDO0FBQ3hDLE1BQU0sV0FBVyxHQUFXLGFBQWEsQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBVyxXQUFXLENBQUM7QUFDdEMsTUFBTSxZQUFZLEdBQVcsY0FBYyxDQUFDO0FBQzVDLE1BQU0sV0FBVyxHQUFXLGFBQWEsQ0FBQztBQVExQzs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLGVBQWU7SUFPZTtJQUEwRDtJQU4xRixNQUFNLENBQVM7SUFDZixZQUFZLENBQTBCO0lBQ3RDLGNBQWMsQ0FBMEI7SUFFdkMsZUFBZSxDQUFVO0lBRWpDLFlBQXVDLFVBQXNCLEVBQW9DLGFBQStCO1FBQXpGLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBb0Msa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQzVILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLG9CQUFv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LENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUVsSixlQUFlLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUV4RDs7R0FFRztBQUtILE1BQU0sT0FBTyxZQUFZO3NHQUFaLFlBQVk7NERBQVosWUFBWTs7O2lGQUFaLFlBQVk7Y0FKeEIsUUFBUTtlQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRSxxQkFBcUIsQ0FBQztnQkFDdEQsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLHFCQUFxQixDQUFDO2FBQ3BEOzt3RkFDWSxZQUFZLG1CQS9JWixlQUFlLEVBK0JmLG1CQUFtQixFQVduQixvQkFBb0IsRUFZcEIsa0JBQWtCLEVBWWxCLHFCQUFxQixFQVlyQixvQkFBb0IsYUE5RXBCLGVBQWUsRUErQmYsbUJBQW1CLEVBV25CLG9CQUFvQixFQVlwQixrQkFBa0IsRUFZbEIscUJBQXFCLEVBWXJCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgTmdNb2R1bGUsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nVmlldywgVmlld0NsYXNzTWV0YSwgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcbmltcG9ydCB7IERyYXdlciB9IGZyb20gJ0BuYXRpdmVzY3JpcHQtY29tbXVuaXR5L3VpLWRyYXdlcic7XG5cbmNvbnN0IExFRlREUkFXRVI6IHN0cmluZyA9ICdMZWZ0RHJhd2VyJztcbmNvbnN0IFJJR0hURFJBV0VSOiBzdHJpbmcgPSAnUmlnaHREcmF3ZXInO1xuY29uc3QgVE9QRFJBV0VSOiBzdHJpbmcgPSAnVG9wRHJhd2VyJztcbmNvbnN0IEJPVFRPTURSQVdFUjogc3RyaW5nID0gJ0JvdHRvbURyYXdlcic7XG5jb25zdCBNQUlOQ09OVEVOVDogc3RyaW5nID0gJ01haW5Db250ZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtRXZlbnRBcmdzIHtcbiAgICBvYmplY3Q6IGFueTtcbiAgICB2aWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcbiAgICByZXR1cm5WYWx1ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgU2lkZURyYXdlciBjb21wb25lbnQuIEl0IHNlcGFyYXRlcyB5b3VyIG1vYmlsZSBhcHAncyBzY3JlZW5cbiAqIGludG8gYSBtYWluIHBhcnQgYW5kIGEgbWVudSBwYXJ0IHdoZXJlYnkgdGhlIG1lbnUgcGFydCBpcyBzaG93biB1cG9uIGEgc3dpcGVcbiAqIGdlc3R1cmUgdXNpbmcgYSB0cmFuc2l0aW9uIGVmZmVjdC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdEcmF3ZXInLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgZHJhd2VyOiBEcmF3ZXI7XG4gICAgcHVibGljIG1haW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudFJlZj47XG4gICAgcHVibGljIGRyYXdlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50UmVmPjtcblxuICAgIHByaXZhdGUgX2dlc3R1cmVFbmFibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChFbGVtZW50UmVmKSBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKSBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5kcmF3ZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogRHJhd2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd2VyO1xuICAgIH1cblxuICAgIHNldCBnZXN0dXJlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9nZXN0dXJlRW5hYmxlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZUdlc3R1cmVFbmFibGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHZXN0dXJlRW5hYmxlZCgpIHtcbiAgICAgICAgdGhpcy5kcmF3ZXIuZ2VzdHVyZUVuYWJsZWQgPSB0aGlzLl9nZXN0dXJlRW5hYmxlZDtcbiAgICB9XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIGlkZW50aWZ5aW5nIHRoZSBsZWZ0IGRyYXdlclxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tsZWZ0RHJhd2VyXSdcbn0pXG5leHBvcnQgY2xhc3MgTGVmdERyYXdlckRpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pZCA9IExFRlREUkFXRVI7XG4gICAgfVxufVxuLyoqXG4gKiBEaXJlY3RpdmUgaWRlbnRpZnlpbmcgdGhlIHJpZ2h0IGRyYXdlclxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tyaWdodERyYXdlcl0nXG59KVxuZXhwb3J0IGNsYXNzIFJpZ2h0RHJhd2VyRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlkID0gUklHSFREUkFXRVI7XG4gICAgfVxufVxuXG4vKipcbiAqIERpcmVjdGl2ZSBpZGVudGlmeWluZyB0aGUgcmlnaHQgZHJhd2VyXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RvcERyYXdlcl0nXG59KVxuZXhwb3J0IGNsYXNzIFRvcERyYXdlckRpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pZCA9IFRPUERSQVdFUjtcbiAgICB9XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIGlkZW50aWZ5aW5nIHRoZSByaWdodCBkcmF3ZXJcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYm90dG9tRHJhd2VyXSdcbn0pXG5leHBvcnQgY2xhc3MgQm90dG9tRHJhd2VyRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlkID0gQk9UVE9NRFJBV0VSO1xuICAgIH1cbn1cblxuLyoqXG4gKiBEaXJlY3RpdmUgaWRlbnRpZnlpbmcgdGhlIG1haW4gY29udGVudC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWFpbkNvbnRlbnRdJ1xufSlcbmV4cG9ydCBjbGFzcyBNYWluQ29udGVudERpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IoQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pZCA9IE1BSU5DT05URU5UO1xuICAgIH1cbn1cblxuY29uc3Qgc2lkZURyYXdlck1ldGE6IFZpZXdDbGFzc01ldGEgPSB7XG4gICAgaW5zZXJ0Q2hpbGQ6IChwYXJlbnQ6IE5nVmlldywgY2hpbGQ6IE5nVmlldykgPT4ge1xuICAgICAgICBjb25zdCBkcmF3ZXIgPSBwYXJlbnQgYXMgYW55IGFzIERyYXdlcjtcbiAgICAgICAgY29uc3QgY2hpbGRWaWV3ID0gY2hpbGQ7XG5cbiAgICAgICAgaWYgKGNoaWxkVmlldy5pZCA9PT0gTUFJTkNPTlRFTlQpIHtcbiAgICAgICAgICAgIGRyYXdlci5tYWluQ29udGVudCA9IGNoaWxkVmlldztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGlsZFZpZXcuaWQgPT09IExFRlREUkFXRVIpIHtcbiAgICAgICAgICAgIGRyYXdlci5sZWZ0RHJhd2VyID0gY2hpbGRWaWV3O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZFZpZXcuaWQgPT09IFJJR0hURFJBV0VSKSB7XG4gICAgICAgICAgICBkcmF3ZXIucmlnaHREcmF3ZXIgPSBjaGlsZFZpZXc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkVmlldy5pZCA9PT0gVE9QRFJBV0VSKSB7XG4gICAgICAgICAgICBkcmF3ZXIudG9wRHJhd2VyID0gY2hpbGRWaWV3O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZFZpZXcuaWQgPT09IEJPVFRPTURSQVdFUikge1xuICAgICAgICAgICAgZHJhd2VyLmJvdHRvbURyYXdlciA9IGNoaWxkVmlldztcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlQ2hpbGQ6IChwYXJlbnQ6IE5nVmlldywgY2hpbGQ6IE5nVmlldykgPT4ge1xuICAgICAgICBjb25zdCBkcmF3ZXIgPSBwYXJlbnQgYXMgYW55IGFzIERyYXdlcjtcbiAgICAgICAgY29uc3QgY2hpbGRWaWV3ID0gY2hpbGQ7XG5cbiAgICAgICAgaWYgKGNoaWxkVmlldy5pZCA9PT0gTUFJTkNPTlRFTlQpIHtcbiAgICAgICAgICAgIGRyYXdlci5tYWluQ29udGVudCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGRWaWV3LmlkID09PSBMRUZURFJBV0VSKSB7XG4gICAgICAgICAgICBkcmF3ZXIubGVmdERyYXdlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkVmlldy5pZCA9PT0gUklHSFREUkFXRVIpIHtcbiAgICAgICAgICAgIGRyYXdlci5yaWdodERyYXdlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkVmlldy5pZCA9PT0gVE9QRFJBV0VSKSB7XG4gICAgICAgICAgICBkcmF3ZXIudG9wRHJhd2VyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGRWaWV3LmlkID09PSBCT1RUT01EUkFXRVIpIHtcbiAgICAgICAgICAgIGRyYXdlci5ib3R0b21EcmF3ZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLyoqXG4gKiBEaXJlY3RpdmVzIGlkZW50aWZ5aW5nIHRoZSBEcmF3ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBTSURFRFJBV0VSX0RJUkVDVElWRVMgPSBbTGVmdERyYXdlckRpcmVjdGl2ZSwgUmlnaHREcmF3ZXJEaXJlY3RpdmUsIFRvcERyYXdlckRpcmVjdGl2ZSwgQm90dG9tRHJhd2VyRGlyZWN0aXZlLCBNYWluQ29udGVudERpcmVjdGl2ZV07XG5cbnJlZ2lzdGVyRWxlbWVudCgnRHJhd2VyJywgKCkgPT4gRHJhd2VyLCBzaWRlRHJhd2VyTWV0YSk7XG5cbi8qKlxuICogTmdNb2R1bGUgY29udGFpbmluZyBhbGwgb2YgdGhlIFJhZFNpZGVEcmF3ZXIgZGlyZWN0aXZlcy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtEcmF3ZXJDb21wb25lbnQsIFNJREVEUkFXRVJfRElSRUNUSVZFU10sXG4gICAgZXhwb3J0czogW0RyYXdlckNvbXBvbmVudCwgU0lERURSQVdFUl9ESVJFQ1RJVkVTXVxufSlcbmV4cG9ydCBjbGFzcyBEcmF3ZXJNb2R1bGUge31cbiJdfQ==