{"version":3,"file":"sidenav.es5.js","sources":["../../packages/material/esm5/sidenav/drawer.js","../../packages/material/esm5/sidenav/sidenav.js","../../packages/material/esm5/sidenav/sidenav-module.js","../../packages/material/esm5/sidenav/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 { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusTrapFactory } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, Input, NgZone, Optional, Output, Renderer2, ViewEncapsulation, } from '@angular/core';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { RxChain, filter, first, startWith, takeUntil } from '@angular/cdk/rxjs';\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @param {?} position\n * @return {?}\n */\nexport function throwMatDuplicatedDrawerError(position) {\n throw Error(\"A drawer was already declared for 'position=\\\"\" + position + \"\\\"'\");\n}\n/**\n * Drawer toggle promise result.\n * @deprecated\n */\nvar MatDrawerToggleResult = (function () {\n /**\n * @param {?} type\n * @param {?} animationFinished\n */\n function MatDrawerToggleResult(type, animationFinished) {\n this.type = type;\n this.animationFinished = animationFinished;\n }\n return MatDrawerToggleResult;\n}());\nexport { MatDrawerToggleResult };\nfunction MatDrawerToggleResult_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDrawerToggleResult.prototype.type;\n /** @type {?} */\n MatDrawerToggleResult.prototype.animationFinished;\n}\nvar MatDrawerContent = (function () {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _container\n */\n function MatDrawerContent(_changeDetectorRef, _container) {\n this._changeDetectorRef = _changeDetectorRef;\n this._container = _container;\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n this._margins = { left: 0, right: 0 };\n }\n /**\n * @return {?}\n */\n MatDrawerContent.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._container._contentMargins.subscribe(function (margins) {\n _this._margins = margins;\n _this._changeDetectorRef.markForCheck();\n });\n };\n MatDrawerContent.decorators = [\n { type: Component, args: [{selector: 'mat-drawer-content',\n template: '',\n host: {\n 'class': 'mat-drawer-content',\n '[style.marginLeft.px]': '_margins.left',\n '[style.marginRight.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawerContent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: MatDrawerContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatDrawerContainer; }),] },] },\n ]; };\n return MatDrawerContent;\n}());\nexport { MatDrawerContent };\nfunction MatDrawerContent_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDrawerContent.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDrawerContent.ctorParameters;\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n * @type {?}\n */\n MatDrawerContent.prototype._margins;\n /** @type {?} */\n MatDrawerContent.prototype._changeDetectorRef;\n /** @type {?} */\n MatDrawerContent.prototype._container;\n}\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nvar MatDrawer = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _doc\n */\n function MatDrawer(_elementRef, _focusTrapFactory, _doc) {\n var _this = this;\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._doc = _doc;\n this._elementFocusedBeforeDrawerWasOpened = null;\n /**\n * Whether the drawer is initialized. Used for disabling the initial animation.\n */\n this._enableAnimations = false;\n this._position = 'start';\n this._mode = 'over';\n this._disableClose = false;\n /**\n * Whether the drawer is opened.\n */\n this._opened = false;\n /**\n * Emits whenever the drawer has started animating.\n */\n this._animationStarted = new EventEmitter();\n /**\n * Whether the drawer is animating. Used to prevent overlapping animations.\n */\n this._isAnimating = false;\n /**\n * Current state of the sidenav animation.\n */\n this._animationState = 'void';\n /**\n * Event emitted when the drawer is fully opened.\n */\n this.onOpen = new EventEmitter();\n /**\n * Event emitted when the drawer is fully closed.\n */\n this.onClose = new EventEmitter();\n /**\n * Event emitted when the drawer's position changes.\n */\n this.onPositionChanged = new EventEmitter();\n /**\n * @deprecated\n */\n this.onAlignChanged = new EventEmitter();\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n this._modeChanged = new Subject();\n this.onOpen.subscribe(function () {\n if (_this._doc) {\n _this._elementFocusedBeforeDrawerWasOpened = _this._doc.activeElement;\n }\n if (_this._isFocusTrapEnabled && _this._focusTrap) {\n _this._focusTrap.focusInitialElementWhenReady();\n }\n });\n this.onClose.subscribe(function () { return _this._restoreFocus(); });\n }\n Object.defineProperty(MatDrawer.prototype, \"position\", {\n /**\n * The side that the drawer is attached to.\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onAlignChanged.emit();\n this.onPositionChanged.emit();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"align\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this.position = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"mode\", {\n /**\n * Mode of the drawer; one of 'over', 'push' or 'side'.\n * @return {?}\n */\n get: function () { return this._mode; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._mode = value;\n this._modeChanged.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"disableClose\", {\n /**\n * Whether the drawer can be closed with the escape key or by clicking on the backdrop.\n * @return {?}\n */\n get: function () { return this._disableClose; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disableClose = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"_isFocusTrapEnabled\", {\n /**\n * @return {?}\n */\n get: function () {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n return this.opened && this.mode !== 'side';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n * @return {?}\n */\n MatDrawer.prototype._restoreFocus = function () {\n var /** @type {?} */ activeEl = this._doc && this._doc.activeElement;\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n this._elementFocusedBeforeDrawerWasOpened.focus();\n }\n else {\n this._elementRef.nativeElement.blur();\n }\n }\n this._elementFocusedBeforeDrawerWasOpened = null;\n };\n /**\n * @return {?}\n */\n MatDrawer.prototype.ngAfterContentInit = function () {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n this._enableAnimations = true;\n };\n /**\n * @return {?}\n */\n MatDrawer.prototype.ngOnDestroy = function () {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n };\n Object.defineProperty(MatDrawer.prototype, \"opened\", {\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n * @return {?}\n */\n get: function () { return this._opened; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.toggle(coerceBooleanProperty(v));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Open the drawer.\n * @return {?}\n */\n MatDrawer.prototype.open = function () {\n return this.toggle(true);\n };\n /**\n * Close the drawer.\n * @return {?}\n */\n MatDrawer.prototype.close = function () {\n return this.toggle(false);\n };\n /**\n * Toggle this drawer.\n * @param {?=} isOpen Whether the drawer should be open.\n * @return {?}\n */\n MatDrawer.prototype.toggle = function (isOpen) {\n var _this = this;\n if (isOpen === void 0) { isOpen = !this.opened; }\n if (!this._isAnimating) {\n this._opened = isOpen;\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n }\n else {\n this._animationState = 'void';\n }\n this._currentTogglePromise = new Promise(function (resolve) {\n first.call(isOpen ? _this.onOpen : _this.onClose).subscribe(resolve);\n });\n if (this._focusTrap) {\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n }\n // TODO(crisbeto): This promise is here for backwards-compatibility.\n // It should be removed next time we do breaking changes in the drawer.\n return ((this._currentTogglePromise));\n };\n /**\n * Handles the keyboard events.\n * \\@docs-private\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype.handleKeydown = function (event) {\n if (event.keyCode === ESCAPE && !this.disableClose) {\n this.close();\n event.stopPropagation();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype._onAnimationStart = function (event) {\n this._isAnimating = true;\n this._animationStarted.emit(event);\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype._onAnimationEnd = function (event) {\n var _this = this;\n var fromState = event.fromState, toState = event.toState;\n if (toState.indexOf('open') === 0 && fromState === 'void') {\n this.onOpen.emit(new MatDrawerToggleResult('open', true));\n }\n else if (toState === 'void' && fromState.indexOf('open') === 0) {\n this.onClose.emit(new MatDrawerToggleResult('close', true));\n }\n // Note: as of Angular 4.3, the animations module seems to fire the `start` callback before\n // the end if animations are disabled. Make this call async to ensure that it still fires\n // at the appropriate time.\n Promise.resolve().then(function () {\n _this._isAnimating = false;\n _this._currentTogglePromise = null;\n });\n };\n Object.defineProperty(MatDrawer.prototype, \"_width\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n },\n enumerable: true,\n configurable: true\n });\n MatDrawer.decorators = [\n { type: Component, args: [{selector: 'mat-drawer',\n exportAs: 'matDrawer',\n template: '',\n animations: [\n trigger('transform', [\n state('open, open-instant', style({\n transform: 'translate3d(0, 0, 0)',\n visibility: 'visible',\n })),\n state('void', style({\n visibility: 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n ],\n host: {\n 'class': 'mat-drawer',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\n '(keydown)': 'handleKeydown($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawer.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDrawer.propDecorators = {\n 'position': [{ type: Input },],\n 'align': [{ type: Input },],\n 'mode': [{ type: Input },],\n 'disableClose': [{ type: Input },],\n 'onOpen': [{ type: Output, args: ['open',] },],\n 'onClose': [{ type: Output, args: ['close',] },],\n 'onPositionChanged': [{ type: Output, args: ['positionChanged',] },],\n 'onAlignChanged': [{ type: Output, args: ['align-changed',] },],\n 'opened': [{ type: Input },],\n };\n return MatDrawer;\n}());\nexport { MatDrawer };\nfunction MatDrawer_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDrawer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDrawer.ctorParameters;\n /** @type {?} */\n MatDrawer.propDecorators;\n /** @type {?} */\n MatDrawer.prototype._focusTrap;\n /** @type {?} */\n MatDrawer.prototype._elementFocusedBeforeDrawerWasOpened;\n /**\n * Whether the drawer is initialized. Used for disabling the initial animation.\n * @type {?}\n */\n MatDrawer.prototype._enableAnimations;\n /** @type {?} */\n MatDrawer.prototype._position;\n /** @type {?} */\n MatDrawer.prototype._mode;\n /** @type {?} */\n MatDrawer.prototype._disableClose;\n /**\n * Whether the drawer is opened.\n * @type {?}\n */\n MatDrawer.prototype._opened;\n /**\n * Emits whenever the drawer has started animating.\n * @type {?}\n */\n MatDrawer.prototype._animationStarted;\n /**\n * Whether the drawer is animating. Used to prevent overlapping animations.\n * @type {?}\n */\n MatDrawer.prototype._isAnimating;\n /**\n * Current state of the sidenav animation.\n * @type {?}\n */\n MatDrawer.prototype._animationState;\n /**\n * Promise that resolves when the open/close animation completes. It is here for backwards\n * compatibility and should be removed next time we do drawer breaking changes.\n * @deprecated\n * @type {?}\n */\n MatDrawer.prototype._currentTogglePromise;\n /**\n * Event emitted when the drawer is fully opened.\n * @type {?}\n */\n MatDrawer.prototype.onOpen;\n /**\n * Event emitted when the drawer is fully closed.\n * @type {?}\n */\n MatDrawer.prototype.onClose;\n /**\n * Event emitted when the drawer's position changes.\n * @type {?}\n */\n MatDrawer.prototype.onPositionChanged;\n /**\n * @deprecated\n * @type {?}\n */\n MatDrawer.prototype.onAlignChanged;\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n * @type {?}\n */\n MatDrawer.prototype._modeChanged;\n /** @type {?} */\n MatDrawer.prototype._elementRef;\n /** @type {?} */\n MatDrawer.prototype._focusTrapFactory;\n /** @type {?} */\n MatDrawer.prototype._doc;\n}\n/**\n * component.\n *\n * This is the parent component to one or two s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\nvar MatDrawerContainer = (function () {\n /**\n * @param {?} _dir\n * @param {?} _element\n * @param {?} _renderer\n * @param {?} _ngZone\n * @param {?} _changeDetectorRef\n */\n function MatDrawerContainer(_dir, _element, _renderer, _ngZone, _changeDetectorRef) {\n var _this = this;\n this._dir = _dir;\n this._element = _element;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Event emitted when the drawer backdrop is clicked.\n */\n this.backdropClick = new EventEmitter();\n /**\n * Emits when the component is destroyed.\n */\n this._destroyed = new Subject();\n this._contentMargins = new Subject();\n // If a `Dir` directive exists up the tree, listen direction changes and update the left/right\n // properties to point to the proper start/end.\n if (_dir != null) {\n takeUntil.call(_dir.change, this._destroyed).subscribe(function () { return _this._validateDrawers(); });\n }\n }\n Object.defineProperty(MatDrawerContainer.prototype, \"start\", {\n /**\n * The drawer child with the `start` position.\n * @return {?}\n */\n get: function () { return this._start; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawerContainer.prototype, \"end\", {\n /**\n * The drawer child with the `end` position.\n * @return {?}\n */\n get: function () { return this._end; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype.ngAfterContentInit = function () {\n var _this = this;\n startWith.call(this._drawers.changes, null).subscribe(function () {\n _this._validateDrawers();\n _this._drawers.forEach(function (drawer) {\n _this._watchDrawerToggle(drawer);\n _this._watchDrawerPosition(drawer);\n _this._watchDrawerMode(drawer);\n });\n if (!_this._drawers.length ||\n _this._isDrawerOpen(_this._start) ||\n _this._isDrawerOpen(_this._end)) {\n _this._updateContentMargins();\n }\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype.ngOnDestroy = function () {\n this._destroyed.next();\n this._destroyed.complete();\n };\n /**\n * Calls `open` of both start and end drawers\n * @return {?}\n */\n MatDrawerContainer.prototype.open = function () {\n this._drawers.forEach(function (drawer) { return drawer.open(); });\n };\n /**\n * Calls `close` of both start and end drawers\n * @return {?}\n */\n MatDrawerContainer.prototype.close = function () {\n this._drawers.forEach(function (drawer) { return drawer.close(); });\n };\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerToggle = function (drawer) {\n var _this = this;\n RxChain.from(drawer._animationStarted)\n .call(takeUntil, this._drawers.changes)\n .call(filter, function (event) { return event.fromState !== event.toState; })\n .subscribe(function (event) {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant') {\n _this._renderer.addClass(_this._element.nativeElement, 'mat-drawer-transition');\n }\n _this._updateContentMargins();\n _this._changeDetectorRef.markForCheck();\n });\n if (drawer.mode !== 'side') {\n takeUntil.call(merge(drawer.onOpen, drawer.onClose), this._drawers.changes).subscribe(function () {\n return _this._setContainerClass(drawer.opened);\n });\n }\n };\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerPosition = function (drawer) {\n var _this = this;\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n takeUntil.call(drawer.onPositionChanged, this._drawers.changes).subscribe(function () {\n first.call(_this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n _this._validateDrawers();\n });\n });\n };\n /**\n * Subscribes to changes in drawer mode so we can run change detection.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerMode = function (drawer) {\n var _this = this;\n if (drawer) {\n takeUntil.call(drawer._modeChanged, merge(this._drawers.changes, this._destroyed))\n .subscribe(function () {\n _this._updateContentMargins();\n _this._changeDetectorRef.markForCheck();\n });\n }\n };\n /**\n * Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element.\n * @param {?} isAdd\n * @return {?}\n */\n MatDrawerContainer.prototype._setContainerClass = function (isAdd) {\n if (isAdd) {\n this._renderer.addClass(this._element.nativeElement, 'mat-drawer-opened');\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, 'mat-drawer-opened');\n }\n };\n /**\n * Validate the state of the drawer children components.\n * @return {?}\n */\n MatDrawerContainer.prototype._validateDrawers = function () {\n var _this = this;\n this._start = this._end = null;\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(function (drawer) {\n if (drawer.position == 'end') {\n if (_this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n _this._end = drawer;\n }\n else {\n if (_this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n _this._start = drawer;\n }\n });\n this._right = this._left = null;\n // Detect if we're LTR or RTL.\n if (this._dir == null || this._dir.value == 'ltr') {\n this._left = this._start;\n this._right = this._end;\n }\n else {\n this._left = this._end;\n this._right = this._start;\n }\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._onBackdropClicked = function () {\n this.backdropClick.emit();\n this._closeModalDrawer();\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._closeModalDrawer = function () {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(function (drawer) { return drawer && !drawer.disableClose && drawer.mode !== 'side'; })\n .forEach(function (drawer) { /** @type {?} */ return ((drawer)).close(); });\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._isShowingBackdrop = function () {\n return (this._isDrawerOpen(this._start) && ((this._start)).mode != 'side')\n || (this._isDrawerOpen(this._end) && ((this._end)).mode != 'side');\n };\n /**\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._isDrawerOpen = function (drawer) {\n return drawer != null && drawer.opened;\n };\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n * @return {?}\n */\n MatDrawerContainer.prototype._updateContentMargins = function () {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n var /** @type {?} */ left = 0;\n var /** @type {?} */ right = 0;\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n }\n else if (this._left.mode == 'push') {\n var /** @type {?} */ width = this._left._width;\n left += width;\n right -= width;\n }\n }\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n }\n else if (this._right.mode == 'push') {\n var /** @type {?} */ width = this._right._width;\n right += width;\n left -= width;\n }\n }\n this._contentMargins.next({ left: left, right: right });\n };\n MatDrawerContainer.decorators = [\n { type: Component, args: [{selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n template: \"\",\n styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;min-width:5vw;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-opened:not(.mat-drawer-side),.mat-drawer.mat-drawer-opening:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n host: {\n 'class': 'mat-drawer-container',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawerContainer.ctorParameters = function () { return [\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n ]; };\n MatDrawerContainer.propDecorators = {\n '_drawers': [{ type: ContentChildren, args: [MatDrawer,] },],\n '_content': [{ type: ContentChild, args: [MatDrawerContent,] },],\n 'backdropClick': [{ type: Output },],\n };\n return MatDrawerContainer;\n}());\nexport { MatDrawerContainer };\nfunction MatDrawerContainer_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDrawerContainer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDrawerContainer.ctorParameters;\n /** @type {?} */\n MatDrawerContainer.propDecorators;\n /** @type {?} */\n MatDrawerContainer.prototype._drawers;\n /** @type {?} */\n MatDrawerContainer.prototype._content;\n /**\n * Event emitted when the drawer backdrop is clicked.\n * @type {?}\n */\n MatDrawerContainer.prototype.backdropClick;\n /**\n * The drawer at the start/end position, independent of direction.\n * @type {?}\n */\n MatDrawerContainer.prototype._start;\n /** @type {?} */\n MatDrawerContainer.prototype._end;\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n * @type {?}\n */\n MatDrawerContainer.prototype._left;\n /** @type {?} */\n MatDrawerContainer.prototype._right;\n /**\n * Emits when the component is destroyed.\n * @type {?}\n */\n MatDrawerContainer.prototype._destroyed;\n /** @type {?} */\n MatDrawerContainer.prototype._contentMargins;\n /** @type {?} */\n MatDrawerContainer.prototype._dir;\n /** @type {?} */\n MatDrawerContainer.prototype._element;\n /** @type {?} */\n MatDrawerContainer.prototype._renderer;\n /** @type {?} */\n MatDrawerContainer.prototype._ngZone;\n /** @type {?} */\n MatDrawerContainer.prototype._changeDetectorRef;\n}\n//# sourceMappingURL=drawer.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, ContentChild, ContentChildren, forwardRef, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent } from './drawer';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nvar MatSidenavContent = (function (_super) {\n tslib_1.__extends(MatSidenavContent, _super);\n /**\n * @param {?} changeDetectorRef\n * @param {?} container\n */\n function MatSidenavContent(changeDetectorRef, container) {\n return _super.call(this, changeDetectorRef, container) || this;\n }\n MatSidenavContent.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav-content',\n template: '',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.marginLeft.px]': '_margins.left',\n '[style.marginRight.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavContent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: MatSidenavContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatSidenavContainer; }),] },] },\n ]; };\n return MatSidenavContent;\n}(MatDrawerContent));\nexport { MatSidenavContent };\nfunction MatSidenavContent_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSidenavContent.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSidenavContent.ctorParameters;\n}\nvar MatSidenav = (function (_super) {\n tslib_1.__extends(MatSidenav, _super);\n function MatSidenav() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._fixedInViewport = false;\n _this._fixedTopGap = 0;\n _this._fixedBottomGap = 0;\n return _this;\n }\n Object.defineProperty(MatSidenav.prototype, \"fixedInViewport\", {\n /**\n * Whether the sidenav is fixed in the viewport.\n * @return {?}\n */\n get: function () { return this._fixedInViewport; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedInViewport = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSidenav.prototype, \"fixedTopGap\", {\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n * @return {?}\n */\n get: function () { return this._fixedTopGap; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedTopGap = coerceNumberProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSidenav.prototype, \"fixedBottomGap\", {\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n * @return {?}\n */\n get: function () { return this._fixedBottomGap; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedBottomGap = coerceNumberProperty(value); },\n enumerable: true,\n configurable: true\n });\n MatSidenav.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n template: '',\n animations: [\n trigger('transform', [\n state('open, open-instant', style({\n transform: 'translate3d(0, 0, 0)',\n visibility: 'visible',\n })),\n state('void', style({\n visibility: 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n ],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\n '(keydown)': 'handleKeydown($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenav.ctorParameters = function () { return []; };\n MatSidenav.propDecorators = {\n 'fixedInViewport': [{ type: Input },],\n 'fixedTopGap': [{ type: Input },],\n 'fixedBottomGap': [{ type: Input },],\n };\n return MatSidenav;\n}(MatDrawer));\nexport { MatSidenav };\nfunction MatSidenav_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSidenav.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSidenav.ctorParameters;\n /** @type {?} */\n MatSidenav.propDecorators;\n /** @type {?} */\n MatSidenav.prototype._fixedInViewport;\n /** @type {?} */\n MatSidenav.prototype._fixedTopGap;\n /** @type {?} */\n MatSidenav.prototype._fixedBottomGap;\n}\nvar MatSidenavContainer = (function (_super) {\n tslib_1.__extends(MatSidenavContainer, _super);\n function MatSidenavContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatSidenavContainer.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n template: \"\",\n styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;min-width:5vw;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-opened:not(.mat-drawer-side),.mat-drawer.mat-drawer-opening:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavContainer.ctorParameters = function () { return []; };\n MatSidenavContainer.propDecorators = {\n '_drawers': [{ type: ContentChildren, args: [MatSidenav,] },],\n '_content': [{ type: ContentChild, args: [MatSidenavContent,] },],\n };\n return MatSidenavContainer;\n}(MatDrawerContainer));\nexport { MatSidenavContainer };\nfunction MatSidenavContainer_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSidenavContainer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSidenavContainer.ctorParameters;\n /** @type {?} */\n MatSidenavContainer.propDecorators;\n /** @type {?} */\n MatSidenavContainer.prototype._drawers;\n /** @type {?} */\n MatSidenavContainer.prototype._content;\n}\n//# sourceMappingURL=sidenav.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 { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent } from './drawer';\nimport { MatSidenav, MatSidenavContainer, MatSidenavContent } from './sidenav';\nvar MatSidenavModule = (function () {\n function MatSidenavModule() {\n }\n MatSidenavModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n A11yModule,\n OverlayModule,\n ScrollDispatchModule,\n ],\n exports: [\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavModule.ctorParameters = function () { return []; };\n return MatSidenavModule;\n}());\nexport { MatSidenavModule };\nfunction MatSidenavModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSidenavModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSidenavModule.ctorParameters;\n}\n//# sourceMappingURL=sidenav-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatSidenavModule, throwMatDuplicatedDrawerError, MatDrawerToggleResult, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends"],"mappings":"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"}