http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/985298bd/node_modules/@angular/cdk/bundles/cdk-platform.umd.js
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-platform.umd.js 
b/node_modules/@angular/cdk/bundles/cdk-platform.umd.js
index ee45355..e198c49 100644
--- a/node_modules/@angular/cdk/bundles/cdk-platform.umd.js
+++ b/node_modules/@angular/cdk/bundles/cdk-platform.umd.js
@@ -1,6 +1,6 @@
 /**
  * @license
- * Copyright Google Inc. All Rights Reserved.
+ * Copyright Google LLC All Rights Reserved.
  *
  * Use of this source code is governed by an MIT-style license that can be
  * found in the LICENSE file at https://angular.io/license
@@ -11,67 +11,103 @@
        (factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || 
{}, global.ng.cdk.platform = global.ng.cdk.platform || {}),global.ng.core));
 }(this, (function (exports,_angular_core) { 'use strict';
 
+/**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
 // Whether the current platform supports the V8 Break Iterator. The V8 check
 // is necessary to detect all Blink based browsers.
-var hasV8BreakIterator = (typeof (Intl) !== 'undefined' && 
((Intl)).v8BreakIterator);
+var hasV8BreakIterator = (typeof (Intl) !== 'undefined' && (/** @type {?} */ 
(Intl)).v8BreakIterator);
 /**
  * Service to detect the current platform by comparing the userAgent strings 
and
  * checking browser-specific global properties.
- * \@docs-private
  */
-var Platform = (function () {
+var Platform = /** @class */ (function () {
     function Platform() {
+        /**
+         * Whether the Angular application is being rendered in the browser.
+         */
         this.isBrowser = typeof document === 'object' && !!document;
         /**
-         * Layout Engines
+         * Whether the current browser is Microsoft Edge.
          */
         this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);
+        /**
+         * Whether the current rendering engine is Microsoft Trident.
+         */
         this.TRIDENT = this.isBrowser && 
/(msie|trident)/i.test(navigator.userAgent);
-        // EdgeHTML and Trident mock Blink specific things and need to be 
excluded from this check.
+        /**
+         * Whether the current rendering engine is Blink.
+         */
         this.BLINK = this.isBrowser &&
-            (!!(((window)).chrome || hasV8BreakIterator) && !!CSS && 
!this.EDGE && !this.TRIDENT);
-        // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. 
Therefore we need to
-        // ensure that Webkit runs standalone and is not used as another 
engine's base.
+            (!!((/** @type {?} */ (window)).chrome || hasV8BreakIterator) && 
!!CSS && !this.EDGE && !this.TRIDENT);
+        /**
+         * Whether the current rendering engine is WebKit.
+         */
         this.WEBKIT = this.isBrowser &&
             /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && 
!this.EDGE && !this.TRIDENT;
         /**
-         * Browsers and Platform Types
+         * Whether the current platform is Apple iOS.
+         */
+        this.IOS = this.isBrowser && 
/iPad|iPhone|iPod/.test(navigator.userAgent) &&
+            !(/** @type {?} */ (window)).MSStream;
+        /**
+         * Whether the current browser is Firefox.
          */
-        this.IOS = this.isBrowser && 
/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
-        // It's difficult to detect the plain Gecko engine, because most of 
the browsers identify
-        // them self as Gecko-like browsers and modify the userAgent's 
according to that.
-        // Since we only cover one explicit Firefox case, we can simply check 
for Firefox
-        // instead of having an unstable check for Gecko.
         this.FIREFOX = this.isBrowser && 
/(firefox|minefield)/i.test(navigator.userAgent);
-        // Trident on mobile adds the android platform to the userAgent to 
trick detections.
+        /**
+         * Whether the current platform is Android.
+         */
         this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) 
&& !this.TRIDENT;
-        // Safari browsers will include the Safari keyword in their userAgent. 
Some browsers may fake
-        // this and just place the Safari keyword in the userAgent. To be more 
safe about Safari every
-        // Safari browser should also use Webkit as its layout engine.
+        /**
+         * Whether the current browser is Safari.
+         */
         this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && 
this.WEBKIT;
     }
     Platform.decorators = [
         { type: _angular_core.Injectable },
     ];
-    /**
-     * @nocollapse
-     */
+    /** @nocollapse */
     Platform.ctorParameters = function () { return []; };
     return Platform;
 }());
 
 /**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
+ * Cached result of whether the user's browser supports passive event 
listeners.
+ */
+var supportsPassiveEvents;
+/**
+ * Checks whether the user's browser supports passive event listeners.
+ * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
+ * @return {?}
+ */
+function supportsPassiveEventListeners() {
+    if (supportsPassiveEvents == null && typeof window !== 'undefined') {
+        try {
+            window.addEventListener('test', /** @type {?} */ ((null)), 
Object.defineProperty({}, 'passive', {
+                get: function () { return supportsPassiveEvents = true; }
+            }));
+        }
+        finally {
+            supportsPassiveEvents = supportsPassiveEvents || false;
+        }
+    }
+    return supportsPassiveEvents;
+}
+/**
  * Cached result Set of input types support by the current browser.
  */
 var supportedInputTypes;
 /**
- * Types of <input> that *might* be supported.
+ * Types of `<input>` that *might* be supported.
  */
 var candidateInputTypes = [
-    // `color` must come first. Chrome 56 shows a warning if we change the 
type to `color` after
-    // first changing it to something else:
-    // The specified value "" does not conform to the required format.
-    // The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal 
numbers.
     'color',
     'button',
     'checkbox',
@@ -118,7 +154,12 @@ function getSupportedInputTypes() {
     return supportedInputTypes;
 }
 
-var PlatformModule = (function () {
+/**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+var PlatformModule = /** @class */ (function () {
     function PlatformModule() {
     }
     PlatformModule.decorators = [
@@ -126,14 +167,13 @@ var PlatformModule = (function () {
                     providers: [Platform]
                 },] },
     ];
-    /**
-     * @nocollapse
-     */
+    /** @nocollapse */
     PlatformModule.ctorParameters = function () { return []; };
     return PlatformModule;
 }());
 
 exports.Platform = Platform;
+exports.supportsPassiveEventListeners = supportsPassiveEventListeners;
 exports.getSupportedInputTypes = getSupportedInputTypes;
 exports.PlatformModule = PlatformModule;
 

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/985298bd/node_modules/@angular/cdk/bundles/cdk-platform.umd.js.map
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-platform.umd.js.map 
b/node_modules/@angular/cdk/bundles/cdk-platform.umd.js.map
index 16924fa..1f1dbe4 100644
--- a/node_modules/@angular/cdk/bundles/cdk-platform.umd.js.map
+++ b/node_modules/@angular/cdk/bundles/cdk-platform.umd.js.map
@@ -1 +1 @@
-{"version":3,"file":"cdk-platform.umd.js","sources":["cdk/platform.es5.js"],"sourcesContent":["/**\n
 * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this 
source code is governed by an MIT-style license that can be\n * found in the 
LICENSE file at https://angular.io/license\n */\nimport { Injectable, NgModule 
} from '@angular/core';\n\n// Whether the current platform supports the V8 
Break Iterator. The V8 check\n// is necessary to detect all Blink based 
browsers.\nvar hasV8BreakIterator = (typeof (Intl) !== 'undefined' && 
((Intl)).v8BreakIterator);\n/**\n * Service to detect the current platform by 
comparing the userAgent strings and\n * checking browser-specific global 
properties.\n * \\@docs-private\n */\nvar Platform = (function () {\n    
function Platform() {\n        this.isBrowser = typeof document === 'object' && 
!!document;\n        /**\n         * Layout Engines\n         */\n        
this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\
 n        this.TRIDENT = this.isBrowser && 
/(msie|trident)/i.test(navigator.userAgent);\n        // EdgeHTML and Trident 
mock Blink specific things and need to be excluded from this check.\n        
this.BLINK = this.isBrowser &&\n            (!!(((window)).chrome || 
hasV8BreakIterator) && !!CSS && !this.EDGE && !this.TRIDENT);\n        // 
Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we 
need to\n        // ensure that Webkit runs standalone and is not used as 
another engine's base.\n        this.WEBKIT = this.isBrowser &&\n            
/AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && 
!this.TRIDENT;\n        /**\n         * Browsers and Platform Types\n         
*/\n        this.IOS = this.isBrowser && 
/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n        // 
It's difficult to detect the plain Gecko engine, because most of the browsers 
identify\n        // them self as Gecko-like browsers and modify the 
userAgent's 
 according to that.\n        // Since we only cover one explicit Firefox case, 
we can simply check for Firefox\n        // instead of having an unstable check 
for Gecko.\n        this.FIREFOX = this.isBrowser && 
/(firefox|minefield)/i.test(navigator.userAgent);\n        // Trident on mobile 
adds the android platform to the userAgent to trick detections.\n        
this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && 
!this.TRIDENT;\n        // Safari browsers will include the Safari keyword in 
their userAgent. Some browsers may fake\n        // this and just place the 
Safari keyword in the userAgent. To be more safe about Safari every\n        // 
Safari browser should also use Webkit as its layout engine.\n        
this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && 
this.WEBKIT;\n    }\n    Platform.decorators = [\n        { type: Injectable 
},\n    ];\n    /**\n     * @nocollapse\n     */\n    Platform.ctorParameters = 
function () { return []; };\n
     return Platform;\n}());\n\n/**\n * Cached result Set of input types 
support by the current browser.\n */\nvar supportedInputTypes;\n/**\n * Types 
of <input> that *might* be supported.\n */\nvar candidateInputTypes = [\n    // 
`color` must come first. Chrome 56 shows a warning if we change the type to 
`color` after\n    // first changing it to something else:\n    // The 
specified value \"\" does not conform to the required format.\n    // The 
format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n    
'color',\n    'button',\n    'checkbox',\n    'date',\n    'datetime-local',\n  
  'email',\n    'file',\n    'hidden',\n    'image',\n    'month',\n    
'number',\n    'password',\n    'radio',\n    'range',\n    'reset',\n    
'search',\n    'submit',\n    'tel',\n    'text',\n    'time',\n    'url',\n    
'week',\n];\n/**\n * @return {?} The input types supported by this browser.\n 
*/\nfunction getSupportedInputTypes() {\n    // Result is cached.\n    if 
(supporte
 dInputTypes) {\n        return supportedInputTypes;\n    }\n    // We can't 
check if an input type is not supported until we're on the browser, so say 
that\n    // everything is supported when not on the browser. We don't use 
`Platform` here since it's\n    // just a helper function and can't inject 
it.\n    if (typeof document !== 'object' || !document) {\n        
supportedInputTypes = new Set(candidateInputTypes);\n        return 
supportedInputTypes;\n    }\n    var /** @type {?} */ featureTestInput = 
document.createElement('input');\n    supportedInputTypes = new 
Set(candidateInputTypes.filter(function (value) {\n        
featureTestInput.setAttribute('type', value);\n        return 
featureTestInput.type === value;\n    }));\n    return 
supportedInputTypes;\n}\n\nvar PlatformModule = (function () {\n    function 
PlatformModule() {\n    }\n    PlatformModule.decorators = [\n        { type: 
NgModule, args: [{\n                    providers: [Platform]\n                
},] },\n    ];
 \n    /**\n     * @nocollapse\n     */\n    PlatformModule.ctorParameters = 
function () { return []; };\n    return PlatformModule;\n}());\n\n/**\n * 
Generated bundle index. Do not edit.\n */\n\nexport { Platform, 
getSupportedInputTypes, PlatformModule };\n//# 
sourceMappingURL=platform.es5.js.map\n"],"names":["Injectable","NgModule"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"cdk-platform.umd.js","sources":["../../src/cdk/platform/platform-module.ts","../../src/cdk/platform/features.ts","../../src/cdk/platform/platform.ts"],"sourcesContent":["/**\n
 * @license\n * Copyright Google LLC 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\nimport {NgModule} from 
'@angular/core';\nimport {Platform} from './platform';\n\n\n@NgModule({\n  
providers: [Platform]\n})\nexport class PlatformModule {}\n","/**\n * 
@license\n * Copyright Google LLC 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/** Cached result of whether 
the user's browser supports passive event listeners. */\nlet 
supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser 
supports passive event listeners.\n * See: https://github
 .com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport 
function supportsPassiveEventListeners(): boolean {\n  if 
(supportsPassiveEvents == null && typeof window !== 'undefined') {\n    try {\n 
     window.addEventListener('test', null!, Object.defineProperty({}, 
'passive', {\n        get: () => supportsPassiveEvents = true\n      }));\n    
} finally {\n      supportsPassiveEvents = supportsPassiveEvents || false;\n    
}\n  }\n\n  return supportsPassiveEvents;\n}\n\n/** Cached result Set of input 
types support by the current browser. */\nlet supportedInputTypes: 
Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst 
candidateInputTypes = [\n  // `color` must come first. Chrome 56 shows a 
warning if we change the type to `color` after\n  // first changing it to 
something else:\n  // The specified value \"\" does not conform to the required 
format.\n  // The format is \"#rrggbb\" where rr, gg, bb are two-digit 
hexadecimal numbers.\n  'color',\n  'bu
 tton',\n  'checkbox',\n  'date',\n  'datetime-local',\n  'email',\n  'file',\n 
 'hidden',\n  'image',\n  'month',\n  'number',\n  'password',\n  'radio',\n  
'range',\n  'reset',\n  'search',\n  'submit',\n  'tel',\n  'text',\n  
'time',\n  'url',\n  'week',\n];\n\n/** @returns The input types supported by 
this browser. */\nexport function getSupportedInputTypes(): Set<string> {\n  // 
Result is cached.\n  if (supportedInputTypes) {\n    return 
supportedInputTypes;\n  }\n\n  // We can't check if an input type is not 
supported until we're on the browser, so say that\n  // everything is supported 
when not on the browser. We don't use `Platform` here since it's\n  // just a 
helper function and can't inject it.\n  if (typeof document !== 'object' || 
!document) {\n    supportedInputTypes = new Set(candidateInputTypes);\n    
return supportedInputTypes;\n  }\n\n  let featureTestInput = 
document.createElement('input');\n  supportedInputTypes = new 
Set(candidateInputTypes.filter(value => {\n   
  featureTestInput.setAttribute('type', value);\n    return 
featureTestInput.type === value;\n  }));\n\n  return 
supportedInputTypes;\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {Injectable} from 
'@angular/core';\n\n// Whether the current platform supports the V8 Break 
Iterator. The V8 check\n// is necessary to detect all Blink based 
browsers.\nconst hasV8BreakIterator = (typeof(Intl) !== 'undefined' && (Intl as 
any).v8BreakIterator);\n\n/**\n * Service to detect the current platform by 
comparing the userAgent strings and\n * checking browser-specific global 
properties.\n */\n@Injectable()\nexport class Platform {\n  /** Whether the 
Angular application is being rendered in the browser. */\n  isBrowser: boolean 
= typeof document === 'object' && !!document;\n\n  /** Whether the current 
browser is Microsoft E
 dge. */\n  EDGE: boolean = this.isBrowser && 
/(edge)/i.test(navigator.userAgent);\n\n  /** Whether the current rendering 
engine is Microsoft Trident. */\n  TRIDENT: boolean = this.isBrowser && 
/(msie|trident)/i.test(navigator.userAgent);\n\n  /** Whether the current 
rendering engine is Blink. */\n  // EdgeHTML and Trident mock Blink specific 
things and need to be excluded from this check.\n  BLINK: boolean = 
this.isBrowser &&\n      (!!((window as any).chrome || hasV8BreakIterator) && 
!!CSS && !this.EDGE && !this.TRIDENT);\n\n  /** Whether the current rendering 
engine is WebKit. */\n  // Webkit is part of the userAgent in EdgeHTML, Blink 
and Trident. Therefore we need to\n  // ensure that Webkit runs standalone and 
is not used as another engine's base.\n  WEBKIT: boolean = this.isBrowser &&\n  
    /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && 
!this.TRIDENT;\n\n  /** Whether the current platform is Apple iOS. */\n  IOS: 
boolean = this.isBrowser && /iPad|iPh
 one|iPod/.test(navigator.userAgent) &&\n      !(window as any).MSStream;\n\n  
/** Whether the current browser is Firefox. */\n  // It's difficult to detect 
the plain Gecko engine, because most of the browsers identify\n  // them self 
as Gecko-like browsers and modify the userAgent's according to that.\n  // 
Since we only cover one explicit Firefox case, we can simply check for 
Firefox\n  // instead of having an unstable check for Gecko.\n  FIREFOX: 
boolean = this.isBrowser && 
/(firefox|minefield)/i.test(navigator.userAgent);\n\n  /** Whether the current 
platform is Android. */\n  // Trident on mobile adds the android platform to 
the userAgent to trick detections.\n  ANDROID: boolean = this.isBrowser && 
/android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n  /** Whether the 
current browser is Safari. */\n  // Safari browsers will include the Safari 
keyword in their userAgent. Some browsers may fake\n  // this and just place 
the Safari keyword in the userAgent. To be more safe abo
 ut Safari every\n  // Safari browser should also use Webkit as its layout 
engine.\n  SAFARI: boolean = this.isBrowser && 
/safari/i.test(navigator.userAgent) && 
this.WEBKIT;\n}\n"],"names":["NgModule","Injectable"],"mappings":"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"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/985298bd/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js 
b/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js
index b0687a0..737709d 100644
--- a/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js
+++ b/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js
@@ -1,9 +1,9 @@
 /**
  * @license
- * Copyright Google Inc. All Rights Reserved.
+ * Copyright Google LLC All Rights Reserved.
  *
  * Use of this source code is governed by an MIT-style license that can be
  * found in the LICENSE file at https://angular.io/license
  */
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof 
module?e(exports,require("@angular/core")):"function"==typeof 
define&&define.amd?define(["exports","@angular/core"],e):e((t.ng=t.ng||{},t.ng.cdk=t.ng.cdk||{},t.ng.cdk.platform=t.ng.cdk.platform||{}),t.ng.core)}(this,function(t,e){"use
 strict";function r(){if(i)return i;if("object"!=typeof 
document||!document)return i=new Set(s);var 
t=document.createElement("input");return i=new Set(s.filter(function(e){return 
t.setAttribute("type",e),t.type===e}))}var i,n="undefined"!=typeof 
Intl&&Intl.v8BreakIterator,o=function(){function 
t(){this.isBrowser="object"==typeof 
document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!n)&&!!CSS&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser
 
&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}return
 
t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[]},t}(),s=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"],a=function(){function
 t(){}return 
