Socket
Socket
Sign inDemoInstall

ngc-scrolling-tabs

Package Overview
Dependencies
10
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.6 to 1.0.7

21

bundles/ngc-scrolling-tabs.umd.js

@@ -217,3 +217,2 @@ (function (global, factory) {

this.trackOpenTab = true;
this.scrollBarWidths = 52;
this.selectedTabChanged = new core.EventEmitter();

@@ -238,3 +237,3 @@ this.tabs = [];

function () {
// if there is a param of tabId and we want to track open tabs, mark the open tab as active
// if there is a param of tabId and we want to track open tabs mark the open tab as active
if (_this.route.snapshot.queryParams.tabId && _this.trackOpenTab) {

@@ -246,3 +245,4 @@ _this.markTabAsActive(_this.route.snapshot.queryParams.tabId);

}
if (_this.scrollToActive) {
// scroll to the active tab if setting is true and the tabs are larger than the window
if (_this.scrollToActive && _this.hasHiddenTabs()) {
_this.scrollToActiveTab();

@@ -410,3 +410,2 @@ }

this.firstVisibleTabIndex = activeTab;
// change the view to set the active tab as first tab on the left
for (var i = 0; i < activeTab; i++) {

@@ -419,2 +418,11 @@ if (this.tabList.nativeElement.children[i]) {

/**
* @return {?}
*/
ScrollingTabsComponent.prototype.hasHiddenTabs = /**
* @return {?}
*/
function () {
return this.widthOfList() > this.navWrapper.nativeElement.offsetWidth;
};
/**
* @param {?} tabId

@@ -468,3 +476,3 @@ * @return {?}

changeDetection: core.ChangeDetectionStrategy.OnPush,
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
}] }

@@ -484,3 +492,2 @@ ];

trackOpenTab: [{ type: core.Input }],
scrollBarWidths: [{ type: core.Input }],
selectedTabChanged: [{ type: core.Output }],

@@ -503,4 +510,2 @@ windowResize: [{ type: core.HostListener, args: ['window:resize',] }]

/** @type {?} */
ScrollingTabsComponent.prototype.scrollBarWidths;
/** @type {?} */
ScrollingTabsComponent.prototype.selectedTabChanged;

@@ -507,0 +512,0 @@ /** @type {?} */

@@ -15,3 +15,3 @@ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/router"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngc-scrolling-tabs",["exports","@angular/core","@angular/router","@angular/common"],e):e((t=t||self)["ngc-scrolling-tabs"]={},t.ng.core,t.ng.router,t.ng.common)}(this,(function(t,e,r,i){"use strict";

and limitations under the License.
***************************************************************************** */function n(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}var a=function(){function t(t,r,i){this.changeDetector=t,this.route=r,this.router=i,this.firstTabActive=!0,this.scrollToActive=!0,this.trackOpenTab=!0,this.scrollBarWidths=52,this.selectedTabChanged=new e.EventEmitter,this.tabs=[],this.leftOffset=0,this.firstVisibleTabIndex=-1,this.showLeftArrow=!1,this.showRightArrow=!1}return t.prototype.ngAfterViewInit=function(){var t=this;setTimeout((function(){t.route.snapshot.queryParams.tabId&&t.trackOpenTab?t.markTabAsActive(t.route.snapshot.queryParams.tabId):t.firstTabActive&&t.markFirstTabActive(),t.scrollToActive&&t.scrollToActiveTab(),t.redrawTabs(),t.changeDetector.detectChanges()}),0)},t.prototype.addTab=function(t){this.tabs.push(t)},t.prototype.removeTab=function(t){var e=this.tabs.indexOf(t);-1!==e&&this.tabs.splice(e,1)},t.prototype.windowResize=function(){this.redrawTabs()},t.prototype.redrawTabs=function(){this.widthOfList()+this.leftOffset>this.navWrapper.nativeElement.offsetWidth?this.showRightArrow=!0:this.showRightArrow=!1,this.leftOffset<0?this.showLeftArrow=!0:this.showLeftArrow=!1},t.prototype.widthOfList=function(){var t,e,r=0;try{for(var i=n(this.tabList.nativeElement.children),a=i.next();!a.done;a=i.next()){r+=a.value.offsetWidth}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return r},t.prototype.onScrollerLeftClick=function(){this.firstVisibleTabIndex--,this.leftOffset+=this.tabList.nativeElement.children[this.firstVisibleTabIndex].offsetWidth,this.redrawTabs()},t.prototype.onScrollerRightClick=function(){this.leftOffset-=this.tabList.nativeElement.children[this.firstVisibleTabIndex].offsetWidth,this.firstVisibleTabIndex++,this.redrawTabs()},t.prototype.onSelectedTabChanged=function(t){this.markTabAsActive(t.id),this.trackOpenTab&&this.pushCurrentTabToParam(t),this.selectedTabChanged.emit(t)},t.prototype.markFirstTabActive=function(){!this.tabs.find((function(t){return t.active}))&&this.tabs.length>0&&(this.tabs[0].active=!0)},t.prototype.scrollToActiveTab=function(){var t=this.tabs.findIndex((function(t){return t.active}));this.firstVisibleTabIndex=t;for(var e=0;e<t;e++)this.tabList.nativeElement.children[e]&&(this.leftOffset-=this.tabList.nativeElement.children[e].offsetWidth)},t.prototype.markTabAsActive=function(t){var e,r;try{for(var i=n(this.tabs),a=i.next();!a.done;a=i.next()){var s=a.value;s.active=!1,s.id===t&&(s.active=!0)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.prototype.pushCurrentTabToParam=function(t){this.router.navigate([],{relativeTo:this.route,queryParams:{tabId:t.id},queryParamsHandling:"merge"})},t.decorators=[{type:e.Component,args:[{selector:"ngc-scrolling-tabs",template:'<div class="wrap-selector">\n <div class="nav-tabs-boxed">\n <div class="scroller scroller-left" (click)="onScrollerLeftClick()" *ngIf="showLeftArrow">\n <svg class="arrow-img" xmlns="http://www.w3.org/2000/svg" version="1.0" width="157.000000pt" height="263.000000pt"\n viewBox="0 0 157.000000 263.000000" preserveAspectRatio="xMidYMid meet">\n <g transform="translate(0.000000,263.000000) scale(0.100000,-0.100000)" fill="currentColor" stroke="none">\n <path d="M653 1967 l-603 -602 0 -45 0 -45 603 -602 c710 -711 628 -655 764 -520 79 79 83 85 83 127 l0 45 -497 497 -498 498 498 498 497 497 0 45 c0 42 -4 48 -83 127 -136 135 -54 191 -764 -520z" />\n </g>\n </svg>\n </div>\n <div class="scroller scroller-right" (click)="onScrollerRightClick()" *ngIf="showRightArrow">\n <svg class="arrow-img" xmlns="http://www.w3.org/2000/svg" version="1.0" width="157.000000pt" height="263.000000pt"\n viewBox="0 0 157.000000 263.000000" preserveAspectRatio="xMidYMid meet">\n <g transform="translate(0.000000,263.000000) scale(0.100000,-0.100000)" fill="currentColor" stroke="none">\n <path d="M153 2477 c-79 -79 -83 -85 -83 -127 l0 -45 497 -497 498 -498 -498 -498 -497 -497 0 -45 c0 -42 4 -48 83 -127 136 -135 54 -191 764 520 l603 602 0 45 0 45 -603 602 c-710 711 -628 655 -764 520z" />\n </g>\n </svg>\n </div>\n <div class="nav-wrapper" #navWrapper>\n <ul class="nav nav-tabs list" role="tablist" #tabList [style.left.px]="leftOffset">\n <li *ngFor="let tab of tabs" class="nav-item">\n <a [ngClass]="tab.getTabClasses()" data-toggle="tab" href="javascript:void(0)" role="tab"\n attr.aria-controls="{{tab.title}}" (click)="onSelectedTabChanged(tab)">{{tab.title}}</a>\n </li>\n </ul>\n </div>\n <div class="tab-content">\n <ng-content></ng-content>\n </div>\n </div>\n</div>',changeDetection:e.ChangeDetectionStrategy.OnPush,styles:[".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]}]}],t.ctorParameters=function(){return[{type:e.ChangeDetectorRef},{type:r.ActivatedRoute},{type:r.Router}]},t.propDecorators={navWrapper:[{type:e.ViewChild,args:["navWrapper",{static:!1}]}],tabList:[{type:e.ViewChild,args:["tabList",{static:!1}]}],firstTabActive:[{type:e.Input}],scrollToActive:[{type:e.Input}],trackOpenTab:[{type:e.Input}],scrollBarWidths:[{type:e.Input}],selectedTabChanged:[{type:e.Output}],windowResize:[{type:e.HostListener,args:["window:resize"]}]},t}();var s=function(){function t(t,e,r){this.tabs=t,this.elementRef=e,this.renderer=r,this.active=!1}return t.prototype.ngOnInit=function(){this.tabs.addTab(this),this.renderer.addClass(this.elementRef.nativeElement,"tab-pane"),this.renderer.setAttribute(this.elementRef.nativeElement,"role","tabpanel")},t.prototype.ngOnDestroy=function(){this.tabs.removeTab(this)},t.prototype.getTabClasses=function(){return{"nav-link":!0,active:this.active}},t.decorators=[{type:e.Directive,args:[{selector:"[ngcScrollingTab], ngcScrollingTab"}]}],t.ctorParameters=function(){return[{type:a},{type:e.ElementRef},{type:e.Renderer2}]},t.propDecorators={id:[{type:e.Input}],title:[{type:e.Input}],active:[{type:e.HostBinding,args:["class.active"]},{type:e.Input}]},t}();var o=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[i.CommonModule],declarations:[a,s],exports:[a,s]}]}],t}();t.ScrollingTabsComponent=a,t.ScrollingTabsModule=o,t.ɵa=s,Object.defineProperty(t,"__esModule",{value:!0})}));
***************************************************************************** */function n(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}var a=function(){function t(t,r,i){this.changeDetector=t,this.route=r,this.router=i,this.firstTabActive=!0,this.scrollToActive=!0,this.trackOpenTab=!0,this.selectedTabChanged=new e.EventEmitter,this.tabs=[],this.leftOffset=0,this.firstVisibleTabIndex=-1,this.showLeftArrow=!1,this.showRightArrow=!1}return t.prototype.ngAfterViewInit=function(){var t=this;setTimeout((function(){t.route.snapshot.queryParams.tabId&&t.trackOpenTab?t.markTabAsActive(t.route.snapshot.queryParams.tabId):t.firstTabActive&&t.markFirstTabActive(),t.scrollToActive&&t.hasHiddenTabs()&&t.scrollToActiveTab(),t.redrawTabs(),t.changeDetector.detectChanges()}),0)},t.prototype.addTab=function(t){this.tabs.push(t)},t.prototype.removeTab=function(t){var e=this.tabs.indexOf(t);-1!==e&&this.tabs.splice(e,1)},t.prototype.windowResize=function(){this.redrawTabs()},t.prototype.redrawTabs=function(){this.widthOfList()+this.leftOffset>this.navWrapper.nativeElement.offsetWidth?this.showRightArrow=!0:this.showRightArrow=!1,this.leftOffset<0?this.showLeftArrow=!0:this.showLeftArrow=!1},t.prototype.widthOfList=function(){var t,e,r=0;try{for(var i=n(this.tabList.nativeElement.children),a=i.next();!a.done;a=i.next()){r+=a.value.offsetWidth}}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return r},t.prototype.onScrollerLeftClick=function(){this.firstVisibleTabIndex--,this.leftOffset+=this.tabList.nativeElement.children[this.firstVisibleTabIndex].offsetWidth,this.redrawTabs()},t.prototype.onScrollerRightClick=function(){this.leftOffset-=this.tabList.nativeElement.children[this.firstVisibleTabIndex].offsetWidth,this.firstVisibleTabIndex++,this.redrawTabs()},t.prototype.onSelectedTabChanged=function(t){this.markTabAsActive(t.id),this.trackOpenTab&&this.pushCurrentTabToParam(t),this.selectedTabChanged.emit(t)},t.prototype.markFirstTabActive=function(){!this.tabs.find((function(t){return t.active}))&&this.tabs.length>0&&(this.tabs[0].active=!0)},t.prototype.scrollToActiveTab=function(){var t=this.tabs.findIndex((function(t){return t.active}));this.firstVisibleTabIndex=t;for(var e=0;e<t;e++)this.tabList.nativeElement.children[e]&&(this.leftOffset-=this.tabList.nativeElement.children[e].offsetWidth)},t.prototype.hasHiddenTabs=function(){return this.widthOfList()>this.navWrapper.nativeElement.offsetWidth},t.prototype.markTabAsActive=function(t){var e,r;try{for(var i=n(this.tabs),a=i.next();!a.done;a=i.next()){var s=a.value;s.active=!1,s.id===t&&(s.active=!0)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}},t.prototype.pushCurrentTabToParam=function(t){this.router.navigate([],{relativeTo:this.route,queryParams:{tabId:t.id},queryParamsHandling:"merge"})},t.decorators=[{type:e.Component,args:[{selector:"ngc-scrolling-tabs",template:'<div class="wrap-selector">\n <div class="nav-tabs-boxed">\n <div class="scroller scroller-left" (click)="onScrollerLeftClick()" *ngIf="showLeftArrow">\n <svg class="arrow-img" xmlns="http://www.w3.org/2000/svg" version="1.0" width="157.000000pt" height="263.000000pt"\n viewBox="0 0 157.000000 263.000000" preserveAspectRatio="xMidYMid meet">\n <g transform="translate(0.000000,263.000000) scale(0.100000,-0.100000)" fill="currentColor" stroke="none">\n <path d="M653 1967 l-603 -602 0 -45 0 -45 603 -602 c710 -711 628 -655 764 -520 79 79 83 85 83 127 l0 45 -497 497 -498 498 498 498 497 497 0 45 c0 42 -4 48 -83 127 -136 135 -54 191 -764 -520z" />\n </g>\n </svg>\n </div>\n <div class="scroller scroller-right" (click)="onScrollerRightClick()" *ngIf="showRightArrow">\n <svg class="arrow-img" xmlns="http://www.w3.org/2000/svg" version="1.0" width="157.000000pt" height="263.000000pt"\n viewBox="0 0 157.000000 263.000000" preserveAspectRatio="xMidYMid meet">\n <g transform="translate(0.000000,263.000000) scale(0.100000,-0.100000)" fill="currentColor" stroke="none">\n <path d="M153 2477 c-79 -79 -83 -85 -83 -127 l0 -45 497 -497 498 -498 -498 -498 -497 -497 0 -45 c0 -42 4 -48 83 -127 136 -135 54 -191 764 520 l603 602 0 45 0 45 -603 602 c-710 711 -628 655 -764 520z" />\n </g>\n </svg>\n </div>\n <div class="nav-wrapper" #navWrapper>\n <ul class="nav nav-tabs list" role="tablist" #tabList [style.left.px]="leftOffset">\n <li *ngFor="let tab of tabs" class="nav-item">\n <a [ngClass]="tab.getTabClasses()" data-toggle="tab" href="javascript:void(0)" role="tab"\n attr.aria-controls="{{tab.title}}" (click)="onSelectedTabChanged(tab)">{{tab.title}}</a>\n </li>\n </ul>\n </div>\n <div class="tab-content">\n <ng-content></ng-content>\n </div>\n </div>\n</div>',changeDetection:e.ChangeDetectionStrategy.OnPush,styles:[".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]}]}],t.ctorParameters=function(){return[{type:e.ChangeDetectorRef},{type:r.ActivatedRoute},{type:r.Router}]},t.propDecorators={navWrapper:[{type:e.ViewChild,args:["navWrapper",{static:!1}]}],tabList:[{type:e.ViewChild,args:["tabList",{static:!1}]}],firstTabActive:[{type:e.Input}],scrollToActive:[{type:e.Input}],trackOpenTab:[{type:e.Input}],selectedTabChanged:[{type:e.Output}],windowResize:[{type:e.HostListener,args:["window:resize"]}]},t}();var s=function(){function t(t,e,r){this.tabs=t,this.elementRef=e,this.renderer=r,this.active=!1}return t.prototype.ngOnInit=function(){this.tabs.addTab(this),this.renderer.addClass(this.elementRef.nativeElement,"tab-pane"),this.renderer.setAttribute(this.elementRef.nativeElement,"role","tabpanel")},t.prototype.ngOnDestroy=function(){this.tabs.removeTab(this)},t.prototype.getTabClasses=function(){return{"nav-link":!0,active:this.active}},t.decorators=[{type:e.Directive,args:[{selector:"[ngcScrollingTab], ngcScrollingTab"}]}],t.ctorParameters=function(){return[{type:a},{type:e.ElementRef},{type:e.Renderer2}]},t.propDecorators={id:[{type:e.Input}],title:[{type:e.Input}],active:[{type:e.HostBinding,args:["class.active"]},{type:e.Input}]},t}();var o=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[i.CommonModule],declarations:[a,s],exports:[a,s]}]}],t}();t.ScrollingTabsComponent=a,t.ScrollingTabsModule=o,t.ɵa=s,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=ngc-scrolling-tabs.umd.min.js.map

@@ -21,3 +21,2 @@ /**

this.trackOpenTab = true;
this.scrollBarWidths = 52;
this.selectedTabChanged = new EventEmitter();

@@ -38,3 +37,3 @@ this.tabs = [];

() => {
// if there is a param of tabId and we want to track open tabs, mark the open tab as active
// if there is a param of tabId and we want to track open tabs mark the open tab as active
if (this.route.snapshot.queryParams.tabId && this.trackOpenTab) {

@@ -46,3 +45,4 @@ this.markTabAsActive(this.route.snapshot.queryParams.tabId);

}
if (this.scrollToActive) {
// scroll to the active tab if setting is true and the tabs are larger than the window
if (this.scrollToActive && this.hasHiddenTabs()) {
this.scrollToActiveTab();

@@ -166,3 +166,2 @@ }

this.firstVisibleTabIndex = activeTab;
// change the view to set the active tab as first tab on the left
for (let i = 0; i < activeTab; i++) {

@@ -175,2 +174,8 @@ if (this.tabList.nativeElement.children[i]) {

/**
* @return {?}
*/
hasHiddenTabs() {
return this.widthOfList() > this.navWrapper.nativeElement.offsetWidth;
}
/**
* @param {?} tabId

@@ -206,3 +211,3 @@ * @return {?}

changeDetection: ChangeDetectionStrategy.OnPush,
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
}] }

@@ -222,3 +227,2 @@ ];

trackOpenTab: [{ type: Input }],
scrollBarWidths: [{ type: Input }],
selectedTabChanged: [{ type: Output }],

@@ -239,4 +243,2 @@ windowResize: [{ type: HostListener, args: ['window:resize',] }]

/** @type {?} */
ScrollingTabsComponent.prototype.scrollBarWidths;
/** @type {?} */
ScrollingTabsComponent.prototype.selectedTabChanged;

@@ -269,2 +271,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmdjLXNjcm9sbGluZy10YWJzLyIsInNvdXJjZXMiOlsibGliL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUNqRSxTQUFTLEVBQWlCLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVXpELE1BQU0sT0FBTyxzQkFBc0I7Ozs7OztJQWdCakMsWUFBb0IsY0FBaUMsRUFBVSxLQUFxQixFQUFVLE1BQWM7UUFBeEYsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWm5HLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRXpFLFNBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZix5QkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUV5RixDQUFDOzs7O0lBRWpILGVBQWU7UUFDYixVQUFVOzs7UUFBQyxHQUFHLEVBQUU7WUFDZCwyRkFBMkY7WUFDM0YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJ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QyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUU7Z0JBQ2xCLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2pCO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVELHFCQUFxQixDQUFDLEdBQTBCO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDdEIsV0FBVyxFQUFFO2dCQUNYLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTthQUNkO1lBQ0QsbUJBQW1CLEVBQUUsT0FBTztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUEvSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDJwRUFBOEM7Z0JBRTlDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7OztZQVg0QyxpQkFBaUI7WUFFN0MsY0FBYztZQUF0QixNQUFNOzs7eUJBV1osU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7c0JBQ3pDLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzZCQUV0QyxLQUFLOzZCQUNMLEtBQUs7MkJBQ0wsS0FBSzs4QkFDTCxLQUFLO2lDQUNMLE1BQU07MkJBc0NOLFlBQVksU0FBQyxlQUFlOzs7O0lBN0M3Qiw0Q0FBbUU7O0lBQ25FLHlDQUE2RDs7SUFFN0QsZ0RBQStCOztJQUMvQixnREFBK0I7O0lBQy9CLDhDQUE2Qjs7SUFDN0IsaURBQThCOztJQUM5QixvREFBeUU7O0lBRXpFLHNDQUFtQzs7SUFDbkMsNENBQWU7O0lBQ2Ysc0RBQTBCOztJQUMxQiwrQ0FBc0I7O0lBQ3RCLGdEQUF1Qjs7Ozs7SUFFWCxnREFBeUM7Ozs7O0lBQUUsdUNBQTZCOzs7OztJQUFFLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLFxuICAgICAgICAgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZSB9IGZyb20gJy4vc2Nyb2xsaW5nLXRhYi5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2Mtc2Nyb2xsaW5nLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY3JvbGxpbmctdGFicy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGluZ1RhYnNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnbmF2V3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuYXZXcmFwcGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0YWJMaXN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHRhYkxpc3Q6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgZmlyc3RUYWJBY3RpdmUgPSB0cnVlO1xuICBASW5wdXQoKSBzY3JvbGxUb0FjdGl2ZSA9IHRydWU7XG4gIEBJbnB1dCgpIHRyYWNrT3BlblRhYiA9IHRydWU7XG4gIEBJbnB1dCgpIHNjcm9sbEJhcldpZHRocyA9IDUyO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRUYWJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTY3JvbGxpbmdUYWJEaXJlY3RpdmU+KCk7XG5cbiAgdGFiczogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlW10gPSBbXTtcbiAgbGVmdE9mZnNldCA9IDA7XG4gIGZpcnN0VmlzaWJsZVRhYkluZGV4ID0gLTE7XG4gIHNob3dMZWZ0QXJyb3cgPSBmYWxzZTtcbiAgc2hvd1JpZ2h0QXJyb3cgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIGlmIHRoZXJlIGlzIGEgcGFyYW0gb2YgdGFiSWQgYW5kIHdlIHdhbnQgdG8gdHJhY2sgb3BlbiB0YWJzLCBtYXJrIHRoZSBvcGVuIHRhYiBhcyBhY3RpdmVcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnRhYklkICYmIHRoaXMudHJhY2tPcGVuVGFiKSB7XG4gICAgICAgIHRoaXMubWFya1RhYkFzQWN0aXZlKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudGFiSWQpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmZpcnN0VGFiQWN0aXZlKSB7IC8vIGlmIHdlIHNob3VsZCBtYXJrIHRoZSBmaXJzdCB0YWIgYXMgYWN0aXZlIGlmIGEgYWN0aXZlIHRhYiBpcyBub3Qgc3BlY2lmaWVkXG4gICAgICAgIHRoaXMubWFya0ZpcnN0VGFiQWN0aXZlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNjcm9sbFRvQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVUYWIoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVkcmF3VGFicygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBhZGRUYWIodGFiOiBTY3JvbGxpbmdUYWJEaXJlY3RpdmUpIHtcbiAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xuICB9XG5cbiAgcmVtb3ZlVGFiKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZih0YWIpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMudGFicy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICB3aW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5yZWRyYXdUYWJzKCk7XG4gIH1cblxuICByZWRyYXdUYWJzKCkge1xuICAgIC8vIFRha2UgdGhlIHRvdGFsIHdpZHRoIG9mIHRoZSBsaXN0LiBTdWJ0cmFjdCBob3cgZmFyIHJpZ2h0IHdlIGFyZSBhbmQgc2VlIGlmIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZVxuICAgIC8vIHdpZHRoIG9mIHRoZSBjdXJyZW50IGRpc3BsYXlcbiAgICBpZiAodGhpcy53aWR0aE9mTGlzdCgpICsgdGhpcy5sZWZ0T2Zmc2V0ID4gdGhpcy5uYXZXcmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHRoaXMuc2hvd1JpZ2h0QXJyb3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dSaWdodEFycm93ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gc2VlIGlmIHdlIGhhdmUgc2Nyb2xsZWQgcmlnaHQgYW5kIHdlIGFyZSBub3QgYXQgdGhlIGxlZnQgbW9zdCBwb3NpdGlvblxuICAgIGlmICh0aGlzLmxlZnRPZmZzZXQgPCAwKSB7XG4gICAgICB0aGlzLnNob3dMZWZ0QXJyb3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dMZWZ0QXJyb3cgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB3aWR0aE9mTGlzdCgpIHtcbiAgICBsZXQgdG90YWxXaWR0aCA9IDA7XG4gICAgZm9yIChjb25zdCBsaSBvZiB0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbikge1xuICAgICAgdG90YWxXaWR0aCArPSBsaS5vZmZzZXRXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsV2lkdGg7XG4gIH1cblxuICBvblNjcm9sbGVyTGVmdENsaWNrKCkge1xuICAgIC8vIHdlIG5lZWQgdG8gZ28gbGVmdCBmb3IgdGhlIHdpZHRoIG9mIHRoZSBwcmV2aW91cyB0YWJcbiAgICB0aGlzLmZpcnN0VmlzaWJsZVRhYkluZGV4LS07XG4gICAgLy8gd2hlbiBtb3ZpbmcgbGVmdCB0aGUgbGVmdCBvZmZzZXQgaW5jcmVhc2VzXG4gICAgdGhpcy5sZWZ0T2Zmc2V0ICs9IHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW3RoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXhdLm9mZnNldFdpZHRoO1xuICAgIHRoaXMucmVkcmF3VGFicygpO1xuICB9XG5cbiAgb25TY3JvbGxlclJpZ2h0Q2xpY2soKSB7XG4gICAgLy8gd2hlbiBtb3ZpbmcgcmlnaHQgeW91IGRlc2NyZWFzZSB0aGUgbGVmdCBvZmZzZXQuIFdlIHdhbnQgdG8gZ28gcmlnaHQgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0YWJcbiAgICB0aGlzLmxlZnRPZmZzZXQgLT0gdGhpcy50YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bdGhpcy5maXJzdFZpc2libGVUYWJJbmRleF0ub2Zmc2V0V2lkdGg7XG4gICAgLy8gY2hhbmdlIHRoZSBpbmRleCBvZiB0aGUgdmlzaWJsZSB0YWIgbm93IHRoYXQgd2UgaGF2ZSBtb3ZlZFxuICAgIHRoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXgrKztcbiAgICB0aGlzLnJlZHJhd1RhYnMoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWRUYWJDaGFuZ2VkKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5tYXJrVGFiQXNBY3RpdmUodGFiLmlkKTtcbiAgICBpZiAodGhpcy50cmFja09wZW5UYWIpIHtcbiAgICAgIHRoaXMucHVzaEN1cnJlbnRUYWJUb1BhcmFtKHRhYik7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2VkLmVtaXQodGFiKTtcbiAgfVxuXG4gIG1hcmtGaXJzdFRhYkFjdGl2ZSgpIHtcbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZCh0ID0+IHQuYWN0aXZlKTtcbiAgICAvLyAgaWYgdGhlcmUgaXMgbm8gYWN0aXZlIHRhYiBhbmQgd2UgaGF2ZSB0YWJzIHNldCBmaXJzdCBvbmUgdG8gYWN0aXZlXG4gICAgaWYgKCFhY3RpdmVUYWIgJiYgdGhpcy50YWJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFic1swXS5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFRvQWN0aXZlVGFiKCkge1xuICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMudGFicy5maW5kSW5kZXgodCA9PiB0LmFjdGl2ZSk7XG4gICAgdGhpcy5maXJzdFZpc2libGVUYWJJbmRleCA9IGFjdGl2ZVRhYjtcblxuICAgIC8vIGNoYW5nZSB0aGUgdmlldyB0byBzZXQgdGhlIGFjdGl2ZSB0YWIgYXMgZmlyc3QgdGFiIG9uIHRoZSBsZWZ0XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVUYWI7IGkrKykge1xuICAgICAgaWYgKHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2ldKSB7XG4gICAgICAgIHRoaXMubGVmdE9mZnNldCAtPSB0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXS5vZmZzZXRXaWR0aDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtYXJrVGFiQXNBY3RpdmUodGFiSWQ6IGFueSkge1xuICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLnRhYnMpIHtcbiAgICAgIHQuYWN0aXZlID0gZmFsc2U7XG4gICAgICBpZiAodC5pZCA9PT0gdGFiSWQpIHtcbiAgICAgICAgdC5hY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1c2hDdXJyZW50VGFiVG9QYXJhbSh0YWI6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgdGFiSWQ6IHRhYi5pZFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmdjLXNjcm9sbGluZy10YWJzLyIsInNvdXJjZXMiOlsibGliL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUNqRSxTQUFTLEVBQWlCLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVXpELE1BQU0sT0FBTyxzQkFBc0I7Ozs7OztJQWVqQyxZQUFvQixjQUFpQyxFQUFVLEtBQXFCLEVBQVUsTUFBYztRQUF4RixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFYbkcsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDbkIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFekUsU0FBSSxHQUE0QixFQUFFLENBQUM7UUFDbkMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBRXlGLENBQUM7Ozs7SUFFakgsZUFBZTtRQUNiLFVBQVU7OztRQUFDLEdBQUcsRUFBRTtZQUNkLDBGQUEwRjtZQUMxRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUQs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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsXG4gICAgICAgICBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU2Nyb2xsaW5nVGFiRGlyZWN0aXZlIH0gZnJvbSAnLi9zY3JvbGxpbmctdGFiLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nYy1zY3JvbGxpbmctdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY3JvbGxpbmctdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsaW5nVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCduYXZXcmFwcGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5hdldyYXBwZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RhYkxpc3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiTGlzdDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBmaXJzdFRhYkFjdGl2ZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNjcm9sbFRvQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgdHJhY2tPcGVuVGFiID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkVGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsaW5nVGFiRGlyZWN0aXZlPigpO1xuXG4gIHRhYnM6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZVtdID0gW107XG4gIGxlZnRPZmZzZXQgPSAwO1xuICBmaXJzdFZpc2libGVUYWJJbmRleCA9IC0xO1xuICBzaG93TGVmdEFycm93ID0gZmFsc2U7XG4gIHNob3dSaWdodEFycm93ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBpZiB0aGVyZSBpcyBhIHBhcmFtIG9mIHRhYklkIGFuZCB3ZSB3YW50IHRvIHRyYWNrIG9wZW4gdGFicyBtYXJrIHRoZSBvcGVuIHRhYiBhcyBhY3RpdmVcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnRhYklkICYmIHRoaXMudHJhY2tPcGVuVGFiKSB7XG4gICAgICAgIHRoaXMubWFya1RhYkFzQWN0aXZlKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudGFiSWQpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmZpcnN0VGFiQWN0aXZlKSB7IC8vIGlmIHdlIHNob3VsZCBtYXJrIHRoZSBmaXJzdCB0YWIgYXMgYWN0aXZlIGlmIGEgYWN0aXZlIHRhYiBpcyBub3Qgc3BlY2lmaWVkXG4gICAgICAgIHRoaXMubWFya0ZpcnN0VGFiQWN0aXZlKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIHNjcm9sbCB0byB0aGUgYWN0aXZlIHRhYiBpZiBzZXR0aW5nIGlzIHRydWUgYW5kIHRoZSB0YWJzIGFyZSBsYXJnZXIgdGhhbiB0aGUgd2luZG93XG4gICAgICBpZiAodGhpcy5zY3JvbGxUb0FjdGl2ZSAmJiB0aGlzLmhhc0hpZGRlblRhYnMoKSkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlVGFiKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlZHJhd1RhYnMoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgYWRkVGFiKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgdGhpcy50YWJzLnB1c2godGFiKTtcbiAgfVxuXG4gIHJlbW92ZVRhYih0YWI6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJzLmluZGV4T2YodGFiKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnRhYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgd2luZG93UmVzaXplKCkge1xuICAgIHRoaXMucmVkcmF3VGFicygpO1xuICB9XG5cbiAgcmVkcmF3VGFicygpIHtcbiAgICAvLyBUYWtlIHRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgbGlzdC4gU3VidHJhY3QgaG93IGZhciByaWdodCB3ZSBhcmUgYW5kIHNlZSBpZiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB0aGVcbiAgICAvLyB3aWR0aCBvZiB0aGUgY3VycmVudCBkaXNwbGF5XG4gICAgaWYgKHRoaXMud2lkdGhPZkxpc3QoKSArIHRoaXMubGVmdE9mZnNldCA+IHRoaXMubmF2V3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLnNob3dSaWdodEFycm93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93UmlnaHRBcnJvdyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHNlZSBpZiB3ZSBoYXZlIHNjcm9sbGVkIHJpZ2h0IGFuZCB3ZSBhcmUgbm90IGF0IHRoZSBsZWZ0IG1vc3QgcG9zaXRpb25cbiAgICBpZiAodGhpcy5sZWZ0T2Zmc2V0IDwgMCkge1xuICAgICAgdGhpcy5zaG93TGVmdEFycm93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93TGVmdEFycm93ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgd2lkdGhPZkxpc3QoKSB7XG4gICAgbGV0IHRvdGFsV2lkdGggPSAwO1xuICAgIGZvciAoY29uc3QgbGkgb2YgdGhpcy50YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pIHtcbiAgICAgIHRvdGFsV2lkdGggKz0gbGkub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiB0b3RhbFdpZHRoO1xuICB9XG5cbiAgb25TY3JvbGxlckxlZnRDbGljaygpIHtcbiAgICAvLyB3ZSBuZWVkIHRvIGdvIGxlZnQgZm9yIHRoZSB3aWR0aCBvZiB0aGUgcHJldmlvdXMgdGFiXG4gICAgdGhpcy5maXJzdFZpc2libGVUYWJJbmRleC0tO1xuICAgIC8vIHdoZW4gbW92aW5nIGxlZnQgdGhlIGxlZnQgb2Zmc2V0IGluY3JlYXNlc1xuICAgIHRoaXMubGVmdE9mZnNldCArPSB0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlblt0aGlzLmZpcnN0VmlzaWJsZVRhYkluZGV4XS5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLnJlZHJhd1RhYnMoKTtcbiAgfVxuXG4gIG9uU2Nyb2xsZXJSaWdodENsaWNrKCkge1xuICAgIC8vIHdoZW4gbW92aW5nIHJpZ2h0IHlvdSBkZXNjcmVhc2UgdGhlIGxlZnQgb2Zmc2V0LiBXZSB3YW50IHRvIGdvIHJpZ2h0IHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdGFiXG4gICAgdGhpcy5sZWZ0T2Zmc2V0IC09IHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW3RoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXhdLm9mZnNldFdpZHRoO1xuICAgIC8vIGNoYW5nZSB0aGUgaW5kZXggb2YgdGhlIHZpc2libGUgdGFiIG5vdyB0aGF0IHdlIGhhdmUgbW92ZWRcbiAgICB0aGlzLmZpcnN0VmlzaWJsZVRhYkluZGV4Kys7XG4gICAgdGhpcy5yZWRyYXdUYWJzKCk7XG4gIH1cblxuICBvblNlbGVjdGVkVGFiQ2hhbmdlZCh0YWI6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZSkge1xuICAgIHRoaXMubWFya1RhYkFzQWN0aXZlKHRhYi5pZCk7XG4gICAgaWYgKHRoaXMudHJhY2tPcGVuVGFiKSB7XG4gICAgICB0aGlzLnB1c2hDdXJyZW50VGFiVG9QYXJhbSh0YWIpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlZC5lbWl0KHRhYik7XG4gIH1cblxuICBtYXJrRmlyc3RUYWJBY3RpdmUoKSB7XG4gICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQodCA9PiB0LmFjdGl2ZSk7XG4gICAgLy8gIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSB0YWIgYW5kIHdlIGhhdmUgdGFicyBzZXQgZmlyc3Qgb25lIHRvIGFjdGl2ZVxuICAgIGlmICghYWN0aXZlVGFiICYmIHRoaXMudGFicy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhYnNbMF0uYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb0FjdGl2ZVRhYigpIHtcbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZEluZGV4KHQgPT4gdC5hY3RpdmUpO1xuICAgIHRoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXggPSBhY3RpdmVUYWI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVUYWI7IGkrKykge1xuICAgICAgaWYgKHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2ldKSB7XG4gICAgICAgIHRoaXMubGVmdE9mZnNldCAtPSB0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXS5vZmZzZXRXaWR0aDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYXNIaWRkZW5UYWJzKCkge1xuICAgIHJldHVybiB0aGlzLndpZHRoT2ZMaXN0KCkgPiB0aGlzLm5hdldyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIG1hcmtUYWJBc0FjdGl2ZSh0YWJJZDogYW55KSB7XG4gICAgZm9yIChjb25zdCB0IG9mIHRoaXMudGFicykge1xuICAgICAgdC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIGlmICh0LmlkID09PSB0YWJJZCkge1xuICAgICAgICB0LmFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVzaEN1cnJlbnRUYWJUb1BhcmFtKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICB0YWJJZDogdGFiLmlkXG4gICAgICB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgIH0pO1xuICB9XG59XG4iXX0=

@@ -17,3 +17,2 @@ /**

this.trackOpenTab = true;
this.scrollBarWidths = 52;
this.selectedTabChanged = new EventEmitter();

@@ -38,3 +37,3 @@ this.tabs = [];

function () {
// if there is a param of tabId and we want to track open tabs, mark the open tab as active
// if there is a param of tabId and we want to track open tabs mark the open tab as active
if (_this.route.snapshot.queryParams.tabId && _this.trackOpenTab) {

@@ -46,3 +45,4 @@ _this.markTabAsActive(_this.route.snapshot.queryParams.tabId);

}
if (_this.scrollToActive) {
// scroll to the active tab if setting is true and the tabs are larger than the window
if (_this.scrollToActive && _this.hasHiddenTabs()) {
_this.scrollToActiveTab();

@@ -210,3 +210,2 @@ }

this.firstVisibleTabIndex = activeTab;
// change the view to set the active tab as first tab on the left
for (var i = 0; i < activeTab; i++) {

@@ -219,2 +218,11 @@ if (this.tabList.nativeElement.children[i]) {

/**
* @return {?}
*/
ScrollingTabsComponent.prototype.hasHiddenTabs = /**
* @return {?}
*/
function () {
return this.widthOfList() > this.navWrapper.nativeElement.offsetWidth;
};
/**
* @param {?} tabId

@@ -268,3 +276,3 @@ * @return {?}

changeDetection: ChangeDetectionStrategy.OnPush,
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
}] }

@@ -284,3 +292,2 @@ ];

trackOpenTab: [{ type: Input }],
scrollBarWidths: [{ type: Input }],
selectedTabChanged: [{ type: Output }],

@@ -304,4 +311,2 @@ windowResize: [{ type: HostListener, args: ['window:resize',] }]

/** @type {?} */
ScrollingTabsComponent.prototype.scrollBarWidths;
/** @type {?} */
ScrollingTabsComponent.prototype.selectedTabChanged;

@@ -334,2 +339,2 @@ /** @type {?} */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmdjLXNjcm9sbGluZy10YWJzLyIsInNvdXJjZXMiOlsibGliL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFDakUsU0FBUyxFQUFpQixZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RDtJQXNCRSxnQ0FBb0IsY0FBaUMsRUFBVSxLQUFxQixFQUFVLE1BQWM7UUFBeEYsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWm5HLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRXpFLFNBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZix5QkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUV5RixDQUFDOzs7O0lBRWpILGdEQUFlOzs7SUFBZjtRQUFBLGlCQWVDO1FBZEMsVUFBVTs7O1FBQUM7WUFDVCwyRkFBMkY7WUFDM0YsSUFBSSxLQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEtBQUksQ0FBQyxZ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Qjs7SUFDL0IsZ0RBQStCOztJQUMvQiw4Q0FBNkI7O0lBQzdCLGlEQUE4Qjs7SUFDOUIsb0RBQXlFOztJQUV6RSxzQ0FBbUM7O0lBQ25DLDRDQUFlOztJQUNmLHNEQUEwQjs7SUFDMUIsK0NBQXNCOztJQUN0QixnREFBdUI7Ozs7O0lBRVgsZ0RBQXlDOzs7OztJQUFFLHVDQUE2Qjs7Ozs7SUFBRSx3Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZixcbiAgICAgICAgIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTY3JvbGxpbmdUYWJEaXJlY3RpdmUgfSBmcm9tICcuL3Njcm9sbGluZy10YWIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdjLXNjcm9sbGluZy10YWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxpbmdUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ25hdldyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2V3JhcHBlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndGFiTGlzdCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJMaXN0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGZpcnN0VGFiQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2Nyb2xsVG9BY3RpdmUgPSB0cnVlO1xuICBASW5wdXQoKSB0cmFja09wZW5UYWIgPSB0cnVlO1xuICBASW5wdXQoKSBzY3JvbGxCYXJXaWR0aHMgPSA1MjtcbiAgQE91dHB1dCgpIHNlbGVjdGVkVGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsaW5nVGFiRGlyZWN0aXZlPigpO1xuXG4gIHRhYnM6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZVtdID0gW107XG4gIGxlZnRPZmZzZXQgPSAwO1xuICBmaXJzdFZpc2libGVUYWJJbmRleCA9IC0xO1xuICBzaG93TGVmdEFycm93ID0gZmFsc2U7XG4gIHNob3dSaWdodEFycm93ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBpZiB0aGVyZSBpcyBhIHBhcmFtIG9mIHRhYklkIGFuZCB3ZSB3YW50IHRvIHRyYWNrIG9wZW4gdGFicywgbWFyayB0aGUgb3BlbiB0YWIgYXMgYWN0aXZlXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy50YWJJZCAmJiB0aGlzLnRyYWNrT3BlblRhYikge1xuICAgICAgICB0aGlzLm1hcmtUYWJBc0FjdGl2ZSh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnRhYklkKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXJzdFRhYkFjdGl2ZSkgeyAvLyBpZiB3ZSBzaG91bGQgbWFyayB0aGUgZmlyc3QgdGFiIGFzIGFjdGl2ZSBpZiBhIGFjdGl2ZSB0YWIgaXMgbm90IHNwZWNpZmllZFxuICAgICAgICB0aGlzLm1hcmtGaXJzdFRhYkFjdGl2ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zY3JvbGxUb0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlVGFiKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlZHJhd1RhYnMoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgYWRkVGFiKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgdGhpcy50YWJzLnB1c2godGFiKTtcbiAgfVxuXG4gIHJlbW92ZVRhYih0YWI6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJzLmluZGV4T2YodGFiKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnRhYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgd2luZG93UmVzaXplKCkge1xuICAgIHRoaXMucmVkcmF3VGFicygpO1xuICB9XG5cbiAgcmVkcmF3VGFicygpIHtcbiAgICAvLyBUYWtlIHRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgbGlzdC4gU3VidHJhY3QgaG93IGZhciByaWdodCB3ZSBhcmUgYW5kIHNlZSBpZiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB0aGVcbiAgICAvLyB3aWR0aCBvZiB0aGUgY3VycmVudCBkaXNwbGF5XG4gICAgaWYgKHRoaXMud2lkdGhPZkxpc3QoKSArIHRoaXMubGVmdE9mZnNldCA+IHRoaXMubmF2V3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLnNob3dSaWdodEFycm93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93UmlnaHRBcnJvdyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHNlZSBpZiB3ZSBoYXZlIHNjcm9sbGVkIHJpZ2h0IGFuZCB3ZSBhcmUgbm90IGF0IHRoZSBsZWZ0IG1vc3QgcG9zaXRpb25cbiAgICBpZiAodGhpcy5sZWZ0T2Zmc2V0IDwgMCkge1xuICAgICAgdGhpcy5zaG93TGVmdEFycm93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93TGVmdEFycm93ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgd2lkdGhPZkxpc3QoKSB7XG4gICAgbGV0IHRvdGFsV2lkdGggPSAwO1xuICAgIGZvciAoY29uc3QgbGkgb2YgdGhpcy50YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4pIHtcbiAgICAgIHRvdGFsV2lkdGggKz0gbGkub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiB0b3RhbFdpZHRoO1xuICB9XG5cbiAgb25TY3JvbGxlckxlZnRDbGljaygpIHtcbiAgICAvLyB3ZSBuZWVkIHRvIGdvIGxlZnQgZm9yIHRoZSB3aWR0aCBvZiB0aGUgcHJldmlvdXMgdGFiXG4gICAgdGhpcy5maXJzdFZpc2libGVUYWJJbmRleC0tO1xuICAgIC8vIHdoZW4gbW92aW5nIGxlZnQgdGhlIGxlZnQgb2Zmc2V0IGluY3JlYXNlc1xuICAgIHRoaXMubGVmdE9mZnNldCArPSB0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlblt0aGlzLmZpcnN0VmlzaWJsZVRhYkluZGV4XS5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLnJlZHJhd1RhYnMoKTtcbiAgfVxuXG4gIG9uU2Nyb2xsZXJSaWdodENsaWNrKCkge1xuICAgIC8vIHdoZW4gbW92aW5nIHJpZ2h0IHlvdSBkZXNjcmVhc2UgdGhlIGxlZnQgb2Zmc2V0LiBXZSB3YW50IHRvIGdvIHJpZ2h0IHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdGFiXG4gICAgdGhpcy5sZWZ0T2Zmc2V0IC09IHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW3RoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXhdLm9mZnNldFdpZHRoO1xuICAgIC8vIGNoYW5nZSB0aGUgaW5kZXggb2YgdGhlIHZpc2libGUgdGFiIG5vdyB0aGF0IHdlIGhhdmUgbW92ZWRcbiAgICB0aGlzLmZpcnN0VmlzaWJsZVRhYkluZGV4Kys7XG4gICAgdGhpcy5yZWRyYXdUYWJzKCk7XG4gIH1cblxuICBvblNlbGVjdGVkVGFiQ2hhbmdlZCh0YWI6IFNjcm9sbGluZ1RhYkRpcmVjdGl2ZSkge1xuICAgIHRoaXMubWFya1RhYkFzQWN0aXZlKHRhYi5pZCk7XG4gICAgaWYgKHRoaXMudHJhY2tPcGVuVGFiKSB7XG4gICAgICB0aGlzLnB1c2hDdXJyZW50VGFiVG9QYXJhbSh0YWIpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlZC5lbWl0KHRhYik7XG4gIH1cblxuICBtYXJrRmlyc3RUYWJBY3RpdmUoKSB7XG4gICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQodCA9PiB0LmFjdGl2ZSk7XG4gICAgLy8gIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSB0YWIgYW5kIHdlIGhhdmUgdGFicyBzZXQgZmlyc3Qgb25lIHRvIGFjdGl2ZVxuICAgIGlmICghYWN0aXZlVGFiICYmIHRoaXMudGFicy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhYnNbMF0uYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb0FjdGl2ZVRhYigpIHtcbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZEluZGV4KHQgPT4gdC5hY3RpdmUpO1xuICAgIHRoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXggPSBhY3RpdmVUYWI7XG5cbiAgICAvLyBjaGFuZ2UgdGhlIHZpZXcgdG8gc2V0IHRoZSBhY3RpdmUgdGFiIGFzIGZpcnN0IHRhYiBvbiB0aGUgbGVmdFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aXZlVGFiOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpXSkge1xuICAgICAgICB0aGlzLmxlZnRPZmZzZXQgLT0gdGhpcy50YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV0ub2Zmc2V0V2lkdGg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWFya1RhYkFzQWN0aXZlKHRhYklkOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy50YWJzKSB7XG4gICAgICB0LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgaWYgKHQuaWQgPT09IHRhYklkKSB7XG4gICAgICAgIHQuYWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdXNoQ3VycmVudFRhYlRvUGFyYW0odGFiOiBTY3JvbGxpbmdUYWJEaXJlY3RpdmUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHRhYklkOiB0YWIuaWRcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmdjLXNjcm9sbGluZy10YWJzLyIsInNvdXJjZXMiOlsibGliL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFDakUsU0FBUyxFQUFpQixZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RDtJQXFCRSxnQ0FBb0IsY0FBaUMsRUFBVSxLQUFxQixFQUFVLE1BQWM7UUFBeEYsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWG5HLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ25CLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRXpFLFNBQUksR0FBNEIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZix5QkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUV5RixDQUFDOzs7O0lBRWpILGdEQUFlOzs7SUFBZjtRQUFBLGlCQWdCQztRQWZDLFVBQVU7OztRQUFDO1lBQ1QsMEZBQTBGO1lBQzFGLElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxLQUFJLENBQUMsWUFBWSxFQUFFO2dCQUM5RCxLQUFJLENBQUMs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U0FBQyxlQUFlOztJQThGL0IsNkJBQUM7Q0FBQSxBQWxKRCxJQWtKQztTQTVJWSxzQkFBc0I7OztJQUNqQyw0Q0FBbUU7O0lBQ25FLHlDQUE2RDs7SUFFN0QsZ0RBQStCOztJQUMvQixnREFBK0I7O0lBQy9CLDhDQUE2Qjs7SUFDN0Isb0RBQXlFOztJQUV6RSxzQ0FBbUM7O0lBQ25DLDRDQUFlOztJQUNmLHNEQUEwQjs7SUFDMUIsK0NBQXNCOztJQUN0QixnREFBdUI7Ozs7O0lBRVgsZ0RBQXlDOzs7OztJQUFFLHVDQUE2Qjs7Ozs7SUFBRSx3Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZixcbiAgICAgICAgIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTY3JvbGxpbmdUYWJEaXJlY3RpdmUgfSBmcm9tICcuL3Njcm9sbGluZy10YWIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdjLXNjcm9sbGluZy10YWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Njcm9sbGluZy10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nyb2xsaW5nLXRhYnMuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTY3JvbGxpbmdUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ25hdldyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2V3JhcHBlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndGFiTGlzdCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJMaXN0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGZpcnN0VGFiQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2Nyb2xsVG9BY3RpdmUgPSB0cnVlO1xuICBASW5wdXQoKSB0cmFja09wZW5UYWIgPSB0cnVlO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRUYWJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTY3JvbGxpbmdUYWJEaXJlY3RpdmU+KCk7XG5cbiAgdGFiczogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlW10gPSBbXTtcbiAgbGVmdE9mZnNldCA9IDA7XG4gIGZpcnN0VmlzaWJsZVRhYkluZGV4ID0gLTE7XG4gIHNob3dMZWZ0QXJyb3cgPSBmYWxzZTtcbiAgc2hvd1JpZ2h0QXJyb3cgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIGlmIHRoZXJlIGlzIGEgcGFyYW0gb2YgdGFiSWQgYW5kIHdlIHdhbnQgdG8gdHJhY2sgb3BlbiB0YWJzIG1hcmsgdGhlIG9wZW4gdGFiIGFzIGFjdGl2ZVxuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudGFiSWQgJiYgdGhpcy50cmFja09wZW5UYWIpIHtcbiAgICAgICAgdGhpcy5tYXJrVGFiQXNBY3RpdmUodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy50YWJJZCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlyc3RUYWJBY3RpdmUpIHsgLy8gaWYgd2Ugc2hvdWxkIG1hcmsgdGhlIGZpcnN0IHRhYiBhcyBhY3RpdmUgaWYgYSBhY3RpdmUgdGFiIGlzIG5vdCBzcGVjaWZpZWRcbiAgICAgICAgdGhpcy5tYXJrRmlyc3RUYWJBY3RpdmUoKTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRvIHRoZSBhY3RpdmUgdGFiIGlmIHNldHRpbmcgaXMgdHJ1ZSBhbmQgdGhlIHRhYnMgYXJlIGxhcmdlciB0aGFuIHRoZSB3aW5kb3dcbiAgICAgIGlmICh0aGlzLnNjcm9sbFRvQWN0aXZlICYmIHRoaXMuaGFzSGlkZGVuVGFicygpKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVUYWIoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVkcmF3VGFicygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBhZGRUYWIodGFiOiBTY3JvbGxpbmdUYWJEaXJlY3RpdmUpIHtcbiAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xuICB9XG5cbiAgcmVtb3ZlVGFiKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZih0YWIpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMudGFicy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICB3aW5kb3dSZXNpemUoKSB7XG4gICAgdGhpcy5yZWRyYXdUYWJzKCk7XG4gIH1cblxuICByZWRyYXdUYWJzKCkge1xuICAgIC8vIFRha2UgdGhlIHRvdGFsIHdpZHRoIG9mIHRoZSBsaXN0LiBTdWJ0cmFjdCBob3cgZmFyIHJpZ2h0IHdlIGFyZSBhbmQgc2VlIGlmIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZVxuICAgIC8vIHdpZHRoIG9mIHRoZSBjdXJyZW50IGRpc3BsYXlcbiAgICBpZiAodGhpcy53aWR0aE9mTGlzdCgpICsgdGhpcy5sZWZ0T2Zmc2V0ID4gdGhpcy5uYXZXcmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHRoaXMuc2hvd1JpZ2h0QXJyb3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dSaWdodEFycm93ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gc2VlIGlmIHdlIGhhdmUgc2Nyb2xsZWQgcmlnaHQgYW5kIHdlIGFyZSBub3QgYXQgdGhlIGxlZnQgbW9zdCBwb3NpdGlvblxuICAgIGlmICh0aGlzLmxlZnRPZmZzZXQgPCAwKSB7XG4gICAgICB0aGlzLnNob3dMZWZ0QXJyb3cgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dMZWZ0QXJyb3cgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB3aWR0aE9mTGlzdCgpIHtcbiAgICBsZXQgdG90YWxXaWR0aCA9IDA7XG4gICAgZm9yIChjb25zdCBsaSBvZiB0aGlzLnRhYkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbikge1xuICAgICAgdG90YWxXaWR0aCArPSBsaS5vZmZzZXRXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsV2lkdGg7XG4gIH1cblxuICBvblNjcm9sbGVyTGVmdENsaWNrKCkge1xuICAgIC8vIHdlIG5lZWQgdG8gZ28gbGVmdCBmb3IgdGhlIHdpZHRoIG9mIHRoZSBwcmV2aW91cyB0YWJcbiAgICB0aGlzLmZpcnN0VmlzaWJsZVRhYkluZGV4LS07XG4gICAgLy8gd2hlbiBtb3ZpbmcgbGVmdCB0aGUgbGVmdCBvZmZzZXQgaW5jcmVhc2VzXG4gICAgdGhpcy5sZWZ0T2Zmc2V0ICs9IHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW3RoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXhdLm9mZnNldFdpZHRoO1xuICAgIHRoaXMucmVkcmF3VGFicygpO1xuICB9XG5cbiAgb25TY3JvbGxlclJpZ2h0Q2xpY2soKSB7XG4gICAgLy8gd2hlbiBtb3ZpbmcgcmlnaHQgeW91IGRlc2NyZWFzZSB0aGUgbGVmdCBvZmZzZXQuIFdlIHdhbnQgdG8gZ28gcmlnaHQgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0YWJcbiAgICB0aGlzLmxlZnRPZmZzZXQgLT0gdGhpcy50YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bdGhpcy5maXJzdFZpc2libGVUYWJJbmRleF0ub2Zmc2V0V2lkdGg7XG4gICAgLy8gY2hhbmdlIHRoZSBpbmRleCBvZiB0aGUgdmlzaWJsZSB0YWIgbm93IHRoYXQgd2UgaGF2ZSBtb3ZlZFxuICAgIHRoaXMuZmlyc3RWaXNpYmxlVGFiSW5kZXgrKztcbiAgICB0aGlzLnJlZHJhd1RhYnMoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWRUYWJDaGFuZ2VkKHRhYjogU2Nyb2xsaW5nVGFiRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5tYXJrVGFiQXNBY3RpdmUodGFiLmlkKTtcbiAgICBpZiAodGhpcy50cmFja09wZW5UYWIpIHtcbiAgICAgIHRoaXMucHVzaEN1cnJlbnRUYWJUb1BhcmFtKHRhYik7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2VkLmVtaXQodGFiKTtcbiAgfVxuXG4gIG1hcmtGaXJzdFRhYkFjdGl2ZSgpIHtcbiAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLnRhYnMuZmluZCh0ID0+IHQuYWN0aXZlKTtcbiAgICAvLyAgaWYgdGhlcmUgaXMgbm8gYWN0aXZlIHRhYiBhbmQgd2UgaGF2ZSB0YWJzIHNldCBmaXJzdCBvbmUgdG8gYWN0aXZlXG4gICAgaWYgKCFhY3RpdmVUYWIgJiYgdGhpcy50YWJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFic1swXS5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFRvQWN0aXZlVGFiKCkge1xuICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMudGFicy5maW5kSW5kZXgodCA9PiB0LmFjdGl2ZSk7XG4gICAgdGhpcy5maXJzdFZpc2libGVUYWJJbmRleCA9IGFjdGl2ZVRhYjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZVRhYjsgaSsrKSB7XG4gICAgICBpZiAodGhpcy50YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baV0pIHtcbiAgICAgICAgdGhpcy5sZWZ0T2Zmc2V0IC09IHRoaXMudGFiTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2ldLm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc0hpZGRlblRhYnMoKSB7XG4gICAgcmV0dXJuIHRoaXMud2lkdGhPZkxpc3QoKSA+IHRoaXMubmF2V3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgbWFya1RhYkFzQWN0aXZlKHRhYklkOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy50YWJzKSB7XG4gICAgICB0LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgaWYgKHQuaWQgPT09IHRhYklkKSB7XG4gICAgICAgIHQuYWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdXNoQ3VycmVudFRhYlRvUGFyYW0odGFiOiBTY3JvbGxpbmdUYWJEaXJlY3RpdmUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHRhYklkOiB0YWIuaWRcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==

@@ -23,3 +23,2 @@ import { EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, Input, Output, HostListener, Directive, ElementRef, Renderer2, HostBinding, NgModule } from '@angular/core';

this.trackOpenTab = true;
this.scrollBarWidths = 52;
this.selectedTabChanged = new EventEmitter();

@@ -40,3 +39,3 @@ this.tabs = [];

() => {
// if there is a param of tabId and we want to track open tabs, mark the open tab as active
// if there is a param of tabId and we want to track open tabs mark the open tab as active
if (this.route.snapshot.queryParams.tabId && this.trackOpenTab) {

@@ -48,3 +47,4 @@ this.markTabAsActive(this.route.snapshot.queryParams.tabId);

}
if (this.scrollToActive) {
// scroll to the active tab if setting is true and the tabs are larger than the window
if (this.scrollToActive && this.hasHiddenTabs()) {
this.scrollToActiveTab();

@@ -168,3 +168,2 @@ }

this.firstVisibleTabIndex = activeTab;
// change the view to set the active tab as first tab on the left
for (let i = 0; i < activeTab; i++) {

@@ -177,2 +176,8 @@ if (this.tabList.nativeElement.children[i]) {

/**
* @return {?}
*/
hasHiddenTabs() {
return this.widthOfList() > this.navWrapper.nativeElement.offsetWidth;
}
/**
* @param {?} tabId

@@ -208,3 +213,3 @@ * @return {?}

changeDetection: ChangeDetectionStrategy.OnPush,
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
}] }

@@ -224,3 +229,2 @@ ];

trackOpenTab: [{ type: Input }],
scrollBarWidths: [{ type: Input }],
selectedTabChanged: [{ type: Output }],

@@ -241,4 +245,2 @@ windowResize: [{ type: HostListener, args: ['window:resize',] }]

/** @type {?} */
ScrollingTabsComponent.prototype.scrollBarWidths;
/** @type {?} */
ScrollingTabsComponent.prototype.selectedTabChanged;

@@ -245,0 +247,0 @@ /** @type {?} */

@@ -19,3 +19,2 @@ import { __values } from 'tslib';

this.trackOpenTab = true;
this.scrollBarWidths = 52;
this.selectedTabChanged = new EventEmitter();

@@ -40,3 +39,3 @@ this.tabs = [];

function () {
// if there is a param of tabId and we want to track open tabs, mark the open tab as active
// if there is a param of tabId and we want to track open tabs mark the open tab as active
if (_this.route.snapshot.queryParams.tabId && _this.trackOpenTab) {

@@ -48,3 +47,4 @@ _this.markTabAsActive(_this.route.snapshot.queryParams.tabId);

}
if (_this.scrollToActive) {
// scroll to the active tab if setting is true and the tabs are larger than the window
if (_this.scrollToActive && _this.hasHiddenTabs()) {
_this.scrollToActiveTab();

@@ -212,3 +212,2 @@ }

this.firstVisibleTabIndex = activeTab;
// change the view to set the active tab as first tab on the left
for (var i = 0; i < activeTab; i++) {

@@ -221,2 +220,11 @@ if (this.tabList.nativeElement.children[i]) {

/**
* @return {?}
*/
ScrollingTabsComponent.prototype.hasHiddenTabs = /**
* @return {?}
*/
function () {
return this.widthOfList() > this.navWrapper.nativeElement.offsetWidth;
};
/**
* @param {?} tabId

@@ -270,3 +278,3 @@ * @return {?}

changeDetection: ChangeDetectionStrategy.OnPush,
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
styles: [".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]
}] }

@@ -286,3 +294,2 @@ ];

trackOpenTab: [{ type: Input }],
scrollBarWidths: [{ type: Input }],
selectedTabChanged: [{ type: Output }],

@@ -305,4 +312,2 @@ windowResize: [{ type: HostListener, args: ['window:resize',] }]

/** @type {?} */
ScrollingTabsComponent.prototype.scrollBarWidths;
/** @type {?} */
ScrollingTabsComponent.prototype.selectedTabChanged;

@@ -309,0 +314,0 @@ /** @type {?} */

@@ -13,3 +13,2 @@ import { ChangeDetectorRef, ElementRef, AfterViewInit, EventEmitter } from '@angular/core';

trackOpenTab: boolean;
scrollBarWidths: number;
selectedTabChanged: EventEmitter<ScrollingTabDirective>;

@@ -33,4 +32,5 @@ tabs: ScrollingTabDirective[];

scrollToActiveTab(): void;
hasHiddenTabs(): boolean;
markTabAsActive(tabId: any): void;
pushCurrentTabToParam(tab: ScrollingTabDirective): void;
}

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"ScrollingTabsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"ngc-scrolling-tabs","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":19},"member":"OnPush"},"template":"<div class=\"wrap-selector\">\n <div class=\"nav-tabs-boxed\">\n <div class=\"scroller scroller-left\" (click)=\"onScrollerLeftClick()\" *ngIf=\"showLeftArrow\">\n <svg class=\"arrow-img\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"157.000000pt\" height=\"263.000000pt\"\n viewBox=\"0 0 157.000000 263.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,263.000000) scale(0.100000,-0.100000)\" fill=\"currentColor\" stroke=\"none\">\n <path d=\"M653 1967 l-603 -602 0 -45 0 -45 603 -602 c710 -711 628 -655 764 -520 79 79 83 85 83 127 l0 45 -497 497 -498 498 498 498 497 497 0 45 c0 42 -4 48 -83 127 -136 135 -54 191 -764 -520z\" />\n </g>\n </svg>\n </div>\n <div class=\"scroller scroller-right\" (click)=\"onScrollerRightClick()\" *ngIf=\"showRightArrow\">\n <svg class=\"arrow-img\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"157.000000pt\" height=\"263.000000pt\"\n viewBox=\"0 0 157.000000 263.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,263.000000) scale(0.100000,-0.100000)\" fill=\"currentColor\" stroke=\"none\">\n <path d=\"M153 2477 c-79 -79 -83 -85 -83 -127 l0 -45 497 -497 498 -498 -498 -498 -497 -497 0 -45 c0 -42 4 -48 83 -127 136 -135 54 -191 764 520 l603 602 0 45 0 45 -603 602 c-710 711 -628 655 -764 520z\" />\n </g>\n </svg>\n </div>\n <div class=\"nav-wrapper\" #navWrapper>\n <ul class=\"nav nav-tabs list\" role=\"tablist\" #tabList [style.left.px]=\"leftOffset\">\n <li *ngFor=\"let tab of tabs\" class=\"nav-item\">\n <a [ngClass]=\"tab.getTabClasses()\" data-toggle=\"tab\" href=\"javascript:void(0)\" role=\"tab\"\n attr.aria-controls=\"{{tab.title}}\" (click)=\"onSelectedTabChanged(tab)\">{{tab.title}}</a>\n </li>\n </ul>\n </div>\n <div class=\"tab-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>","styles":[".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px}.nav-link{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]}]}],"members":{"navWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":["navWrapper",{"static":false}]}]}],"tabList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["tabList",{"static":false}]}]}],"firstTabActive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"scrollToActive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"trackOpenTab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"scrollBarWidths":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"selectedTabChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":28,"character":38},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":28,"character":72},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":28,"character":104}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"addTab":[{"__symbolic":"method"}],"removeTab":[{"__symbolic":"method"}],"windowResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":58,"character":3},"arguments":["window:resize"]}]}],"redrawTabs":[{"__symbolic":"method"}],"widthOfList":[{"__symbolic":"method"}],"onScrollerLeftClick":[{"__symbolic":"method"}],"onScrollerRightClick":[{"__symbolic":"method"}],"onSelectedTabChanged":[{"__symbolic":"method"}],"markFirstTabActive":[{"__symbolic":"method"}],"scrollToActiveTab":[{"__symbolic":"method"}],"markTabAsActive":[{"__symbolic":"method"}],"pushCurrentTabToParam":[{"__symbolic":"method"}]}},"ScrollingTabsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":14}],"declarations":[{"__symbolic":"reference","name":"ScrollingTabsComponent"},{"__symbolic":"reference","name":"ɵa"}],"exports":[{"__symbolic":"reference","name":"ScrollingTabsComponent"},{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[ngcScrollingTab], ngcScrollingTab"}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":5}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":5}}]}],"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":12,"character":5},"arguments":["class.active"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ScrollingTabsComponent"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":15,"character":74},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":15,"character":104}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getTabClasses":[{"__symbolic":"method"}]}}},"origins":{"ScrollingTabsComponent":"./lib/scrolling-tabs.component","ScrollingTabsModule":"./lib/scrolling-tabs.module","ɵa":"./lib/scrolling-tab.directive"},"importAs":"ngc-scrolling-tabs"}
{"__symbolic":"module","version":4,"metadata":{"ScrollingTabsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"ngc-scrolling-tabs","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":19},"member":"OnPush"},"template":"<div class=\"wrap-selector\">\n <div class=\"nav-tabs-boxed\">\n <div class=\"scroller scroller-left\" (click)=\"onScrollerLeftClick()\" *ngIf=\"showLeftArrow\">\n <svg class=\"arrow-img\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"157.000000pt\" height=\"263.000000pt\"\n viewBox=\"0 0 157.000000 263.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,263.000000) scale(0.100000,-0.100000)\" fill=\"currentColor\" stroke=\"none\">\n <path d=\"M653 1967 l-603 -602 0 -45 0 -45 603 -602 c710 -711 628 -655 764 -520 79 79 83 85 83 127 l0 45 -497 497 -498 498 498 498 497 497 0 45 c0 42 -4 48 -83 127 -136 135 -54 191 -764 -520z\" />\n </g>\n </svg>\n </div>\n <div class=\"scroller scroller-right\" (click)=\"onScrollerRightClick()\" *ngIf=\"showRightArrow\">\n <svg class=\"arrow-img\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"157.000000pt\" height=\"263.000000pt\"\n viewBox=\"0 0 157.000000 263.000000\" preserveAspectRatio=\"xMidYMid meet\">\n <g transform=\"translate(0.000000,263.000000) scale(0.100000,-0.100000)\" fill=\"currentColor\" stroke=\"none\">\n <path d=\"M153 2477 c-79 -79 -83 -85 -83 -127 l0 -45 497 -497 498 -498 -498 -498 -497 -497 0 -45 c0 -42 4 -48 83 -127 136 -135 54 -191 764 520 l603 602 0 45 0 45 -603 602 c-710 711 -628 655 -764 520z\" />\n </g>\n </svg>\n </div>\n <div class=\"nav-wrapper\" #navWrapper>\n <ul class=\"nav nav-tabs list\" role=\"tablist\" #tabList [style.left.px]=\"leftOffset\">\n <li *ngFor=\"let tab of tabs\" class=\"nav-item\">\n <a [ngClass]=\"tab.getTabClasses()\" data-toggle=\"tab\" href=\"javascript:void(0)\" role=\"tab\"\n attr.aria-controls=\"{{tab.title}}\" (click)=\"onSelectedTabChanged(tab)\">{{tab.title}}</a>\n </li>\n </ul>\n </div>\n <div class=\"tab-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>","styles":[".nav-wrapper{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:38px}.nav-tabs{height:38px;margin-left:1px}.tab-content{margin-left:1px}.list{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}.list li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle}.scroller{text-align:center;cursor:pointer;padding:7px;white-space:no-wrap;vertical-align:middle}.scroller-right{float:right}.scroller-left{float:left}.arrow-img{height:20px;width:15px}.arrow-img:hover{opacity:.5}"]}]}],"members":{"navWrapper":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":13,"character":3},"arguments":["navWrapper",{"static":false}]}]}],"tabList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":["tabList",{"static":false}]}]}],"firstTabActive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"scrollToActive":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"trackOpenTab":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"selectedTabChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":27,"character":38},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":27,"character":72},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":27,"character":104}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"addTab":[{"__symbolic":"method"}],"removeTab":[{"__symbolic":"method"}],"windowResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":58,"character":3},"arguments":["window:resize"]}]}],"redrawTabs":[{"__symbolic":"method"}],"widthOfList":[{"__symbolic":"method"}],"onScrollerLeftClick":[{"__symbolic":"method"}],"onScrollerRightClick":[{"__symbolic":"method"}],"onSelectedTabChanged":[{"__symbolic":"method"}],"markFirstTabActive":[{"__symbolic":"method"}],"scrollToActiveTab":[{"__symbolic":"method"}],"hasHiddenTabs":[{"__symbolic":"method"}],"markTabAsActive":[{"__symbolic":"method"}],"pushCurrentTabToParam":[{"__symbolic":"method"}]}},"ScrollingTabsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":14}],"declarations":[{"__symbolic":"reference","name":"ScrollingTabsComponent"},{"__symbolic":"reference","name":"ɵa"}],"exports":[{"__symbolic":"reference","name":"ScrollingTabsComponent"},{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[ngcScrollingTab], ngcScrollingTab"}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":5}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":5}}]}],"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":12,"character":5},"arguments":["class.active"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ScrollingTabsComponent"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":15,"character":74},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":15,"character":104}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"getTabClasses":[{"__symbolic":"method"}]}}},"origins":{"ScrollingTabsComponent":"./lib/scrolling-tabs.component","ScrollingTabsModule":"./lib/scrolling-tabs.module","ɵa":"./lib/scrolling-tab.directive"},"importAs":"ngc-scrolling-tabs"}
{
"name": "ngc-scrolling-tabs",
"version": "1.0.6",
"version": "1.0.7",
"peerDependencies": {

@@ -14,3 +14,3 @@ "@angular/common": "^8.2.14",

"type": "git",
"url": "https://github.com/jeff-nelson-78954/advanced-angular-bootstrap-components.git"
"url": "git+https://github.com/jeff-nelson-78954/advanced-angular-bootstrap-components.git"
},

@@ -17,0 +17,0 @@ "keywords": [

@@ -17,9 +17,9 @@ # ScrollingTabs

```
## Input options
- [firstTabActive] -> Used on page load, if the active tab is not specified the first tab will be marked as active.
- [scrollToActive] -> Used on page load, the active tab that is marked active will be scrolled to.
- [trackOpenTab] -> Used to track what tab is open as a url parameter. If the page is refreshed it will default to that tab.
- [scrollBarWidths] -> If your styles affect the scroll bar widths you will need to adjust this setting so tab scrolling continues to work properly.
## Output
## Inputs
- [firstTabActive] -> Used on page load, if the active tab is not specified the first tab will be marked as active. Default: true
- [scrollToActive] -> Used on page load, the active tab that is marked active will be scrolled to if there are hidden tabs. Default: true
- [trackOpenTab] -> Used to track what tab is open as a url parameter. If the page is refreshed it will default to that tab. Default: true
## Outputs
(selectedTabChanged) -> Fired when a user changes tabs.

@@ -29,3 +29,3 @@

```shell
<ngc-scrolling-tabs [firstTabActive]="true" [scrollToActive]="true" [trackOpenTab]="false">
<ngc-scrolling-tabs [firstTabActive]="true" [scrollToActive]="true" [trackOpenTab]="false" (selectedTabChanged)="onSelectedTabChanged($event)">
<ngcScrollingTab id="home" title="Home">

@@ -32,0 +32,0 @@ Tab 1 content

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc