{"version":3,"file":"tabs.es5.js","sources":["../../packages/material/esm5/tabs/ink-bar.js","../../packages/material/esm5/tabs/tab-label.js","../../packages/material/esm5/tabs/tab.js","../../packages/material/esm5/tabs/tab-body.js","../../packages/material/esm5/tabs/tab-group.js","../../packages/material/esm5/tabs/tab-label-wrapper.js","../../packages/material/esm5/tabs/tab-header.js","../../packages/material/esm5/tabs/tab-nav-bar/tab-nav-bar.js","../../packages/material/esm5/tabs/tabs-module.js","../../packages/material/esm5/tabs/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, Renderer2, ElementRef, NgZone } from '@angular/core';\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * \\@docs-private\n */\nvar MatInkBar = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _ngZone\n */\n function MatInkBar(_renderer, _elementRef, _ngZone) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n }\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype.alignToElement = function (element) {\n var _this = this;\n this.show();\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(function () {\n requestAnimationFrame(function () { return _this._setStyles(element); });\n });\n }\n else {\n this._setStyles(element);\n }\n };\n /**\n * Shows the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.show = function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\n };\n /**\n * Hides the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.hide = function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\n };\n /**\n * Sets the proper styles to the ink bar element.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype._setStyles = function (element) {\n var /** @type {?} */ left = element ? (element.offsetLeft || 0) + 'px' : '0';\n var /** @type {?} */ width = element ? (element.offsetWidth || 0) + 'px' : '0';\n this._renderer.setStyle(this._elementRef.nativeElement, 'left', left);\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', width);\n };\n MatInkBar.decorators = [\n { type: Directive, args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatInkBar.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: NgZone, },\n ]; };\n return MatInkBar;\n}());\nexport { MatInkBar };\nfunction MatInkBar_tsickle_Closure_declarations() {\n /** @type {?} */\n MatInkBar.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatInkBar.ctorParameters;\n /** @type {?} */\n MatInkBar.prototype._renderer;\n /** @type {?} */\n MatInkBar.prototype._elementRef;\n /** @type {?} */\n MatInkBar.prototype._ngZone;\n}\n//# sourceMappingURL=ink-bar.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nexport var _MatTabLabelBaseClass = TemplatePortalDirective;\n/**\n * Used to flag tab labels for use with the portal directive\n */\nvar MatTabLabel = (function (_super) {\n tslib_1.__extends(MatTabLabel, _super);\n /**\n * @param {?} templateRef\n * @param {?} viewContainerRef\n */\n function MatTabLabel(templateRef, viewContainerRef) {\n return _super.call(this, templateRef, viewContainerRef) || this;\n }\n MatTabLabel.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLabel.ctorParameters = function () { return [\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n ]; };\n return MatTabLabel;\n}(_MatTabLabelBaseClass));\nexport { MatTabLabel };\nfunction MatTabLabel_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabLabel.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabLabel.ctorParameters;\n}\n//# sourceMappingURL=tab-label.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';\nimport { mixinDisabled } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\nimport { MatTabLabel } from './tab-label';\n/**\n * \\@docs-private\n */\nvar MatTabBase = (function () {\n function MatTabBase() {\n }\n return MatTabBase;\n}());\nexport { MatTabBase };\nexport var /** @type {?} */ _MatTabMixinBase = mixinDisabled(MatTabBase);\nvar MatTab = (function (_super) {\n tslib_1.__extends(MatTab, _super);\n /**\n * @param {?} _viewContainerRef\n */\n function MatTab(_viewContainerRef) {\n var _this = _super.call(this) || this;\n _this._viewContainerRef = _viewContainerRef;\n /**\n * The plain text label for the tab, used when there is no template label.\n */\n _this.textLabel = '';\n /**\n * The portal that will be the hosted content of the tab\n */\n _this._contentPortal = null;\n /**\n * Emits whenever the label changes.\n */\n _this._labelChange = new Subject();\n /**\n * Emits whenevfer the disable changes\n */\n _this._disableChange = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n _this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n _this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n _this.isActive = false;\n return _this;\n }\n Object.defineProperty(MatTab.prototype, \"content\", {\n /**\n * @return {?}\n */\n get: function () { return this._contentPortal; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatTab.prototype.ngOnChanges = function (changes) {\n if (changes.hasOwnProperty('textLabel')) {\n this._labelChange.next();\n }\n if (changes.hasOwnProperty('disabled')) {\n this._disableChange.next();\n }\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnDestroy = function () {\n this._disableChange.complete();\n this._labelChange.complete();\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnInit = function () {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n };\n MatTab.decorators = [\n { type: Component, args: [{selector: 'mat-tab',\n template: \"\",\n inputs: ['disabled'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matTab',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTab.ctorParameters = function () { return [\n { type: ViewContainerRef, },\n ]; };\n MatTab.propDecorators = {\n 'templateLabel': [{ type: ContentChild, args: [MatTabLabel,] },],\n '_content': [{ type: ViewChild, args: [TemplateRef,] },],\n 'textLabel': [{ type: Input, args: ['label',] },],\n };\n return MatTab;\n}(_MatTabMixinBase));\nexport { MatTab };\nfunction MatTab_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTab.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTab.ctorParameters;\n /** @type {?} */\n MatTab.propDecorators;\n /**\n * Content for the tab label given by .\n * @type {?}\n */\n MatTab.prototype.templateLabel;\n /**\n * Template inside the MatTab view that contains an .\n * @type {?}\n */\n MatTab.prototype._content;\n /**\n * The plain text label for the tab, used when there is no template label.\n * @type {?}\n */\n MatTab.prototype.textLabel;\n /**\n * The portal that will be the hosted content of the tab\n * @type {?}\n */\n MatTab.prototype._contentPortal;\n /**\n * Emits whenever the label changes.\n * @type {?}\n */\n MatTab.prototype._labelChange;\n /**\n * Emits whenevfer the disable changes\n * @type {?}\n */\n MatTab.prototype._disableChange;\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n * @type {?}\n */\n MatTab.prototype.position;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n * @type {?}\n */\n MatTab.prototype.origin;\n /**\n * Whether the tab is currently active.\n * @type {?}\n */\n MatTab.prototype.isActive;\n /** @type {?} */\n MatTab.prototype._viewContainerRef;\n}\n//# sourceMappingURL=tab.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ViewChild, Component, Input, Output, EventEmitter, ElementRef, Optional, ViewEncapsulation, ChangeDetectionStrategy, } from '@angular/core';\nimport { trigger, state, style, animate, transition, } from '@angular/animations';\nimport { PortalHostDirective } from '@angular/cdk/portal';\nimport { Directionality } from '@angular/cdk/bidi';\n/**\n * Wrapper for the contents of a tab.\n * \\@docs-private\n */\nvar MatTabBody = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _dir\n */\n function MatTabBody(_elementRef, _dir) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /**\n * Event emitted when the tab begins to animate towards the center as the active tab.\n */\n this._onCentering = new EventEmitter();\n /**\n * Event emitted when the tab completes its animation towards the center.\n */\n this._onCentered = new EventEmitter(true);\n }\n Object.defineProperty(MatTabBody.prototype, \"position\", {\n /**\n * @param {?} position\n * @return {?}\n */\n set: function (position) {\n if (position < 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'left' : 'right';\n }\n else if (position > 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabBody.prototype, \"origin\", {\n /**\n * The origin position from which this tab should appear when it is centered into view.\n * @param {?} origin\n * @return {?}\n */\n set: function (origin) {\n if (origin == null) {\n return;\n }\n var /** @type {?} */ dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n this._origin = 'left';\n }\n else {\n this._origin = 'right';\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n * @return {?}\n */\n MatTabBody.prototype.ngOnInit = function () {\n if (this._position == 'center' && this._origin) {\n this._position = this._origin == 'left' ? 'left-origin-center' : 'right-origin-center';\n }\n };\n /**\n * After the view has been set, check if the tab content is set to the center and attach the\n * content if it is not already attached.\n * @return {?}\n */\n MatTabBody.prototype.ngAfterViewChecked = function () {\n if (this._isCenterPosition(this._position) && !this._portalHost.hasAttached()) {\n this._portalHost.attach(this._content);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabStarted = function (e) {\n if (this._isCenterPosition(e.toState)) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabComplete = function (e) {\n // If the end state is that the tab is not centered, then detach the content.\n if (!this._isCenterPosition(e.toState) && !this._isCenterPosition(this._position)) {\n this._portalHost.detach();\n }\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(e.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n };\n /**\n * The text direction of the containing app.\n * @return {?}\n */\n MatTabBody.prototype._getLayoutDirection = function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n };\n /**\n * Whether the provided position state is considered center, regardless of origin.\n * @param {?} position\n * @return {?}\n */\n MatTabBody.prototype._isCenterPosition = function (position) {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n };\n MatTabBody.decorators = [\n { type: Component, args: [{selector: 'mat-tab-body',\n template: \"
\",\n styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-body',\n },\n animations: [\n trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n state('left', style({ transform: 'translate3d(-100%, 0, 0)' })),\n state('right', style({ transform: 'translate3d(100%, 0, 0)' })),\n transition('* => left, * => right, left => center, right => center', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ])\n ])\n ]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabBody.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabBody.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n '_onCentering': [{ type: Output },],\n '_onCentered': [{ type: Output },],\n '_content': [{ type: Input, args: ['content',] },],\n 'position': [{ type: Input, args: ['position',] },],\n 'origin': [{ type: Input, args: ['origin',] },],\n };\n return MatTabBody;\n}());\nexport { MatTabBody };\nfunction MatTabBody_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabBody.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabBody.ctorParameters;\n /** @type {?} */\n MatTabBody.propDecorators;\n /**\n * The portal host inside of this container into which the tab body content will be loaded.\n * @type {?}\n */\n MatTabBody.prototype._portalHost;\n /**\n * Event emitted when the tab begins to animate towards the center as the active tab.\n * @type {?}\n */\n MatTabBody.prototype._onCentering;\n /**\n * Event emitted when the tab completes its animation towards the center.\n * @type {?}\n */\n MatTabBody.prototype._onCentered;\n /**\n * The tab body content to display.\n * @type {?}\n */\n MatTabBody.prototype._content;\n /**\n * The shifted index position of the tab body, where zero represents the active center tab.\n * @type {?}\n */\n MatTabBody.prototype._position;\n /**\n * The origin position from which this tab should appear when it is centered into view.\n * @type {?}\n */\n MatTabBody.prototype._origin;\n /** @type {?} */\n MatTabBody.prototype._elementRef;\n /** @type {?} */\n MatTabBody.prototype._dir;\n}\n//# sourceMappingURL=tab-body.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, Renderer2, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs/Subscription';\nimport { MatTab } from './tab';\nimport { merge } from 'rxjs/observable/merge';\nimport { mixinColor, mixinDisableRipple } from '@angular/material/core';\n/**\n * Used to generate unique ID's for each tab component\n */\nvar nextId = 0;\n/**\n * A simple change event emitted on focus or selection changes.\n */\nvar MatTabChangeEvent = (function () {\n function MatTabChangeEvent() {\n }\n return MatTabChangeEvent;\n}());\nexport { MatTabChangeEvent };\nfunction MatTabChangeEvent_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabChangeEvent.prototype.index;\n /** @type {?} */\n MatTabChangeEvent.prototype.tab;\n}\n/**\n * \\@docs-private\n */\nvar MatTabGroupBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatTabGroupBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabGroupBase;\n}());\nexport { MatTabGroupBase };\nfunction MatTabGroupBase_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabGroupBase.prototype._renderer;\n /** @type {?} */\n MatTabGroupBase.prototype._elementRef;\n}\nexport var /** @type {?} */ _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'primary');\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://www.google.com/design/spec/components/tabs.html\n */\nvar MatTabGroup = (function (_super) {\n tslib_1.__extends(MatTabGroup, _super);\n /**\n * @param {?} _renderer\n * @param {?} elementRef\n * @param {?} _changeDetectorRef\n */\n function MatTabGroup(_renderer, elementRef, _changeDetectorRef) {\n var _this = _super.call(this, _renderer, elementRef) || this;\n _this._changeDetectorRef = _changeDetectorRef;\n /**\n * Whether this component has been initialized.\n */\n _this._isInitialized = false;\n /**\n * The tab index that should be selected after the content has been checked.\n */\n _this._indexToSelect = 0;\n /**\n * Snapshot of the height of the tab body wrapper before another tab is activated.\n */\n _this._tabBodyWrapperHeight = 0;\n /**\n * Subscription to tabs being added/removed.\n */\n _this._tabsSubscription = Subscription.EMPTY;\n /**\n * Subscription to changes in the tab labels.\n */\n _this._tabLabelSubscription = Subscription.EMPTY;\n _this._dynamicHeight = false;\n _this._selectedIndex = null;\n /**\n * Position of the tab header.\n */\n _this.headerPosition = 'above';\n /**\n * Output to enable support for two-way binding on `[(selectedIndex)]`\n */\n _this.selectedIndexChange = new EventEmitter();\n /**\n * Event emitted when focus has changed within a tab group.\n */\n _this.focusChange = new EventEmitter();\n /**\n * Event emitted when the tab selection has changed.\n */\n _this.selectedTabChange = new EventEmitter(true);\n /**\n * Event emitted when the tab selection has changed.\n * @deprecated Use `selectedTabChange` instead.\n */\n _this.selectChange = _this.selectedTabChange;\n _this._groupId = nextId++;\n return _this;\n }\n Object.defineProperty(MatTabGroup.prototype, \"dynamicHeight\", {\n /**\n * Whether the tab group should grow to the size of the active tab.\n * @return {?}\n */\n get: function () { return this._dynamicHeight; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._dynamicHeight = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"_dynamicHeightDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._dynamicHeight; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._dynamicHeight = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"selectedIndex\", {\n /**\n * @return {?}\n */\n get: function () { return this._selectedIndex; },\n /**\n * The index of the active tab.\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._indexToSelect = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"backgroundColor\", {\n /**\n * Background color of the tab group.\n * @return {?}\n */\n get: function () { return this._backgroundColor; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentChecked = function () {\n var _this = this;\n // Clamp the next selected index to the boundsof 0 and the tabs length.\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n var /** @type {?} */ indexToSelect = this._indexToSelect =\n Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0));\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect && this._selectedIndex != null) {\n var /** @type {?} */ tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emitting this value after change detection has run\n // since the checked content may contain this variable'\n Promise.resolve().then(function () { return _this.selectedIndexChange.emit(indexToSelect); });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach(function (tab, index) {\n tab.position = index - indexToSelect;\n tab.isActive = index === indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (_this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - _this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(function () {\n _this._subscribeToTabLabels();\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngOnDestroy = function () {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n };\n /**\n * Waits one frame for the view to update, then updates the ink bar\n * Note: This must be run outside of the zone or it will create an infinite change detection loop.\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterViewChecked = function () {\n this._isInitialized = true;\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._focusChanged = function (index) {\n this.focusChange.emit(this._createChangeEvent(index));\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._createChangeEvent = function (index) {\n var /** @type {?} */ event = new MatTabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n };\n /**\n * Subscribes to changes in the tab labels. This is needed, because the \\@Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n * @return {?}\n */\n MatTabGroup.prototype._subscribeToTabLabels = function () {\n var _this = this;\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge.apply(void 0, this._tabs.map(function (tab) { return tab._disableChange; }).concat(this._tabs.map(function (tab) { return tab._labelChange; }))).subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * Returns a unique id for each tab label element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabLabelId = function (i) {\n return \"mat-tab-label-\" + this._groupId + \"-\" + i;\n };\n /**\n * Returns a unique id for each tab content element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabContentId = function (i) {\n return \"mat-tab-content-\" + this._groupId + \"-\" + i;\n };\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n * @param {?} tabHeight\n * @return {?}\n */\n MatTabGroup.prototype._setTabBodyWrapperHeight = function (tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', this._tabBodyWrapperHeight + 'px');\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', tabHeight + 'px');\n }\n };\n /**\n * Removes the height of the tab body wrapper.\n * @return {?}\n */\n MatTabGroup.prototype._removeTabBodyWrapperHeight = function () {\n this._tabBodyWrapperHeight = this._tabBodyWrapper.nativeElement.clientHeight;\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', '');\n };\n MatTabGroup.decorators = [\n { type: Component, args: [{selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n template: \"
{{tab.textLabel}}
\",\n styles: [\".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-label{padding:0 12px}}@media (max-width:960px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs] .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color', 'disableRipple'],\n host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabGroup.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n ]; };\n MatTabGroup.propDecorators = {\n '_tabs': [{ type: ContentChildren, args: [MatTab,] },],\n '_tabBodyWrapper': [{ type: ViewChild, args: ['tabBodyWrapper',] },],\n 'dynamicHeight': [{ type: Input },],\n '_dynamicHeightDeprecated': [{ type: Input, args: ['mat-dynamic-height',] },],\n 'selectedIndex': [{ type: Input },],\n 'headerPosition': [{ type: Input },],\n 'backgroundColor': [{ type: Input },],\n 'selectedIndexChange': [{ type: Output },],\n 'focusChange': [{ type: Output },],\n 'selectedTabChange': [{ type: Output },],\n 'selectChange': [{ type: Output },],\n };\n return MatTabGroup;\n}(_MatTabGroupMixinBase));\nexport { MatTabGroup };\nfunction MatTabGroup_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabGroup.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabGroup.ctorParameters;\n /** @type {?} */\n MatTabGroup.propDecorators;\n /** @type {?} */\n MatTabGroup.prototype._tabs;\n /** @type {?} */\n MatTabGroup.prototype._tabBodyWrapper;\n /**\n * Whether this component has been initialized.\n * @type {?}\n */\n MatTabGroup.prototype._isInitialized;\n /**\n * The tab index that should be selected after the content has been checked.\n * @type {?}\n */\n MatTabGroup.prototype._indexToSelect;\n /**\n * Snapshot of the height of the tab body wrapper before another tab is activated.\n * @type {?}\n */\n MatTabGroup.prototype._tabBodyWrapperHeight;\n /**\n * Subscription to tabs being added/removed.\n * @type {?}\n */\n MatTabGroup.prototype._tabsSubscription;\n /**\n * Subscription to changes in the tab labels.\n * @type {?}\n */\n MatTabGroup.prototype._tabLabelSubscription;\n /** @type {?} */\n MatTabGroup.prototype._dynamicHeight;\n /** @type {?} */\n MatTabGroup.prototype._selectedIndex;\n /**\n * Position of the tab header.\n * @type {?}\n */\n MatTabGroup.prototype.headerPosition;\n /** @type {?} */\n MatTabGroup.prototype._backgroundColor;\n /**\n * Output to enable support for two-way binding on `[(selectedIndex)]`\n * @type {?}\n */\n MatTabGroup.prototype.selectedIndexChange;\n /**\n * Event emitted when focus has changed within a tab group.\n * @type {?}\n */\n MatTabGroup.prototype.focusChange;\n /**\n * Event emitted when the tab selection has changed.\n * @type {?}\n */\n MatTabGroup.prototype.selectedTabChange;\n /**\n * Event emitted when the tab selection has changed.\n * @deprecated Use `selectedTabChange` instead.\n * @type {?}\n */\n MatTabGroup.prototype.selectChange;\n /** @type {?} */\n MatTabGroup.prototype._groupId;\n /** @type {?} */\n MatTabGroup.prototype._changeDetectorRef;\n}\n//# sourceMappingURL=tab-group.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { Directive, ElementRef } from '@angular/core';\nimport { mixinDisabled } from '@angular/material/core';\n/**\n * \\@docs-private\n */\nvar MatTabLabelWrapperBase = (function () {\n function MatTabLabelWrapperBase() {\n }\n return MatTabLabelWrapperBase;\n}());\nexport { MatTabLabelWrapperBase };\nexport var /** @type {?} */ _MatTabLabelWrapperMixinBase = mixinDisabled(MatTabLabelWrapperBase);\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * \\@docs-private\n */\nvar MatTabLabelWrapper = (function (_super) {\n tslib_1.__extends(MatTabLabelWrapper, _super);\n /**\n * @param {?} elementRef\n */\n function MatTabLabelWrapper(elementRef) {\n var _this = _super.call(this) || this;\n _this.elementRef = elementRef;\n return _this;\n }\n /**\n * Sets focus on the wrapper element\n * @return {?}\n */\n MatTabLabelWrapper.prototype.focus = function () {\n this.elementRef.nativeElement.focus();\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetLeft = function () {\n return this.elementRef.nativeElement.offsetLeft;\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetWidth = function () {\n return this.elementRef.nativeElement.offsetWidth;\n };\n MatTabLabelWrapper.decorators = [\n { type: Directive, args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLabelWrapper.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return MatTabLabelWrapper;\n}(_MatTabLabelWrapperMixinBase));\nexport { MatTabLabelWrapper };\nfunction MatTabLabelWrapper_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabLabelWrapper.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabLabelWrapper.ctorParameters;\n /** @type {?} */\n MatTabLabelWrapper.prototype.elementRef;\n}\n//# sourceMappingURL=tab-label-wrapper.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { startWith } from '@angular/cdk/rxjs';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { mixinDisableRipple } from '@angular/material/core';\nimport { merge } from 'rxjs/observable/merge';\nimport { of as observableOf } from 'rxjs/observable/of';\nimport { Subscription } from 'rxjs/Subscription';\nimport { MatInkBar } from './ink-bar';\nimport { MatTabLabelWrapper } from './tab-label-wrapper';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nvar EXAGGERATED_OVERSCROLL = 60;\n/**\n * \\@docs-private\n */\nvar MatTabHeaderBase = (function () {\n function MatTabHeaderBase() {\n }\n return MatTabHeaderBase;\n}());\nexport { MatTabHeaderBase };\nexport var /** @type {?} */ _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * \\@docs-private\n */\nvar MatTabHeader = (function (_super) {\n tslib_1.__extends(MatTabHeader, _super);\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _changeDetectorRef\n * @param {?} _viewportRuler\n * @param {?} _dir\n */\n function MatTabHeader(_elementRef, _renderer, _changeDetectorRef, _viewportRuler, _dir) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n _this._renderer = _renderer;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n _this._dir = _dir;\n /**\n * The tab index that is focused.\n */\n _this._focusIndex = 0;\n /**\n * The distance in pixels that the tab labels should be translated to the left.\n */\n _this._scrollDistance = 0;\n /**\n * Whether the header should scroll to the selected index after the view has been checked.\n */\n _this._selectedIndexChanged = false;\n /**\n * Combines listeners that will re-align the ink bar whenever they're invoked.\n */\n _this._realignInkBar = Subscription.EMPTY;\n /**\n * Whether the controls for pagination should be displayed\n */\n _this._showPaginationControls = false;\n /**\n * Whether the tab list can be scrolled more towards the end of the tab label list.\n */\n _this._disableScrollAfter = true;\n /**\n * Whether the tab list can be scrolled more towards the beginning of the tab label list.\n */\n _this._disableScrollBefore = true;\n _this._selectedIndex = 0;\n /**\n * Event emitted when the option is selected.\n */\n _this.selectFocusedIndex = new EventEmitter();\n /**\n * Event emitted when a label is focused.\n */\n _this.indexFocused = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatTabHeader.prototype, \"selectedIndex\", {\n /**\n * The index of the active tab.\n * @return {?}\n */\n get: function () { return this._selectedIndex; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selectedIndexChanged = this._selectedIndex != value;\n this._selectedIndex = value;\n this._focusIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentChecked = function () {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._labelWrappers.length) {\n this._updatePagination();\n this._tabLabelCount = this._labelWrappers.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatTabHeader.prototype._handleKeydown = function (event) {\n switch (event.keyCode) {\n case RIGHT_ARROW:\n this._focusNextTab();\n break;\n case LEFT_ARROW:\n this._focusPreviousTab();\n break;\n case ENTER:\n case SPACE:\n this.selectFocusedIndex.emit(this.focusIndex);\n event.preventDefault();\n break;\n }\n };\n /**\n * Aligns the ink bar to the selected tab on load.\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentInit = function () {\n var _this = this;\n var /** @type {?} */ dirChange = this._dir ? this._dir.change : observableOf(null);\n var /** @type {?} */ resize = this._viewportRuler.change(150);\n this._realignInkBar = startWith.call(merge(dirChange, resize), null).subscribe(function () {\n _this._updatePagination();\n _this._alignInkBarToSelectedTab();\n });\n };\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngOnDestroy = function () {\n this._realignInkBar.unsubscribe();\n };\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n * @return {?}\n */\n MatTabHeader.prototype._onContentChanges = function () {\n this._updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Updating the view whether pagination should be enabled or not\n * @return {?}\n */\n MatTabHeader.prototype._updatePagination = function () {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n };\n Object.defineProperty(MatTabHeader.prototype, \"focusIndex\", {\n /**\n * Tracks which element has focus; used for keyboard navigation\n * @return {?}\n */\n get: function () { return this._focusIndex; },\n /**\n * When the focus index is set, we must manually send focus to the correct label\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (!this._isValidIndex(value) || this._focusIndex == value) {\n return;\n }\n this._focusIndex = value;\n this.indexFocused.emit(value);\n this._setTabFocus(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n * @param {?} index\n * @return {?}\n */\n MatTabHeader.prototype._isValidIndex = function (index) {\n if (!this._labelWrappers) {\n return true;\n }\n var /** @type {?} */ tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;\n return !!tab && !tab.disabled;\n };\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n * @param {?} tabIndex\n * @return {?}\n */\n MatTabHeader.prototype._setTabFocus = function (tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._labelWrappers && this._labelWrappers.length) {\n this._labelWrappers.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n var /** @type {?} */ containerEl = this._tabListContainer.nativeElement;\n var /** @type {?} */ dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n };\n /**\n * Moves the focus towards the beginning or the end of the list depending on the offset provided.\n * Valid offsets are 1 and -1.\n * @param {?} offset\n * @return {?}\n */\n MatTabHeader.prototype._moveFocus = function (offset) {\n if (this._labelWrappers) {\n var /** @type {?} */ tabs = this._labelWrappers.toArray();\n for (var /** @type {?} */ i = this.focusIndex + offset; i < tabs.length && i >= 0; i += offset) {\n if (this._isValidIndex(i)) {\n this.focusIndex = i;\n return;\n }\n }\n }\n };\n /**\n * Increment the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusNextTab = function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? 1 : -1);\n };\n /**\n * Decrement the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusPreviousTab = function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? -1 : 1);\n };\n /**\n * The layout direction of the containing app.\n * @return {?}\n */\n MatTabHeader.prototype._getLayoutDirection = function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n };\n /**\n * Performs the CSS transformation on the tab list that will cause the list to scroll.\n * @return {?}\n */\n MatTabHeader.prototype._updateTabScrollPosition = function () {\n var /** @type {?} */ scrollDistance = this.scrollDistance;\n var /** @type {?} */ translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', \"translate3d(\" + translateX + \"px, 0, 0)\");\n };\n Object.defineProperty(MatTabHeader.prototype, \"scrollDistance\", {\n /**\n * @return {?}\n */\n get: function () { return this._scrollDistance; },\n /**\n * Sets the distance in pixels that the tab header should be transformed in the X-axis.\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} scrollDir\n * @return {?}\n */\n MatTabHeader.prototype._scrollHeader = function (scrollDir) {\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n this.scrollDistance += (scrollDir == 'before' ? -1 : 1) * viewLength / 3;\n };\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} labelIndex\n * @return {?}\n */\n MatTabHeader.prototype._scrollToLabel = function (labelIndex) {\n var /** @type {?} */ selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n var /** @type {?} */ labelBeforePos, /** @type {?} */ labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = selectedLabel.getOffsetLeft();\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n }\n else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\n }\n var /** @type {?} */ beforeVisiblePos = this.scrollDistance;\n var /** @type {?} */ afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\n else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n };\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._checkPaginationEnabled = function () {\n var /** @type {?} */ isEnabled = this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n };\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._checkScrollingControls = function () {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._getMaxScrollDistance = function () {\n var /** @type {?} */ lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return (lengthOfTabList - viewLength) || 0;\n };\n /**\n * Tells the ink-bar to align itself to the current label wrapper\n * @return {?}\n */\n MatTabHeader.prototype._alignInkBarToSelectedTab = function () {\n var /** @type {?} */ selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n null;\n this._inkBar.alignToElement(selectedLabelWrapper);\n };\n MatTabHeader.decorators = [\n { type: Component, args: [{selector: 'mat-tab-header',\n template: \"
\",\n styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}\"],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabHeader.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabHeader.propDecorators = {\n '_labelWrappers': [{ type: ContentChildren, args: [MatTabLabelWrapper,] },],\n '_inkBar': [{ type: ViewChild, args: [MatInkBar,] },],\n '_tabListContainer': [{ type: ViewChild, args: ['tabListContainer',] },],\n '_tabList': [{ type: ViewChild, args: ['tabList',] },],\n 'selectedIndex': [{ type: Input },],\n 'selectFocusedIndex': [{ type: Output },],\n 'indexFocused': [{ type: Output },],\n };\n return MatTabHeader;\n}(_MatTabHeaderMixinBase));\nexport { MatTabHeader };\nfunction MatTabHeader_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabHeader.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabHeader.ctorParameters;\n /** @type {?} */\n MatTabHeader.propDecorators;\n /** @type {?} */\n MatTabHeader.prototype._labelWrappers;\n /** @type {?} */\n MatTabHeader.prototype._inkBar;\n /** @type {?} */\n MatTabHeader.prototype._tabListContainer;\n /** @type {?} */\n MatTabHeader.prototype._tabList;\n /**\n * The tab index that is focused.\n * @type {?}\n */\n MatTabHeader.prototype._focusIndex;\n /**\n * The distance in pixels that the tab labels should be translated to the left.\n * @type {?}\n */\n MatTabHeader.prototype._scrollDistance;\n /**\n * Whether the header should scroll to the selected index after the view has been checked.\n * @type {?}\n */\n MatTabHeader.prototype._selectedIndexChanged;\n /**\n * Combines listeners that will re-align the ink bar whenever they're invoked.\n * @type {?}\n */\n MatTabHeader.prototype._realignInkBar;\n /**\n * Whether the controls for pagination should be displayed\n * @type {?}\n */\n MatTabHeader.prototype._showPaginationControls;\n /**\n * Whether the tab list can be scrolled more towards the end of the tab label list.\n * @type {?}\n */\n MatTabHeader.prototype._disableScrollAfter;\n /**\n * Whether the tab list can be scrolled more towards the beginning of the tab label list.\n * @type {?}\n */\n MatTabHeader.prototype._disableScrollBefore;\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n * @type {?}\n */\n MatTabHeader.prototype._tabLabelCount;\n /**\n * Whether the scroll distance has changed and should be applied after the view is checked.\n * @type {?}\n */\n MatTabHeader.prototype._scrollDistanceChanged;\n /** @type {?} */\n MatTabHeader.prototype._selectedIndex;\n /**\n * Event emitted when the option is selected.\n * @type {?}\n */\n MatTabHeader.prototype.selectFocusedIndex;\n /**\n * Event emitted when a label is focused.\n * @type {?}\n */\n MatTabHeader.prototype.indexFocused;\n /** @type {?} */\n MatTabHeader.prototype._elementRef;\n /** @type {?} */\n MatTabHeader.prototype._renderer;\n /** @type {?} */\n MatTabHeader.prototype._changeDetectorRef;\n /** @type {?} */\n MatTabHeader.prototype._viewportRuler;\n /** @type {?} */\n MatTabHeader.prototype._dir;\n}\n//# sourceMappingURL=tab-header.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { takeUntil } from '@angular/cdk/rxjs';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, forwardRef, Inject, Input, NgZone, Optional, Renderer2, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS, MatRipple, mixinColor, mixinDisabled, mixinDisableRipple, } from '@angular/material/core';\nimport { merge } from 'rxjs/observable/merge';\nimport { of as observableOf } from 'rxjs/observable/of';\nimport { Subject } from 'rxjs/Subject';\nimport { MatInkBar } from '../ink-bar';\n/**\n * \\@docs-private\n */\nvar MatTabNavBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatTabNavBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabNavBase;\n}());\nexport { MatTabNavBase };\nfunction MatTabNavBase_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabNavBase.prototype._renderer;\n /** @type {?} */\n MatTabNavBase.prototype._elementRef;\n}\nexport var /** @type {?} */ _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nvar MatTabNav = (function (_super) {\n tslib_1.__extends(MatTabNav, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _dir\n * @param {?} _ngZone\n * @param {?} _changeDetectorRef\n * @param {?} _viewportRuler\n */\n function MatTabNav(renderer, elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._dir = _dir;\n _this._ngZone = _ngZone;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n /**\n * Subject that emits when the component has been destroyed.\n */\n _this._onDestroy = new Subject();\n _this._disableRipple = false;\n return _this;\n }\n Object.defineProperty(MatTabNav.prototype, \"backgroundColor\", {\n /**\n * Background color of the tab nav.\n * @return {?}\n */\n get: function () { return this._backgroundColor; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabNav.prototype, \"disableRipple\", {\n /**\n * Whether ripples should be disabled for all links or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setLinkDisableRipple();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Notifies the component that the active link has been changed.\n * @param {?} element\n * @return {?}\n */\n MatTabNav.prototype.updateActiveLink = function (element) {\n this._activeLinkChanged = this._activeLinkElement != element;\n this._activeLinkElement = element;\n if (this._activeLinkChanged) {\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n var /** @type {?} */ dirChange = _this._dir ? _this._dir.change : observableOf(null);\n return takeUntil.call(merge(dirChange, _this._viewportRuler.change(10)), _this._onDestroy)\n .subscribe(function () { return _this._alignInkBar(); });\n });\n this._setLinkDisableRipple();\n };\n /**\n * Checks if the active link has been changed and, if so, will update the ink bar.\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentChecked = function () {\n if (this._activeLinkChanged) {\n this._alignInkBar();\n this._activeLinkChanged = false;\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngOnDestroy = function () {\n this._onDestroy.next();\n this._onDestroy.complete();\n };\n /**\n * Aligns the ink bar to the active link.\n * @return {?}\n */\n MatTabNav.prototype._alignInkBar = function () {\n if (this._activeLinkElement) {\n this._inkBar.alignToElement(this._activeLinkElement.nativeElement);\n }\n };\n /**\n * Sets the `disableRipple` property on each link of the navigation bar.\n * @return {?}\n */\n MatTabNav.prototype._setLinkDisableRipple = function () {\n var _this = this;\n if (this._tabLinks) {\n this._tabLinks.forEach(function (link) { return link.disableRipple = _this.disableRipple; });\n }\n };\n MatTabNav.decorators = [\n { type: Component, args: [{selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color', 'disableRipple'],\n template: \"
\",\n styles: [\".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden}.mat-tab-link:focus{outline:0;opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}\"],\n host: { 'class': 'mat-tab-nav-bar' },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabNav.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n ]; };\n MatTabNav.propDecorators = {\n '_inkBar': [{ type: ViewChild, args: [MatInkBar,] },],\n '_tabLinks': [{ type: ContentChildren, args: [forwardRef(function () { return MatTabLink; }), { descendants: true },] },],\n 'backgroundColor': [{ type: Input },],\n };\n return MatTabNav;\n}(_MatTabNavMixinBase));\nexport { MatTabNav };\nfunction MatTabNav_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabNav.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabNav.ctorParameters;\n /** @type {?} */\n MatTabNav.propDecorators;\n /**\n * Subject that emits when the component has been destroyed.\n * @type {?}\n */\n MatTabNav.prototype._onDestroy;\n /** @type {?} */\n MatTabNav.prototype._activeLinkChanged;\n /** @type {?} */\n MatTabNav.prototype._activeLinkElement;\n /** @type {?} */\n MatTabNav.prototype._inkBar;\n /**\n * Query list of all tab links of the tab navigation.\n * @type {?}\n */\n MatTabNav.prototype._tabLinks;\n /** @type {?} */\n MatTabNav.prototype._backgroundColor;\n /** @type {?} */\n MatTabNav.prototype._disableRipple;\n /** @type {?} */\n MatTabNav.prototype._dir;\n /** @type {?} */\n MatTabNav.prototype._ngZone;\n /** @type {?} */\n MatTabNav.prototype._changeDetectorRef;\n /** @type {?} */\n MatTabNav.prototype._viewportRuler;\n}\nvar MatTabLinkBase = (function () {\n function MatTabLinkBase() {\n }\n return MatTabLinkBase;\n}());\nexport { MatTabLinkBase };\nexport var /** @type {?} */ _MatTabLinkMixinBase = mixinDisabled(MatTabLinkBase);\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nvar MatTabLink = (function (_super) {\n tslib_1.__extends(MatTabLink, _super);\n /**\n * @param {?} _tabNavBar\n * @param {?} _elementRef\n * @param {?} ngZone\n * @param {?} platform\n * @param {?} globalOptions\n */\n function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalOptions) {\n var _this = _super.call(this) || this;\n _this._tabNavBar = _tabNavBar;\n _this._elementRef = _elementRef;\n /**\n * Whether the tab link is active or not.\n */\n _this._isActive = false;\n /**\n * Whether the ripples for this tab should be disabled or not.\n */\n _this._disableRipple = false;\n // Manually create a ripple instance that uses the tab link element as trigger element.\n // Notice that the lifecycle hooks for the ripple config won't be called anymore.\n _this._tabLinkRipple = new MatRipple(_elementRef, ngZone, platform, globalOptions);\n return _this;\n }\n Object.defineProperty(MatTabLink.prototype, \"active\", {\n /**\n * Whether the link is active.\n * @return {?}\n */\n get: function () { return this._isActive; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._isActive = value;\n if (value) {\n this._tabNavBar.updateActiveLink(this._elementRef);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"disableRipple\", {\n /**\n * Whether ripples should be disabled or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = value;\n this._tabLinkRipple.disabled = this.disableRipple;\n this._tabLinkRipple._updateRippleRenderer();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"tabIndex\", {\n /**\n * \\@docs-private\n * @return {?}\n */\n get: function () {\n return this.disabled ? -1 : 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabLink.prototype.ngOnDestroy = function () {\n // Manually call the ngOnDestroy lifecycle hook of the ripple instance because it won't be\n // called automatically since its instance is not created by Angular.\n this._tabLinkRipple.ngOnDestroy();\n };\n MatTabLink.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled'],\n host: {\n 'class': 'mat-tab-link',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.tabindex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLink.ctorParameters = function () { return [\n { type: MatTabNav, },\n { type: ElementRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n ]; };\n MatTabLink.propDecorators = {\n 'active': [{ type: Input },],\n };\n return MatTabLink;\n}(_MatTabLinkMixinBase));\nexport { MatTabLink };\nfunction MatTabLink_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabLink.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabLink.ctorParameters;\n /** @type {?} */\n MatTabLink.propDecorators;\n /**\n * Whether the tab link is active or not.\n * @type {?}\n */\n MatTabLink.prototype._isActive;\n /**\n * Whether the ripples for this tab should be disabled or not.\n * @type {?}\n */\n MatTabLink.prototype._disableRipple;\n /**\n * Reference to the instance of the ripple for the tab link.\n * @type {?}\n */\n MatTabLink.prototype._tabLinkRipple;\n /** @type {?} */\n MatTabLink.prototype._tabNavBar;\n /** @type {?} */\n MatTabLink.prototype._elementRef;\n}\n//# sourceMappingURL=tab-nav-bar.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollDispatchModule, VIEWPORT_RULER_PROVIDER } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { MatInkBar } from './ink-bar';\nimport { MatTab } from './tab';\nimport { MatTabBody } from './tab-body';\nimport { MatTabGroup } from './tab-group';\nimport { MatTabHeader } from './tab-header';\nimport { MatTabLabel } from './tab-label';\nimport { MatTabLabelWrapper } from './tab-label-wrapper';\nimport { MatTabLink, MatTabNav } from './tab-nav-bar/tab-nav-bar';\nvar MatTabsModule = (function () {\n function MatTabsModule() {\n }\n MatTabsModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n ScrollDispatchModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabHeader\n ],\n providers: [VIEWPORT_RULER_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabsModule.ctorParameters = function () { return []; };\n return MatTabsModule;\n}());\nexport { MatTabsModule };\nfunction MatTabsModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatTabsModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatTabsModule.ctorParameters;\n}\n//# sourceMappingURL=tabs-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatInkBar, MatTabBody, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup } from './public-api';\nexport { MatTabBase as ɵe23, _MatTabMixinBase as ɵf23 } from './tab';\nexport { MatTabHeaderBase as ɵa23, _MatTabHeaderMixinBase as ɵb23 } from './tab-header';\nexport { MatTabLabelWrapperBase as ɵc23, _MatTabLabelWrapperMixinBase as ɵd23 } from './tab-label-wrapper';\nexport { MatTabLinkBase as ɵi23, MatTabNavBase as ɵg23, _MatTabLinkMixinBase as ɵj23, _MatTabNavMixinBase as ɵh23 } from './tab-nav-bar/tab-nav-bar';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends","observableOf"],"mappings":"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"}