t.decorators=[{type:e.NgModule,args:[{providers:[o]}]}],t.ctorParameters=function(){return[]},t}();t.Platform=o,t.getSupportedInputTypes=r,t.PlatformModule=a,Object.defineProperty(t,"__esModule",{value:!0})});
-//# 
sourceMappingURL=/Users/karakara/repos/material2/dist/bundles/cdk-platform.umd.min.js.map
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof 
module?t(exports,require("@angular/core")):"function"==typeof 
define&&define.amd?define(["exports","@angular/core"],t):t((e.ng=e.ng||{},e.ng.cdk=e.ng.cdk||{},e.ng.cdk.platform=e.ng.cdk.platform||{}),e.ng.core)}(this,function(e,t){"use
 strict";function r(){if(null==n&&"undefined"!=typeof 
window)try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return
 n=!0}}))}finally{n=n||!1}return n}function i(){if(s)return 
s;if("object"!=typeof document||!document)return s=new Set(a);var 
e=document.createElement("input");return s=new Set(a.filter(function(t){return 
e.setAttribute("type",t),e.type===t}))}var n,s,o="undefined"!=typeof 
Intl&&Intl.v8BreakIterator,u=function(){function 
e(){this.isBrowser="object"==typeof 
document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(
 
!window.chrome&&!o)&&!!CSS&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}return
 
e.decorators=[{type:t.Injectable}],e.ctorParameters=function(){return[]},e}(),a=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"],d=function(){function
 e(){}return 
e.decorators=[{type:t.NgModule,args:[{providers:[u]}]}],e.ctorParameters=function(){return[]},e}();e.Platform=u,e.supportsPassiveEventListeners=r,e.getSupportedInputTypes=i,e.PlatformModule=d,Object.d
 efineProperty(e,"__esModule",{value:!0})});
+//# sourceMappingURL=cdk-platform.umd.min.js.map

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/985298bd/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js.map
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js.map 
b/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js.map
index f1c2aec..5699869 100644
--- a/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js.map
+++ b/node_modules/@angular/cdk/bundles/cdk-platform.umd.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["/Users/karakara/repos/material2/dist/bundles/cdk-platform.umd.js"],"names":["global","factory","exports","module","require","define","amd","ng","cdk","platform","core","this","_angular_core","getSupportedInputTypes","supportedInputTypes","document","Set","candidateInputTypes","featureTestInput","createElement","filter","value","setAttribute","type","hasV8BreakIterator","v8BreakIterator","Platform","isBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","window","MSStream","FIREFOX","ANDROID","SAFARI","decorators","Injectable","ctorParameters","PlatformModule","NgModule","args","providers","Object","defineProperty"],"mappings":";;;;;;;CAOC,SAAUA,EAAQC,GACC,gBAAZC,UAA0C,mBAAXC,QAAyBF,EAAQC,QAASE,QAAQ,kBACtE,kBAAXC,SAAyBA,OAAOC,IAAMD,QAAQ,UAAW,iBAAkBJ,GACjFA,GAASD,EAAOO,GAAKP,EAAOO,OAAUP,EAAOO,GAAGC,IAAMR,EAAOO,GAAGC,QAAWR,EAAOO,GAAGC,IAAIC,SAAWT,EAAOO,GAAGC,IAAIC,cAAgBT,EAAOO,GAAGG,OAC5IC,KAAM,SAAWT,EAAQU,GAAiB,YAyF5C,
 
SAASC,KAEL,GAAIC,EACA,MAAOA,EAKX,IAAwB,gBAAbC,YAA0BA,SAEjC,MADAD,GAAsB,GAAIE,KAAIC,EAGlC,IAAqBC,GAAmBH,SAASI,cAAc,QAK/D,OAJAL,GAAsB,GAAIE,KAAIC,EAAoBG,OAAO,SAAUC,GAE/D,MADAH,GAAiBI,aAAa,OAAQD,GAC/BH,EAAiBK,OAASF,KApGzC,GAkDIP,GAlDAU,EAAwC,mBAAX,OAA0B,KAASC,gBAMhEC,EAAY,WACZ,QAASA,KACLf,KAAKgB,UAAgC,gBAAbZ,aAA2BA,SAInDJ,KAAKiB,KAAOjB,KAAKgB,WAAa,UAAUE,KAAKC,UAAUC,WACvDpB,KAAKqB,QAAUrB,KAAKgB,WAAa,kBAAkBE,KAAKC,UAAUC,WAElEpB,KAAKsB,MAAQtB,KAAKgB,cACV,OAAWO,SAAUV,MAAyBW,MAAQxB,KAAKiB,OAASjB,KAAKqB,QAGjFrB,KAAKyB,OAASzB,KAAKgB,WACf,eAAeE,KAAKC,UAAUC,aAAepB,KAAKsB,QAAUtB,KAAKiB,OAASjB,KAAKqB,QAInFrB,KAAK0B,IAAM1B,KAAKgB,WAAa,mBAAmBE,KAAKC,UAAUC,aAAeO,OAAOC,SAKrF5B,KAAK6B,QAAU7B,KAAKgB,WAAa,uBAAuBE,KAAKC,UAAUC,WAEvEpB,KAAK8B,QAAU9B,KAAKgB,WAAa,WAAWE,KAAKC,UAAUC,aAAepB,KAAKqB,QAI/ErB,KAAK+B,OAAS/B,KAAKgB,WAAa,UAAUE,KAAKC,UAAUC,YAAcpB,KAAKyB,OAShF,MAPAV,GAASiB,aACHpB,KAAMX,EAAcgC,aAK1BlB,EAASmB,eAAiB,WAAc,UACjCnB,KAUPT,GAKA,QACA,SACA,WACA,OACA,iBACA,QACA,OACA,SACA,QACA,QACA,SACA,WACA,QACA,Q
 
