{"version":3,"file":"overlay.es5.js","sources":["../../packages/cdk/esm5/overlay/scroll/noop-scroll-strategy.js","../../packages/cdk/esm5/overlay/overlay-config.js","../../packages/cdk/esm5/overlay/overlay-ref.js","../../packages/cdk/esm5/overlay/position/connected-position.js","../../packages/cdk/esm5/overlay/position/scroll-clip.js","../../packages/cdk/esm5/overlay/position/connected-position-strategy.js","../../packages/cdk/esm5/overlay/position/global-position-strategy.js","../../packages/cdk/esm5/overlay/position/overlay-position-builder.js","../../packages/cdk/esm5/overlay/overlay-container.js","../../packages/cdk/esm5/overlay/scroll/scroll-strategy.js","../../packages/cdk/esm5/overlay/scroll/close-scroll-strategy.js","../../packages/cdk/esm5/overlay/scroll/block-scroll-strategy.js","../../packages/cdk/esm5/overlay/scroll/reposition-scroll-strategy.js","../../packages/cdk/esm5/overlay/scroll/scroll-strategy-options.js","../../packages/cdk/esm5/overlay/overlay.js","../../packages/cdk/esm5/overlay/fullscreen-overlay-container.js","../../packages/cdk/esm5/overlay/overlay-directives.js","../../packages/cdk/esm5/overlay/overlay-module.js","../../packages/cdk/esm5/overlay/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 */\n/**\n * Scroll strategy that doesn't do anything.\n */\nvar NoopScrollStrategy = (function () {\n function NoopScrollStrategy() {\n }\n /**\n * @return {?}\n */\n NoopScrollStrategy.prototype.enable = function () { };\n /**\n * @return {?}\n */\n NoopScrollStrategy.prototype.disable = function () { };\n /**\n * @return {?}\n */\n NoopScrollStrategy.prototype.attach = function () { };\n return NoopScrollStrategy;\n}());\nexport { NoopScrollStrategy };\n//# sourceMappingURL=noop-scroll-strategy.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 { NoopScrollStrategy } from './scroll/noop-scroll-strategy';\n/**\n * OverlayConfig captures the initial configuration used when opening an overlay.\n */\nvar OverlayConfig = (function () {\n /**\n * @param {?=} config\n */\n function OverlayConfig(config) {\n var _this = this;\n /**\n * Strategy to be used when handling scroll events while the overlay is open.\n */\n this.scrollStrategy = new NoopScrollStrategy();\n /**\n * Custom class to add to the overlay pane.\n */\n this.panelClass = '';\n /**\n * Whether the overlay has a backdrop.\n */\n this.hasBackdrop = false;\n /**\n * Custom class to add to the backdrop\n */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * The direction of the text in the overlay panel.\n */\n this.direction = 'ltr';\n if (config) {\n Object.keys(config).forEach(function (key) { return _this[key] = config[key]; });\n }\n }\n return OverlayConfig;\n}());\nexport { OverlayConfig };\nfunction OverlayConfig_tsickle_Closure_declarations() {\n /**\n * Strategy with which to position the overlay.\n * @type {?}\n */\n OverlayConfig.prototype.positionStrategy;\n /**\n * Strategy to be used when handling scroll events while the overlay is open.\n * @type {?}\n */\n OverlayConfig.prototype.scrollStrategy;\n /**\n * Custom class to add to the overlay pane.\n * @type {?}\n */\n OverlayConfig.prototype.panelClass;\n /**\n * Whether the overlay has a backdrop.\n * @type {?}\n */\n OverlayConfig.prototype.hasBackdrop;\n /**\n * Custom class to add to the backdrop\n * @type {?}\n */\n OverlayConfig.prototype.backdropClass;\n /**\n * The width of the overlay panel. If a number is provided, pixel units are assumed.\n * @type {?}\n */\n OverlayConfig.prototype.width;\n /**\n * The height of the overlay panel. If a number is provided, pixel units are assumed.\n * @type {?}\n */\n OverlayConfig.prototype.height;\n /**\n * The min-width of the overlay panel. If a number is provided, pixel units are assumed.\n * @type {?}\n */\n OverlayConfig.prototype.minWidth;\n /**\n * The min-height of the overlay panel. If a number is provided, pixel units are assumed.\n * @type {?}\n */\n OverlayConfig.prototype.minHeight;\n /**\n * The max-width of the overlay panel. If a number is provided, pixel units are assumed.\n * @type {?}\n */\n OverlayConfig.prototype.maxWidth;\n /**\n * The max-height of the overlay panel. If a number is provided, pixel units are assumed.\n * @type {?}\n */\n OverlayConfig.prototype.maxHeight;\n /**\n * The direction of the text in the overlay panel.\n * @type {?}\n */\n OverlayConfig.prototype.direction;\n}\n//# sourceMappingURL=overlay-config.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 { Subject } from 'rxjs/Subject';\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nvar OverlayRef = (function () {\n /**\n * @param {?} _portalHost\n * @param {?} _pane\n * @param {?} _config\n * @param {?} _ngZone\n */\n function OverlayRef(_portalHost, _pane, _config, _ngZone) {\n this._portalHost = _portalHost;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n if (_config.scrollStrategy) {\n _config.scrollStrategy.attach(this);\n }\n }\n Object.defineProperty(OverlayRef.prototype, \"overlayElement\", {\n /**\n * The overlay's HTML element\n * @return {?}\n */\n get: function () {\n return this._pane;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Attaches the overlay to a portal instance and adds the backdrop.\n * @param {?} portal Portal instance to which to attach the overlay.\n * @return {?} The portal attachment result.\n */\n OverlayRef.prototype.attach = function (portal) {\n var _this = this;\n var /** @type {?} */ attachResult = this._portalHost.attach(portal);\n if (this._config.positionStrategy) {\n this._config.positionStrategy.attach(this);\n }\n // Update the pane element with the given configuration.\n this._updateStackingOrder();\n this.updateSize();\n this.updateDirection();\n this.updatePosition();\n if (this._config.scrollStrategy) {\n this._config.scrollStrategy.enable();\n }\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n // We can't do a spread here, because IE doesn't support setting multiple classes.\n if (Array.isArray(this._config.panelClass)) {\n this._config.panelClass.forEach(function (cls) { return _this._pane.classList.add(cls); });\n }\n else {\n this._pane.classList.add(this._config.panelClass);\n }\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n return attachResult;\n };\n /**\n * Detaches an overlay from a portal.\n * @return {?} The portal detachment result.\n */\n OverlayRef.prototype.detach = function () {\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._config.positionStrategy && this._config.positionStrategy.detach) {\n this._config.positionStrategy.detach();\n }\n if (this._config.scrollStrategy) {\n this._config.scrollStrategy.disable();\n }\n var /** @type {?} */ detachmentResult = this._portalHost.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n return detachmentResult;\n };\n /**\n * Cleans up the overlay from the DOM.\n * @return {?}\n */\n OverlayRef.prototype.dispose = function () {\n if (this._config.positionStrategy) {\n this._config.positionStrategy.dispose();\n }\n if (this._config.scrollStrategy) {\n this._config.scrollStrategy.disable();\n }\n this.detachBackdrop();\n this._portalHost.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._detachments.next();\n this._detachments.complete();\n };\n /**\n * Checks whether the overlay has been attached.\n * @return {?}\n */\n OverlayRef.prototype.hasAttached = function () {\n return this._portalHost.hasAttached();\n };\n /**\n * Returns an observable that emits when the backdrop has been clicked.\n * @return {?}\n */\n OverlayRef.prototype.backdropClick = function () {\n return this._backdropClick.asObservable();\n };\n /**\n * Returns an observable that emits when the overlay has been attached.\n * @return {?}\n */\n OverlayRef.prototype.attachments = function () {\n return this._attachments.asObservable();\n };\n /**\n * Returns an observable that emits when the overlay has been detached.\n * @return {?}\n */\n OverlayRef.prototype.detachments = function () {\n return this._detachments.asObservable();\n };\n /**\n * Gets the current config of the overlay.\n * @return {?}\n */\n OverlayRef.prototype.getConfig = function () {\n return this._config;\n };\n /**\n * Updates the position of the overlay based on the position strategy.\n * @return {?}\n */\n OverlayRef.prototype.updatePosition = function () {\n if (this._config.positionStrategy) {\n this._config.positionStrategy.apply();\n }\n };\n /**\n * Updates the text direction of the overlay panel.\n * @return {?}\n */\n OverlayRef.prototype.updateDirection = function () {\n this._pane.setAttribute('dir', /** @type {?} */ ((this._config.direction)));\n };\n /**\n * Updates the size of the overlay based on the overlay config.\n * @return {?}\n */\n OverlayRef.prototype.updateSize = function () {\n if (this._config.width || this._config.width === 0) {\n this._pane.style.width = formatCssUnit(this._config.width);\n }\n if (this._config.height || this._config.height === 0) {\n this._pane.style.height = formatCssUnit(this._config.height);\n }\n if (this._config.minWidth || this._config.minWidth === 0) {\n this._pane.style.minWidth = formatCssUnit(this._config.minWidth);\n }\n if (this._config.minHeight || this._config.minHeight === 0) {\n this._pane.style.minHeight = formatCssUnit(this._config.minHeight);\n }\n if (this._config.maxWidth || this._config.maxWidth === 0) {\n this._pane.style.maxWidth = formatCssUnit(this._config.maxWidth);\n }\n if (this._config.maxHeight || this._config.maxHeight === 0) {\n this._pane.style.maxHeight = formatCssUnit(this._config.maxHeight);\n }\n };\n /**\n * Toggles the pointer events for the overlay pane element.\n * @param {?} enablePointer\n * @return {?}\n */\n OverlayRef.prototype._togglePointerEvents = function (enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? 'auto' : 'none';\n };\n /**\n * Attaches a backdrop for this overlay.\n * @return {?}\n */\n OverlayRef.prototype._attachBackdrop = function () {\n var _this = this;\n this._backdropElement = document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._config.backdropClass) {\n this._backdropElement.classList.add(this._config.backdropClass);\n } /** @type {?} */\n ((\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._pane.parentElement)).insertBefore(this._backdropElement, this._pane);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', function () { return _this._backdropClick.next(null); });\n // Add class to fade-in the backdrop after one frame.\n requestAnimationFrame(function () {\n if (_this._backdropElement) {\n _this._backdropElement.classList.add('cdk-overlay-backdrop-showing');\n }\n });\n };\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n * @return {?}\n */\n OverlayRef.prototype._updateStackingOrder = function () {\n if (this._pane.nextSibling) {\n ((this._pane.parentNode)).appendChild(this._pane);\n }\n };\n /**\n * Detaches the backdrop (if any) associated with the overlay.\n * @return {?}\n */\n OverlayRef.prototype.detachBackdrop = function () {\n var _this = this;\n var /** @type {?} */ backdropToDetach = this._backdropElement;\n if (backdropToDetach) {\n var /** @type {?} */ finishDetach_1 = function () {\n // It may not be attached to anything in certain cases (e.g. unit tests).\n if (backdropToDetach && backdropToDetach.parentNode) {\n backdropToDetach.parentNode.removeChild(backdropToDetach);\n }\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (_this._backdropElement == backdropToDetach) {\n _this._backdropElement = null;\n }\n };\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n if (this._config.backdropClass) {\n backdropToDetach.classList.remove(this._config.backdropClass);\n }\n backdropToDetach.addEventListener('transitionend', finishDetach_1);\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._ngZone.runOutsideAngular(function () {\n setTimeout(finishDetach_1, 500);\n });\n }\n };\n return OverlayRef;\n}());\nexport { OverlayRef };\nfunction OverlayRef_tsickle_Closure_declarations() {\n /** @type {?} */\n OverlayRef.prototype._backdropElement;\n /** @type {?} */\n OverlayRef.prototype._backdropClick;\n /** @type {?} */\n OverlayRef.prototype._attachments;\n /** @type {?} */\n OverlayRef.prototype._detachments;\n /** @type {?} */\n OverlayRef.prototype._portalHost;\n /** @type {?} */\n OverlayRef.prototype._pane;\n /** @type {?} */\n OverlayRef.prototype._config;\n /** @type {?} */\n OverlayRef.prototype._ngZone;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction formatCssUnit(value) {\n return typeof value === 'string' ? (value) : value + \"px\";\n}\n//# sourceMappingURL=overlay-ref.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 */\n/** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */\nimport { Optional } from '@angular/core';\n/**\n * The points of the origin element and the overlay element to connect.\n */\nvar ConnectionPositionPair = (function () {\n /**\n * @param {?} origin\n * @param {?} overlay\n */\n function ConnectionPositionPair(origin, overlay) {\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n return ConnectionPositionPair;\n}());\nexport { ConnectionPositionPair };\nfunction ConnectionPositionPair_tsickle_Closure_declarations() {\n /** @type {?} */\n ConnectionPositionPair.prototype.originX;\n /** @type {?} */\n ConnectionPositionPair.prototype.originY;\n /** @type {?} */\n ConnectionPositionPair.prototype.overlayX;\n /** @type {?} */\n ConnectionPositionPair.prototype.overlayY;\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n */\nvar ScrollingVisibility = (function () {\n function ScrollingVisibility() {\n }\n return ScrollingVisibility;\n}());\nexport { ScrollingVisibility };\nfunction ScrollingVisibility_tsickle_Closure_declarations() {\n /** @type {?} */\n ScrollingVisibility.prototype.isOriginClipped;\n /** @type {?} */\n ScrollingVisibility.prototype.isOriginOutsideView;\n /** @type {?} */\n ScrollingVisibility.prototype.isOverlayClipped;\n /** @type {?} */\n ScrollingVisibility.prototype.isOverlayOutsideView;\n}\n/**\n * The change event emitted by the strategy when a fallback position is used.\n */\nvar ConnectedOverlayPositionChange = (function () {\n /**\n * @param {?} connectionPair\n * @param {?} scrollableViewProperties\n */\n function ConnectedOverlayPositionChange(connectionPair, scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n /**\n * @nocollapse\n */\n ConnectedOverlayPositionChange.ctorParameters = function () { return [\n { type: ConnectionPositionPair, },\n { type: ScrollingVisibility, decorators: [{ type: Optional },] },\n ]; };\n return ConnectedOverlayPositionChange;\n}());\nexport { ConnectedOverlayPositionChange };\nfunction ConnectedOverlayPositionChange_tsickle_Closure_declarations() {\n /**\n * @nocollapse\n * @type {?}\n */\n ConnectedOverlayPositionChange.ctorParameters;\n /** @type {?} */\n ConnectedOverlayPositionChange.prototype.connectionPair;\n /** @type {?} */\n ConnectedOverlayPositionChange.prototype.scrollableViewProperties;\n}\n//# sourceMappingURL=connected-position.js.map","/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * \\@docs-private\n * @param {?} element Dimensions of the element (from getBoundingClientRect)\n * @param {?} scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @return {?} Whether the element is scrolled out of view\n */\nexport function isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(function (containerBounds) {\n var /** @type {?} */ outsideAbove = element.bottom < containerBounds.top;\n var /** @type {?} */ outsideBelow = element.top > containerBounds.bottom;\n var /** @type {?} */ outsideLeft = element.right < containerBounds.left;\n var /** @type {?} */ outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * \\@docs-private\n * @param {?} element Dimensions of the element (from getBoundingClientRect)\n * @param {?} scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @return {?} Whether the element is clipped\n */\nexport function isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(function (scrollContainerRect) {\n var /** @type {?} */ clippedAbove = element.top < scrollContainerRect.top;\n var /** @type {?} */ clippedBelow = element.bottom > scrollContainerRect.bottom;\n var /** @type {?} */ clippedLeft = element.left < scrollContainerRect.left;\n var /** @type {?} */ clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n//# sourceMappingURL=scroll-clip.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 { ConnectionPositionPair, ConnectedOverlayPositionChange, } from './connected-position';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { isElementScrolledOutsideView, isElementClippedByScrolling } from './scroll-clip';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nvar ConnectedPositionStrategy = (function () {\n /**\n * @param {?} originPos\n * @param {?} overlayPos\n * @param {?} _connectedTo\n * @param {?} _viewportRuler\n */\n function ConnectedPositionStrategy(originPos, overlayPos, _connectedTo, _viewportRuler) {\n this._connectedTo = _connectedTo;\n this._viewportRuler = _viewportRuler;\n /**\n * Layout direction of the position strategy.\n */\n this._dir = 'ltr';\n /**\n * The offset in pixels for the overlay connection point on the x-axis\n */\n this._offsetX = 0;\n /**\n * The offset in pixels for the overlay connection point on the y-axis\n */\n this._offsetY = 0;\n /**\n * The Scrollable containers used to check scrollable view properties on position change.\n */\n this.scrollables = [];\n /**\n * Subscription to viewport resize events.\n */\n this._resizeSubscription = Subscription.EMPTY;\n /**\n * Ordered list of preferred positions, from most to least desirable.\n */\n this._preferredPositions = [];\n this._onPositionChange = new Subject();\n this._origin = this._connectedTo.nativeElement;\n this.withFallbackPosition(originPos, overlayPos);\n }\n Object.defineProperty(ConnectedPositionStrategy.prototype, \"_isRtl\", {\n /**\n * Whether the we're dealing with an RTL context\n * @return {?}\n */\n get: function () {\n return this._dir === 'rtl';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedPositionStrategy.prototype, \"onPositionChange\", {\n /**\n * Emits an event when the connection point changes.\n * @return {?}\n */\n get: function () {\n return this._onPositionChange.asObservable();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedPositionStrategy.prototype, \"positions\", {\n /**\n * Ordered list of preferred positions, from most to least desirable.\n * @return {?}\n */\n get: function () {\n return this._preferredPositions;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} overlayRef\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.attach = function (overlayRef) {\n var _this = this;\n this._overlayRef = overlayRef;\n this._pane = overlayRef.overlayElement;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(function () { return _this.apply(); });\n };\n /**\n * Performs any cleanup after the element is destroyed.\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.dispose = function () {\n this._resizeSubscription.unsubscribe();\n };\n /**\n * \\@docs-private\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.detach = function () {\n this._resizeSubscription.unsubscribe();\n };\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin fits on-screen.\n * \\@docs-private\n *\n * @return {?} Resolves when the styles have been applied.\n */\n ConnectedPositionStrategy.prototype.apply = function () {\n // We need the bounding rects for the origin and the overlay to determine how to position\n // the overlay relative to the origin.\n var /** @type {?} */ element = this._pane;\n var /** @type {?} */ originRect = this._origin.getBoundingClientRect();\n var /** @type {?} */ overlayRect = element.getBoundingClientRect();\n // We use the viewport rect to determine whether a position would go off-screen.\n var /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n // Fallback point if none of the fallbacks fit into the viewport.\n var /** @type {?} */ fallbackPoint;\n var /** @type {?} */ fallbackPosition;\n // We want to place the overlay in the first of the preferred positions such that the\n // overlay fits on-screen.\n for (var _i = 0, _a = this._preferredPositions; _i < _a.length; _i++) {\n var pos = _a[_i];\n // Get the (x, y) point of connection on the origin, and then use that to get the\n // (top, left) coordinate for the overlay at `pos`.\n var /** @type {?} */ originPoint = this._getOriginConnectionPoint(originRect, pos);\n var /** @type {?} */ overlayPoint = this._getOverlayPoint(originPoint, overlayRect, viewportRect, pos);\n // If the overlay in the calculated position fits on-screen, put it there and we're done.\n if (overlayPoint.fitsInViewport) {\n this._setElementPosition(element, overlayRect, overlayPoint, pos);\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastConnectedPosition = pos;\n return;\n }\n else if (!fallbackPoint || fallbackPoint.visibleArea < overlayPoint.visibleArea) {\n fallbackPoint = overlayPoint;\n fallbackPosition = pos;\n }\n }\n // If none of the preferred positions were in the viewport, take the one\n // with the largest visible area.\n this._setElementPosition(element, overlayRect, /** @type {?} */ ((fallbackPoint)), /** @type {?} */ ((fallbackPosition)));\n };\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.recalculateLastPosition = function () {\n var /** @type {?} */ originRect = this._origin.getBoundingClientRect();\n var /** @type {?} */ overlayRect = this._pane.getBoundingClientRect();\n var /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n var /** @type {?} */ lastPosition = this._lastConnectedPosition || this._preferredPositions[0];\n var /** @type {?} */ originPoint = this._getOriginConnectionPoint(originRect, lastPosition);\n var /** @type {?} */ overlayPoint = this._getOverlayPoint(originPoint, overlayRect, viewportRect, lastPosition);\n this._setElementPosition(this._pane, overlayRect, overlayPoint, lastPosition);\n };\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n * @param {?} scrollables\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.withScrollableContainers = function (scrollables) {\n this.scrollables = scrollables;\n };\n /**\n * Adds a new preferred fallback position.\n * @param {?} originPos\n * @param {?} overlayPos\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.withFallbackPosition = function (originPos, overlayPos) {\n this._preferredPositions.push(new ConnectionPositionPair(originPos, overlayPos));\n return this;\n };\n /**\n * Sets the layout direction so the overlay's position can be adjusted to match.\n * @param {?} dir New layout direction.\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.withDirection = function (dir) {\n this._dir = dir;\n return this;\n };\n /**\n * Sets an offset for the overlay's connection point on the x-axis\n * @param {?} offset New offset in the X axis.\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.withOffsetX = function (offset) {\n this._offsetX = offset;\n return this;\n };\n /**\n * Sets an offset for the overlay's connection point on the y-axis\n * @param {?} offset New offset in the Y axis.\n * @return {?}\n */\n ConnectedPositionStrategy.prototype.withOffsetY = function (offset) {\n this._offsetY = offset;\n return this;\n };\n /**\n * Gets the horizontal (x) \"start\" dimension based on whether the overlay is in an RTL context.\n * @param {?} rect\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._getStartX = function (rect) {\n return this._isRtl ? rect.right : rect.left;\n };\n /**\n * Gets the horizontal (x) \"end\" dimension based on whether the overlay is in an RTL context.\n * @param {?} rect\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._getEndX = function (rect) {\n return this._isRtl ? rect.left : rect.right;\n };\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n * @param {?} originRect\n * @param {?} pos\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._getOriginConnectionPoint = function (originRect, pos) {\n var /** @type {?} */ originStartX = this._getStartX(originRect);\n var /** @type {?} */ originEndX = this._getEndX(originRect);\n var /** @type {?} */ x;\n if (pos.originX == 'center') {\n x = originStartX + (originRect.width / 2);\n }\n else {\n x = pos.originX == 'start' ? originStartX : originEndX;\n }\n var /** @type {?} */ y;\n if (pos.originY == 'center') {\n y = originRect.top + (originRect.height / 2);\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n return { x: x, y: y };\n };\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected, as well as how much of the element\n * would be inside the viewport at that position.\n * @param {?} originPoint\n * @param {?} overlayRect\n * @param {?} viewportRect\n * @param {?} pos\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._getOverlayPoint = function (originPoint, overlayRect, viewportRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the potential overlay position\n // relative to the origin point.\n var /** @type {?} */ overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl ? 0 : -overlayRect.width;\n }\n var /** @type {?} */ overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n var /** @type {?} */ x = originPoint.x + overlayStartX + this._offsetX;\n var /** @type {?} */ y = originPoint.y + overlayStartY + this._offsetY;\n // How much the overlay would overflow at this position, on each side.\n var /** @type {?} */ leftOverflow = 0 - x;\n var /** @type {?} */ rightOverflow = (x + overlayRect.width) - viewportRect.width;\n var /** @type {?} */ topOverflow = 0 - y;\n var /** @type {?} */ bottomOverflow = (y + overlayRect.height) - viewportRect.height;\n // Visible parts of the element on each axis.\n var /** @type {?} */ visibleWidth = this._subtractOverflows(overlayRect.width, leftOverflow, rightOverflow);\n var /** @type {?} */ visibleHeight = this._subtractOverflows(overlayRect.height, topOverflow, bottomOverflow);\n // The area of the element that's within the viewport.\n var /** @type {?} */ visibleArea = visibleWidth * visibleHeight;\n var /** @type {?} */ fitsInViewport = (overlayRect.width * overlayRect.height) === visibleArea;\n return { x: x, y: y, fitsInViewport: fitsInViewport, visibleArea: visibleArea };\n };\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n * @param {?} overlay\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._getScrollVisibility = function (overlay) {\n var /** @type {?} */ originBounds = this._origin.getBoundingClientRect();\n var /** @type {?} */ overlayBounds = overlay.getBoundingClientRect();\n var /** @type {?} */ scrollContainerBounds = this.scrollables.map(function (s) { return s.getElementRef().nativeElement.getBoundingClientRect(); });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n };\n /**\n * Physically positions the overlay element to the given coordinate.\n * @param {?} element\n * @param {?} overlayRect\n * @param {?} overlayPoint\n * @param {?} pos\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._setElementPosition = function (element, overlayRect, overlayPoint, pos) {\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear above\n // or below the origin and the direction in which the element will expand.\n var /** @type {?} */ verticalStyleProperty = pos.overlayY === 'bottom' ? 'bottom' : 'top';\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n var /** @type {?} */ y = verticalStyleProperty === 'top' ?\n overlayPoint.y :\n document.documentElement.clientHeight - (overlayPoint.y + overlayRect.height);\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n var /** @type {?} */ horizontalStyleProperty;\n if (this._dir === 'rtl') {\n horizontalStyleProperty = pos.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = pos.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n var /** @type {?} */ x = horizontalStyleProperty === 'left' ?\n overlayPoint.x :\n document.documentElement.clientWidth - (overlayPoint.x + overlayRect.width);\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n ['top', 'bottom', 'left', 'right'].forEach(function (p) { return element.style[p] = null; });\n element.style[verticalStyleProperty] = y + \"px\";\n element.style[horizontalStyleProperty] = x + \"px\";\n // Notify that the position has been changed along with its change properties.\n var /** @type {?} */ scrollableViewProperties = this._getScrollVisibility(element);\n var /** @type {?} */ positionChange = new ConnectedOverlayPositionChange(pos, scrollableViewProperties);\n this._onPositionChange.next(positionChange);\n };\n /**\n * Subtracts the amount that an element is overflowing on an axis from it's length.\n * @param {?} length\n * @param {...?} overflows\n * @return {?}\n */\n ConnectedPositionStrategy.prototype._subtractOverflows = function (length) {\n var overflows = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n overflows[_i - 1] = arguments[_i];\n }\n return overflows.reduce(function (currentValue, currentOverflow) {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n };\n return ConnectedPositionStrategy;\n}());\nexport { ConnectedPositionStrategy };\nfunction ConnectedPositionStrategy_tsickle_Closure_declarations() {\n /**\n * The overlay to which this strategy is attached.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._overlayRef;\n /**\n * Layout direction of the position strategy.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._dir;\n /**\n * The offset in pixels for the overlay connection point on the x-axis\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._offsetX;\n /**\n * The offset in pixels for the overlay connection point on the y-axis\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._offsetY;\n /**\n * The Scrollable containers used to check scrollable view properties on position change.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype.scrollables;\n /**\n * Subscription to viewport resize events.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._resizeSubscription;\n /**\n * Ordered list of preferred positions, from most to least desirable.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._preferredPositions;\n /**\n * The origin element against which the overlay will be positioned.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._origin;\n /**\n * The overlay pane element.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._pane;\n /**\n * The last position to have been calculated as the best fit position.\n * @type {?}\n */\n ConnectedPositionStrategy.prototype._lastConnectedPosition;\n /** @type {?} */\n ConnectedPositionStrategy.prototype._onPositionChange;\n /** @type {?} */\n ConnectedPositionStrategy.prototype._connectedTo;\n /** @type {?} */\n ConnectedPositionStrategy.prototype._viewportRuler;\n}\n//# sourceMappingURL=connected-position-strategy.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 */\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nvar GlobalPositionStrategy = (function () {\n function GlobalPositionStrategy() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._leftOffset = '';\n this._rightOffset = '';\n this._alignItems = '';\n this._justifyContent = '';\n this._width = '';\n this._height = '';\n this._wrapper = null;\n }\n /**\n * @param {?} overlayRef\n * @return {?}\n */\n GlobalPositionStrategy.prototype.attach = function (overlayRef) {\n this._overlayRef = overlayRef;\n };\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param {?=} value New top offset.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.top = function (value) {\n if (value === void 0) { value = ''; }\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n };\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param {?=} value New left offset.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.left = function (value) {\n if (value === void 0) { value = ''; }\n this._rightOffset = '';\n this._leftOffset = value;\n this._justifyContent = 'flex-start';\n return this;\n };\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param {?=} value New bottom offset.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.bottom = function (value) {\n if (value === void 0) { value = ''; }\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n };\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param {?=} value New right offset.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.right = function (value) {\n if (value === void 0) { value = ''; }\n this._leftOffset = '';\n this._rightOffset = value;\n this._justifyContent = 'flex-end';\n return this;\n };\n /**\n * Sets the overlay width and clears any previously set width.\n * @param {?=} value New width for the overlay\n * @return {?}\n */\n GlobalPositionStrategy.prototype.width = function (value) {\n if (value === void 0) { value = ''; }\n this._width = value;\n // When the width is 100%, we should reset the `left` and the offset,\n // in order to ensure that the element is flush against the viewport edge.\n if (value === '100%') {\n this.left('0px');\n }\n return this;\n };\n /**\n * Sets the overlay height and clears any previously set height.\n * @param {?=} value New height for the overlay\n * @return {?}\n */\n GlobalPositionStrategy.prototype.height = function (value) {\n if (value === void 0) { value = ''; }\n this._height = value;\n // When the height is 100%, we should reset the `top` and the offset,\n // in order to ensure that the element is flush against the viewport edge.\n if (value === '100%') {\n this.top('0px');\n }\n return this;\n };\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param {?=} offset Overlay offset from the horizontal center.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.centerHorizontally = function (offset) {\n if (offset === void 0) { offset = ''; }\n this.left(offset);\n this._justifyContent = 'center';\n return this;\n };\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param {?=} offset Overlay offset from the vertical center.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.centerVertically = function (offset) {\n if (offset === void 0) { offset = ''; }\n this.top(offset);\n this._alignItems = 'center';\n return this;\n };\n /**\n * Apply the position to the element.\n * \\@docs-private\n *\n * @return {?} Resolved when the styles have been applied.\n */\n GlobalPositionStrategy.prototype.apply = function () {\n var /** @type {?} */ element = this._overlayRef.overlayElement;\n if (!this._wrapper && element.parentNode) {\n this._wrapper = document.createElement('div');\n this._wrapper.classList.add('cdk-global-overlay-wrapper');\n element.parentNode.insertBefore(this._wrapper, element);\n this._wrapper.appendChild(element);\n }\n var /** @type {?} */ styles = element.style;\n var /** @type {?} */ parentStyles = ((element.parentNode)).style;\n styles.position = this._cssPosition;\n styles.marginTop = this._topOffset;\n styles.marginLeft = this._leftOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = this._rightOffset;\n styles.width = this._width;\n styles.height = this._height;\n parentStyles.justifyContent = this._justifyContent;\n parentStyles.alignItems = this._alignItems;\n };\n /**\n * Removes the wrapper element from the DOM.\n * @return {?}\n */\n GlobalPositionStrategy.prototype.dispose = function () {\n if (this._wrapper && this._wrapper.parentNode) {\n this._wrapper.parentNode.removeChild(this._wrapper);\n this._wrapper = null;\n }\n };\n return GlobalPositionStrategy;\n}());\nexport { GlobalPositionStrategy };\nfunction GlobalPositionStrategy_tsickle_Closure_declarations() {\n /**\n * The overlay to which this strategy is attached.\n * @type {?}\n */\n GlobalPositionStrategy.prototype._overlayRef;\n /** @type {?} */\n GlobalPositionStrategy.prototype._cssPosition;\n /** @type {?} */\n GlobalPositionStrategy.prototype._topOffset;\n /** @type {?} */\n GlobalPositionStrategy.prototype._bottomOffset;\n /** @type {?} */\n GlobalPositionStrategy.prototype._leftOffset;\n /** @type {?} */\n GlobalPositionStrategy.prototype._rightOffset;\n /** @type {?} */\n GlobalPositionStrategy.prototype._alignItems;\n /** @type {?} */\n GlobalPositionStrategy.prototype._justifyContent;\n /** @type {?} */\n GlobalPositionStrategy.prototype._width;\n /** @type {?} */\n GlobalPositionStrategy.prototype._height;\n /** @type {?} */\n GlobalPositionStrategy.prototype._wrapper;\n}\n//# sourceMappingURL=global-position-strategy.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 { Injectable } from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { ConnectedPositionStrategy } from './connected-position-strategy';\nimport { GlobalPositionStrategy } from './global-position-strategy';\n/**\n * Builder for overlay position strategy.\n */\nvar OverlayPositionBuilder = (function () {\n /**\n * @param {?} _viewportRuler\n */\n function OverlayPositionBuilder(_viewportRuler) {\n this._viewportRuler = _viewportRuler;\n }\n /**\n * Creates a global position strategy.\n * @return {?}\n */\n OverlayPositionBuilder.prototype.global = function () {\n return new GlobalPositionStrategy();\n };\n /**\n * Creates a relative position strategy.\n * @param {?} elementRef\n * @param {?} originPos\n * @param {?} overlayPos\n * @return {?}\n */\n OverlayPositionBuilder.prototype.connectedTo = function (elementRef, originPos, overlayPos) {\n return new ConnectedPositionStrategy(originPos, overlayPos, elementRef, this._viewportRuler);\n };\n OverlayPositionBuilder.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n OverlayPositionBuilder.ctorParameters = function () { return [\n { type: ViewportRuler, },\n ]; };\n return OverlayPositionBuilder;\n}());\nexport { OverlayPositionBuilder };\nfunction OverlayPositionBuilder_tsickle_Closure_declarations() {\n /** @type {?} */\n OverlayPositionBuilder.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n OverlayPositionBuilder.ctorParameters;\n /** @type {?} */\n OverlayPositionBuilder.prototype._viewportRuler;\n}\n//# sourceMappingURL=overlay-position-builder.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 { Injectable, Optional, SkipSelf } from '@angular/core';\n/**\n * The OverlayContainer is the container in which all overlays will load.\n * It should be provided in the root component to ensure it is properly shared.\n */\nvar OverlayContainer = (function () {\n function OverlayContainer() {\n }\n /**\n * @return {?}\n */\n OverlayContainer.prototype.ngOnDestroy = function () {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n };\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @return {?} the container element\n */\n OverlayContainer.prototype.getContainerElement = function () {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n };\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n * @return {?}\n */\n OverlayContainer.prototype._createContainer = function () {\n var /** @type {?} */ container = document.createElement('div');\n container.classList.add('cdk-overlay-container');\n document.body.appendChild(container);\n this._containerElement = container;\n };\n OverlayContainer.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n OverlayContainer.ctorParameters = function () { return []; };\n return OverlayContainer;\n}());\nexport { OverlayContainer };\nfunction OverlayContainer_tsickle_Closure_declarations() {\n /** @type {?} */\n OverlayContainer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n OverlayContainer.ctorParameters;\n /** @type {?} */\n OverlayContainer.prototype._containerElement;\n}\n/**\n * \\@docs-private\n * @param {?} parentContainer\n * @return {?}\n */\nexport function OVERLAY_CONTAINER_PROVIDER_FACTORY(parentContainer) {\n return parentContainer || new OverlayContainer();\n}\n/**\n * \\@docs-private\n */\nexport var OVERLAY_CONTAINER_PROVIDER = {\n // If there is already an OverlayContainer available, use that. Otherwise, provide a new one.\n provide: OverlayContainer,\n deps: [[new Optional(), new SkipSelf(), OverlayContainer]],\n useFactory: OVERLAY_CONTAINER_PROVIDER_FACTORY\n};\n//# sourceMappingURL=overlay-container.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 */\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n * @return {?}\n */\nexport function getMatScrollStrategyAlreadyAttachedError() {\n return Error(\"Scroll strategy has already been attached.\");\n}\n//# sourceMappingURL=scroll-strategy.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 { getMatScrollStrategyAlreadyAttachedError } from './scroll-strategy';\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nvar CloseScrollStrategy = (function () {\n /**\n * @param {?} _scrollDispatcher\n */\n function CloseScrollStrategy(_scrollDispatcher) {\n this._scrollDispatcher = _scrollDispatcher;\n this._scrollSubscription = null;\n }\n /**\n * @param {?} overlayRef\n * @return {?}\n */\n CloseScrollStrategy.prototype.attach = function (overlayRef) {\n if (this._overlayRef) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n };\n /**\n * @return {?}\n */\n CloseScrollStrategy.prototype.enable = function () {\n var _this = this;\n if (!this._scrollSubscription) {\n this._scrollSubscription = this._scrollDispatcher.scrolled(0, function () {\n if (_this._overlayRef.hasAttached()) {\n _this._overlayRef.detach();\n }\n _this.disable();\n });\n }\n };\n /**\n * @return {?}\n */\n CloseScrollStrategy.prototype.disable = function () {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n };\n return CloseScrollStrategy;\n}());\nexport { CloseScrollStrategy };\nfunction CloseScrollStrategy_tsickle_Closure_declarations() {\n /** @type {?} */\n CloseScrollStrategy.prototype._scrollSubscription;\n /** @type {?} */\n CloseScrollStrategy.prototype._overlayRef;\n /** @type {?} */\n CloseScrollStrategy.prototype._scrollDispatcher;\n}\n//# sourceMappingURL=close-scroll-strategy.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 */\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nvar BlockScrollStrategy = (function () {\n /**\n * @param {?} _viewportRuler\n */\n function BlockScrollStrategy(_viewportRuler) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n }\n /**\n * @return {?}\n */\n BlockScrollStrategy.prototype.attach = function () { };\n /**\n * @return {?}\n */\n BlockScrollStrategy.prototype.enable = function () {\n if (this._canBeEnabled()) {\n var /** @type {?} */ root = document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = -this._previousScrollPosition.left + \"px\";\n root.style.top = -this._previousScrollPosition.top + \"px\";\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n };\n /**\n * @return {?}\n */\n BlockScrollStrategy.prototype.disable = function () {\n if (this._isEnabled) {\n this._isEnabled = false;\n document.documentElement.style.left = this._previousHTMLStyles.left;\n document.documentElement.style.top = this._previousHTMLStyles.top;\n document.documentElement.classList.remove('cdk-global-scrollblock');\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n }\n };\n /**\n * @return {?}\n */\n BlockScrollStrategy.prototype._canBeEnabled = function () {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n if (document.documentElement.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n var /** @type {?} */ body = document.body;\n var /** @type {?} */ viewport = this._viewportRuler.getViewportRect();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n };\n return BlockScrollStrategy;\n}());\nexport { BlockScrollStrategy };\nfunction BlockScrollStrategy_tsickle_Closure_declarations() {\n /** @type {?} */\n BlockScrollStrategy.prototype._previousHTMLStyles;\n /** @type {?} */\n BlockScrollStrategy.prototype._previousScrollPosition;\n /** @type {?} */\n BlockScrollStrategy.prototype._isEnabled;\n /** @type {?} */\n BlockScrollStrategy.prototype._viewportRuler;\n}\n//# sourceMappingURL=block-scroll-strategy.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 { getMatScrollStrategyAlreadyAttachedError } from './scroll-strategy';\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nvar RepositionScrollStrategy = (function () {\n /**\n * @param {?} _scrollDispatcher\n * @param {?=} _config\n */\n function RepositionScrollStrategy(_scrollDispatcher, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /**\n * @param {?} overlayRef\n * @return {?}\n */\n RepositionScrollStrategy.prototype.attach = function (overlayRef) {\n if (this._overlayRef) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n };\n /**\n * @return {?}\n */\n RepositionScrollStrategy.prototype.enable = function () {\n var _this = this;\n if (!this._scrollSubscription) {\n var /** @type {?} */ throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle, function () {\n _this._overlayRef.updatePosition();\n });\n }\n };\n /**\n * @return {?}\n */\n RepositionScrollStrategy.prototype.disable = function () {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n };\n return RepositionScrollStrategy;\n}());\nexport { RepositionScrollStrategy };\nfunction RepositionScrollStrategy_tsickle_Closure_declarations() {\n /** @type {?} */\n RepositionScrollStrategy.prototype._scrollSubscription;\n /** @type {?} */\n RepositionScrollStrategy.prototype._overlayRef;\n /** @type {?} */\n RepositionScrollStrategy.prototype._scrollDispatcher;\n /** @type {?} */\n RepositionScrollStrategy.prototype._config;\n}\n//# sourceMappingURL=reposition-scroll-strategy.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 { Injectable } from '@angular/core';\nimport { CloseScrollStrategy } from './close-scroll-strategy';\nimport { NoopScrollStrategy } from './noop-scroll-strategy';\nimport { BlockScrollStrategy } from './block-scroll-strategy';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { RepositionScrollStrategy, } from './reposition-scroll-strategy';\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nvar ScrollStrategyOptions = (function () {\n /**\n * @param {?} _scrollDispatcher\n * @param {?} _viewportRuler\n */\n function ScrollStrategyOptions(_scrollDispatcher, _viewportRuler) {\n var _this = this;\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n /**\n * Do nothing on scroll.\n */\n this.noop = function () { return new NoopScrollStrategy(); };\n /**\n * Close the overlay as soon as the user scrolls.\n */\n this.close = function () { return new CloseScrollStrategy(_this._scrollDispatcher); };\n /**\n * Block scrolling.\n */\n this.block = function () { return new BlockScrollStrategy(_this._viewportRuler); };\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = function (config) {\n return new RepositionScrollStrategy(_this._scrollDispatcher, config);\n };\n }\n ScrollStrategyOptions.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n ScrollStrategyOptions.ctorParameters = function () { return [\n { type: ScrollDispatcher, },\n { type: ViewportRuler, },\n ]; };\n return ScrollStrategyOptions;\n}());\nexport { ScrollStrategyOptions };\nfunction ScrollStrategyOptions_tsickle_Closure_declarations() {\n /** @type {?} */\n ScrollStrategyOptions.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n ScrollStrategyOptions.ctorParameters;\n /**\n * Do nothing on scroll.\n * @type {?}\n */\n ScrollStrategyOptions.prototype.noop;\n /**\n * Close the overlay as soon as the user scrolls.\n * @type {?}\n */\n ScrollStrategyOptions.prototype.close;\n /**\n * Block scrolling.\n * @type {?}\n */\n ScrollStrategyOptions.prototype.block;\n /**\n * Update the overlay's position on scroll.\n * \\@param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n * @type {?}\n */\n ScrollStrategyOptions.prototype.reposition;\n /** @type {?} */\n ScrollStrategyOptions.prototype._scrollDispatcher;\n /** @type {?} */\n ScrollStrategyOptions.prototype._viewportRuler;\n}\n//# sourceMappingURL=scroll-strategy-options.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 { ComponentFactoryResolver, Injectable, ApplicationRef, Injector, NgZone, } from '@angular/core';\nimport { DomPortalHost } from '@angular/cdk/portal';\nimport { OverlayConfig } from './overlay-config';\nimport { OverlayRef } from './overlay-ref';\nimport { OverlayPositionBuilder } from './position/overlay-position-builder';\nimport { OverlayContainer } from './overlay-container';\nimport { ScrollStrategyOptions } from './scroll/index';\n/**\n * Next overlay unique ID.\n */\nvar nextUniqueId = 0;\n/**\n * The default config for newly created overlays.\n */\nvar defaultConfig = new OverlayConfig();\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nvar Overlay = (function () {\n /**\n * @param {?} scrollStrategies\n * @param {?} _overlayContainer\n * @param {?} _componentFactoryResolver\n * @param {?} _positionBuilder\n * @param {?} _appRef\n * @param {?} _injector\n * @param {?} _ngZone\n */\n function Overlay(scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _appRef, _injector, _ngZone) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._appRef = _appRef;\n this._injector = _injector;\n this._ngZone = _ngZone;\n }\n /**\n * Creates an overlay.\n * @param {?=} config Config to apply to the overlay.\n * @return {?} Reference to the created overlay.\n */\n Overlay.prototype.create = function (config) {\n if (config === void 0) { config = defaultConfig; }\n var /** @type {?} */ pane = this._createPaneElement();\n var /** @type {?} */ portalHost = this._createPortalHost(pane);\n return new OverlayRef(portalHost, pane, config, this._ngZone);\n };\n /**\n * Returns a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @return {?}\n */\n Overlay.prototype.position = function () {\n return this._positionBuilder;\n };\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @return {?} Newly-created pane element\n */\n Overlay.prototype._createPaneElement = function () {\n var /** @type {?} */ pane = document.createElement('div');\n pane.id = \"cdk-overlay-\" + nextUniqueId++;\n pane.classList.add('cdk-overlay-pane');\n this._overlayContainer.getContainerElement().appendChild(pane);\n return pane;\n };\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param {?} pane The DOM element to turn into a portal host.\n * @return {?} A portal host for the given DOM element.\n */\n Overlay.prototype._createPortalHost = function (pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef, this._injector);\n };\n Overlay.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n Overlay.ctorParameters = function () { return [\n { type: ScrollStrategyOptions, },\n { type: OverlayContainer, },\n { type: ComponentFactoryResolver, },\n { type: OverlayPositionBuilder, },\n { type: ApplicationRef, },\n { type: Injector, },\n { type: NgZone, },\n ]; };\n return Overlay;\n}());\nexport { Overlay };\nfunction Overlay_tsickle_Closure_declarations() {\n /** @type {?} */\n Overlay.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n Overlay.ctorParameters;\n /** @type {?} */\n Overlay.prototype.scrollStrategies;\n /** @type {?} */\n Overlay.prototype._overlayContainer;\n /** @type {?} */\n Overlay.prototype._componentFactoryResolver;\n /** @type {?} */\n Overlay.prototype._positionBuilder;\n /** @type {?} */\n Overlay.prototype._appRef;\n /** @type {?} */\n Overlay.prototype._injector;\n /** @type {?} */\n Overlay.prototype._ngZone;\n}\n//# sourceMappingURL=overlay.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 { Injectable } from '@angular/core';\nimport { OverlayContainer } from './overlay-container';\n/**\n * The FullscreenOverlayContainer is the alternative to OverlayContainer\n * that supports correct displaying of overlay elements in Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n * It should be provided in the root component that way:\n * providers: [\n * {provide: OverlayContainer, useClass: FullscreenOverlayContainer}\n * ],\n */\nvar FullscreenOverlayContainer = (function (_super) {\n tslib_1.__extends(FullscreenOverlayContainer, _super);\n function FullscreenOverlayContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n FullscreenOverlayContainer.prototype._createContainer = function () {\n var _this = this;\n _super.prototype._createContainer.call(this);\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(function () { return _this._adjustParentForFullscreenChange(); });\n };\n /**\n * @return {?}\n */\n FullscreenOverlayContainer.prototype._adjustParentForFullscreenChange = function () {\n if (!this._containerElement) {\n return;\n }\n var /** @type {?} */ fullscreenElement = this.getFullscreenElement();\n var /** @type {?} */ parent = fullscreenElement || document.body;\n parent.appendChild(this._containerElement);\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n FullscreenOverlayContainer.prototype._addFullscreenChangeListener = function (fn) {\n if (document.fullscreenEnabled) {\n document.addEventListener('fullscreenchange', fn);\n }\n else if (document.webkitFullscreenEnabled) {\n document.addEventListener('webkitfullscreenchange', fn);\n }\n else if (((document)).mozFullScreenEnabled) {\n document.addEventListener('mozfullscreenchange', fn);\n }\n else if (((document)).msFullscreenEnabled) {\n document.addEventListener('MSFullscreenChange', fn);\n }\n };\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n * @return {?}\n */\n FullscreenOverlayContainer.prototype.getFullscreenElement = function () {\n return document.fullscreenElement ||\n document.webkitFullscreenElement ||\n ((document)).mozFullScreenElement ||\n ((document)).msFullscreenElement ||\n null;\n };\n FullscreenOverlayContainer.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n FullscreenOverlayContainer.ctorParameters = function () { return []; };\n return FullscreenOverlayContainer;\n}(OverlayContainer));\nexport { FullscreenOverlayContainer };\nfunction FullscreenOverlayContainer_tsickle_Closure_declarations() {\n /** @type {?} */\n FullscreenOverlayContainer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n FullscreenOverlayContainer.ctorParameters;\n}\n//# sourceMappingURL=fullscreen-overlay-container.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 { Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, Optional, Output, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Overlay } from './overlay';\nimport { OverlayConfig } from './overlay-config';\nimport { ConnectionPositionPair, } from './position/connected-position';\nimport { Subscription } from 'rxjs/Subscription';\n/**\n * Default set of positions for the overlay. Follows the behavior of a dropdown.\n */\nvar defaultPositionList = [\n new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }),\n];\n/**\n * Injection token that determines the scroll handling while the connected overlay is open.\n */\nexport var MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('mat-connected-overlay-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nexport function MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nexport var MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nvar OverlayOrigin = (function () {\n /**\n * @param {?} elementRef\n */\n function OverlayOrigin(elementRef) {\n this.elementRef = elementRef;\n }\n OverlayOrigin.decorators = [\n { type: Directive, args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n },] },\n ];\n /**\n * @nocollapse\n */\n OverlayOrigin.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return OverlayOrigin;\n}());\nexport { OverlayOrigin };\nfunction OverlayOrigin_tsickle_Closure_declarations() {\n /** @type {?} */\n OverlayOrigin.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n OverlayOrigin.ctorParameters;\n /** @type {?} */\n OverlayOrigin.prototype.elementRef;\n}\n/**\n * Directive to facilitate declarative creation of an Overlay using a ConnectedPositionStrategy.\n */\nvar ConnectedOverlayDirective = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _renderer\n * @param {?} templateRef\n * @param {?} viewContainerRef\n * @param {?} _scrollStrategy\n * @param {?} _dir\n */\n function ConnectedOverlayDirective(_overlay, _renderer, templateRef, viewContainerRef, _scrollStrategy, _dir) {\n this._overlay = _overlay;\n this._renderer = _renderer;\n this._scrollStrategy = _scrollStrategy;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n this._offsetX = 0;\n this._offsetY = 0;\n this._escapeListener = function () { };\n /**\n * Strategy to be used when handling scroll events while the overlay is open.\n */\n this.scrollStrategy = this._scrollStrategy();\n /**\n * Whether the overlay is open.\n */\n this.open = false;\n /**\n * Event emitted when the backdrop is clicked.\n */\n this.backdropClick = new EventEmitter();\n /**\n * Event emitted when the position has changed.\n */\n this.positionChange = new EventEmitter();\n /**\n * Event emitted when the overlay has been attached.\n */\n this.attach = new EventEmitter();\n /**\n * Event emitted when the overlay has been detached.\n */\n this.detach = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n }\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"offsetX\", {\n /**\n * The offset in pixels for the overlay connection point on the x-axis\n * @return {?}\n */\n get: function () { return this._offsetX; },\n /**\n * @param {?} offsetX\n * @return {?}\n */\n set: function (offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._position.withOffsetX(offsetX);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"offsetY\", {\n /**\n * The offset in pixels for the overlay connection point on the y-axis\n * @return {?}\n */\n get: function () { return this._offsetY; },\n /**\n * @param {?} offsetY\n * @return {?}\n */\n set: function (offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._position.withOffsetY(offsetY);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"hasBackdrop\", {\n /**\n * Whether or not the overlay should attach a backdrop.\n * @return {?}\n */\n get: function () { return this._hasBackdrop; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._hasBackdrop = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedOrigin\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.origin; },\n /**\n * @param {?} _origin\n * @return {?}\n */\n set: function (_origin) { this.origin = _origin; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedPositions\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.positions; },\n /**\n * @param {?} _positions\n * @return {?}\n */\n set: function (_positions) { this.positions = _positions; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedOffsetX\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.offsetX; },\n /**\n * @param {?} _offsetX\n * @return {?}\n */\n set: function (_offsetX) { this.offsetX = _offsetX; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedOffsetY\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.offsetY; },\n /**\n * @param {?} _offsetY\n * @return {?}\n */\n set: function (_offsetY) { this.offsetY = _offsetY; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedWidth\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.width; },\n /**\n * @param {?} _width\n * @return {?}\n */\n set: function (_width) { this.width = _width; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedHeight\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.height; },\n /**\n * @param {?} _height\n * @return {?}\n */\n set: function (_height) { this.height = _height; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedMinWidth\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.minWidth; },\n /**\n * @param {?} _minWidth\n * @return {?}\n */\n set: function (_minWidth) { this.minWidth = _minWidth; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedMinHeight\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.minHeight; },\n /**\n * @param {?} _minHeight\n * @return {?}\n */\n set: function (_minHeight) { this.minHeight = _minHeight; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedBackdropClass\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.backdropClass; },\n /**\n * @param {?} _backdropClass\n * @return {?}\n */\n set: function (_backdropClass) { this.backdropClass = _backdropClass; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedScrollStrategy\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.scrollStrategy; },\n /**\n * @param {?} _scrollStrategy\n * @return {?}\n */\n set: function (_scrollStrategy) {\n this.scrollStrategy = _scrollStrategy;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedOpen\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.open; },\n /**\n * @param {?} _open\n * @return {?}\n */\n set: function (_open) { this.open = _open; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"_deprecatedHasBackdrop\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.hasBackdrop; },\n /**\n * @param {?} _hasBackdrop\n * @return {?}\n */\n set: function (_hasBackdrop) { this.hasBackdrop = _hasBackdrop; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"overlayRef\", {\n /**\n * The associated overlay reference.\n * @return {?}\n */\n get: function () {\n return this._overlayRef;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConnectedOverlayDirective.prototype, \"dir\", {\n /**\n * The element's layout direction.\n * @return {?}\n */\n get: function () {\n return this._dir ? this._dir.value : 'ltr';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ConnectedOverlayDirective.prototype.ngOnDestroy = function () {\n this._destroyOverlay();\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n ConnectedOverlayDirective.prototype.ngOnChanges = function (changes) {\n if (changes['open'] || changes['_deprecatedOpen']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n };\n /**\n * Creates an overlay\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._createOverlay = function () {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n this._overlayRef = this._overlay.create(this._buildConfig());\n };\n /**\n * Builds the overlay config based on the directive's inputs\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._buildConfig = function () {\n var /** @type {?} */ positionStrategy = this._position = this._createPositionStrategy();\n var /** @type {?} */ overlayConfig = new OverlayConfig({\n positionStrategy: positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n return overlayConfig;\n };\n /**\n * Returns the position strategy of the overlay to be set on the overlay config\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._createPositionStrategy = function () {\n var /** @type {?} */ pos = this.positions[0];\n var /** @type {?} */ originPoint = { originX: pos.originX, originY: pos.originY };\n var /** @type {?} */ overlayPoint = { overlayX: pos.overlayX, overlayY: pos.overlayY };\n var /** @type {?} */ strategy = this._overlay.position()\n .connectedTo(this.origin.elementRef, originPoint, overlayPoint)\n .withOffsetX(this.offsetX)\n .withOffsetY(this.offsetY);\n this._handlePositionChanges(strategy);\n return strategy;\n };\n /**\n * @param {?} strategy\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._handlePositionChanges = function (strategy) {\n var _this = this;\n for (var /** @type {?} */ i = 1; i < this.positions.length; i++) {\n strategy.withFallbackPosition({ originX: this.positions[i].originX, originY: this.positions[i].originY }, { overlayX: this.positions[i].overlayX, overlayY: this.positions[i].overlayY });\n }\n this._positionSubscription =\n strategy.onPositionChange.subscribe(function (pos) { return _this.positionChange.emit(pos); });\n };\n /**\n * Attaches the overlay and subscribes to backdrop clicks if backdrop exists\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._attachOverlay = function () {\n var _this = this;\n if (!this._overlayRef) {\n this._createOverlay();\n }\n this._position.withDirection(this.dir);\n this._overlayRef.getConfig().direction = this.dir;\n this._initEscapeListener();\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n this.attach.emit();\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(function () {\n _this.backdropClick.emit();\n });\n }\n };\n /**\n * Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._detachOverlay = function () {\n if (this._overlayRef) {\n this._overlayRef.detach();\n this.detach.emit();\n }\n this._backdropSubscription.unsubscribe();\n this._escapeListener();\n };\n /**\n * Destroys the overlay created by this directive.\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._destroyOverlay = function () {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n this._escapeListener();\n };\n /**\n * Sets the event listener that closes the overlay when pressing Escape.\n * @return {?}\n */\n ConnectedOverlayDirective.prototype._initEscapeListener = function () {\n var _this = this;\n this._escapeListener = this._renderer.listen('document', 'keydown', function (event) {\n if (event.keyCode === ESCAPE) {\n _this._detachOverlay();\n }\n });\n };\n ConnectedOverlayDirective.decorators = [\n { type: Directive, args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay'\n },] },\n ];\n /**\n * @nocollapse\n */\n ConnectedOverlayDirective.ctorParameters = function () { return [\n { type: Overlay, },\n { type: Renderer2, },\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY,] },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n ConnectedOverlayDirective.propDecorators = {\n 'origin': [{ type: Input, args: ['cdkConnectedOverlayOrigin',] },],\n 'positions': [{ type: Input, args: ['cdkConnectedOverlayPositions',] },],\n 'offsetX': [{ type: Input, args: ['cdkConnectedOverlayOffsetX',] },],\n 'offsetY': [{ type: Input, args: ['cdkConnectedOverlayOffsetY',] },],\n 'width': [{ type: Input, args: ['cdkConnectedOverlayWidth',] },],\n 'height': [{ type: Input, args: ['cdkConnectedOverlayHeight',] },],\n 'minWidth': [{ type: Input, args: ['cdkConnectedOverlayMinWidth',] },],\n 'minHeight': [{ type: Input, args: ['cdkConnectedOverlayMinHeight',] },],\n 'backdropClass': [{ type: Input, args: ['cdkConnectedOverlayBackdropClass',] },],\n 'scrollStrategy': [{ type: Input, args: ['cdkConnectedOverlayScrollStrategy',] },],\n 'open': [{ type: Input, args: ['cdkConnectedOverlayOpen',] },],\n 'hasBackdrop': [{ type: Input, args: ['cdkConnectedOverlayHasBackdrop',] },],\n '_deprecatedOrigin': [{ type: Input, args: ['origin',] },],\n '_deprecatedPositions': [{ type: Input, args: ['positions',] },],\n '_deprecatedOffsetX': [{ type: Input, args: ['offsetX',] },],\n '_deprecatedOffsetY': [{ type: Input, args: ['offsetY',] },],\n '_deprecatedWidth': [{ type: Input, args: ['width',] },],\n '_deprecatedHeight': [{ type: Input, args: ['height',] },],\n '_deprecatedMinWidth': [{ type: Input, args: ['minWidth',] },],\n '_deprecatedMinHeight': [{ type: Input, args: ['minHeight',] },],\n '_deprecatedBackdropClass': [{ type: Input, args: ['backdropClass',] },],\n '_deprecatedScrollStrategy': [{ type: Input, args: ['scrollStrategy',] },],\n '_deprecatedOpen': [{ type: Input, args: ['open',] },],\n '_deprecatedHasBackdrop': [{ type: Input, args: ['hasBackdrop',] },],\n 'backdropClick': [{ type: Output },],\n 'positionChange': [{ type: Output },],\n 'attach': [{ type: Output },],\n 'detach': [{ type: Output },],\n };\n return ConnectedOverlayDirective;\n}());\nexport { ConnectedOverlayDirective };\nfunction ConnectedOverlayDirective_tsickle_Closure_declarations() {\n /** @type {?} */\n ConnectedOverlayDirective.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n ConnectedOverlayDirective.ctorParameters;\n /** @type {?} */\n ConnectedOverlayDirective.propDecorators;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._overlayRef;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._templatePortal;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._hasBackdrop;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._backdropSubscription;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._positionSubscription;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._offsetX;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._offsetY;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._position;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._escapeListener;\n /**\n * Origin for the connected overlay.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.origin;\n /**\n * Registered connected position pairs.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.positions;\n /**\n * The width of the overlay panel.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.width;\n /**\n * The height of the overlay panel.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.height;\n /**\n * The min width of the overlay panel.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.minWidth;\n /**\n * The min height of the overlay panel.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.minHeight;\n /**\n * The custom class to be set on the backdrop element.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.backdropClass;\n /**\n * Strategy to be used when handling scroll events while the overlay is open.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.scrollStrategy;\n /**\n * Whether the overlay is open.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.open;\n /**\n * Event emitted when the backdrop is clicked.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.backdropClick;\n /**\n * Event emitted when the position has changed.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.positionChange;\n /**\n * Event emitted when the overlay has been attached.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.attach;\n /**\n * Event emitted when the overlay has been detached.\n * @type {?}\n */\n ConnectedOverlayDirective.prototype.detach;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._overlay;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._renderer;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._scrollStrategy;\n /** @type {?} */\n ConnectedOverlayDirective.prototype._dir;\n}\n//# sourceMappingURL=overlay-directives.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 { NgModule } from '@angular/core';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { Overlay } from './overlay';\nimport { ScrollDispatchModule, VIEWPORT_RULER_PROVIDER } from '@angular/cdk/scrolling';\nimport { ConnectedOverlayDirective, MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER, OverlayOrigin, } from './overlay-directives';\nimport { OverlayPositionBuilder } from './position/overlay-position-builder';\nimport { OVERLAY_CONTAINER_PROVIDER } from './overlay-container';\nimport { ScrollStrategyOptions } from './scroll/scroll-strategy-options';\nexport var /** @type {?} */ OVERLAY_PROVIDERS = [\n Overlay,\n OverlayPositionBuilder,\n VIEWPORT_RULER_PROVIDER,\n OVERLAY_CONTAINER_PROVIDER,\n MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER,\n];\nvar OverlayModule = (function () {\n function OverlayModule() {\n }\n OverlayModule.decorators = [\n { type: NgModule, args: [{\n imports: [PortalModule, ScrollDispatchModule],\n exports: [ConnectedOverlayDirective, OverlayOrigin, ScrollDispatchModule],\n declarations: [ConnectedOverlayDirective, OverlayOrigin],\n providers: [OVERLAY_PROVIDERS, ScrollStrategyOptions],\n },] },\n ];\n /**\n * @nocollapse\n */\n OverlayModule.ctorParameters = function () { return []; };\n return OverlayModule;\n}());\nexport { OverlayModule };\nfunction OverlayModule_tsickle_Closure_declarations() {\n /** @type {?} */\n OverlayModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n OverlayModule.ctorParameters;\n}\n//# sourceMappingURL=overlay-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { Overlay, OverlayContainer, FullscreenOverlayContainer, OverlayRef, ConnectedOverlayDirective, OverlayOrigin, ViewportRuler, GlobalPositionStrategy, ConnectedPositionStrategy, VIEWPORT_RULER_PROVIDER, OverlayConfig, ConnectionPositionPair, ScrollingVisibility, ConnectedOverlayPositionChange, Scrollable, ScrollDispatcher, ScrollStrategyOptions, RepositionScrollStrategy, CloseScrollStrategy, NoopScrollStrategy, BlockScrollStrategy, OVERLAY_PROVIDERS, OverlayModule } from './public-api';\nexport { OVERLAY_CONTAINER_PROVIDER as ɵb, OVERLAY_CONTAINER_PROVIDER_FACTORY as ɵa } from './overlay-container';\nexport { MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY as ɵc, MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER as ɵe, MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY as ɵd } from './overlay-directives';\nexport { OverlayPositionBuilder as ɵf } from './position/overlay-position-builder';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends"],"mappings":"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"}