http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/cdk/esm2015/overlay.js.map
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/esm2015/overlay.js.map 
b/node_modules/@angular/cdk/esm2015/overlay.js.map
new file mode 100644
index 0000000..895a969
--- /dev/null
+++ b/node_modules/@angular/cdk/esm2015/overlay.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"overlay.js","sources":["../../packages/cdk/overlay/scroll/noop-scroll-strategy.js","../../packages/cdk/overlay/overlay-config.js","../../packages/cdk/overlay/overlay-ref.js","../../packages/cdk/overlay/position/connected-position.js","../../packages/cdk/overlay/position/scroll-clip.js","../../packages/cdk/overlay/position/connected-position-strategy.js","../../packages/cdk/overlay/position/global-position-strategy.js","../../packages/cdk/overlay/position/overlay-position-builder.js","../../packages/cdk/overlay/overlay-container.js","../../packages/cdk/overlay/scroll/scroll-strategy.js","../../packages/cdk/overlay/scroll/close-scroll-strategy.js","../../packages/cdk/overlay/scroll/block-scroll-strategy.js","../../packages/cdk/overlay/scroll/reposition-scroll-strategy.js","../../packages/cdk/overlay/scroll/scroll-strategy-options.js","../../packages/cdk/overlay/overlay.js","../../packages/cdk/overlay/fullscreen-overlay-container.js","../../packages/cdk/overlay/ove
 
rlay-directives.js","../../packages/cdk/overlay/overlay-module.js","../../packages/cdk/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 */\nexport class NoopScrollStrategy {\n    /**\n     * 
@return {?}\n     */\n    enable() { }\n    /**\n     * @return {?}\n     */\n  
  disable() { }\n    /**\n     * @return {?}\n     */\n    attach() { }\n}\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 op
 ening an overlay.\n */\nexport class OverlayConfig {\n    /**\n     * @param 
{?=} config\n     */\n    constructor(config) {\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(key => this[key] = 
config[key]);\n        }\n    }\n}\nfunction 
OverlayConfig_tsickle_Closure_declarations() {\n    /**\n     * Strategy with 
which to position the ove
 rlay.\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://angula
 r.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 */\nexport class OverlayRef {\n    
/**\n     * @param {?} _portalHost\n     * @param {?} _pane\n     * @param {?} 
_config\n     * @param {?} _ngZone\n     */\n    constructor(_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    /**\n     * 
The overlay's HTML element\n     * @return {?}\n     */\n    get 
overlayElement() {\n        return this._pane;\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    attach(portal) {\n        let /** @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 suppo
 rt setting multiple classes.\n            if 
(Array.isArray(this._config.panelClass)) {\n                
this._config.panelClass.forEach(cls => 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    detach() {\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        const /** @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    dispose() {\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 ov
 erlay has been attached.\n     * @return {?}\n     */\n    hasAttached() {\n   
     return this._portalHost.hasAttached();\n    }\n    /**\n     * Returns an 
observable that emits when the backdrop has been clicked.\n     * @return {?}\n 
    */\n    backdropClick() {\n        return 
this._backdropClick.asObservable();\n    }\n    /**\n     * Returns an 
observable that emits when the overlay has been attached.\n     * @return {?}\n 
    */\n    attachments() {\n        return this._attachments.asObservable();\n 
   }\n    /**\n     * Returns an observable that emits when the overlay has 
been detached.\n     * @return {?}\n     */\n    detachments() {\n        
return this._detachments.asObservable();\n    }\n    /**\n     * Gets the 
current config of the overlay.\n     * @return {?}\n     */\n    getConfig() 
{\n        return this._config;\n    }\n    /**\n     * Updates the position of 
the overlay based on the position strategy.\n     * @return {?}\n     */\n    
updatePosition() {\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 
   updateDirection() {\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    
updateSize() {\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    
_togglePointerEvents(enablePointer) {\n        this._pane.style.pointerEvents = 
enablePointer ? 'auto' : 'none';\n    }\n    /**\n     * Attaches a backdrop 
for this overlay.\n     * @return {?}\n     */\n    _attachBackdrop() {\n       
 this._backdropElement = document.createElement('div');\n        
this._backdropElement.classList.add('cdk-overlay-backdrop');\n        if 
(this._config.backdropClass) {\n            this._backdropElement.classList.a
 dd(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', 
() => this._backdropClick.next(null));\n        // Add class to fade-in the 
backdrop after one frame.\n        requestAnimationFrame(() => {\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 on
 e,\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    _updateStackingOrder() {\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    detachBackdrop() {\n        let /** @type {?} */ 
backdropToDetach = this._backdropElement;\n        if (backdropToDetach) {\n    
        let /** @type {?} */ finishDetach = () => {\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 po
 rtal 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);\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 ther
 e'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(() => 
{\n                setTimeout(finishDetach, 500);\n            });\n        }\n 
   }\n}\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 */\nexport class ConnectionPositionPair {\n    /**\n     
* @param {?} origin\n     * @param {?} overlay\n     */\n    
constructor(origin, overlay) {\n        this.originX = origin.originX;\n        
this.originY = origin.originY;\n        this.overlayX = overlay.overlayX;\n     
   this.overlayY = overlay.overlayY;\n    }\n}\nfunction 
ConnectionPositionPair_tsickle_Closure_declarations() {\n    /** @type {?} */\n 
   ConnectionPositionPair.prototype.originX;\n    /** @type {?} */\n    
ConnectionPosition
 Pair.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 */\nexport class 
ScrollingVisibility {\n}\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 */\nexport 
class ConnectedOverlayPositionChange {\n    /**\n     * @param {?} 
connectionPair\n     * @param {?} scrollableViewProperties\n     */\n    
construct
 or(connectionPair, scrollableViewProperties) {\n        this.connectionPair = 
connectionPair;\n        this.scrollableViewProperties = 
scrollableViewProperties;\n    }\n}\n/**\n * @nocollapse\n 
*/\nConnectedOverlayPositionChange.ctorParameters = () => [\n    { type: 
ConnectionPositionPair, },\n    { type: ScrollingVisibility, decorators: [{ 
type: Optional },] },\n];\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(containerBounds => {\n    
    const /** @type {?} */ outsideAbove = element.bottom < 
containerBounds.top;\n        const /** @type {?} */ outsideBelow = element.top 
> containerBounds.bottom;\n        const /** @type {?} */ outsideLeft = 
element.right < containerBounds.left;\n        const /** @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(scrollContainerRect => {\n        const /** @type {?} */ 
clippedAbove = element.top < scrollContainerRect.top;\n        const /** @type 
{?} */ clippedBelow = element.bottom > scrollContainerRect.bottom;\n        
const /** @type {?} */ clippedLeft = element.left < scrollContainerRect.left;\n 
       const /** @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 
*/\nexport class ConnectedPositionStrategy {\n    /**\n     * @param {?} 
originPos\n     * @param {?} overlayPos\n     * @param {?} _connectedTo\n     * 
@param {?} _viewportRuler\n     */\n    constructor(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    /**\n     * 
Whether the we're dealing with an RTL context\n     * @return {?}\n    
  */\n    get _isRtl() {\n        return this._dir === 'rtl';\n    }\n    /**\n 
    * Emits an event when the connection point changes.\n     * @return {?}\n   
  */\n    get onPositionChange() {\n        return 
this._onPositionChange.asObservable();\n    }\n    /**\n     * Ordered list of 
preferred positions, from most to least desirable.\n     * @return {?}\n     
*/\n    get positions() {\n        return this._preferredPositions;\n    }\n    
/**\n     * @param {?} overlayRef\n     * @return {?}\n     */\n    
attach(overlayRef) {\n        this._overlayRef = overlayRef;\n        
this._pane = overlayRef.overlayElement;\n        
this._resizeSubscription.unsubscribe();\n        this._resizeSubscription = 
this._viewportRuler.change().subscribe(() => this.apply());\n    }\n    /**\n   
  * Performs any cleanup after the element is destroyed.\n     * @return {?}\n  
   */\n    dispose() {\n        this._resizeSubscription.unsubscribe();\n    
}\n    /**\n     * \\@docs-private\n     * @return 
 {?}\n     */\n    detach() {\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    apply() 
{\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     
   const /** @type {?} */ element = this._pane;\n        const /** @type {?} */ 
originRect = this._origin.getBoundingClientRect();\n        const /** @type {?} 
*/ overlayRect = element.getBoundingClientRect();\n        // We use the 
viewport rect to determine whether a position would go off-screen.\n        
const /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n  
      // Fallback point if none of the fallbacks fit into the viewport.\n       
 let /** @type {?} */ fall
 backPoint;\n        let /** @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 (let /** @type {?} */ pos of 
this._preferredPositions) {\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            let /** @type {?} */ 
originPoint = this._getOriginConnectionPoint(originRect, pos);\n            let 
/** @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._last
 ConnectedPosition = 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    recalculateLastPosition() {\n        
const /** @type {?} */ originRect = this._origin.getBoundingClientRect();\n     
   const /** @type {?} */ o
 verlayRect = this._pane.getBoundingClientRect();\n        const /** @type {?} 
*/ viewportRect = this._viewportRuler.getViewportRect();\n        const /** 
@type {?} */ lastPosition = this._lastConnectedPosition || 
this._preferredPositions[0];\n        let /** @type {?} */ originPoint = 
this._getOriginConnectionPoint(originRect, lastPosition);\n        let /** 
@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   
 withScrollableContainers(scrollables) {\n        this.scrollables = 
scrollables;\n    }\n    /**\n
      * Adds a new preferred fallback position.\n     * @param {?} originPos\n  
   * @param {?} overlayPos\n     * @return {?}\n     */\n    
withFallbackPosition(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    
withDirection(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 
   withOffsetX(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    withOffsetY(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    
_getStartX(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    _getEndX(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    
_getOriginConnectionPoint(originRect, pos) {\n        const /** @type {?} */ 
originStartX = this._getStartX(originRect);\n        const /** @type {?} */ 
originEndX = this._getEndX(originRect);\n        let /** @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        let /** @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, 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    
_getOverlayPoint(originPoint, overlayRect, viewportRect, pos) {\n        // 
Calculate the (overlayStartX, overlayStartY
 ), the start of the potential overlay position\n        // relative to the 
origin point.\n        let /** @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        let /** @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        let /** @type {?} */ x = originPoint.x + overlayStartX + 
this._offsetX;\n        let /** @type {?} */ y = originPoint.y + overlayStartY 
+ this._offsetY;\n        // How much the overlay would overflow at this 
position, on ea
 ch side.\n        let /** @type {?} */ leftOverflow = 0 - x;\n        let /** 
@type {?} */ rightOverflow = (x + overlayRect.width) - viewportRect.width;\n    
    let /** @type {?} */ topOverflow = 0 - y;\n        let /** @type {?} */ 
bottomOverflow = (y + overlayRect.height) - viewportRect.height;\n        // 
Visible parts of the element on each axis.\n        let /** @type {?} */ 
visibleWidth = this._subtractOverflows(overlayRect.width, leftOverflow, 
rightOverflow);\n        let /** @type {?} */ visibleHeight = 
this._subtractOverflows(overlayRect.height, topOverflow, bottomOverflow);\n     
   // The area of the element that's within the viewport.\n        let /** 
@type {?} */ visibleArea = visibleWidth * visibleHeight;\n        let /** @type 
{?} */ fitsInViewport = (overlayRect.width * overlayRect.height) === 
visibleArea;\n        return { x, y, fitsInViewport, visibleArea };\n    }\n    
/**\n     * Gets the view properties of the trigger and overlay, including 
whether they are cli
 pped\n     * or completely outside the view of any of the strategy's 
scrollables.\n     * @param {?} overlay\n     * @return {?}\n     */\n    
_getScrollVisibility(overlay) {\n        const /** @type {?} */ originBounds = 
this._origin.getBoundingClientRect();\n        const /** @type {?} */ 
overlayBounds = overlay.getBoundingClientRect();\n        const /** @type {?} 
*/ scrollContainerBounds = this.scrollables.map(s => 
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    
_setElementPosition(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        let /** @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        let /** @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 deter
 mines 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        let /** @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        let /** @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(p => 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        const /** 
@type {?} */ scrollableViewProperties = this._getScrollVisibility(element);\n   
     const /** @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    _subtractOverflows(length, ...overflows) {\n        return 
overflows.reduce((currentValue, currentOverflow) => {\n            return 
currentValue - Math.max(currentOverflow, 0);\n        }, length);\n    
}\n}\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 a
 n 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 */\nexport class GlobalPositionStrategy {\n    constructor() {\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    attach(overlayRef) {\n        
this._overlayRef = overlayRef;\n    }\n    /**\n     * Sets the top position of 
the overlay. Clears any previous
 ly set vertical position.\n     * @param {?=} value New top offset.\n     * 
@return {?}\n     */\n    top(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    left(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    bottom(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    right(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    
width(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    height(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    centerHorizontally(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    centerVertically(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    
apply() {\n        const /** @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        let /** @type {?} */ 
styles = element.style;\n        let /** @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    dispose() {\n   
     if (this._wrapper && this._wrapper.parentNode) {\n            
this._wrapper.parentNode.removeChild(this._wrapper);\n            this._wrapper 
= null;\n        }\n    }\n}\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    /** @ty
 pe {?} */\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 
*/\nexport class OverlayPositionBuilder {\n    /**\n     * @param {?} 
_viewportRuler\n
      */\n    constructor(_viewportRuler) {\n        this._viewportRuler = 
_viewportRuler;\n    }\n    /**\n     * Creates a global position strategy.\n   
  * @return {?}\n     */\n    global() {\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    connectedTo(elementRef, 
originPos, overlayPos) {\n        return new 
ConnectedPositionStrategy(originPos, overlayPos, elementRef, 
this._viewportRuler);\n    }\n}\nOverlayPositionBuilder.decorators = [\n    { 
type: Injectable },\n];\n/**\n * @nocollapse\n 
*/\nOverlayPositionBuilder.ctorParameters = () => [\n    { type: ViewportRuler, 
},\n];\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 */\nexport class OverlayContainer {\n    /**\n     * 
@return {?}\n     */\n    ngOnDestroy() {\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    getContainerElement() {\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    _createContainer() {\n        let /** @type {?} */ container = 
document.createElement('div');\n        
container.classList.add('cdk-overlay-container');\n        
document.body.appendChild(container);\n        this._containerElement = 
container;\n    }\n}\nOverlayContainer.decorators = [\n    { type: Injectable 
},\n];\n/**\n * @nocollapse\n */\nOverlayContainer.ctorParameters = () => 
[];\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 const 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 alread
 y-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 
*/\nexport class CloseScrollStrategy {\n    /**\n     * @param {?} 
_scrollDispatcher\n     */\n    constructor(_scrollDispatcher) {\n        
this._scrollDispatcher = _scrollDispatcher;\n        this._scrollSubscription = 
null;\n    }\n    /**\n     * @param {?} overlayRef\n     * @return {?}\n     
*/\n    attach(overlayRef) {\n        if (this._overlayRef) {\n            
throw getMatScrollStrat
 egyAlreadyAttachedError();\n        }\n        this._overlayRef = 
overlayRef;\n    }\n    /**\n     * @return {?}\n     */\n    enable() {\n      
  if (!this._scrollSubscription) {\n            this._scrollSubscription = 
this._scrollDispatcher.scrolled(0, () => {\n                if 
(this._overlayRef.hasAttached()) {\n                    
this._overlayRef.detach();\n                }\n                
this.disable();\n            });\n        }\n    }\n    /**\n     * @return 
{?}\n     */\n    disable() {\n        if (this._scrollSubscription) {\n        
    this._scrollSubscription.unsubscribe();\n            
this._scrollSubscription = null;\n        }\n    }\n}\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-st
 rategy.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 */\nexport class BlockScrollStrategy {\n    /**\n     * 
@param {?} _viewportRuler\n     */\n    constructor(_viewportRuler) {\n        
this._viewportRuler = _viewportRuler;\n        this._previousHTMLStyles = { 
top: '', left: '' };\n        this._isEnabled = false;\n    }\n    /**\n     * 
@return {?}\n     */\n    attach() { }\n    /**\n     * @return {?}\n     */\n  
  enable() {\n        if (this._canBeEnabled()) {\n            const /** @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    disable() 
{\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    _canBeEnabled() {\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        const /** 
@type {?} */ body = document.body;\n        const /** @type {?} */ viewport = 
this._viewportRuler.getViewportRect();\n        return body.scrollHeight > 
viewport.height || body.scrollWidth > viewport.width;\n    }\n}\nfunction 
BlockScrollStrategy_tsickle_Closure_declarations() {\n    /** @type {?} */\n    
BlockScrollStrategy.prototype._previousHTMLStyles;\n    /** @type {?} */\n    
BlockScrollStrategy.prototype._previousScrollPosition;\n    /** @type {?} */\n  
  BlockScrollStrategy.prototype._i
 sEnabled;\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 
*/\nexport class RepositionScrollStrategy {\n    /**\n     * @param {?} 
_scrollDispatcher\n     * @param {?=} _config\n     */\n    
constructor(_scrollDispatcher, _config) {\n        this._scrollDispatcher = 
_scrollDispatcher;\n        this._config = _config;\n        
this._scrollSubscription = null;\n    }\n    /**\n     * @param {?} 
overlayRef\n     * @return {?}\n     */\n    attach(overlayRef) {\n        if 
(this._overlayRef) {\n            throw getMatScrollStrategyAlreadyAtta
 chedError();\n        }\n        this._overlayRef = overlayRef;\n    }\n    
/**\n     * @return {?}\n     */\n    enable() {\n        if 
(!this._scrollSubscription) {\n            let /** @type {?} */ throttle = 
this._config ? this._config.scrollThrottle : 0;\n            
this._scrollSubscription = this._scrollDispatcher.scrolled(throttle, () => {\n  
              this._overlayRef.updatePosition();\n            });\n        }\n  
  }\n    /**\n     * @return {?}\n     */\n    disable() {\n        if 
(this._scrollSubscription) {\n            
this._scrollSubscription.unsubscribe();\n            this._scrollSubscription = 
null;\n        }\n    }\n}\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    Reposition
 ScrollStrategy.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 */\nexport class ScrollStrate
 gyOptions {\n    /**\n     * @param {?} _scrollDispatcher\n     * @param {?} 
_viewportRuler\n     */\n    constructor(_scrollDispatcher, _viewportRuler) {\n 
       this._scrollDispatcher = _scrollDispatcher;\n        this._viewportRuler 
= _viewportRuler;\n        /**\n         * Do nothing on scroll.\n         */\n 
       this.noop = () => new NoopScrollStrategy();\n        /**\n         * 
Close the overlay as soon as the user scrolls.\n         */\n        this.close 
= () => new CloseScrollStrategy(this._scrollDispatcher);\n        /**\n         
* Block scrolling.\n         */\n        this.block = () => 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 = (config) => new 
RepositionScrollStrategy(this._scrollDispatcher, config);\n    
}\n}\nScrollStrategyOp
 tions.decorators = [\n    { type: Injectable },\n];\n/**\n * @nocollapse\n 
*/\nScrollStrategyOptions.ctorParameters = () => [\n    { type: 
ScrollDispatcher, },\n    { type: ViewportRuler, },\n];\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    ScrollStrateg
 yOptions.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 */\nlet 
nextUniqueId = 0;\n/**\n * The default config for newl
 y created overlays.\n */\nlet 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 
*/\nexport class Overlay {\n    /**\n     * @param {?} scrollStrategies\n     * 
@param {?} _overlayContainer\n     * @param {?} _componentFactoryResolver\n     
* @param {?} _positionBuilder\n     * @param {?} _appRef\n     * @param {?} 
_injector\n     * @param {?} _ngZone\n     */\n    
constructor(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   
 create(config = defaultConfig) {\n        const /** @type {?} */ pane = 
this._createPaneElement();\n        const /** @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    position() {\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    _createPaneElement() {\n        let /** @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    _createPortalHost(pane) {\n        return new DomPortalHost(pane, 
this._componentFactoryResolver, this._appRef, this._injector);\n    
}\n}\nOverlay.decorators = [\n    { type: Injectable },\n];\n/**\n * 
@nocollapse\n */\nOverlay.ctorParameters = () => [\n    { type: 
ScrollStrategyOptions, },\n    { type: OverlayContainer, },\n    { type: 
ComponentFactoryResolver, },\n    { type: Over
 layPositionBuilder, },\n    { type: ApplicationRef, },\n    { type: Injector, 
},\n    { type: NgZone, },\n];\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 { 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 
*/\nexport class FullscreenOverlayContainer extends OverlayContainer {\n    
/**\n     * @return {?}\n     */\n    _createContainer() {\n        
super._createContainer();\n        this._adjustParentForFullscreenChange();\n   
     this._addFullscreenChangeListener(() => 
this._adjustParentForFullscreenChange());\n    }\n    /**\n     * @return {?}\n 
    */\n    _adjustParentForFullscreenChange() {\n        if 
(!this._containerElement) {\n            return;\n        }\n        let /** 
@type {?} */ fullscreenElement = this.getFulls
 creenElement();\n        let /** @type {?} */ parent = fullscreenElement || 
document.body;\n        parent.appendChild(this._containerElement);\n    }\n    
/**\n     * @param {?} fn\n     * @return {?}\n     */\n    
_addFullscreenChangeListener(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    getFullscreenEl
 ement() {\n        return document.fullscreenElement ||\n            
document.webkitFullscreenElement ||\n            
((document)).mozFullScreenElement ||\n            
((document)).msFullscreenElement ||\n            null;\n    
}\n}\nFullscreenOverlayContainer.decorators = [\n    { type: Injectable 
},\n];\n/**\n * @nocollapse\n */\nFullscreenOverlayContainer.ctorParameters = 
() => [];\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, R
 enderer2, 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 */\nconst 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 const MAT_CONNECTED_OVERLAY_SCR
 OLL_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 
() => overlay.scrollStrategies.reposition();\n}\n/**\n * \\@docs-private\n 
*/\nexport const 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 */\nexport class OverlayOrigin {\n    
/**\n     * @param {?} elementRef\n     */\n    constructor(elementRef) {\n     
   this.elementRef = elementRef;\n    }\n}\nOverlayOrigin.decorators = [\n    { 
type: Directive, args: [{\n                selector: '[cdk-overlay-origin], 
[overlay-origin], [cdkOverlayOrigin]',\n                expo
 rtAs: 'cdkOverlayOrigin',\n            },] },\n];\n/**\n * @nocollapse\n 
*/\nOverlayOrigin.ctorParameters = () => [\n    { type: ElementRef, 
},\n];\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 
*/\nexport class ConnectedOverlayDirective {\n    /**\n     * @param {?} 
_overlay\n     * @param {?} _renderer\n     * @param {?} templateRef\n     * 
@param {?} viewContainerRef\n     * @param {?} _scrollStrategy\n     * @param 
{?} _dir\n     */\n    constructor(_overlay, _renderer, templateRef, 
viewContainerRef, _scrollStrategy, _dir) {\n        this._overlay = _overlay;\n 
       this._renderer = _renderer;\n        this._scrollStrategy = 
_scrollStrategy;\n        this._d
 ir = _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 = () => { };\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    /**\n     * The offset in pixels for the overlay connection point on the 
x-axis\n     * @return {?}\n     */\n    get offsetX() { return this._offsetX; 
}\n    /**\n     * @param {?} offsetX\n     * @return {?}\n     */\n    set 
offsetX(offsetX) {\n        this._offsetX = offsetX;\n        if 
(this._position) {\n            this._position.withOffsetX(offsetX);\n        
}\n    }\n    /**\n     * The offset in pixels for the overlay connection point 
on the y-axis\n     * @return {?}\n     */\n    get offsetY() { return 
this._offsetY; }\n    /**\n     * @param {?} offsetY\n     * @return {?}\n     
*/\n    set offsetY(offsetY) {\n        this._offsetY = offsetY;\n        if 
(this._position) {\n            this._position.withOffsetY(offsetY);\n        
}\n    }\n    /**\n     * Whether or not the overlay should attach a 
backdrop.\n     * @re
 turn {?}\n     */\n    get hasBackdrop() { return this._hasBackdrop; }\n    
/**\n     * @param {?} value\n     * @return {?}\n     */\n    set 
hasBackdrop(value) { this._hasBackdrop = coerceBooleanProperty(value); }\n    
/**\n     * @deprecated\n     * @return {?}\n     */\n    get 
_deprecatedOrigin() { return this.origin; }\n    /**\n     * @param {?} 
_origin\n     * @return {?}\n     */\n    set _deprecatedOrigin(_origin) { 
this.origin = _origin; }\n    /**\n     * @deprecated\n     * @return {?}\n     
*/\n    get _deprecatedPositions() { return this.positions; }\n    /**\n     * 
@param {?} _positions\n     * @return {?}\n     */\n    set 
_deprecatedPositions(_positions) { this.positions = _positions; }\n    /**\n    
 * @deprecated\n     * @return {?}\n     */\n    get _deprecatedOffsetX() { 
return this.offsetX; }\n    /**\n     * @param {?} _offsetX\n     * @return 
{?}\n     */\n    set _deprecatedOffsetX(_offsetX) { this.offsetX = _offsetX; 
}\n    /**\n     * @deprecated\n     *
  @return {?}\n     */\n    get _deprecatedOffsetY() { return this.offsetY; }\n 
   /**\n     * @param {?} _offsetY\n     * @return {?}\n     */\n    set 
_deprecatedOffsetY(_offsetY) { this.offsetY = _offsetY; }\n    /**\n     * 
@deprecated\n     * @return {?}\n     */\n    get _deprecatedWidth() { return 
this.width; }\n    /**\n     * @param {?} _width\n     * @return {?}\n     */\n 
   set _deprecatedWidth(_width) { this.width = _width; }\n    /**\n     * 
@deprecated\n     * @return {?}\n     */\n    get _deprecatedHeight() { return 
this.height; }\n    /**\n     * @param {?} _height\n     * @return {?}\n     
*/\n    set _deprecatedHeight(_height) { this.height = _height; }\n    /**\n    
 * @deprecated\n     * @return {?}\n     */\n    get _deprecatedMinWidth() { 
return this.minWidth; }\n    /**\n     * @param {?} _minWidth\n     * @return 
{?}\n     */\n    set _deprecatedMinWidth(_minWidth) { this.minWidth = 
_minWidth; }\n    /**\n     * @deprecated\n     * @return {?}\n     */\n    
 get _deprecatedMinHeight() { return this.minHeight; }\n    /**\n     * @param 
{?} _minHeight\n     * @return {?}\n     */\n    set 
_deprecatedMinHeight(_minHeight) { this.minHeight = _minHeight; }\n    /**\n    
 * @deprecated\n     * @return {?}\n     */\n    get _deprecatedBackdropClass() 
{ return this.backdropClass; }\n    /**\n     * @param {?} _backdropClass\n     
* @return {?}\n     */\n    set _deprecatedBackdropClass(_backdropClass) { 
this.backdropClass = _backdropClass; }\n    /**\n     * @deprecated\n     * 
@return {?}\n     */\n    get _deprecatedScrollStrategy() { return 
this.scrollStrategy; }\n    /**\n     * @param {?} _scrollStrategy\n     * 
@return {?}\n     */\n    set _deprecatedScrollStrategy(_scrollStrategy) {\n    
    this.scrollStrategy = _scrollStrategy;\n    }\n    /**\n     * 
@deprecated\n     * @return {?}\n     */\n    get _deprecatedOpen() { return 
this.open; }\n    /**\n     * @param {?} _open\n     * @return {?}\n     */\n   
 set _deprecatedOpen(_open) {
  this.open = _open; }\n    /**\n     * @deprecated\n     * @return {?}\n     
*/\n    get _deprecatedHasBackdrop() { return this.hasBackdrop; }\n    /**\n    
 * @param {?} _hasBackdrop\n     * @return {?}\n     */\n    set 
_deprecatedHasBackdrop(_hasBackdrop) { this.hasBackdrop = _hasBackdrop; }\n    
/**\n     * The associated overlay reference.\n     * @return {?}\n     */\n    
get overlayRef() {\n        return this._overlayRef;\n    }\n    /**\n     * 
The element's layout direction.\n     * @return {?}\n     */\n    get dir() {\n 
       return this._dir ? this._dir.value : 'ltr';\n    }\n    /**\n     * 
@return {?}\n     */\n    ngOnDestroy() {\n        this._destroyOverlay();\n    
}\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    
ngOnChanges(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    _createOverlay() {\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   
 _buildConfig() {\n        const /** @type {?} */ positionStrategy = 
this._position = this._createPositionStrategy();\n        const /** @type {?} 
*/ overlayConfig = new OverlayConfig({\n            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    _createPositionStrategy() {\n        
const /** @type {?} */ pos = this.positions[0];\n        const /** @type {?} */ 
originPoint = { originX: pos.originX, originY: pos.originY };\n        const 
/** @type {?} */ overlayPoint = { overlayX: pos.overlayX, overlayY: 
pos.overlayY };\n        const /** @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     * @par
 am {?} strategy\n     * @return {?}\n     */\n    
_handlePositionChanges(strategy) {\n        for (let /** @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(pos => this.positionChange.emit(pos));\n    
}\n    /**\n     * Attaches the overlay and subscribes to backdrop clicks if 
backdrop exists\n     * @return {?}\n     */\n    _attachOverlay() {\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(() => 
{\n                this.backdropClick.emit();\n            });\n        }\n    
}\n    /**\n     * Detaches the overlay and unsubscribes to backdrop clicks if 
backdrop exists\n     * @return {?}\n     */\n    _detachOverlay() {\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    _destroyOverlay() {\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 over
 lay when pressing Escape.\n     * @return {?}\n     */\n    
_initEscapeListener() {\n        this._escapeListener = 
this._renderer.listen('document', 'keydown', (event) => {\n            if 
(event.keyCode === ESCAPE) {\n                this._detachOverlay();\n          
  }\n        });\n    }\n}\nConnectedOverlayDirective.decorators = [\n    { 
type: Directive, args: [{\n                selector: '[cdk-connected-overlay], 
[connected-overlay], [cdkConnectedOverlay]',\n                exportAs: 
'cdkConnectedOverlay'\n            },] },\n];\n/**\n * @nocollapse\n 
*/\nConnectedOverlayDirective.ctorParameters = () => [\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];\nConnectedOverlayDirective.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: In
 put, 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};\nfunction ConnectedOverlayDirective_tsickle_Closure_declarations() {\n 
   /** @type {?} */\n    Connected
 OverlayDirective.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    Connecte
 dOverlayDirective.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.sc
 rollStrategy;\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.prototy
 pe._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 const 
/** @type {?} */ OVERLAY_PROVIDERS = [\n    Overlay,\n    
OverlayPositionBuilder,\n    VIEWPORT_RULER_PROVIDER,\n    OVERLAY_CONTAINER_PR
 OVIDER,\n    MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER,\n];\nexport class 
OverlayModule {\n}\nOverlayModule.decorators = [\n    { type: NgModule, args: 
[{\n                imports: [PortalModule, ScrollDispatchModule],\n            
    exports: [ConnectedOverlayDirective, OverlayOrigin, 
ScrollDispatchModule],\n               

<TRUNCATED>

Reply via email to