ACA,QACA,SACA,SACA,MACA,OACA,OACA,MACA,QAyBA6B,EAAkB,WAClB,QAASA,MAWT,MATAA,GAAeH,aACTpB,KAAMX,EAAcmC,SAAUC,OACpBC,WAAYvB,OAM5BoB,EAAeD,eAAiB,WAAc,UACvCC,IAGX5C,GAAQwB,SAAWA,EACnBxB,EAAQW,uBAAyBA,EACjCX,EAAQ4C,eAAiBA,EAEzBI,OAAOC,eAAejD,EAAS,cAAgBmB,OAAO","file":"/Users/karakara/repos/material2/dist/bundles/cdk-platform.umd.min.js"}
\ No newline at end of file
+{"version":3,"file":"cdk-platform.umd.min.js","sources":["../../src/cdk/platform/features.ts","../../src/cdk/platform/platform.ts","../../src/cdk/platform/platform-module.ts"],"sourcesContent":["/**\n
 * @license\n * Copyright Google LLC 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/** Cached result of whether 
the user's browser supports passive event listeners. */\nlet 
supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser 
supports passive event listeners.\n * See: 
https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n 
*/\nexport function supportsPassiveEventListeners(): boolean {\n  if 
(supportsPassiveEvents == null && typeof window !== 'undefined') {\n    try {\n 
     window.addEventListener('test', null!, Object.defineProperty({}, 
'passive', {\n        get: () => supportsPassiveEvents = true\n      }));\n    
} finally
  {\n      supportsPassiveEvents = supportsPassiveEvents || false;\n    }\n  
}\n\n  return supportsPassiveEvents;\n}\n\n/** Cached result Set of input types 
support by the current browser. */\nlet supportedInputTypes: 
Set<string>;\n\n/** Types of `<input>` that *might* be supported. */\nconst 
candidateInputTypes = [\n  // `color` must come first. Chrome 56 shows a 
warning if we change the type to `color` after\n  // first changing it to 
something else:\n  // The specified value \"\" does not conform to the required 
format.\n  // The format is \"#rrggbb\" where rr, gg, bb are two-digit 
hexadecimal numbers.\n  'color',\n  'button',\n  'checkbox',\n  'date',\n  
'datetime-local',\n  'email',\n  'file',\n  'hidden',\n  'image',\n  'month',\n 
 'number',\n  'password',\n  'radio',\n  'range',\n  'reset',\n  'search',\n  
'submit',\n  'tel',\n  'text',\n  'time',\n  'url',\n  'week',\n];\n\n/** 
@returns The input types supported by this browser. */\nexport function 
getSupportedInputTypes(): S
 et<string> {\n  // Result is cached.\n  if (supportedInputTypes) {\n    return 
supportedInputTypes;\n  }\n\n  // We can't check if an input type is not 
supported until we're on the browser, so say that\n  // everything is supported 
when not on the browser. We don't use `Platform` here since it's\n  // just a 
helper function and can't inject it.\n  if (typeof document !== 'object' || 
!document) {\n    supportedInputTypes = new Set(candidateInputTypes);\n    
return supportedInputTypes;\n  }\n\n  let featureTestInput = 
document.createElement('input');\n  supportedInputTypes = new 
Set(candidateInputTypes.filter(value => {\n    
featureTestInput.setAttribute('type', value);\n    return featureTestInput.type 
=== value;\n  }));\n\n  return supportedInputTypes;\n}\n","/**\n * @license\n * 
Copyright Google LLC 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\nimport {Injectab
 le} from '@angular/core';\n\n// Whether the current platform supports the V8 
Break Iterator. The V8 check\n// is necessary to detect all Blink based 
browsers.\nconst hasV8BreakIterator = (typeof(Intl) !== 'undefined' && (Intl as 
any).v8BreakIterator);\n\n/**\n * Service to detect the current platform by 
comparing the userAgent strings and\n * checking browser-specific global 
properties.\n */\n@Injectable()\nexport class Platform {\n  /** Whether the 
Angular application is being rendered in the browser. */\n  isBrowser: boolean 
= typeof document === 'object' && !!document;\n\n  /** Whether the current 
browser is Microsoft Edge. */\n  EDGE: boolean = this.isBrowser && 
/(edge)/i.test(navigator.userAgent);\n\n  /** Whether the current rendering 
engine is Microsoft Trident. */\n  TRIDENT: boolean = this.isBrowser && 
/(msie|trident)/i.test(navigator.userAgent);\n\n  /** Whether the current 
rendering engine is Blink. */\n  // EdgeHTML and Trident mock Blink specific 
things and need to be e
 xcluded from this check.\n  BLINK: boolean = this.isBrowser &&\n      
(!!((window as any).chrome || hasV8BreakIterator) && !!CSS && !this.EDGE && 
!this.TRIDENT);\n\n  /** Whether the current rendering engine is WebKit. */\n  
// Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we 
need to\n  // ensure that Webkit runs standalone and is not used as another 
engine's base.\n  WEBKIT: boolean = this.isBrowser &&\n      
/AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && 
!this.TRIDENT;\n\n  /** Whether the current platform is Apple iOS. */\n  IOS: 
boolean = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n   
   !(window as any).MSStream;\n\n  /** Whether the current browser is Firefox. 
*/\n  // It's difficult to detect the plain Gecko engine, because most of the 
browsers identify\n  // them self as Gecko-like browsers and modify the 
userAgent's according to that.\n  // Since we only cover one explicit Firefox 
case, we can simp
 ly check for Firefox\n  // instead of having an unstable check for Gecko.\n  
FIREFOX: boolean = this.isBrowser && 
/(firefox|minefield)/i.test(navigator.userAgent);\n\n  /** Whether the current 
platform is Android. */\n  // Trident on mobile adds the android platform to 
the userAgent to trick detections.\n  ANDROID: boolean = this.isBrowser && 
/android/i.test(navigator.userAgent) && !this.TRIDENT;\n\n  /** Whether the 
current browser is Safari. */\n  // Safari browsers will include the Safari 
keyword in their userAgent. Some browsers may fake\n  // this and just place 
the Safari keyword in the userAgent. To be more safe about Safari every\n  // 
Safari browser should also use Webkit as its layout engine.\n  SAFARI: boolean 
= this.isBrowser && /safari/i.test(navigator.userAgent) && 
this.WEBKIT;\n}\n","/**\n * @license\n * Copyright Google LLC 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://ang
 ular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport 
{Platform} from './platform';\n\n\n@NgModule({\n  providers: 
[Platform]\n})\nexport class PlatformModule 
{}\n"],"names":["supportsPassiveEventListeners","supportsPassiveEvents","window","addEventListener","Object","defineProperty","get","getSupportedInputTypes","supportedInputTypes","document","Set","candidateInputTypes","featureTestInput","createElement","filter","value","setAttribute","type","hasV8BreakIterator","v8BreakIterator","this","isBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","MSStream","FIREFOX","ANDROID","SAFARI","Injectable","Platform","PlatformModule","NgModule","args","providers"],"mappings":";;;;;;;+SAeA,SAAAA,KACE,GAA6B,MAAzBC,GAAmD,mBAAXC,QAC1C,IACEA,OAAOC,iBAAiB,OAAM,KAASC,OAAOC,kBAAmB,WAC/DC,IAAK,WAAM,MAAAL,IAAwB,cAGrCA,EAAwBA,IAAyB,EAIrD,MAAOA,GAqCT,QAAAM,KAEE,GAAIC,EACF,MAAOA,EAMT,IAAwB,gBAAbC,YAA0BA,SAEnC,MADAD,GAAsB,GAAIE,KAAIC,EAIhC,IAAIC
 
,GAAmBH,SAASI,cAAc,QAM9C,OALAL,GAAsB,GAAIE,KAAIC,EAAoBG,OAAO,SAAAC,GAEvD,MADAH,GAAiBI,aAAa,OAAQD,GAC/BH,EAAiBK,OAASF,KCpErC,GDHId,GAqBAO,EClBEU,EAAuC,mBAAjB,OAAgC,KAAcC,0CAS1EC,KAAAC,UAA2C,gBAAbZ,aAA2BA,SAGzDW,KAAAE,KAAkBF,KAAKC,WAAa,UAAUE,KAAKC,UAAUC,WAG7DL,KAAAM,QAAqBN,KAAKC,WAAa,kBAAkBE,KAAKC,UAAUC,WAIxEL,KAAAO,MAAmBP,KAAKC,cACd,OAAgBO,SAAUV,MAAyBW,MAAQT,KAAKE,OAASF,KAAKM,QAKxFN,KAAAU,OAAoBV,KAAKC,WACnB,eAAeE,KAAKC,UAAUC,aAAeL,KAAKO,QAAUP,KAAKE,OAASF,KAAKM,QAGrFN,KAAAW,IAAiBX,KAAKC,WAAa,mBAAmBE,KAAKC,UAAUC,aAC9D,OAAgBO,SAOvBZ,KAAAa,QAAqBb,KAAKC,WAAa,uBAAuBE,KAAKC,UAAUC,WAI7EL,KAAAc,QAAqBd,KAAKC,WAAa,WAAWE,KAAKC,UAAUC,aAAeL,KAAKM,QAMrFN,KAAAe,OAAoBf,KAAKC,WAAa,UAAUE,KAAKC,UAAUC,YAAcL,KAAKU,OA3DlF,sBAkBAb,KAACmB,EAAAA,mDAlBDC,KDiCM1B,GAKJ,QACA,SACA,WACA,OACA,iBACA,QACA,OACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,QACA,SACA,SACA,MACA,OACA,OACA,MACA,QEnDF2B,EAAA,yBARA,sBAYArB,KAACsB,EAAAA,SAADC,OACEC,WAAYJ,6CAbdC"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/985298bd/node_modules/@angular/cdk/bundles/cdk-portal.umd.js
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-portal.umd.js 
b/node_modules/@angular/cdk/bundles/cdk-portal.umd.js
index b3f4031..68e9310 100644
--- a/node_modules/@angular/cdk/bundles/cdk-portal.umd.js
+++ b/node_modules/@angular/cdk/bundles/cdk-portal.umd.js
@@ -1,6 +1,6 @@
 /**
  * @license
- * Copyright Google Inc. All Rights Reserved.
+ * Copyright Google LLC All Rights Reserved.
  *
  * Use of this source code is governed by an MIT-style license that can be
  * found in the LICENSE file at https://angular.io/license
@@ -38,6 +38,11 @@ function __extends(d, b) {
 }
 
 /**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
  * Throws an exception when attempting to attach a null portal to a host.
  * \@docs-private
  * @return {?}
@@ -58,8 +63,8 @@ function throwPortalAlreadyAttachedError() {
  * \@docs-private
  * @return {?}
  */
