http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/90759b86/node_modules/@angular/cdk/bundles/cdk-overlay.umd.js.map
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-overlay.umd.js.map 
b/node_modules/@angular/cdk/bundles/cdk-overlay.umd.js.map
new file mode 100644
index 0000000..7dde462
--- /dev/null
+++ b/node_modules/@angular/cdk/bundles/cdk-overlay.umd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"cdk-overlay.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","cdk/overlay.es5.js"],"sourcesContent":["/*!
 
*****************************************************************************\r\nCopyright
 (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache 
License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in 
compliance with the License. You may obtain a copy of the\r\nLicense at 
http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN 
*AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS 
OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR 
CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR 
NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific 
language governing permissions\r\nand limitations under the 
License.\r\n*****************************************************************************
 */\r\n/* global
  Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n   
 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) 
||\r\n    function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = 
b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, 
b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === 
null ? Object.create(b) : (__.prototype = b.prototype, new 
__());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) 
{\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = 
arguments[i];\r\n        for (var p in s) if 
(Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n    }\r\n    
return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) 
< 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof 
Object.getOwnPropertySymbols === \"function\")\r\n      
   for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if 
(e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return 
t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n  
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = 
Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof 
Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = 
Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = 
decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : 
c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && 
Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function 
__param(paramIndex, decorator) {\r\n    return function (target, key) { 
decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function 
__metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === 
\"object\" && typeof Reflect.metadata === 
 \"function\") return Reflect.metadata(metadataKey, 
metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, 
generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) 
{\r\n        function fulfilled(value) { try { step(generator.next(value)); } 
catch (e) { reject(e); } }\r\n        function rejected(value) { try { 
step(generator.throw(value)); } catch (e) { reject(e); } }\r\n        function 
step(result) { result.done ? resolve(result.value) : new P(function (resolve) { 
resolve(result.value); }).then(fulfilled, rejected); }\r\n        
step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    
});\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { 
label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: 
[], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": 
verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && 
(g[Symbol.iterator] = function() { return t
 his; }), g;\r\n    function verb(n) { return function (v) { return step([n, 
v]); }; }\r\n    function step(op) {\r\n        if (f) throw new 
TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n  
          if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : 
\"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, 
t) op = [0, t.value];\r\n            switch (op[0]) {\r\n                case 
0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: 
op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = 
[0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); 
continue;\r\n                default:\r\n                    if (!(t = _.trys, 
t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; 
continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && 
op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[
 0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n             
       if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n  
                  if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); 
continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n       
 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if 
(op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true 
};\r\n    }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for 
(var p in m) if (!exports.hasOwnProperty(p)) exports[p] = 
m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var m = typeof Symbol 
=== \"function\" && o[Symbol.iterator], i = 0;\r\n    if (m) return 
m.call(o);\r\n    return {\r\n        next: function () {\r\n            if (o 
&& i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: 
!o };\r\n        }\r\n    };\r\n}\r\n\r\nexport function __read(o, n) {\r\n    
var m = typ
 eof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return 
o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n 
=== void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n  
  catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n 
           if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n 
       finally { if (e) throw e.error; }\r\n    }\r\n    return 
ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i 
< arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n   
 return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this 
instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport 
function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if 
(!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not 
defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = 
[];\r\n    
 return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), 
i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function 
verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { 
q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) 
{ try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function 
step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, 
reject) : settle(q[0][2], r);  }\r\n    function fulfill(value) { 
resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", 
value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) 
resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) 
{\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", 
function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () 
{ return this; }, i;\r\n    function verb(n, f) { if (o[n]) i[n] = function (v) 
{ return (p = !p)
  ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; 
}\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if 
(!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not 
defined.\");\r\n    var m = o[Symbol.asyncIterator];\r\n    return m ? 
m.call(o) : typeof __values === \"function\" ? __values(o) : 
o[Symbol.iterator]();\r\n}","/**\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 { ApplicationRef, 
ComponentFactoryResolver, Directive, ElementRef, EventEmitter, Inject, 
Injectable, InjectionToken, Injector, Input, NgModule, NgZone, Optional, 
Output, Renderer2, SkipSelf, TemplateRef, ViewContainerRef } from 
'@angular/core';\nimport { DomPortalHost, PortalModule, TemplatePortal } from 
'@angular/cdk/portal';\nimport { Subject } from 'rxjs/Subject';\nimport { 
ScrollDispatchModule, ScrollDisp
 atcher, Scrollable, VIEWPORT_RULER_PROVIDER, ViewportRuler } from 
'@angular/cdk/scrolling';\nimport { Subscription } from 
'rxjs/Subscription';\nimport { __extends } from 'tslib';\nimport * as tslib_1 
from 'tslib';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { 
coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from 
'@angular/cdk/keycodes';\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}());\n\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}());\n\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 (th
 is._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 th
 e 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._attac
 hments.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._deta
 chments.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.w
 idth = 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 ov
 erlay).\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}());\n/**\n * @param {?} value\n * 
@return {?}\n */\nfunction formatCssUnit(value) {\n    return typeof value === 
'string' ? (value) : value + \"px\";\n}\n\n/** Horizontal dimension of a 
connection point on the perimeter of the origin or overlay element. */\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}());\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}());\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}());\n\n/**\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 ge
 tBoundingClientRect)\n * @param {?} scrollContainers Dimensions of element's 
scrolling containers (from getBoundingClientRect)\n * @return {?} Whether the 
element is scrolled out of view\n */\nfunction 
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 
*/\nfunction 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\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 corne
 r 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     * @ret
 urn {?}\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 calcul
 ated 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 origi
 n 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 = functi
 on (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 
horiz
 ontal (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 == 'c
 enter') {\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          
  overla
 yStartX = -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    ConnectedPositi
 onStrategy.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 e
 xpand.\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, current
 Overflow) {\n            return currentValue - Math.max(currentOverflow, 0);\n 
       }, length);\n    };\n    return 
