theme-lib
Version:
This is a simple example Angular Library published to npm.
461 lines • 51.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ChangeDetectorRef, } from '@angular/core';
import { NavigationEnd, Router } from '@angular/router';
import { of as observableOf } from 'rxjs';
import { filter, delay, takeWhile } from 'rxjs/operators';
import { NbSearchService } from './search.service';
import { NbThemeService } from '../../services/theme.service';
import { NbOverlayService, NbPortalDirective } from '../cdk';
/*
* search-field-component is used under the hood by nb-search component
* can't be used itself
*/
var NbSearchFieldComponent = /** @class */ (function () {
function NbSearchFieldComponent() {
this.show = false;
this.close = new EventEmitter();
this.search = new EventEmitter();
}
Object.defineProperty(NbSearchFieldComponent.prototype, "showClass", {
get: /**
* @return {?}
*/
function () {
return this.show;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "modalZoomin", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_MODAL_ZOOMIN;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "rotateLayout", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_ROTATE_LAYOUT;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "modalMove", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_MODAL_MOVE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "curtain", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_CURTAIN;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "columnCurtain", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_COLUMN_CURTAIN;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "modalDrop", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_MODAL_DROP;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbSearchFieldComponent.prototype, "modalHalf", {
get: /**
* @return {?}
*/
function () {
return this.type === NbSearchFieldComponent.TYPE_MODAL_HALF;
},
enumerable: true,
configurable: true
});
/**
* @param {?} __0
* @return {?}
*/
NbSearchFieldComponent.prototype.ngOnChanges = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var show = _a.show;
/** @type {?} */
var becameHidden = !show.isFirstChange() && show.currentValue === false;
if (becameHidden && this.inputElement) {
this.inputElement.nativeElement.value = '';
}
this.focusInput();
};
/**
* @return {?}
*/
NbSearchFieldComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.focusInput();
};
/**
* @return {?}
*/
NbSearchFieldComponent.prototype.emitClose = /**
* @return {?}
*/
function () {
this.close.emit();
};
/**
* @param {?} term
* @return {?}
*/
NbSearchFieldComponent.prototype.submitSearch = /**
* @param {?} term
* @return {?}
*/
function (term) {
if (term) {
this.search.emit(term);
}
};
/**
* @return {?}
*/
NbSearchFieldComponent.prototype.focusInput = /**
* @return {?}
*/
function () {
if (this.show && this.inputElement) {
this.inputElement.nativeElement.focus();
}
};
NbSearchFieldComponent.TYPE_MODAL_ZOOMIN = 'modal-zoomin';
NbSearchFieldComponent.TYPE_ROTATE_LAYOUT = 'rotate-layout';
NbSearchFieldComponent.TYPE_MODAL_MOVE = 'modal-move';
NbSearchFieldComponent.TYPE_CURTAIN = 'curtain';
NbSearchFieldComponent.TYPE_COLUMN_CURTAIN = 'column-curtain';
NbSearchFieldComponent.TYPE_MODAL_DROP = 'modal-drop';
NbSearchFieldComponent.TYPE_MODAL_HALF = 'modal-half';
NbSearchFieldComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-search-field',
changeDetection: ChangeDetectionStrategy.OnPush,
template: "\n <div class=\"search\" (keyup.esc)=\"emitClose()\">\n <button (click)=\"emitClose()\">\n <i class=\"nb-close-circled\"></i>\n </button>\n <div class=\"form-wrapper\">\n <form class=\"form\" (keyup.enter)=\"submitSearch(searchInput.value)\">\n <div class=\"form-content\">\n <input class=\"search-input\"\n #searchInput\n autocomplete=\"off\"\n [attr.placeholder]=\"placeholder\"\n tabindex=\"-1\"\n (blur)=\"focusInput()\"/>\n </div>\n <span class=\"info\">{{ hint }}</span>\n </form>\n </div>\n </div>\n ",
styles: [":host button{margin:0;padding:0;cursor:pointer;border:none;background:0 0}:host button:focus{box-shadow:none;outline:0}:host input{border-top:0;border-right:0;border-left:0;background:0 0;border-radius:0;line-height:1;display:inline-block;box-sizing:border-box;padding:.05rem 0;-webkit-appearance:none}:host input:focus{outline:0}:host input::-webkit-input-placeholder{opacity:.3}:host input::-ms-input-placeholder{opacity:.3}:host input::placeholder{opacity:.3}:host span{font-size:90%;font-weight:700;display:block;width:75%;margin:0 auto;padding:.85rem 0;text-align:right}:host.modal-zoomin{display:block}:host.modal-zoomin .search{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;position:fixed;z-index:1050;top:0;left:0;width:100%;height:100vh;pointer-events:none;opacity:0;transition:opacity .5s}:host.modal-zoomin .search::after,:host.modal-zoomin .search::before{content:'';position:absolute;width:calc(100% + 15px);height:calc(100% + 15px);pointer-events:none}:host.modal-zoomin .search::before{top:0;left:0;border-right-width:0;border-bottom-width:0;-webkit-transform:translate3d(-15px,-15px,0);transform:translate3d(-15px,-15px,0)}:host.modal-zoomin .search::after{right:0;bottom:0;border-top-width:0;border-left-width:0;-webkit-transform:translate3d(15px,15px,0);transform:translate3d(15px,15px,0)}:host.modal-zoomin .search button{position:absolute;top:3rem;font-size:2.5rem;opacity:0;-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);transition:opacity .5s,transform .5s,-webkit-transform .5s}[dir=ltr] :host.modal-zoomin .search button{right:3rem}[dir=rtl] :host.modal-zoomin .search button{left:3rem}:host.modal-zoomin .search input{font-size:10vw;width:75%}:host.modal-zoomin .search form{opacity:0;-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);transition:opacity .5s,transform .5s,-webkit-transform .5s}:host.modal-zoomin.show .search{pointer-events:auto;opacity:1}:host.modal-zoomin.show .search::after,:host.modal-zoomin.show .search::before{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transition:transform .5s;transition:transform .5s,-webkit-transform .5s}:host.modal-zoomin.show .search button{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}:host.modal-zoomin.show .search form{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}@media screen and (max-width:40rem){:host.modal-zoomin form{margin:5rem 0 1rem}:host.modal-zoomin span{text-align:left}}", "/deep/ nb-layout.rotate-layout{position:fixed;overflow:hidden;width:100%}/deep/ nb-layout.rotate-layout .scrollable-container{position:relative;z-index:10001;transition:transform .5s cubic-bezier(.2,1,.3,1);transition:transform .5s cubic-bezier(.2,1,.3,1),-webkit-transform .5s cubic-bezier(.2,1,.3,1)}/deep/ nb-layout.rotate-layout.with-search .scrollable-container{transition:transform .5s cubic-bezier(.2,1,.3,1);transition:transform .5s cubic-bezier(.2,1,.3,1),-webkit-transform .5s cubic-bezier(.2,1,.3,1);-webkit-transform-origin:50vw 50vh;transform-origin:50vw 50vh;-webkit-transform:perspective(1000px) translate3d(0,50vh,0) rotate3d(1,0,0,30deg);transform:perspective(1000px) translate3d(0,50vh,0) rotate3d(1,0,0,30deg);pointer-events:none}:host.rotate-layout{position:absolute;display:block;width:100vw;height:100vh;pointer-events:none;opacity:0;transition-property:opacity;transition-delay:.4s}:host.rotate-layout .search{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;z-index:1050;position:fixed;top:0;left:0;width:100%;height:50vh;pointer-events:none;opacity:0;transition:opacity .5s cubic-bezier(.2,1,.3,1)}:host.rotate-layout .search button{position:absolute;top:3rem;font-size:2.5rem;opacity:0;-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);transition:opacity .5s,transform .5s,-webkit-transform .5s;transition-timing-function:cubic-bezier(.2,1,.3,1)}[dir=ltr] :host.rotate-layout .search button{right:3rem}[dir=rtl] :host.rotate-layout .search button{left:3rem}:host.rotate-layout .search form{margin:5rem 0;opacity:0;-webkit-transform:scale3d(.7,.7,1);transform:scale3d(.7,.7,1);transition:opacity .5s,transform .5s,-webkit-transform .5s;transition-timing-function:cubic-bezier(.2,1,.3,1)}:host.rotate-layout .search input{font-size:7vw;width:75%}:host.rotate-layout.show{opacity:1;transition-delay:0s}:host.rotate-layout.show .search{pointer-events:auto;opacity:1}:host.rotate-layout.show .search button{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}:host.rotate-layout.show .search form{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}", "/deep/ nb-layout.modal-move .layout{transition:transform .5s;transition:transform .5s,-webkit-transform .5s}/deep/ nb-layout.modal-move.with-search .layout{-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);pointer-events:none}:host.modal-move .search{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;position:fixed;z-index:1050;top:0;left:0;width:100%;height:100vh;pointer-events:none;opacity:0;transition:opacity .5s}:host.modal-move .search button{position:absolute;top:3rem;font-size:2.5rem;opacity:0;transition:opacity .5s}[dir=ltr] :host.modal-move .search button{right:3rem}[dir=rtl] :host.modal-move .search button{left:3rem}:host.modal-move .search form{margin:5rem 0;opacity:0;-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);transition:opacity .5s,transform .5s,-webkit-transform .5s}:host.modal-move .search input{font-size:10vw;width:75%;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);-webkit-transform-origin:0 50%;transform-origin:0 50%;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}:host.modal-move.show .search{pointer-events:auto;opacity:1}:host.modal-move.show .search button{opacity:1}:host.modal-move.show .search form{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}:host.modal-move.show .search input{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);transition-duration:.5s}@media screen and (max-width:40rem){:host.modal-move span{text-align:left}}", ":host.curtain .search{position:fixed;z-index:1050;top:0;left:100%;overflow:hidden;height:100vh;width:100%;padding:3rem;pointer-events:none;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition-delay:.4s;transition-timing-function:ease-out}:host.curtain .search::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition-timing-function:ease-out}:host.curtain .search button{font-size:2.5rem;position:absolute;top:3rem;transition:opacity .1s .3s}[dir=ltr] :host.curtain .search button{right:3rem}[dir=rtl] :host.curtain .search button{left:3rem}:host.curtain .search form{width:50%;opacity:0;-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);transition:opacity .5s,transform .5s,-webkit-transform .5s}:host.curtain .search input{width:100%;font-size:6vw}:host.curtain.show .search{width:100%;pointer-events:auto;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);transition-delay:0s}:host.curtain.show .search::after{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);transition-delay:.4s}:host.curtain.show .search button{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}:host.curtain.show .search form{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}@media screen and (max-width:40em){:host.curtain span{width:90%}:host.curtain input{font-size:2em;width:90%}}/deep/ nb-layout.curtain .scrollable-container{position:relative;z-index:0}", "/deep/ nb-layout.column-curtain.with-search .layout{pointer-events:none}:host.column-curtain{display:block;position:fixed;z-index:1050;top:0;left:50%;overflow:hidden;width:50%;height:100vh;pointer-events:none}:host.column-curtain::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);-webkit-transform-origin:0 50%;transform-origin:0 50%;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition-timing-function:cubic-bezier(.86,0,.07,1)}:host.column-curtain .search{position:relative;padding:2.5rem 1.5rem 0;background:0 0}:host.column-curtain .search button{position:absolute;top:2rem;font-size:2.5rem;opacity:0;transition:opacity .5s}[dir=ltr] :host.column-curtain .search button{right:2rem}[dir=rtl] :host.column-curtain .search button{left:2rem}:host.column-curtain .search form{width:85%;-webkit-transform:translate3d(-150%,0,0);transform:translate3d(-150%,0,0);transition:transform .3s;transition:transform .3s,-webkit-transform .3s}:host.column-curtain .search input{font-size:2.5rem;width:100%}:host.column-curtain .search span{font-size:85%}:host.column-curtain.show{pointer-events:auto}:host.column-curtain.show::before{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}:host.column-curtain.show .search form{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transition-delay:.15s;transition-timing-function:cubic-bezier(.86,0,.07,1)}:host.column-curtain.show .search button{opacity:1;z-index:100}@media screen and (max-width:40rem){:host.column-curtain span{width:90%}:host.column-curtain input{font-size:2rem;width:90%}}", "/deep/ nb-layout.modal-drop .layout{position:relative;transition:transform .4s,opacity .4s,-webkit-transform .4s;transition-timing-function:cubic-bezier(.4,0,.2,1)}/deep/ nb-layout.modal-drop.with-search .layout{opacity:0;-webkit-transform:scale3d(.9,.9,1);transform:scale3d(.9,.9,1);pointer-events:none}:host.modal-drop .search{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;z-index:1050;position:fixed;top:0;left:0;width:100%;height:100vh;background:0 0;pointer-events:none}:host.modal-drop .search::before{content:'';position:absolute;top:0;right:0;width:100%;height:100%;opacity:0;transition:opacity .4s}:host.modal-drop .search button{font-size:2.5rem;position:absolute;top:3rem;display:block;opacity:0;transition:opacity .4s}[dir=ltr] :host.modal-drop .search button{right:3rem}[dir=rtl] :host.modal-drop .search button{left:3rem}:host.modal-drop .search form{position:relative;margin:5rem 0 2rem}:host.modal-drop .search input{font-size:6vw;width:60%;padding:.25rem;text-align:center;opacity:0;transition:opacity .4s}:host.modal-drop .search span{position:relative;z-index:9;display:block;width:60%;padding:.85rem 0;opacity:0;-webkit-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0);transition:opacity .4s,transform .4s,-webkit-transform .4s}:host.modal-drop .search .form-content{position:relative;z-index:10;overflow:hidden;-webkit-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0);transition:transform .4s;transition:transform .4s,-webkit-transform .4s}:host.modal-drop .search .form-content::after{content:'';position:absolute;top:0;left:20%;width:60%;height:105%;opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0}:host.modal-drop.show .search{pointer-events:auto}:host.modal-drop.show .search::before{opacity:1}:host.modal-drop.show .search button{opacity:1}:host.modal-drop.show .search .form-content{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transition:none}:host.modal-drop.show .search .form-content::after{-webkit-animation:.8s cubic-bezier(.4,0,.2,1) forwards scaleUpDown;animation:.8s cubic-bezier(.4,0,.2,1) forwards scaleUpDown}:host.modal-drop.show .search input{opacity:1;transition:opacity .4s}:host.modal-drop.show .search span{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transition-delay:.4s;transition-timing-function:ease-out}@-webkit-keyframes scaleUpDown{0%{opacity:1;-webkit-transform:scale3d(1,0,1);transform:scale3d(1,0,1)}50%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transform-origin:50% 0;transform-origin:50% 0;transition-timing-function:ease-out}50.1%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition-timing-function:ease-out}100%{opacity:1;-webkit-transform:scale3d(1,0,1);transform:scale3d(1,0,1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition-timing-function:ease-out}}@keyframes scaleUpDown{0%{opacity:1;-webkit-transform:scale3d(1,0,1);transform:scale3d(1,0,1)}50%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transform-origin:50% 0;transform-origin:50% 0;transition-timing-function:ease-out}50.1%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition-timing-function:ease-out}100%{opacity:1;-webkit-transform:scale3d(1,0,1);transform:scale3d(1,0,1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition-timing-function:ease-out}}@media screen and (max-width:40rem){:host.modal-drop form{margin:2rem 0}:host.modal-drop input{width:100%;left:0}}", "/deep/ nb-layout.modal-half .layout{transition:transform .6s,opacity .6s,-webkit-transform .6s;transition-timing-function:cubic-bezier(.2,1,.3,1)}/deep/ nb-layout.modal-half.with-search .layout{-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);pointer-events:none}:host.modal-half .search{text-align:center;position:fixed;z-index:1050;top:0;left:0;overflow:hidden;width:100%;height:100vh;background:0 0;pointer-events:none}:host.modal-half .search::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .6s cubic-bezier(.2,1,.3,1)}:host.modal-half .search button{font-size:2.5rem;position:absolute;top:3rem;display:block;z-index:100;opacity:0;-webkit-transform:scale3d(.8,.8,1);transform:scale3d(.8,.8,1);transition:opacity .6s,transform .6s,-webkit-transform .6s;transition-timing-function:cubic-bezier(.2,1,.3,1)}[dir=ltr] :host.modal-half .search button{right:3rem}[dir=rtl] :host.modal-half .search button{left:3rem}:host.modal-half .search .form-wrapper{position:absolute;display:flex;justify-content:center;align-items:center;width:100%;height:50%;transition:transform .6s;transition:transform .6s,-webkit-transform .6s;transition-timing-function:cubic-bezier(.2,1,.3,1);-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}:host.modal-half .search form{width:75%;margin:0 auto}:host.modal-half .search input{font-size:7vw;width:100%}:host.modal-half.show .search{pointer-events:auto}:host.modal-half.show .search::before{opacity:1}:host.modal-half.show .search button{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}:host.modal-half.show .search .form-wrapper{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}"]
}] }
];
NbSearchFieldComponent.propDecorators = {
type: [{ type: Input }],
placeholder: [{ type: Input }],
hint: [{ type: Input }],
show: [{ type: Input }],
close: [{ type: Output }],
search: [{ type: Output }],
inputElement: [{ type: ViewChild, args: ['searchInput',] }],
showClass: [{ type: HostBinding, args: ['class.show',] }],
modalZoomin: [{ type: HostBinding, args: ['class.modal-zoomin',] }],
rotateLayout: [{ type: HostBinding, args: ['class.rotate-layout',] }],
modalMove: [{ type: HostBinding, args: ['class.modal-move',] }],
curtain: [{ type: HostBinding, args: ['class.curtain',] }],
columnCurtain: [{ type: HostBinding, args: ['class.column-curtain',] }],
modalDrop: [{ type: HostBinding, args: ['class.modal-drop',] }],
modalHalf: [{ type: HostBinding, args: ['class.modal-half',] }]
};
return NbSearchFieldComponent;
}());
export { NbSearchFieldComponent };
if (false) {
/** @type {?} */
NbSearchFieldComponent.TYPE_MODAL_ZOOMIN;
/** @type {?} */
NbSearchFieldComponent.TYPE_ROTATE_LAYOUT;
/** @type {?} */
NbSearchFieldComponent.TYPE_MODAL_MOVE;
/** @type {?} */
NbSearchFieldComponent.TYPE_CURTAIN;
/** @type {?} */
NbSearchFieldComponent.TYPE_COLUMN_CURTAIN;
/** @type {?} */
NbSearchFieldComponent.TYPE_MODAL_DROP;
/** @type {?} */
NbSearchFieldComponent.TYPE_MODAL_HALF;
/** @type {?} */
NbSearchFieldComponent.prototype.type;
/** @type {?} */
NbSearchFieldComponent.prototype.placeholder;
/** @type {?} */
NbSearchFieldComponent.prototype.hint;
/** @type {?} */
NbSearchFieldComponent.prototype.show;
/** @type {?} */
NbSearchFieldComponent.prototype.close;
/** @type {?} */
NbSearchFieldComponent.prototype.search;
/** @type {?} */
NbSearchFieldComponent.prototype.inputElement;
}
/*
* Beautiful full-page search control.
*
* @stacked-example(Showcase, search/search-showcase.component)
*
* Basic setup:
*
* ```ts
* <nb-search type="rotate-layout"></nb-search>
* ```
* ### Installation
*
* Import `NbSearchModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbSearchModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Several animation types are available:
* modal-zoomin, rotate-layout, modal-move, curtain, column-curtain, modal-drop, modal-half
*
* It is also possible to handle search event using `NbSearchService`:
*
* @stacked-example(Search Event, search/search-event.component)
*
* @styles
*
* search-btn-open-fg:
* search-btn-close-fg:
* search-bg:
* search-bg-secondary:
* search-text:
* search-info:
* search-dash:
* search-placeholder:
*/
var NbSearchComponent = /** @class */ (function () {
function NbSearchComponent(searchService, themeService, router, overlayService, changeDetector) {
this.searchService = searchService;
this.themeService = themeService;
this.router = router;
this.overlayService = overlayService;
this.changeDetector = changeDetector;
this.alive = true;
this.showSearchField = false;
/*
* Search input placeholder
* @type {string}
*/
this.placeholder = 'Search...';
/*
* Hint showing under the input field to improve user experience
*
* @type {string}
*/
this.hint = 'Hit enter to search';
}
/**
* @return {?}
*/
NbSearchComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.router.events
.pipe(takeWhile(function () { return _this.alive; }), filter(function (event) { return event instanceof NavigationEnd; }))
.subscribe(function () { return _this.hideSearch(); });
this.searchService.onSearchActivate()
.pipe(takeWhile(function () { return _this.alive; }), filter(function (data) { return !_this.tag || data.tag === _this.tag; }))
.subscribe(function () { return _this.openSearch(); });
this.searchService.onSearchDeactivate()
.pipe(takeWhile(function () { return _this.alive; }), filter(function (data) { return !_this.tag || data.tag === _this.tag; }))
.subscribe(function () { return _this.hideSearch(); });
};
/**
* @return {?}
*/
NbSearchComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.overlayRef && this.overlayRef.hasAttached()) {
this.removeLayoutClasses();
this.overlayRef.detach();
}
this.alive = false;
};
/**
* @return {?}
*/
NbSearchComponent.prototype.openSearch = /**
* @return {?}
*/
function () {
var _this = this;
if (!this.overlayRef) {
this.overlayRef = this.overlayService.create();
this.overlayRef.attach(this.searchFieldPortal);
}
this.themeService.appendLayoutClass(this.type);
observableOf(null).pipe(delay(0)).subscribe(function () {
_this.themeService.appendLayoutClass('with-search');
_this.showSearchField = true;
_this.changeDetector.detectChanges();
});
};
/**
* @return {?}
*/
NbSearchComponent.prototype.hideSearch = /**
* @return {?}
*/
function () {
this.removeLayoutClasses();
this.showSearchField = false;
this.changeDetector.detectChanges();
this.searchButton.nativeElement.focus();
};
/**
* @param {?} term
* @return {?}
*/
NbSearchComponent.prototype.search = /**
* @param {?} term
* @return {?}
*/
function (term) {
this.searchService.submitSearch(term, this.tag);
this.hideSearch();
};
/**
* @private
* @return {?}
*/
NbSearchComponent.prototype.removeLayoutClasses = /**
* @private
* @return {?}
*/
function () {
var _this = this;
this.themeService.removeLayoutClass('with-search');
observableOf(null).pipe(delay(500)).subscribe(function () {
_this.themeService.removeLayoutClass(_this.type);
});
};
NbSearchComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-search',
changeDetection: ChangeDetectionStrategy.OnPush,
template: "\n <button #searchButton class=\"start-search\" (click)=\"openSearch()\">\n <i class=\"nb-search\"></i>\n </button>\n <nb-search-field\n *nbPortal\n [show]=\"showSearchField\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [hint]=\"hint\"\n (search)=\"search($event)\"\n (close)=\"hideSearch()\">\n </nb-search-field>\n ",
styles: [":host button{font-size:2rem;margin:0 auto;padding:0;cursor:pointer;border:none;background:0 0}:host button:focus{box-shadow:none;outline:0}/deep/ nb-layout.with-search .scrollable-container{position:relative;z-index:0}"]
}] }
];
/** @nocollapse */
NbSearchComponent.ctorParameters = function () { return [
{ type: NbSearchService },
{ type: NbThemeService },
{ type: Router },
{ type: NbOverlayService },
{ type: ChangeDetectorRef }
]; };
NbSearchComponent.propDecorators = {
tag: [{ type: Input }],
placeholder: [{ type: Input }],
hint: [{ type: Input }],
type: [{ type: Input }],
searchFieldPortal: [{ type: ViewChild, args: [NbPortalDirective,] }],
searchButton: [{ type: ViewChild, args: ['searchButton',] }]
};
return NbSearchComponent;
}());
export { NbSearchComponent };
if (false) {
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.alive;
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.overlayRef;
/** @type {?} */
NbSearchComponent.prototype.showSearchField;
/** @type {?} */
NbSearchComponent.prototype.tag;
/** @type {?} */
NbSearchComponent.prototype.placeholder;
/** @type {?} */
NbSearchComponent.prototype.hint;
/** @type {?} */
NbSearchComponent.prototype.type;
/** @type {?} */
NbSearchComponent.prototype.searchFieldPortal;
/** @type {?} */
NbSearchComponent.prototype.searchButton;
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.searchService;
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.themeService;
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.router;
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.overlayService;
/**
* @type {?}
* @private
*/
NbSearchComponent.prototype.changeDetector;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3RoZW1lLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUdsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixpQkFBaUIsRUFBRyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFNNUU7SUFBQTtRQThDVyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRVosVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0IsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUF3RXhDLENBQUM7SUFwRUMsc0JBQ0ksNkNBQVM7Ozs7UUFEYjtZQUVFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDOzs7T0FBQTtJQUVELHNCQUNJLCtDQUFXOzs7O1FBRGY7WUFFRSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssc0JBQXNCLENBQUMsaUJBQWlCLENBQUM7UUFDaEUsQ0FBQzs7O09BQUE7SUFFRCxzQkFD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QzVDLEtBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0JBL0hGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBRS9DLFFBQVEsRUFBRSw0WEFhVDs7aUJBQ0Y7Ozs7Z0JBL0xRLGVBQWU7Z0JBQ2YsY0FBYztnQkFOQyxNQUFNO2dCQU9yQixnQkFBZ0I7Z0JBWHZCLGlCQUFpQjs7O3NCQXFOaEIsS0FBSzs4QkFNTCxLQUFLO3VCQU9MLEtBQUs7dUJBT0wsS0FBSztvQ0FFTCxTQUFTLFNBQUMsaUJBQWlCOytCQUMzQixTQUFTLFNBQUMsY0FBYzs7SUEwRTNCLHdCQUFDO0NBQUEsQUFoSUQsSUFnSUM7U0E3R1ksaUJBQWlCOzs7Ozs7SUFFNUIsa0NBQXFCOzs7OztJQUNyQix1Q0FBaUM7O0lBQ2pDLDRDQUF3Qjs7SUFReEIsZ0NBQXFCOztJQU1yQix3Q0FBMkM7O0lBTzNDLGlDQUE4Qzs7SUFPOUMsaUNBQXNCOztJQUV0Qiw4Q0FBbUU7O0lBQ25FLHlDQUFpRTs7Ozs7SUFHL0QsMENBQXNDOzs7OztJQUN0Qyx5Q0FBb0M7Ozs7O0lBQ3BDLG1DQUFzQjs7Ozs7SUFDdEIsMkNBQXdDOzs7OztJQUN4QywyQ0FBeUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBkZWxheSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgTmJTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi9zZWFyY2guc2VydmljZSc7XHJcbmltcG9ydCB7IE5iVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IE5iT3ZlcmxheVNlcnZpY2UsIE5iT3ZlcmxheVJlZiwgTmJQb3J0YWxEaXJlY3RpdmUgIH0gZnJvbSAnLi4vY2RrJztcclxuXHJcbi8qXHJcbiAqIHNlYXJjaC1maWVsZC1jb21wb25lbnQgaXMgdXNlZCB1bmRlciB0aGUgaG9vZCBieSBuYi1zZWFyY2ggY29tcG9uZW50XHJcbiAqIGNhbid0IGJlIHVzZWQgaXRzZWxmXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25iLXNlYXJjaC1maWVsZCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnc3R5bGVzL3NlYXJjaC5jb21wb25lbnQubW9kYWwtem9vbWluLnNjc3MnLFxyXG4gICAgJ3N0eWxlcy9zZWFyY2guY29tcG9uZW50LmxheW91dC1yb3RhdGUuc2NzcycsXHJcbiAgICAnc3R5bGVzL3NlYXJjaC5jb21wb25lbnQubW9kYWwtbW92ZS5zY3NzJyxcclxuICAgICdzdHlsZXMvc2VhcmNoLmNvbXBvbmVudC5jdXJ0YWluLnNjc3MnLFxyXG4gICAgJ3N0eWxlcy9zZWFyY2guY29tcG9uZW50LmNvbHVtbi1jdXJ0YWluLnNjc3MnLFxyXG4gICAgJ3N0eWxlcy9zZWFyY2guY29tcG9uZW50Lm1vZGFsLWRyb3Auc2NzcycsXHJcbiAgICAnc3R5bGVzL3NlYXJjaC5jb21wb25lbnQubW9kYWwtaGFsZi5zY3NzJyxcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCIgKGtleXVwLmVzYyk9XCJlbWl0Q2xvc2UoKVwiPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJlbWl0Q2xvc2UoKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibmItY2xvc2UtY2lyY2xlZFwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm1cIiAoa2V5dXAuZW50ZXIpPVwic3VibWl0U2VhcmNoKHNlYXJjaElucHV0LnZhbHVlKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0XHJcbiAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJmb2N1c0lucHV0KClcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5mb1wiPnt7IGhpbnQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYlNlYXJjaEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEVfTU9EQUxfWk9PTUlOID0gJ21vZGFsLXpvb21pbic7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEVfUk9UQVRFX0xBWU9VVCA9ICdyb3RhdGUtbGF5b3V0JztcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRV9NT0RBTF9NT1ZFID0gJ21vZGFsLW1vdmUnO1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFX0NVUlRBSU4gPSAnY3VydGFpbic7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEVfQ09MVU1OX0NVUlRBSU4gPSAnY29sdW1uLWN1cnRhaW4nO1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFX01PREFMX0RST1AgPSAnbW9kYWwtZHJvcCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEVfTU9EQUxfSEFMRiA9ICdtb2RhbC1oYWxmJztcclxuXHJcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGludDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3cgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JykgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNob3cnKVxyXG4gIGdldCBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2RhbC16b29taW4nKVxyXG4gIGdldCBtb2RhbFpvb21pbigpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IE5iU2VhcmNoRmllbGRDb21wb25lbnQuVFlQRV9NT0RBTF9aT09NSU47XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdGF0ZS1sYXlvdXQnKVxyXG4gIGdldCByb3RhdGVMYXlvdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBOYlNlYXJjaEZpZWxkQ29tcG9uZW50LlRZUEVfUk9UQVRFX0xBWU9VVDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9kYWwtbW92ZScpXHJcbiAgZ2V0IG1vZGFsTW92ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IE5iU2VhcmNoRmllbGRDb21wb25lbnQuVFlQRV9NT0RBTF9NT1ZFO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXJ0YWluJylcclxuICBnZXQgY3VydGFpbigpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IE5iU2VhcmNoRmllbGRDb21wb25lbnQuVFlQRV9DVVJUQUlOO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2x1bW4tY3VydGFpbicpXHJcbiAgZ2V0IGNvbHVtbkN1cnRhaW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBOYlNlYXJjaEZpZWxkQ29tcG9uZW50LlRZUEVfQ09MVU1OX0NVUlRBSU47XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vZGFsLWRyb3AnKVxyXG4gIGdldCBtb2RhbERyb3AoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBOYlNlYXJjaEZpZWxkQ29tcG9uZW50LlRZUEVfTU9EQUxfRFJPUDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9kYWwtaGFsZicpXHJcbiAgZ2V0IG1vZGFsSGFsZigpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IE5iU2VhcmNoRmllbGRDb21wb25lbnQuVFlQRV9NT0RBTF9IQUxGO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoeyBzaG93IH06IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IGJlY2FtZUhpZGRlbiA9ICFzaG93LmlzRmlyc3RDaGFuZ2UoKSAmJiBzaG93LmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2U7XHJcbiAgICBpZiAoYmVjYW1lSGlkZGVuICYmIHRoaXMuaW5wdXRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvY3VzSW5wdXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgZW1pdENsb3NlKCkge1xyXG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRTZWFyY2godGVybSkge1xyXG4gICAgaWYgKHRlcm0pIHtcclxuICAgICAgdGhpcy5zZWFyY2guZW1pdCh0ZXJtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzSW5wdXQoKSB7XHJcbiAgICBpZiAodGhpcy5zaG93ICYmIHRoaXMuaW5wdXRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qXHJcbiAqIEJlYXV0aWZ1bCBmdWxsLXBhZ2Ugc2VhcmNoIGNvbnRyb2wuXHJcbiAqXHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU2hvd2Nhc2UsIHNlYXJjaC9zZWFyY2gtc2hvd2Nhc2UuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBCYXNpYyBzZXR1cDpcclxuICpcclxuICogYGBgdHNcclxuICogIDxuYi1zZWFyY2ggdHlwZT1cInJvdGF0ZS1sYXlvdXRcIj48L25iLXNlYXJjaD5cclxuICogYGBgXHJcbiAqICMjIyBJbnN0YWxsYXRpb25cclxuICpcclxuICogSW1wb3J0IGBOYlNlYXJjaE1vZHVsZWAgdG8geW91ciBmZWF0dXJlIG1vZHVsZS5cclxuICogYGBgdHNcclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbXHJcbiAqICAgXHQvLyAuLi5cclxuICogICAgIE5iU2VhcmNoTW9kdWxlLFxyXG4gKiAgIF0sXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBQYWdlTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICogIyMjIFVzYWdlXHJcbiAqXHJcbiAqIFNldmVyYWwgYW5pbWF0aW9uIHR5cGVzIGFyZSBhdmFpbGFibGU6XHJcbiAqIG1vZGFsLXpvb21pbiwgcm90YXRlLWxheW91dCwgbW9kYWwtbW92ZSwgY3VydGFpbiwgY29sdW1uLWN1cnRhaW4sIG1vZGFsLWRyb3AsIG1vZGFsLWhhbGZcclxuICpcclxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBoYW5kbGUgc2VhcmNoIGV2ZW50IHVzaW5nIGBOYlNlYXJjaFNlcnZpY2VgOlxyXG4gKlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKFNlYXJjaCBFdmVudCwgc2VhcmNoL3NlYXJjaC1ldmVudC5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEBzdHlsZXNcclxuICpcclxuICogc2VhcmNoLWJ0bi1vcGVuLWZnOlxyXG4gKiBzZWFyY2gtYnRuLWNsb3NlLWZnOlxyXG4gKiBzZWFyY2gtYmc6XHJcbiAqIHNlYXJjaC1iZy1zZWNvbmRhcnk6XHJcbiAqIHNlYXJjaC10ZXh0OlxyXG4gKiBzZWFyY2gtaW5mbzpcclxuICogc2VhcmNoLWRhc2g6XHJcbiAqIHNlYXJjaC1wbGFjZWhvbGRlcjpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmItc2VhcmNoJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdHlsZVVybHM6IFsnc3R5bGVzL3NlYXJjaC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8YnV0dG9uICNzZWFyY2hCdXR0b24gY2xhc3M9XCJzdGFydC1zZWFyY2hcIiAoY2xpY2spPVwib3BlblNlYXJjaCgpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwibmItc2VhcmNoXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8bmItc2VhcmNoLWZpZWxkXHJcbiAgICAgICpuYlBvcnRhbFxyXG4gICAgICBbc2hvd109XCJzaG93U2VhcmNoRmllbGRcIlxyXG4gICAgICBbdHlwZV09XCJ0eXBlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW2hpbnRdPVwiaGludFwiXHJcbiAgICAgIChzZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxyXG4gICAgICAoY2xvc2UpPVwiaGlkZVNlYXJjaCgpXCI+XHJcbiAgICA8L25iLXNlYXJjaC1maWVsZD5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmJTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xyXG4gIHByaXZhdGUgb3ZlcmxheVJlZjogTmJPdmVybGF5UmVmO1xyXG4gIHNob3dTZWFyY2hGaWVsZCA9IGZhbHNlO1xyXG5cclxuICAvKlxyXG4gICAqIFRhZ3MgYSBzZWFyY2ggd2l0aCBzb21lIElELCBjYW4gYmUgbGF0ZXIgdXNlZCBpbiB0aGUgc2VhcmNoIHNlcnZpY2VcclxuICAgKiB0byBkZXRlcm1pbmUgd2hpY2ggc2VhcmNoIGNvbXBvbmVudCB0cmlnZ2VyZWQgdGhlIGFjdGlvbiwgaWYgbXVsdGlwbGUgc2VhcmNoZXMgZXhpc3Qgb24gdGhlIHBhZ2UuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhZzogc3RyaW5nO1xyXG5cclxuICAvKlxyXG4gICAqIFNlYXJjaCBpbnB1dCBwbGFjZWhvbGRlclxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWFyY2guLi4nO1xyXG5cclxuICAvKlxyXG4gICAqIEhpbnQgc2hvd2luZyB1bmRlciB0aGUgaW5wdXQgZmllbGQgdG8gaW1wcm92ZSB1c2VyIGV4cGVyaWVuY2VcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGludDogc3RyaW5nID0gJ0hpdCBlbnRlciB0byBzZWFyY2gnO1xyXG5cclxuICAvKlxyXG4gICAqIFNlYXJjaCBkZXNpZ24gdHlwZSwgYXZhaWxhYmxlIHR5cGVzIGFyZVxyXG4gICAqIG1vZGFsLXpvb21pbiwgcm90YXRlLWxheW91dCwgbW9kYWwtbW92ZSwgY3VydGFpbiwgY29sdW1uLWN1cnRhaW4sIG1vZGFsLWRyb3AsIG1vZGFsLWhhbGZcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZChOYlBvcnRhbERpcmVjdGl2ZSkgc2VhcmNoRmllbGRQb3J0YWw6IE5iUG9ydGFsRGlyZWN0aXZlO1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEJ1dHRvbicpIHNlYXJjaEJ1dHRvbjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBOYlNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogTmJUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogTmJPdmVybGF5U2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuYWxpdmUpLFxyXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlU2VhcmNoKCkpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5vblNlYXJjaEFjdGl2YXRlKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuYWxpdmUpLFxyXG4gICAgICAgIGZpbHRlcihkYXRhID0+ICF0aGlzLnRhZyB8fCBkYXRhLnRhZyA9PT0gdGhpcy50YWcpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuU2VhcmNoKCkpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU2VydmljZS5vblNlYXJjaERlYWN0aXZhdGUoKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5hbGl2ZSksXHJcbiAgICAgICAgZmlsdGVyKGRhdGEgPT4gIXRoaXMudGFnIHx8IGRhdGEudGFnID09PSB0aGlzLnRhZyksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhpZGVTZWFyY2goKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5yZW1vdmVMYXlvdXRDbGFzc2VzKCk7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFsaXZlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvcGVuU2VhcmNoKCkge1xyXG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoKTtcclxuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnNlYXJjaEZpZWxkUG9ydGFsKTtcclxuICAgIH1cclxuXHJcbiAgIC