-function throwPortalHostAlreadyDisposedError() {
-    throw Error('This PortalHost has already been disposed');
+function throwPortalOutletAlreadyDisposedError() {
+    throw Error('This PortalOutlet has already been disposed');
 }
 /**
  * Throws an exception when attempting to attach an unknown portal type.
@@ -67,7 +72,7 @@ function throwPortalHostAlreadyDisposedError() {
  * @return {?}
  */
 function throwUnknownPortalTypeError() {
-    throw Error('Attempting to attach an unknown Portal type. BasePortalHost 
accepts either ' +
+    throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet 
accepts either ' +
         'a ComponentPortal or a TemplatePortal.');
 }
 /**
@@ -75,12 +80,12 @@ function throwUnknownPortalTypeError() {
  * \@docs-private
  * @return {?}
  */
-function throwNullPortalHostError() {
-    throw Error('Attempting to attach a portal to a null PortalHost');
+function throwNullPortalOutletError() {
+    throw Error('Attempting to attach a portal to a null PortalOutlet');
 }
 /**
  * Throws an exception when attempting to detach a portal that is not attached.
- * \@docs-privatew
+ * \@docs-private
  * @return {?}
  */
 function throwNoPortalAttachedError() {
@@ -88,33 +93,54 @@ function throwNoPortalAttachedError() {
 }
 
 /**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
+ * Interface that can be used to generically type a class.
+ * @record
+ */
+
+/**
  * A `Portal` is something that you want to render somewhere else.
- * It can be attach to / detached from a `PortalHost`.
+ * It can be attach to / detached from a `PortalOutlet`.
  * @abstract
  */
-var Portal = (function () {
+var Portal = /** @class */ (function () {
     function Portal() {
     }
+    /** Attach this portal to a host. */
     /**
      * Attach this portal to a host.
      * @param {?} host
      * @return {?}
      */
-    Portal.prototype.attach = function (host) {
+    Portal.prototype.attach = /**
+     * Attach this portal to a host.
+     * @param {?} host
+     * @return {?}
+     */
+    function (host) {
         if (host == null) {
-            throwNullPortalHostError();
+            throwNullPortalOutletError();
         }
         if (host.hasAttached()) {
             throwPortalAlreadyAttachedError();
         }
         this._attachedHost = host;
-        return (host.attach(this));
+        return /** @type {?} */ (host.attach(this));
     };
+    /** Detach this portal from its host */
     /**
      * Detach this portal from its host
      * @return {?}
      */
-    Portal.prototype.detach = function () {
+    Portal.prototype.detach = /**
+     * Detach this portal from its host
+     * @return {?}
+     */
+    function () {
         var /** @type {?} */ host = this._attachedHost;
         if (host == null) {
             throwNoPortalAttachedError();
@@ -125,23 +151,34 @@ var Portal = (function () {
         }
     };
     Object.defineProperty(Portal.prototype, "isAttached", {
-        /**
+        /** Whether this portal is attached to a host. */
+        get: /**
          * Whether this portal is attached to a host.
          * @return {?}
          */
-        get: function () {
+        function () {
             return this._attachedHost != null;
         },
         enumerable: true,
         configurable: true
     });
     /**
-     * Sets the PortalHost reference without performing `attach()`. This is 
used directly by
-     * the PortalHost when it is performing an `attach()` or `detach()`.
+     * Sets the PortalOutlet reference without performing `attach()`. This is 
used directly by
+     * the PortalOutlet when it is performing an `attach()` or `detach()`.
+     */
+    /**
+     * Sets the PortalOutlet reference without performing `attach()`. This is 
used directly by
+     * the PortalOutlet when it is performing an `attach()` or `detach()`.
+     * @param {?} host
+     * @return {?}
+     */
+    Portal.prototype.setAttachedHost = /**
+     * Sets the PortalOutlet reference without performing `attach()`. This is 
used directly by
+     * the PortalOutlet when it is performing an `attach()` or `detach()`.
      * @param {?} host
      * @return {?}
      */
-    Portal.prototype.setAttachedHost = function (host) {
+    function (host) {
         this._attachedHost = host;
     };
     return Portal;
@@ -149,13 +186,8 @@ var Portal = (function () {
 /**
  * A `ComponentPortal` is a portal that instantiates some Component upon 
attachment.
  */
-var ComponentPortal = (function (_super) {
+var ComponentPortal = /** @class */ (function (_super) {
     __extends(ComponentPortal, _super);
-    /**
-     * @param {?} component
-     * @param {?=} viewContainerRef
-     * @param {?=} injector
-     */
     function ComponentPortal(component, viewContainerRef, injector) {
         var _this = _super.call(this) || this;
         _this.component = component;
@@ -168,41 +200,47 @@ var ComponentPortal = (function (_super) {
 /**
  * A `TemplatePortal` is a portal that represents some embedded template 
(TemplateRef).
  */
-var TemplatePortal = (function (_super) {
+var TemplatePortal = /** @class */ (function (_super) {
     __extends(TemplatePortal, _super);
-    /**
-     * @param {?} template
-     * @param {?} viewContainerRef
-     * @param {?=} context
-     */
     function TemplatePortal(template, viewContainerRef, context) {
         var _this = _super.call(this) || this;
         _this.templateRef = template;
         _this.viewContainerRef = viewContainerRef;
-        if (context) {
-            _this.context = context;
-        }
+        _this.context = context;
         return _this;
     }
     Object.defineProperty(TemplatePortal.prototype, "origin", {
-        /**
+        get: /**
          * @return {?}
          */
-        get: function () {
+        function () {
             return this.templateRef.elementRef;
         },
         enumerable: true,
         configurable: true
     });
     /**
-     * Attach the the portal to the provided `PortalHost`.
+     * Attach the the portal to the provided `PortalOutlet`.
+     * When a context is provided it will override the `context` property of 
the `TemplatePortal`
+     * instance.
+     */
+    /**
+     * Attach the the portal to the provided `PortalOutlet`.
+     * When a context is provided it will override the `context` property of 
the `TemplatePortal`
+     * instance.
+     * @param {?} host
+     * @param {?=} context
+     * @return {?}
+     */
+    TemplatePortal.prototype.attach = /**
+     * Attach the the portal to the provided `PortalOutlet`.
      * When a context is provided it will override the `context` property of 
the `TemplatePortal`
      * instance.
      * @param {?} host
      * @param {?=} context
      * @return {?}
      */
-    TemplatePortal.prototype.attach = function (host, context) {
+    function (host, context) {
         if (context === void 0) { context = this.context; }
         this.context = context;
         return _super.prototype.attach.call(this, host);
@@ -210,36 +248,56 @@ var TemplatePortal = (function (_super) {
     /**
      * @return {?}
      */
-    TemplatePortal.prototype.detach = function () {
+    TemplatePortal.prototype.detach = /**
+     * @return {?}
+     */
+    function () {
         this.context = undefined;
         return _super.prototype.detach.call(this);
     };
     return TemplatePortal;
 }(Portal));
 /**
- * Partial implementation of PortalHost that only deals with attaching either a
- * ComponentPortal or a TemplatePortal.
+ * A `PortalOutlet` is an space that can contain a single `Portal`.
+ * @record
+ */
+
+/**
+ * Partial implementation of PortalOutlet that handles attaching
+ * ComponentPortal and TemplatePortal.
  * @abstract
  */
-var BasePortalHost = (function () {
-    function BasePortalHost() {
+var BasePortalOutlet = /** @class */ (function () {
+    function BasePortalOutlet() {
         /**
          * Whether this host has already been permanently disposed.
          */
         this._isDisposed = false;
     }
+    /** Whether this host has an attached portal. */
     /**
      * Whether this host has an attached portal.
      * @return {?}
      */
-    BasePortalHost.prototype.hasAttached = function () {
+    BasePortalOutlet.prototype.hasAttached = /**
+     * Whether this host has an attached portal.
+     * @return {?}
+     */
+    function () {
         return !!this._attachedPortal;
     };
+    /** Attaches a portal. */
     /**
+     * Attaches a portal.
      * @param {?} portal
      * @return {?}
      */
-    BasePortalHost.prototype.attach = function (portal) {
+    BasePortalOutlet.prototype.attach = /**
+     * Attaches a portal.
+     * @param {?} portal
+     * @return {?}
+     */
+    function (portal) {
         if (!portal) {
             throwNullPortalError();
         }
@@ -247,7 +305,7 @@ var BasePortalHost = (function () {
             throwPortalAlreadyAttachedError();
         }
         if (this._isDisposed) {
-            throwPortalHostAlreadyDisposedError();
+            throwPortalOutletAlreadyDisposedError();
         }
         if (portal instanceof ComponentPortal) {
             this._attachedPortal = portal;
@@ -259,76 +317,81 @@ var BasePortalHost = (function () {
         }
         throwUnknownPortalTypeError();
     };
+    /** Detaches a previously attached portal. */
     /**
-     * @abstract
-     * @template T
-     * @param {?} portal
+     * Detaches a previously attached portal.
      * @return {?}
      */
-    BasePortalHost.prototype.attachComponentPortal = function (portal) { };
-    /**
-     * @abstract
-     * @template C
-     * @param {?} portal
-     * @return {?}
-     */
-    BasePortalHost.prototype.attachTemplatePortal = function (portal) { };
-    /**
+    BasePortalOutlet.prototype.detach = /**
+     * Detaches a previously attached portal.
      * @return {?}
      */
-    BasePortalHost.prototype.detach = function () {
+    function () {
         if (this._attachedPortal) {
             this._attachedPortal.setAttachedHost(null);
             this._attachedPortal = null;
         }
         this._invokeDisposeFn();
     };
+    /** Permanently dispose of this portal host. */
     /**
+     * Permanently dispose of this portal host.
+     * @return {?}
+     */
+    BasePortalOutlet.prototype.dispose = /**
+     * Permanently dispose of this portal host.
      * @return {?}
      */
-    BasePortalHost.prototype.dispose = function () {
+    function () {
         if (this.hasAttached()) {
             this.detach();
         }
         this._invokeDisposeFn();
         this._isDisposed = true;
     };
+    /** @docs-private */
     /**
+     * \@docs-private
      * @param {?} fn
      * @return {?}
      */
-    BasePortalHost.prototype.setDisposeFn = function (fn) {
+    BasePortalOutlet.prototype.setDisposeFn = /**
+     * \@docs-private
+     * @param {?} fn
+     * @return {?}
+     */
+    function (fn) {
         this._disposeFn = fn;
     };
     /**
      * @return {?}
      */
-    BasePortalHost.prototype._invokeDisposeFn = function () {
+    BasePortalOutlet.prototype._invokeDisposeFn = /**
+     * @return {?}
+     */
+    function () {
         if (this._disposeFn) {
             this._disposeFn();
             this._disposeFn = null;
         }
     };
-    return BasePortalHost;
+    return BasePortalOutlet;
 }());
 
 /**
- * A PortalHost for attaching portals to an arbitrary DOM element outside of 
the Angular
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
+ * A PortalOutlet for attaching portals to an arbitrary DOM element outside of 
the Angular
  * application context.
- *
- * This is the only part of the portal core that directly touches the DOM.
  */
-var DomPortalHost = (function (_super) {
-    __extends(DomPortalHost, _super);
-    /**
-     * @param {?} _hostDomElement
-     * @param {?} _componentFactoryResolver
-     * @param {?} _appRef
-     * @param {?} _defaultInjector
-     */
-    function DomPortalHost(_hostDomElement, _componentFactoryResolver, 
_appRef, _defaultInjector) {
+var DomPortalOutlet = /** @class */ (function (_super) {
+    __extends(DomPortalOutlet, _super);
+    function DomPortalOutlet(outletElement, _componentFactoryResolver, 
_appRef, _defaultInjector) {
         var _this = _super.call(this) || this;
-        _this._hostDomElement = _hostDomElement;
+        _this.outletElement = outletElement;
         _this._componentFactoryResolver = _componentFactoryResolver;
         _this._appRef = _appRef;
         _this._defaultInjector = _defaultInjector;
@@ -336,11 +399,22 @@ var DomPortalHost = (function (_super) {
     }
     /**
      * Attach the given ComponentPortal to DOM element using the 
ComponentFactoryResolver.
+     * @param portal Portal to be attached
+     * @returns Reference to the created component.
+     */
+    /**
+     * Attach the given ComponentPortal to DOM element using the 
ComponentFactoryResolver.
      * @template T
      * @param {?} portal Portal to be attached
-     * @return {?}
+     * @return {?} Reference to the created component.
+     */
+    DomPortalOutlet.prototype.attachComponentPortal = /**
+     * Attach the given ComponentPortal to DOM element using the 
ComponentFactoryResolver.
+     * @template T
+     * @param {?} portal Portal to be attached
+     * @return {?} Reference to the created component.
      */
-    DomPortalHost.prototype.attachComponentPortal = function (portal) {
+    function (portal) {
         var _this = this;
         var /** @type {?} */ componentFactory = 
this._componentFactoryResolver.resolveComponentFactory(portal.component);
         var /** @type {?} */ componentRef;
@@ -362,24 +436,36 @@ var DomPortalHost = (function (_super) {
         }
         // At this point the component has been instantiated, so we move it to 
the location in the DOM
         // where we want it to be rendered.
-        
this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));
+        
this.outletElement.appendChild(this._getComponentRootNode(componentRef));
         return componentRef;
     };
     /**
      * Attaches a template portal to the DOM as an embedded view.
+     * @param portal Portal to be attached.
+     * @returns Reference to the created embedded view.
+     */
+    /**
+     * Attaches a template portal to the DOM as an embedded view.
      * @template C
      * @param {?} portal Portal to be attached.
-     * @return {?}
+     * @return {?} Reference to the created embedded view.
+     */
+    DomPortalOutlet.prototype.attachTemplatePortal = /**
+     * Attaches a template portal to the DOM as an embedded view.
+     * @template C
+     * @param {?} portal Portal to be attached.
+     * @return {?} Reference to the created embedded view.
      */
-    DomPortalHost.prototype.attachTemplatePortal = function (portal) {
+    function (portal) {
         var _this = this;
         var /** @type {?} */ viewContainer = portal.viewContainerRef;
         var /** @type {?} */ viewRef = 
viewContainer.createEmbeddedView(portal.templateRef, portal.context);
         viewRef.detectChanges();
         // The method `createEmbeddedView` will add the view as a child of the 
viewContainer.
-        // But for the DomPortalHost the view can be added everywhere in the 
DOM (e.g Overlay Container)
-        // To move the view to the specified host element. We just re-append 
the existing root nodes.
-        viewRef.rootNodes.forEach(function (rootNode) { return 
_this._hostDomElement.appendChild(rootNode); });
+        // But for the DomPortalOutlet the view can be added everywhere in the 
DOM
+        // (e.g Overlay Container) To move the view to the specified host 
element. We just
+        // re-append the existing root nodes.
+        viewRef.rootNodes.forEach(function (rootNode) { return 
_this.outletElement.appendChild(rootNode); });
         this.setDisposeFn((function () {
             var /** @type {?} */ index = viewContainer.indexOf(viewRef);
             if (index !== -1) {
@@ -391,12 +477,19 @@ var DomPortalHost = (function (_super) {
     };
     /**
      * Clears out a portal from the DOM.
+     */
+    /**
+     * Clears out a portal from the DOM.
+     * @return {?}
+     */
+    DomPortalOutlet.prototype.dispose = /**
+     * Clears out a portal from the DOM.
      * @return {?}
      */
-    DomPortalHost.prototype.dispose = function () {
+    function () {
         _super.prototype.dispose.call(this);
-        if (this._hostDomElement.parentNode != null) {
-            this._hostDomElement.parentNode.removeChild(this._hostDomElement);
+        if (this.outletElement.parentNode != null) {
+            this.outletElement.parentNode.removeChild(this.outletElement);
         }
     };
     /**
@@ -404,192 +497,264 @@ var DomPortalHost = (function (_super) {
      * @param {?} componentRef
      * @return {?}
      */
-    DomPortalHost.prototype._getComponentRootNode = function (componentRef) {
-        return (((componentRef.hostView)).rootNodes[0]);
+    DomPortalOutlet.prototype._getComponentRootNode = /**
+     * Gets the root HTMLElement for an instantiated component.
+     * @param {?} componentRef
+     * @return {?}
+     */
+    function (componentRef) {
+        return /** @type {?} */ ((/** @type {?} */ 
(componentRef.hostView)).rootNodes[0]);
     };
-    return DomPortalHost;
-}(BasePortalHost));
+    return DomPortalOutlet;
+}(BasePortalOutlet));
+
+/**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
 
 /**
  * Directive version of a `TemplatePortal`. Because the directive *is* a 
TemplatePortal,
  * the directive instance itself can be attached to a host, enabling 
declarative use of portals.
- *
- * Usage:
- * <ng-template portal #greeting>
- *   <p> Hello {{name}} </p>
- * </ng-template>
  */
-var TemplatePortalDirective = (function (_super) {
-    __extends(TemplatePortalDirective, _super);
-    /**
-     * @param {?} templateRef
-     * @param {?} viewContainerRef
-     */
-    function TemplatePortalDirective(templateRef, viewContainerRef) {
+var CdkPortal = /** @class */ (function (_super) {
+    __extends(CdkPortal, _super);
+    function CdkPortal(templateRef, viewContainerRef) {
         return _super.call(this, templateRef, viewContainerRef) || this;
     }
-    TemplatePortalDirective.decorators = [
+    CdkPortal.decorators = [
         { type: _angular_core.Directive, args: [{
                     selector: '[cdk-portal], [cdkPortal], [portal]',
                     exportAs: 'cdkPortal',
                 },] },
     ];
-    /**
-     * @nocollapse
-     */
-    TemplatePortalDirective.ctorParameters = function () { return [
+    /** @nocollapse */
+    CdkPortal.ctorParameters = function () { return [
         { type: _angular_core.TemplateRef, },
         { type: _angular_core.ViewContainerRef, },
     ]; };
-    return TemplatePortalDirective;
+    return CdkPortal;
 }(TemplatePortal));
 /**
- * Directive version of a PortalHost. Because the directive *is* a PortalHost, 
portals can be
+ * Directive version of a PortalOutlet. Because the directive *is* a 
PortalOutlet, portals can be
  * directly attached to it, enabling declarative use.
  *
  * Usage:
- * <ng-template [cdkPortalHost]="greeting"></ng-template>
+ * `<ng-template [cdkPortalOutlet]="greeting"></ng-template>`
  */
-var PortalHostDirective = (function (_super) {
-    __extends(PortalHostDirective, _super);
-    /**
-     * @param {?} _componentFactoryResolver
-     * @param {?} _viewContainerRef
-     */
-    function PortalHostDirective(_componentFactoryResolver, _viewContainerRef) 
{
+var CdkPortalOutlet = /** @class */ (function (_super) {
+    __extends(CdkPortalOutlet, _super);
+    function CdkPortalOutlet(_componentFactoryResolver, _viewContainerRef) {
         var _this = _super.call(this) || this;
         _this._componentFactoryResolver = _componentFactoryResolver;
         _this._viewContainerRef = _viewContainerRef;
         /**
-         * The attached portal.
+         * Whether the portal component is initialized.
          */
-        _this._portal = null;
+        _this._isInitialized = false;
+        _this.attached = new _angular_core.EventEmitter();
         return _this;
     }
-    Object.defineProperty(PortalHostDirective.prototype, "_deprecatedPortal", {
-        /**
+    Object.defineProperty(CdkPortalOutlet.prototype, "_deprecatedPortal", {
+        get: /**
          * @deprecated
+         * \@deletion-target 6.0.0
          * @return {?}
          */
-        get: function () { return this.portal; },
-        /**
+        function () { return this.portal; },
+        set: /**
          * @param {?} v
          * @return {?}
          */
-        set: function (v) { this.portal = v; },
+        function (v) { this.portal = v; },
         enumerable: true,
         configurable: true
     });
-    Object.defineProperty(PortalHostDirective.prototype, "portal", {
-        /**
-         * Portal associated with the Portal host.
+    Object.defineProperty(CdkPortalOutlet.prototype, "_deprecatedPortalHost", {
+        get: /**
+         * @deprecated
+         * \@deletion-target 6.0.0
          * @return {?}
          */
-        get: function () {
-            return this._portal;
+        function () { return this.portal; },
+        set: /**
+         * @param {?} v
+         * @return {?}
+         */
+        function (v) { this.portal = v; },
+        enumerable: true,
+        configurable: true
+    });
+    Object.defineProperty(CdkPortalOutlet.prototype, "portal", {
+        /** Portal associated with the Portal outlet. */
+        get: /**
+         * Portal associated with the Portal outlet.
+         * @return {?}
+         */
+        function () {
+            return this._attachedPortal;
         },
-        /**
+        set: /**
          * @param {?} portal
          * @return {?}
          */
-        set: function (portal) {
+        function (portal) {
+            // Ignore the cases where the `portal` is set to a falsy value 
before the lifecycle hooks have
+            // run. This handles the cases where the user might do something 
like `<div cdkPortalOutlet>`
+            // and attach a portal programmatically in the parent component. 
When Angular does the first CD
+            // round, it will fire the setter with empty string, causing the 
user's content to be cleared.
+            if (this.hasAttached() && !portal && !this._isInitialized) {
+                return;
+            }
             if (this.hasAttached()) {
                 _super.prototype.detach.call(this);
             }
             if (portal) {
                 _super.prototype.attach.call(this, portal);
             }
-            this._portal = portal;
+            this._attachedPortal = portal;
         },
         enumerable: true,
         configurable: true
     });
+    Object.defineProperty(CdkPortalOutlet.prototype, "attachedRef", {
+        /** Component or view reference that is attached to the portal. */
+        get: /**
+         * Component or view reference that is attached to the portal.
+         * @return {?}
+         */
+        function () {
+            return this._attachedRef;
+        },
+        enumerable: true,
+        configurable: true
+    });
+    /**
+     * @return {?}
+     */
+    CdkPortalOutlet.prototype.ngOnInit = /**
+     * @return {?}
+     */
+    function () {
+        this._isInitialized = true;
+    };
     /**
      * @return {?}
      */
-    PortalHostDirective.prototype.ngOnDestroy = function () {
+    CdkPortalOutlet.prototype.ngOnDestroy = /**
+     * @return {?}
+     */
+    function () {
         _super.prototype.dispose.call(this);
-        this._portal = null;
+        this._attachedPortal = null;
+        this._attachedRef = null;
     };
     /**
-     * Attach the given ComponentPortal to this PortalHost using the 
ComponentFactoryResolver.
+     * Attach the given ComponentPortal to this PortalOutlet using the 
ComponentFactoryResolver.
+     *
+     * @param portal Portal to be attached to the portal outlet.
+     * @returns Reference to the created component.
+     */
+    /**
+     * Attach the given ComponentPortal to this PortalOutlet using the 
ComponentFactoryResolver.
      *
      * @template T
-     * @param {?} portal Portal to be attached to the portal host.
-     * @return {?}
+     * @param {?} portal Portal to be attached to the portal outlet.
+     * @return {?} Reference to the created component.
      */
-    PortalHostDirective.prototype.attachComponentPortal = function (portal) {
+    CdkPortalOutlet.prototype.attachComponentPortal = /**
+     * Attach the given ComponentPortal to this PortalOutlet using the 
ComponentFactoryResolver.
+     *
+     * @template T
+     * @param {?} portal Portal to be attached to the portal outlet.
+     * @return {?} Reference to the created component.
+     */
+    function (portal) {
         portal.setAttachedHost(this);
         // If the portal specifies an origin, use that as the logical location 
of the component
-        // in the application tree. Otherwise use the location of this 
PortalHost.
+        // in the application tree. Otherwise use the location of this 
PortalOutlet.
         var /** @type {?} */ viewContainerRef = portal.viewContainerRef != 
null ?
             portal.viewContainerRef :
             this._viewContainerRef;
         var /** @type {?} */ componentFactory = 
this._componentFactoryResolver.resolveComponentFactory(portal.component);
         var /** @type {?} */ ref = 
viewContainerRef.createComponent(componentFactory, viewContainerRef.length, 
portal.injector || viewContainerRef.parentInjector);
         _super.prototype.setDisposeFn.call(this, function () { return 
ref.destroy(); });
-        this._portal = portal;
+        this._attachedPortal = portal;
+        this._attachedRef = ref;
+        this.attached.emit(ref);
         return ref;
     };
     /**
      * Attach the given TemplatePortal to this PortlHost as an embedded View.
+     * @param portal Portal to be attached.
+     * @returns Reference to the created embedded view.
+     */
+    /**
+     * Attach the given TemplatePortal to this PortlHost as an embedded View.
      * @template C
      * @param {?} portal Portal to be attached.
-     * @return {?}
+     * @return {?} Reference to the created embedded view.
+     */
+    CdkPortalOutlet.prototype.attachTemplatePortal = /**
+     * Attach the given TemplatePortal to this PortlHost as an embedded View.
+     * @template C
+     * @param {?} portal Portal to be attached.
+     * @return {?} Reference to the created embedded view.
      */
-    PortalHostDirective.prototype.attachTemplatePortal = function (portal) {
+    function (portal) {
         var _this = this;
         portal.setAttachedHost(this);
         var /** @type {?} */ viewRef = 
this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);
         _super.prototype.setDisposeFn.call(this, function () { return 
_this._viewContainerRef.clear(); });
-        this._portal = portal;
+        this._attachedPortal = portal;
+        this._attachedRef = viewRef;
+        this.attached.emit(viewRef);
         return viewRef;
     };
-    PortalHostDirective.decorators = [
+    CdkPortalOutlet.decorators = [
         { type: _angular_core.Directive, args: [{
-                    selector: '[cdkPortalHost], [portalHost]',
-                    exportAs: 'cdkPortalHost',
-                    inputs: ['portal: cdkPortalHost']
+                    selector: '[cdkPortalOutlet], [cdkPortalHost], 
[portalHost]',
+                    exportAs: 'cdkPortalOutlet, cdkPortalHost',
+                    inputs: ['portal: cdkPortalOutlet']
                 },] },
     ];
-    /**
-     * @nocollapse
-     */
-    PortalHostDirective.ctorParameters = function () { return [
+    /** @nocollapse */
+    CdkPortalOutlet.ctorParameters = function () { return [
         { type: _angular_core.ComponentFactoryResolver, },
         { type: _angular_core.ViewContainerRef, },
     ]; };
-    PortalHostDirective.propDecorators = {
-        '_deprecatedPortal': [{ type: _angular_core.Input, args: 
['portalHost',] },],
+    CdkPortalOutlet.propDecorators = {
+        "_deprecatedPortal": [{ type: _angular_core.Input, args: 
['portalHost',] },],
+        "_deprecatedPortalHost": [{ type: _angular_core.Input, args: 
['cdkPortalHost',] },],
+        "attached": [{ type: _angular_core.Output, args: ['attached',] },],
     };
-    return PortalHostDirective;
-}(BasePortalHost));
-var PortalModule = (function () {
+    return CdkPortalOutlet;
+}(BasePortalOutlet));
+var PortalModule = /** @class */ (function () {
     function PortalModule() {
     }
     PortalModule.decorators = [
         { type: _angular_core.NgModule, args: [{
-                    exports: [TemplatePortalDirective, PortalHostDirective],
-                    declarations: [TemplatePortalDirective, 
PortalHostDirective],
+                    exports: [CdkPortal, CdkPortalOutlet],
+                    declarations: [CdkPortal, CdkPortalOutlet],
                 },] },
     ];
-    /**
-     * @nocollapse
-     */
+    /** @nocollapse */
     PortalModule.ctorParameters = function () { return []; };
     return PortalModule;
 }());
 
 /**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
  * Custom injector to be used when providing custom
  * injection tokens to components inside a portal.
  * \@docs-private
  */
-var PortalInjector = (function () {
-    /**
-     * @param {?} _parentInjector
-     * @param {?} _customTokens
-     */
+var PortalInjector = /** @class */ (function () {
     function PortalInjector(_parentInjector, _customTokens) {
         this._parentInjector = _parentInjector;
         this._customTokens = _customTokens;
@@ -599,7 +764,12 @@ var PortalInjector = (function () {
      * @param {?=} notFoundValue
      * @return {?}
      */
-    PortalInjector.prototype.get = function (token, notFoundValue) {
+    PortalInjector.prototype.get = /**
+     * @param {?} token
+     * @param {?=} notFoundValue
+     * @return {?}
+     */
+    function (token, notFoundValue) {
         var /** @type {?} */ value = this._customTokens.get(token);
         if (typeof value !== 'undefined') {
             return value;
@@ -609,13 +779,17 @@ var PortalInjector = (function () {
     return PortalInjector;
 }());
 
+exports.DomPortalHost = DomPortalOutlet;
+exports.PortalHostDirective = CdkPortalOutlet;
+exports.TemplatePortalDirective = CdkPortal;
+exports.BasePortalHost = BasePortalOutlet;
 exports.Portal = Portal;
 exports.ComponentPortal = ComponentPortal;
 exports.TemplatePortal = TemplatePortal;
-exports.BasePortalHost = BasePortalHost;
-exports.DomPortalHost = DomPortalHost;
-exports.TemplatePortalDirective = TemplatePortalDirective;
-exports.PortalHostDirective = PortalHostDirective;
+exports.BasePortalOutlet = BasePortalOutlet;
+exports.DomPortalOutlet = DomPortalOutlet;
+exports.CdkPortal = CdkPortal;
+exports.CdkPortalOutlet = CdkPortalOutlet;
 exports.PortalModule = PortalModule;
 exports.PortalInjector = PortalInjector;
 

Reply via email to