ConnectedPositionStrategy;\n}());\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 (overlay
 Ref) {\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 vertica
 l 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     * Cle
 ars 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    Glob
 alPositionStrategy.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}());\n\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}());\n\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._containerE
 lement);\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.decorator
 s = [\n        { type: Injectable },\n    ];\n    /**\n     * @nocollapse\n    
 */\n    OverlayContainer.ctorParameters = function () { return []; };\n    
return OverlayContainer;\n}());\n/**\n * \\@docs-private\n * @param {?} 
parentContainer\n * @return {?}\n */\nfunction 
OVERLAY_CONTAINER_PROVIDER_FACTORY(parentContainer) {\n    return 
parentContainer || new OverlayContainer();\n}\n/**\n * \\@docs-private\n 
*/\nvar 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\n/**\n * Returns an error to be thrown 
when attempting to attach an already-attached scroll strategy.\n * @return 
{?}\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n    return 
Error(\"Scroll strategy has already been attached.\");\n}\n\n/**\n * Strategy 
that will close the ove
 rlay 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.dis
 able();\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}());\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 {?} */ r
 oot = 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.documentEleme
 nt.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}());\n\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}());\n\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}());\n\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 {?} 
_overlayContai
 ner\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}());\n\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 pro
 vided in the root component that way:\n * providers: [\n *   {provide: 
OverlayContainer, useClass: FullscreenOverlayContainer}\n * ],\n */\nvar 
FullscreenOverlayContainer = (function (_super) {\n    
__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.getFul
 lscreenElement();\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 mo
 de.\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));\n\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 */\nvar 
MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY = new 
InjectionToken('mat-connected-overlay-scroll-strategy');\n/**\n * 
\\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction 
MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n    return 
function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * 
\\@docs-private\n */\nvar 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}());\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._hasBackd
 rop = 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.d
 etach = 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 th
 is.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, \"_dep
 recatedHeight\", {\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 (change
 s['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.wi
 dth === 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 subscribe
 s 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}());\n\nvar 
OVERLAY_PROVIDERS = [\n    Overlay,\n    OverlayPositionBuilder,\n    
VIEWPORT_RULER_PROVIDER,\n    OVERLAY_CONTAINER_PROVIDER,\n    MAT_CONN
 ECTED_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}());\n\n/**\n * Generated bundle index. Do not edit.\n 
*/\n\nexport { Overlay, OverlayContainer, FullscreenOverlayContainer, 
OverlayRef, ConnectedOverlayDirective, OverlayOrigin, ViewportRuler, 
GlobalPositionStrategy, ConnectedPositionStrategy, VIEWPORT_RULER_PROVIDER, 
OverlayConfig, ConnectionPositionPair, ScrollingVisibili
 ty, ConnectedOverlayPositionChange, Scrollable, ScrollDispatcher, 
ScrollStrategyOptions, RepositionScrollStrategy, CloseScrollStrategy, 
NoopScrollStrategy, BlockScrollStrategy, OVERLAY_PROVIDERS, OverlayModule, 
OVERLAY_CONTAINER_PROVIDER as ɵb, OVERLAY_CONTAINER_PROVIDER_FACTORY as ɵa, 
MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY as ɵc, 
MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER as ɵe, 
MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY as ɵd, 
OverlayPositionBuilder as ɵf };\n//# 
sourceMappingURL=overlay.es5.js.map\n"],"names":["Subject","Optional","Subscription","Injectable","ViewportRuler","SkipSelf","ScrollDispatcher","DomPortalHost","ComponentFactoryResolver","ApplicationRef","Injector","NgZone","InjectionToken","Directive","ElementRef","EventEmitter","TemplatePortal","coerceBooleanProperty","ESCAPE","Renderer2","TemplateRef","ViewContainerRef","Inject","Directionality","Input","Output","VIEWPORT_RULER_PROVIDER","NgModule","PortalModule","ScrollDispatchModule"],"mappings":
 
";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AAgBA,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;KACpC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC

<TRUNCATED>

Reply via email to