@angular/cdk 8.0.0-beta.2 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/README.md +2 -2
  2. package/_overlay.scss +4 -4
  3. package/bundles/cdk-a11y.umd.js +227 -79
  4. package/bundles/cdk-a11y.umd.js.map +1 -1
  5. package/bundles/cdk-a11y.umd.min.js +1 -1
  6. package/bundles/cdk-a11y.umd.min.js.map +1 -1
  7. package/bundles/cdk-accordion.umd.js +20 -8
  8. package/bundles/cdk-accordion.umd.js.map +1 -1
  9. package/bundles/cdk-accordion.umd.min.js.map +1 -1
  10. package/bundles/cdk-bidi.umd.js +5 -5
  11. package/bundles/cdk-bidi.umd.min.js +1 -1
  12. package/bundles/cdk-bidi.umd.min.js.map +1 -1
  13. package/bundles/cdk-coercion.umd.js +5 -5
  14. package/bundles/cdk-collections.umd.js +38 -15
  15. package/bundles/cdk-collections.umd.js.map +1 -1
  16. package/bundles/cdk-collections.umd.min.js +1 -1
  17. package/bundles/cdk-collections.umd.min.js.map +1 -1
  18. package/bundles/cdk-drag-drop.umd.js +571 -180
  19. package/bundles/cdk-drag-drop.umd.js.map +1 -1
  20. package/bundles/cdk-drag-drop.umd.min.js +2 -2
  21. package/bundles/cdk-drag-drop.umd.min.js.map +1 -1
  22. package/bundles/cdk-keycodes.umd.js +7 -3
  23. package/bundles/cdk-keycodes.umd.js.map +1 -1
  24. package/bundles/cdk-keycodes.umd.min.js.map +1 -1
  25. package/bundles/cdk-layout.umd.js +83 -30
  26. package/bundles/cdk-layout.umd.js.map +1 -1
  27. package/bundles/cdk-layout.umd.min.js +1 -1
  28. package/bundles/cdk-layout.umd.min.js.map +1 -1
  29. package/bundles/cdk-observers.umd.js +30 -11
  30. package/bundles/cdk-observers.umd.js.map +1 -1
  31. package/bundles/cdk-observers.umd.min.js +1 -1
  32. package/bundles/cdk-observers.umd.min.js.map +1 -1
  33. package/bundles/cdk-overlay.umd.js +229 -108
  34. package/bundles/cdk-overlay.umd.js.map +1 -1
  35. package/bundles/cdk-overlay.umd.min.js +2 -2
  36. package/bundles/cdk-overlay.umd.min.js.map +1 -1
  37. package/bundles/cdk-platform.umd.js +17 -10
  38. package/bundles/cdk-platform.umd.js.map +1 -1
  39. package/bundles/cdk-platform.umd.min.js +1 -1
  40. package/bundles/cdk-platform.umd.min.js.map +1 -1
  41. package/bundles/cdk-portal.umd.js +32 -13
  42. package/bundles/cdk-portal.umd.js.map +1 -1
  43. package/bundles/cdk-portal.umd.min.js.map +1 -1
  44. package/bundles/cdk-scrolling.umd.js +184 -62
  45. package/bundles/cdk-scrolling.umd.js.map +1 -1
  46. package/bundles/cdk-scrolling.umd.min.js +1 -1
  47. package/bundles/cdk-scrolling.umd.min.js.map +1 -1
  48. package/bundles/cdk-stepper.umd.js +30 -12
  49. package/bundles/cdk-stepper.umd.js.map +1 -1
  50. package/bundles/cdk-stepper.umd.min.js.map +1 -1
  51. package/bundles/cdk-table.umd.js +384 -74
  52. package/bundles/cdk-table.umd.js.map +1 -1
  53. package/bundles/cdk-table.umd.min.js +1 -1
  54. package/bundles/cdk-table.umd.min.js.map +1 -1
  55. package/bundles/cdk-text-field.umd.js +61 -21
  56. package/bundles/cdk-text-field.umd.js.map +1 -1
  57. package/bundles/cdk-text-field.umd.min.js +1 -1
  58. package/bundles/cdk-text-field.umd.min.js.map +1 -1
  59. package/bundles/cdk-tree.umd.js +85 -29
  60. package/bundles/cdk-tree.umd.js.map +1 -1
  61. package/bundles/cdk-tree.umd.min.js.map +1 -1
  62. package/bundles/cdk.umd.js +2 -2
  63. package/bundles/cdk.umd.js.map +1 -1
  64. package/bundles/cdk.umd.min.js +1 -1
  65. package/bundles/cdk.umd.min.js.map +1 -1
  66. package/drag-drop/typings/directives/drag.d.ts +11 -2
  67. package/drag-drop/typings/drag-events.d.ts +17 -0
  68. package/drag-drop/typings/drag-ref.d.ts +9 -5
  69. package/drag-drop/typings/drop-list-ref.d.ts +9 -3
  70. package/drag-drop/typings/index.metadata.json +1 -1
  71. package/esm2015/a11y.js +229 -81
  72. package/esm2015/a11y.js.map +1 -1
  73. package/esm2015/accordion.js +22 -10
  74. package/esm2015/accordion.js.map +1 -1
  75. package/esm2015/bidi.js +8 -8
  76. package/esm2015/cdk.js +4 -4
  77. package/esm2015/cdk.js.map +1 -1
  78. package/esm2015/coercion.js +7 -7
  79. package/esm2015/collections.js +41 -18
  80. package/esm2015/collections.js.map +1 -1
  81. package/esm2015/drag-drop.js +540 -181
  82. package/esm2015/drag-drop.js.map +1 -1
  83. package/esm2015/keycodes.js +9 -5
  84. package/esm2015/keycodes.js.map +1 -1
  85. package/esm2015/layout.js +89 -36
  86. package/esm2015/layout.js.map +1 -1
  87. package/esm2015/observers.js +33 -14
  88. package/esm2015/observers.js.map +1 -1
  89. package/esm2015/overlay.js +232 -110
  90. package/esm2015/overlay.js.map +1 -1
  91. package/esm2015/platform.js +20 -13
  92. package/esm2015/platform.js.map +1 -1
  93. package/esm2015/portal.js +34 -15
  94. package/esm2015/portal.js.map +1 -1
  95. package/esm2015/scrolling.js +180 -58
  96. package/esm2015/scrolling.js.map +1 -1
  97. package/esm2015/stepper.js +32 -14
  98. package/esm2015/stepper.js.map +1 -1
  99. package/esm2015/table.js +369 -69
  100. package/esm2015/table.js.map +1 -1
  101. package/esm2015/text-field.js +64 -24
  102. package/esm2015/text-field.js.map +1 -1
  103. package/esm2015/tree.js +86 -30
  104. package/esm2015/tree.js.map +1 -1
  105. package/esm5/a11y.es5.js +230 -82
  106. package/esm5/a11y.es5.js.map +1 -1
  107. package/esm5/accordion.es5.js +22 -10
  108. package/esm5/accordion.es5.js.map +1 -1
  109. package/esm5/bidi.es5.js +8 -8
  110. package/esm5/cdk.es5.js +4 -4
  111. package/esm5/cdk.es5.js.map +1 -1
  112. package/esm5/coercion.es5.js +7 -7
  113. package/esm5/collections.es5.js +42 -19
  114. package/esm5/collections.es5.js.map +1 -1
  115. package/esm5/drag-drop.es5.js +574 -183
  116. package/esm5/drag-drop.es5.js.map +1 -1
  117. package/esm5/keycodes.es5.js +9 -5
  118. package/esm5/keycodes.es5.js.map +1 -1
  119. package/esm5/layout.es5.js +86 -33
  120. package/esm5/layout.es5.js.map +1 -1
  121. package/esm5/observers.es5.js +33 -14
  122. package/esm5/observers.es5.js.map +1 -1
  123. package/esm5/overlay.es5.js +232 -111
  124. package/esm5/overlay.es5.js.map +1 -1
  125. package/esm5/platform.es5.js +20 -13
  126. package/esm5/platform.es5.js.map +1 -1
  127. package/esm5/portal.es5.js +34 -15
  128. package/esm5/portal.es5.js.map +1 -1
  129. package/esm5/scrolling.es5.js +187 -65
  130. package/esm5/scrolling.es5.js.map +1 -1
  131. package/esm5/stepper.es5.js +32 -14
  132. package/esm5/stepper.es5.js.map +1 -1
  133. package/esm5/table.es5.js +386 -72
  134. package/esm5/table.es5.js.map +1 -1
  135. package/esm5/text-field.es5.js +64 -24
  136. package/esm5/text-field.es5.js.map +1 -1
  137. package/esm5/tree.es5.js +87 -31
  138. package/esm5/tree.es5.js.map +1 -1
  139. package/layout/typings/breakpoints-observer.d.ts +3 -3
  140. package/layout/typings/index.metadata.json +1 -1
  141. package/layout/typings/media-matcher.d.ts +2 -2
  142. package/overlay/typings/index.metadata.json +1 -1
  143. package/overlay/typings/position/flexible-connected-position-strategy.d.ts +1 -3
  144. package/package.json +8 -8
  145. package/portal/typings/portal.d.ts +2 -2
  146. package/schematics/ng-update/data/attribute-selectors.js +1 -1
  147. package/schematics/ng-update/data/attribute-selectors.js.map +1 -1
  148. package/schematics/ng-update/data/class-names.js +3 -3
  149. package/schematics/ng-update/data/class-names.js.map +1 -1
  150. package/schematics/ng-update/data/constructor-checks.js +1 -1
  151. package/schematics/ng-update/data/constructor-checks.js.map +1 -1
  152. package/schematics/ng-update/data/input-names.js +1 -1
  153. package/schematics/ng-update/data/input-names.js.map +1 -1
  154. package/schematics/ng-update/data/method-call-checks.js +1 -1
  155. package/schematics/ng-update/data/method-call-checks.js.map +1 -1
  156. package/schematics/ng-update/data/property-names.js +4 -4
  157. package/schematics/ng-update/data/property-names.js.map +1 -1
  158. package/schematics/ng-update/upgrade-rules/signature-check/constructorSignatureCheckRule.js +1 -1
  159. package/schematics/ng-update/upgrade-rules/signature-check/constructorSignatureCheckRule.js.map +1 -1
  160. package/schematics/tsconfig.tsbuildinfo +5811 -0
  161. package/schematics/utils/ast.d.ts +1 -1
  162. package/schematics/utils/build-component.js +1 -1
  163. package/schematics/utils/build-component.js.map +1 -1
  164. package/schematics/utils/get-project.d.ts +1 -1
  165. package/schematics/utils/project-main-file.d.ts +1 -1
  166. package/schematics/utils/project-style-file.d.ts +1 -1
  167. package/schematics/utils/project-targets.d.ts +1 -1
  168. package/schematics/utils/schematic-options.d.ts +1 -1
  169. package/table/typings/cell.d.ts +3 -2
  170. package/table/typings/index.metadata.json +1 -1
  171. package/table/typings/public-api.d.ts +1 -0
  172. package/table/typings/row.d.ts +5 -4
  173. package/table/typings/sticky-styler.d.ts +5 -5
  174. package/table/typings/table-errors.d.ts +10 -0
  175. package/table/typings/text-column.d.ts +80 -0
  176. package/typings/drag-drop/directives/drag.d.ts +11 -2
  177. package/typings/drag-drop/drag-events.d.ts +17 -0
  178. package/typings/drag-drop/drag-ref.d.ts +9 -5
  179. package/typings/drag-drop/drop-list-ref.d.ts +9 -3
  180. package/typings/drag-drop/index.metadata.json +1 -1
  181. package/typings/esm5/drag-drop/directives/drag.d.ts +11 -2
  182. package/typings/esm5/drag-drop/drag-events.d.ts +17 -0
  183. package/typings/esm5/drag-drop/drag-ref.d.ts +9 -5
  184. package/typings/esm5/drag-drop/drop-list-ref.d.ts +9 -3
  185. package/typings/esm5/drag-drop/index.metadata.json +1 -1
  186. package/typings/esm5/index.metadata.json +1 -1
  187. package/typings/esm5/layout/breakpoints-observer.d.ts +3 -3
  188. package/typings/esm5/layout/index.metadata.json +1 -1
  189. package/typings/esm5/layout/media-matcher.d.ts +2 -2
  190. package/typings/esm5/overlay/index.metadata.json +1 -1
  191. package/typings/esm5/overlay/position/flexible-connected-position-strategy.d.ts +1 -3
  192. package/typings/esm5/portal/portal.d.ts +2 -2
  193. package/typings/esm5/table/cell.d.ts +3 -2
  194. package/typings/esm5/table/index.metadata.json +1 -1
  195. package/typings/esm5/table/public-api.d.ts +1 -0
  196. package/typings/esm5/table/row.d.ts +5 -4
  197. package/typings/esm5/table/sticky-styler.d.ts +5 -5
  198. package/typings/esm5/table/table-errors.d.ts +10 -0
  199. package/typings/esm5/table/text-column.d.ts +80 -0
  200. package/typings/index.metadata.json +1 -1
  201. package/typings/layout/breakpoints-observer.d.ts +3 -3
  202. package/typings/layout/index.metadata.json +1 -1
  203. package/typings/layout/media-matcher.d.ts +2 -2
  204. package/typings/overlay/index.metadata.json +1 -1
  205. package/typings/overlay/position/flexible-connected-position-strategy.d.ts +1 -3
  206. package/typings/portal/portal.d.ts +2 -2
  207. package/typings/schematics/utils/ast.d.ts +1 -1
  208. package/typings/schematics/utils/get-project.d.ts +1 -1
  209. package/typings/schematics/utils/project-main-file.d.ts +1 -1
  210. package/typings/schematics/utils/project-style-file.d.ts +1 -1
  211. package/typings/schematics/utils/project-targets.d.ts +1 -1
  212. package/typings/schematics/utils/schematic-options.d.ts +1 -1
  213. package/typings/table/cell.d.ts +3 -2
  214. package/typings/table/index.metadata.json +1 -1
  215. package/typings/table/public-api.d.ts +1 -0
  216. package/typings/table/row.d.ts +5 -4
  217. package/typings/table/sticky-styler.d.ts +5 -5
  218. package/typings/table/table-errors.d.ts +10 -0
  219. package/typings/table/text-column.d.ts +80 -0
@@ -13,7 +13,7 @@
13
13
 
14
14
  /**
15
15
  * @fileoverview added by tsickle
16
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
16
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
17
17
  */
18
18
  // Whether the current platform supports the V8 Break Iterator. The V8 check
19
19
  // is necessary to detect all Blink based browsers.
@@ -23,7 +23,7 @@ var hasV8BreakIterator;
23
23
  // cause IE to throw. These cases are tied to particular versions of Windows and can happen if
24
24
  // the consumer is providing a polyfilled `Map`. See:
25
25
  // https://github.com/Microsoft/ChakraCore/issues/3189
26
- // https://github.com/angular/material2/issues/15687
26
+ // https://github.com/angular/components/issues/15687
27
27
  try {
28
28
  hasV8BreakIterator = (typeof Intl !== 'undefined' && ((/** @type {?} */ (Intl))).v8BreakIterator);
29
29
  }
@@ -102,13 +102,13 @@ var Platform = /** @class */ (function () {
102
102
  Platform.ctorParameters = function () { return [
103
103
  { type: Object, decorators: [{ type: core.Optional }, { type: core.Inject, args: [core.PLATFORM_ID,] }] }
104
104
  ]; };
105
- /** @nocollapse */ Platform.ngInjectableDef = core.defineInjectable({ factory: function Platform_Factory() { return new Platform(core.inject(core.PLATFORM_ID, 8)); }, token: Platform, providedIn: "root" });
105
+ /** @nocollapse */ Platform.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function Platform_Factory() { return new Platform(core.ɵɵinject(core.PLATFORM_ID, 8)); }, token: Platform, providedIn: "root" });
106
106
  return Platform;
107
107
  }());
108
108
 
109
109
  /**
110
110
  * @fileoverview added by tsickle
111
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
111
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
112
112
  */
113
113
  var PlatformModule = /** @class */ (function () {
114
114
  function PlatformModule() {
@@ -121,7 +121,7 @@ var PlatformModule = /** @class */ (function () {
121
121
 
122
122
  /**
123
123
  * @fileoverview added by tsickle
124
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
124
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
125
125
  */
126
126
 
127
127
  /**
@@ -178,16 +178,20 @@ function getSupportedInputTypes() {
178
178
  }
179
179
  /** @type {?} */
180
180
  var featureTestInput = document.createElement('input');
181
- supportedInputTypes = new Set(candidateInputTypes.filter(function (value) {
181
+ supportedInputTypes = new Set(candidateInputTypes.filter((/**
182
+ * @param {?} value
183
+ * @return {?}
184
+ */
185
+ function (value) {
182
186
  featureTestInput.setAttribute('type', value);
183
187
  return featureTestInput.type === value;
184
- }));
188
+ })));
185
189
  return supportedInputTypes;
186
190
  }
187
191
 
188
192
  /**
189
193
  * @fileoverview added by tsickle
190
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
194
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
191
195
  */
192
196
 
193
197
  /**
@@ -204,7 +208,10 @@ function supportsPassiveEventListeners() {
204
208
  if (supportsPassiveEvents == null && typeof window !== 'undefined') {
205
209
  try {
206
210
  window.addEventListener('test', (/** @type {?} */ (null)), Object.defineProperty({}, 'passive', {
207
- get: function () { return supportsPassiveEvents = true; }
211
+ get: (/**
212
+ * @return {?}
213
+ */
214
+ function () { return supportsPassiveEvents = true; })
208
215
  }));
209
216
  }
210
217
  finally {
@@ -226,7 +233,7 @@ function normalizePassiveListenerOptions(options) {
226
233
 
227
234
  /**
228
235
  * @fileoverview added by tsickle
229
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
236
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
230
237
  */
231
238
 
232
239
  /** @enum {number} */
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-platform.umd.js","sources":["../../src/cdk/platform/features/scrolling.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/platform-module.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\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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\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/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\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(): 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 {NgModule} from '@angular/core';\n\n\n@NgModule({})\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\nimport {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/material2/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : 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 excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !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 !('MSStream' in window);\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 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 * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\n}\n}\n\n"],"names":["NgModule","Optional","Inject","PLATFORM_ID","Injectable","isPlatformBrowser"],"mappings":"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"}
1
+ {"version":3,"file":"cdk-platform.umd.js","sources":["../../src/cdk/platform/features/scrolling.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/platform-module.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\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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\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/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\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(): 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 {NgModule} from '@angular/core';\n\n\n@NgModule({})\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\nimport {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : 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 excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !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 !('MSStream' in window);\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 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 * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\n}\n}\n\n"],"names":["NgModule","Optional","Inject","PLATFORM_ID","Injectable","isPlatformBrowser"],"mappings":"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"}
@@ -5,5 +5,5 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("@angular/cdk/platform",["exports","@angular/core","@angular/common"],t):t((e.ng=e.ng||{},e.ng.cdk=e.ng.cdk||{},e.ng.cdk.platform={}),e.ng.core,e.ng.common)}(this,function(e,t,r){"use strict";function n(){if(d)return d;if("object"!=typeof document||!document)return d=new Set(p);var e=document.createElement("input");return d=new Set(p.filter(function(t){return e.setAttribute("type",t),e.type===t}))}function i(){if(null==c&&"undefined"!=typeof window)try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return c=!0}}))}finally{c=c||!1}return c}function o(e){return i()?e:!!e.capture}function s(){return!!("object"==typeof document&&"scrollBehavior"in document.documentElement.style)}function a(){if("object"!=typeof document||!document)return h.NORMAL;if(!m){var e=document.createElement("div"),t=e.style;e.dir="rtl",t.height="1px",t.width="1px",t.overflow="auto",t.visibility="hidden",t.pointerEvents="none",t.position="absolute";var r=document.createElement("div"),n=r.style;n.width="2px",n.height="1px",e.appendChild(r),document.body.appendChild(e),m=h.NORMAL,0===e.scrollLeft&&(e.scrollLeft=1,m=0===e.scrollLeft?h.NEGATED:h.INVERTED),e.parentNode.removeChild(e)}return m}var u;try{u="undefined"!=typeof Intl&&Intl.v8BreakIterator}catch(e){u=!1}var d,c,l=function(){function e(e){this._platformId=e,this.isBrowser=this._platformId?r.isPlatformBrowser(this._platformId):"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&&!u)&&"undefined"!=typeof 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)&&!("MSStream"in window),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,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:Object,decorators:[{type:t.Optional},{type:t.Inject,args:[t.PLATFORM_ID]}]}]},e.ngInjectableDef=t.defineInjectable({factory:function(){return new e(t.inject(t.PLATFORM_ID,8))},token:e,providedIn:"root"}),e}(),f=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{}]}],e}(),p=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"],h={NORMAL:0,NEGATED:1,INVERTED:2};h[h.NORMAL]="NORMAL",h[h.NEGATED]="NEGATED",h[h.INVERTED]="INVERTED";var m;e.Platform=l,e.PlatformModule=f,e.getSupportedInputTypes=n,e.supportsPassiveEventListeners=i,e.normalizePassiveListenerOptions=o,e.supportsScrollBehavior=s,e.getRtlScrollAxisType=a,e.RtlScrollAxisType=h,Object.defineProperty(e,"__esModule",{value:!0})});
8
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("@angular/cdk/platform",["exports","@angular/core","@angular/common"],t):t((e.ng=e.ng||{},e.ng.cdk=e.ng.cdk||{},e.ng.cdk.platform={}),e.ng.core,e.ng.common)}(this,function(e,t,r){"use strict";function n(){if(d)return d;if("object"!=typeof document||!document)return d=new Set(p);var e=document.createElement("input");return d=new Set(p.filter(function(t){return e.setAttribute("type",t),e.type===t}))}function i(){if(null==c&&"undefined"!=typeof window)try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return c=!0}}))}finally{c=c||!1}return c}function o(e){return i()?e:!!e.capture}function s(){return!!("object"==typeof document&&"scrollBehavior"in document.documentElement.style)}function a(){if("object"!=typeof document||!document)return h.NORMAL;if(!m){var e=document.createElement("div"),t=e.style;e.dir="rtl",t.height="1px",t.width="1px",t.overflow="auto",t.visibility="hidden",t.pointerEvents="none",t.position="absolute";var r=document.createElement("div"),n=r.style;n.width="2px",n.height="1px",e.appendChild(r),document.body.appendChild(e),m=h.NORMAL,0===e.scrollLeft&&(e.scrollLeft=1,m=0===e.scrollLeft?h.NEGATED:h.INVERTED),e.parentNode.removeChild(e)}return m}var u;try{u="undefined"!=typeof Intl&&Intl.v8BreakIterator}catch(e){u=!1}var d,c,l=function(){function e(e){this._platformId=e,this.isBrowser=this._platformId?r.isPlatformBrowser(this._platformId):"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&&!u)&&"undefined"!=typeof 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)&&!("MSStream"in window),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,args:[{providedIn:"root"}]}],e.ctorParameters=function(){return[{type:Object,decorators:[{type:t.Optional},{type:t.Inject,args:[t.PLATFORM_ID]}]}]},e.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new e(t.ɵɵinject(t.PLATFORM_ID,8))},token:e,providedIn:"root"}),e}(),f=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{}]}],e}(),p=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"],h={NORMAL:0,NEGATED:1,INVERTED:2};h[h.NORMAL]="NORMAL",h[h.NEGATED]="NEGATED",h[h.INVERTED]="INVERTED";var m;e.Platform=l,e.PlatformModule=f,e.getSupportedInputTypes=n,e.supportsPassiveEventListeners=i,e.normalizePassiveListenerOptions=o,e.supportsScrollBehavior=s,e.getRtlScrollAxisType=a,e.RtlScrollAxisType=h,Object.defineProperty(e,"__esModule",{value:!0})});
9
9
  //# sourceMappingURL=cdk-platform.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-platform.umd.min.js","sources":["../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/scrolling.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 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(): 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\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/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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 {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/material2/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : 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 excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !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 !('MSStream' in window);\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 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 * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\n}\n}\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 {NgModule} from '@angular/core';\n\n\n@NgModule({})\nexport class PlatformModule {}\n"],"names":["getSupportedInputTypes","supportedInputTypes","document","Set","candidateInputTypes","featureTestInput","createElement","filter","value","setAttribute","type","supportsPassiveEventListeners","supportsPassiveEvents","window","addEventListener","Object","defineProperty","get","normalizePassiveListenerOptions","options","capture","supportsScrollBehavior","style","getRtlScrollAxisType","RtlScrollAxisType","NORMAL","rtlScrollAxisType","scrollContainer","containerStyle","dir","height","width","overflow","visibility","pointerEvents","position","content","contentStyle","appendChild","body","scrollLeft","NEGATED","INVERTED","removeChild","hasV8BreakIterator","Intl","v8BreakIterator","_a","Platform","_platformId","this","isBrowser","isPlatformBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","Injectable","args","providedIn","decorators","Optional","Inject","PLATFORM_ID","PlatformModule","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"cdk-platform.umd.min.js","sources":["../../src/cdk/platform/features/input-types.ts","../../src/cdk/platform/features/passive-listeners.ts","../../src/cdk/platform/features/scrolling.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 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(): 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\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/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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\n/** The possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n return !!(typeof document == 'object' && 'scrollBehavior' in document.documentElement!.style);\n}\n\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return RtlScrollAxisType.NORMAL;\n }\n\n if (!rtlScrollAxisType) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.height = '1px';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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 {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator: boolean;\n\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = (typeof Intl !== 'undefined' && (Intl as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\n /**\n * Whether the Angular application is being rendered in the browser.\n * We want to use the Angular platform check because if the Document is shimmed\n * without the navigator, the following checks will fail. This is preferred because\n * sometimes the Document may be shimmed without the user's knowledge or intention\n */\n isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : 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 excluded from this check.\n BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !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 !('MSStream' in window);\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 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 * @breaking-change 8.0.0 remove optional decorator\n */\n constructor(@Optional() @Inject(PLATFORM_ID) private _platformId?: Object) {\n}\n}\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 {NgModule} from '@angular/core';\n\n\n@NgModule({})\nexport class PlatformModule {}\n"],"names":["getSupportedInputTypes","supportedInputTypes","document","Set","candidateInputTypes","featureTestInput","createElement","filter","value","setAttribute","type","supportsPassiveEventListeners","supportsPassiveEvents","window","addEventListener","Object","defineProperty","get","normalizePassiveListenerOptions","options","capture","supportsScrollBehavior","style","getRtlScrollAxisType","RtlScrollAxisType","NORMAL","rtlScrollAxisType","scrollContainer","containerStyle","dir","height","width","overflow","visibility","pointerEvents","position","content","contentStyle","appendChild","body","scrollLeft","NEGATED","INVERTED","removeChild","hasV8BreakIterator","Intl","v8BreakIterator","_a","Platform","_platformId","this","isBrowser","isPlatformBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","Injectable","args","providedIn","decorators","Optional","Inject","PLATFORM_ID","PlatformModule","NgModule"],"mappings":"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"}
@@ -42,7 +42,7 @@ function __extends(d, b) {
42
42
 
43
43
  /**
44
44
  * @fileoverview added by tsickle
45
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
45
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
46
46
  */
47
47
 
48
48
  /**
@@ -97,7 +97,7 @@ function throwNoPortalAttachedError() {
97
97
 
98
98
  /**
99
99
  * @fileoverview added by tsickle
100
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
100
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
101
101
  */
102
102
  /**
103
103
  * A `Portal` is something that you want to render somewhere else.
@@ -398,7 +398,7 @@ BasePortalOutlet = /** @class */ (function () {
398
398
 
399
399
  /**
400
400
  * @fileoverview added by tsickle
401
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
401
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
402
402
  */
403
403
  /**
404
404
  * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular
@@ -449,15 +449,21 @@ DomPortalOutlet = /** @class */ (function (_super) {
449
449
  // and then manually attach the view to the application.
450
450
  if (portal.viewContainerRef) {
451
451
  componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);
452
- this.setDisposeFn(function () { return componentRef.destroy(); });
452
+ this.setDisposeFn((/**
453
+ * @return {?}
454
+ */
455
+ function () { return componentRef.destroy(); }));
453
456
  }
454
457
  else {
455
458
  componentRef = componentFactory.create(portal.injector || this._defaultInjector);
456
459
  this._appRef.attachView(componentRef.hostView);
457
- this.setDisposeFn(function () {
460
+ this.setDisposeFn((/**
461
+ * @return {?}
462
+ */
463
+ function () {
458
464
  _this._appRef.detachView(componentRef.hostView);
459
465
  componentRef.destroy();
460
- });
466
+ }));
461
467
  }
462
468
  // At this point the component has been instantiated, so we move it to the location in the DOM
463
469
  // where we want it to be rendered.
@@ -492,14 +498,21 @@ DomPortalOutlet = /** @class */ (function (_super) {
492
498
  // But for the DomPortalOutlet the view can be added everywhere in the DOM
493
499
  // (e.g Overlay Container) To move the view to the specified host element. We just
494
500
  // re-append the existing root nodes.
495
- viewRef.rootNodes.forEach(function (rootNode) { return _this.outletElement.appendChild(rootNode); });
496
- this.setDisposeFn((function () {
501
+ viewRef.rootNodes.forEach((/**
502
+ * @param {?} rootNode
503
+ * @return {?}
504
+ */
505
+ function (rootNode) { return _this.outletElement.appendChild(rootNode); }));
506
+ this.setDisposeFn(((/**
507
+ * @return {?}
508
+ */
509
+ function () {
497
510
  /** @type {?} */
498
511
  var index = viewContainer.indexOf(viewRef);
499
512
  if (index !== -1) {
500
513
  viewContainer.remove(index);
501
514
  }
502
- }));
515
+ })));
503
516
  // TODO(jelbourn): Return locals from view.
504
517
  return viewRef;
505
518
  };
@@ -541,7 +554,7 @@ DomPortalOutlet = /** @class */ (function (_super) {
541
554
 
542
555
  /**
543
556
  * @fileoverview added by tsickle
544
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
557
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
545
558
  */
546
559
  /**
547
560
  * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,
@@ -686,7 +699,10 @@ var CdkPortalOutlet = /** @class */ (function (_super) {
686
699
  var componentFactory = resolver.resolveComponentFactory(portal.component);
687
700
  /** @type {?} */
688
701
  var ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);
689
- _super.prototype.setDisposeFn.call(this, function () { return ref.destroy(); });
702
+ _super.prototype.setDisposeFn.call(this, (/**
703
+ * @return {?}
704
+ */
705
+ function () { return ref.destroy(); }));
690
706
  this._attachedPortal = portal;
691
707
  this._attachedRef = ref;
692
708
  this.attached.emit(ref);
@@ -714,7 +730,10 @@ var CdkPortalOutlet = /** @class */ (function (_super) {
714
730
  portal.setAttachedHost(this);
715
731
  /** @type {?} */
716
732
  var viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);
717
- _super.prototype.setDisposeFn.call(this, function () { return _this._viewContainerRef.clear(); });
733
+ _super.prototype.setDisposeFn.call(this, (/**
734
+ * @return {?}
735
+ */
736
+ function () { return _this._viewContainerRef.clear(); }));
718
737
  this._attachedPortal = portal;
719
738
  this._attachedRef = viewRef;
720
739
  this.attached.emit(viewRef);
@@ -751,7 +770,7 @@ var PortalModule = /** @class */ (function () {
751
770
 
752
771
  /**
753
772
  * @fileoverview added by tsickle
754
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
773
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
755
774
  */
756
775
 
757
776
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cdk-portal.umd.js","sources":["../../src/cdk/portal/portal-injector.ts","../../src/cdk/portal/portal-directives.ts","../../src/cdk/portal/dom-portal-outlet.ts","../../src/cdk/portal/portal.ts","../../src/cdk/portal/portal-errors.ts","../../node_modules/tslib/tslib.es6.js"],"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 {Injector} from '@angular/core';\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n */\nexport class PortalInjector implements Injector {\n constructor(\n private _parentInjector: Injector,\n private _customTokens: WeakMap<any, any>) { }\n\n get(token: any, notFoundValue?: any): any {\n const value = this._customTokens.get(token);\n\n if (typeof value !== 'undefined') {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\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 {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n NgModule,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal} from './portal';\n\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\n@Directive({\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n})\nexport class CdkPortal extends TemplatePortal {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Possible attached references to the CdkPortalOutlet.\n */\nexport type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;\n\n\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n@Directive({\n selector: '[cdkPortalOutlet], [cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalOutlet, cdkPortalHost',\n inputs: ['portal: cdkPortalOutlet']\n})\nexport class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {\n /** Whether the portal component is initialized. */\n private _isInitialized = false;\n\n /** Reference to the currently-attached component/view ref. */\n private _attachedRef: CdkPortalOutletAttachedRef;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n /** Portal associated with the Portal outlet. */\n get portal(): Portal<any> | null {\n return this._attachedPortal;\n }\n\n set portal(portal: Portal<any> | null) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n\n if (this.hasAttached()) {\n super.detach();\n }\n\n if (portal) {\n super.attach(portal);\n }\n\n this._attachedPortal = portal;\n }\n\n /** Emits when a portal is attached to the outlet. */\n @Output() attached: EventEmitter<CdkPortalOutletAttachedRef> =\n new EventEmitter<CdkPortalOutletAttachedRef>();\n\n /** Component or view reference that is attached to the portal. */\n get attachedRef(): CdkPortalOutletAttachedRef {\n return this._attachedRef;\n }\n\n ngOnInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n portal.setAttachedHost(this);\n\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.injector);\n\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n\n return ref;\n }\n\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n\n return viewRef;\n }\n}\n\n\n@NgModule({\n exports: [CdkPortal, CdkPortalOutlet],\n declarations: [CdkPortal, CdkPortalOutlet],\n})\nexport class PortalModule {}\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 {\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n ApplicationRef,\n Injector,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, TemplatePortal} from './portal';\n\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nexport class DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n public outletElement: Element,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _defaultInjector: Injector) {\n super();\n }\n\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef: ComponentRef<T>;\n\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(\n componentFactory,\n portal.viewContainerRef.length,\n portal.injector || portal.viewContainerRef.injector);\n\n this.setDisposeFn(() => componentRef.destroy());\n } else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n\n return componentRef;\n }\n\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n viewRef.detectChanges();\n\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n\n this.setDisposeFn((() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n\n /**\n * Clears out a portal from the DOM.\n */\n dispose(): void {\n super.dispose();\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n }\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 {\n TemplateRef,\n ViewContainerRef,\n ElementRef,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport {\n throwNullPortalOutletError,\n throwPortalAlreadyAttachedError,\n throwNoPortalAttachedError,\n throwNullPortalError,\n throwPortalOutletAlreadyDisposedError,\n throwUnknownPortalTypeError\n} from './portal-errors';\n\n/** Interface that can be used to generically type a class. */\nexport interface ComponentType<T> {\n new (...args: any[]): T;\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nexport abstract class Portal<T> {\n private _attachedHost: PortalOutlet | null;\n\n /** Attach this portal to a host. */\n attach(host: PortalOutlet): T {\n if (host == null) {\n throwNullPortalOutletError();\n }\n\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n this._attachedHost = host;\n return <T> host.attach(this);\n }\n\n /** Detach this portal from its host */\n detach(): void {\n let host = this._attachedHost;\n\n if (host == null) {\n throwNoPortalAttachedError();\n } else {\n this._attachedHost = null;\n host.detach();\n }\n }\n\n /** Whether this portal is attached to a host. */\n get isAttached(): boolean {\n return this._attachedHost != null;\n }\n\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host: PortalOutlet | null) {\n this._attachedHost = host;\n }\n}\n\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> extends Portal<ComponentRef<T>> {\n /** The type of the component that will be instantiated for attachment. */\n component: ComponentType<T>;\n\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalOutlet.\n * The origin is necessary when the host is outside of the Angular application context.\n */\n viewContainerRef?: ViewContainerRef | null;\n\n /** [Optional] Injector used for the instantiation of the component. */\n injector?: Injector | null;\n\n /**\n * Alternate `ComponentFactoryResolver` to use when resolving the associated component.\n * Defaults to using the resolver from the outlet that the portal is attached to.\n */\n componentFactoryResolver?: ComponentFactoryResolver | null;\n\n constructor(\n component: ComponentType<T>,\n viewContainerRef?: ViewContainerRef | null,\n injector?: Injector | null,\n componentFactoryResolver?: ComponentFactoryResolver | null) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nexport class TemplatePortal<C = any> extends Portal<C> {\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef: TemplateRef<C>;\n\n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef: ViewContainerRef;\n\n /** Contextual data to be passed in to the embedded view. */\n context: C | undefined;\n\n constructor(template: TemplateRef<C>, viewContainerRef: ViewContainerRef, context?: C) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n\n get origin(): ElementRef {\n return this.templateRef.elementRef;\n }\n\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host: PortalOutlet, context: C | undefined = this.context): C {\n this.context = context;\n return super.attach(host);\n }\n\n detach(): void {\n this.context = undefined;\n return super.detach();\n }\n}\n\n\n/** A `PortalOutlet` is an space that can contain a single `Portal`. */\nexport interface PortalOutlet {\n /** Attaches a portal to this outlet. */\n attach(portal: Portal<any>): any;\n\n /** Detaches the currently attached portal from this outlet. */\n detach(): any;\n\n /** Performs cleanup before the outlet is destroyed. */\n dispose(): void;\n\n /** Whether there is currently a portal attached to this outlet. */\n hasAttached(): boolean;\n}\n\n\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nexport abstract class BasePortalOutlet implements PortalOutlet {\n /** The portal currently attached to the host. */\n protected _attachedPortal: Portal<any> | null;\n\n /** A function that will permanently dispose this host. */\n private _disposeFn: (() => void) | null;\n\n /** Whether this host has already been permanently disposed. */\n private _isDisposed: boolean = false;\n\n /** Whether this host has an attached portal. */\n hasAttached(): boolean {\n return !!this._attachedPortal;\n }\n\n attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;\n attach(portal: any): any;\n\n /** Attaches a portal. */\n attach(portal: Portal<any>): any {\n if (!portal) {\n throwNullPortalError();\n }\n\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n } else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n }\n\n throwUnknownPortalTypeError();\n }\n\n abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n\n abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;\n\n /** Detaches a previously attached portal. */\n detach(): void {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n\n this._invokeDisposeFn();\n }\n\n /** Permanently dispose of this portal host. */\n dispose(): void {\n if (this.hasAttached()) {\n this.detach();\n }\n\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n\n /** @docs-private */\n setDisposeFn(fn: () => void) {\n this._disposeFn = fn;\n }\n\n private _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\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\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nexport function throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nexport function throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n","/*! *****************************************************************************\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 = function(d, b) {\r\n 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 return extendStatics(d, b);\r\n};\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 = function() {\r\n __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 return __assign.apply(this, arguments);\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 this; }), 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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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 = typeof 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) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\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], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n"],"names":["NgModule","Output","ViewContainerRef","ComponentFactoryResolver","Directive","EventEmitter","tslib_1.__extends","TemplateRef"],"mappings":"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"}
1
+ {"version":3,"file":"cdk-portal.umd.js","sources":["../../src/cdk/portal/portal-injector.ts","../../src/cdk/portal/portal-directives.ts","../../src/cdk/portal/dom-portal-outlet.ts","../../src/cdk/portal/portal.ts","../../src/cdk/portal/portal-errors.ts","../../node_modules/tslib/tslib.es6.js"],"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 {Injector} from '@angular/core';\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n */\nexport class PortalInjector implements Injector {\n constructor(\n private _parentInjector: Injector,\n private _customTokens: WeakMap<any, any>) { }\n\n get(token: any, notFoundValue?: any): any {\n const value = this._customTokens.get(token);\n\n if (typeof value !== 'undefined') {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\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 {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n NgModule,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal} from './portal';\n\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\n@Directive({\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n})\nexport class CdkPortal extends TemplatePortal {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n/**\n * Possible attached references to the CdkPortalOutlet.\n */\nexport type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;\n\n\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n@Directive({\n selector: '[cdkPortalOutlet], [cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalOutlet, cdkPortalHost',\n inputs: ['portal: cdkPortalOutlet']\n})\nexport class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {\n /** Whether the portal component is initialized. */\n private _isInitialized = false;\n\n /** Reference to the currently-attached component/view ref. */\n private _attachedRef: CdkPortalOutletAttachedRef;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n /** Portal associated with the Portal outlet. */\n get portal(): Portal<any> | null {\n return this._attachedPortal;\n }\n\n set portal(portal: Portal<any> | null) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n\n if (this.hasAttached()) {\n super.detach();\n }\n\n if (portal) {\n super.attach(portal);\n }\n\n this._attachedPortal = portal;\n }\n\n /** Emits when a portal is attached to the outlet. */\n @Output() attached: EventEmitter<CdkPortalOutletAttachedRef> =\n new EventEmitter<CdkPortalOutletAttachedRef>();\n\n /** Component or view reference that is attached to the portal. */\n get attachedRef(): CdkPortalOutletAttachedRef {\n return this._attachedRef;\n }\n\n ngOnInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n portal.setAttachedHost(this);\n\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.injector);\n\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n\n return ref;\n }\n\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n\n return viewRef;\n }\n}\n\n\n@NgModule({\n exports: [CdkPortal, CdkPortalOutlet],\n declarations: [CdkPortal, CdkPortalOutlet],\n})\nexport class PortalModule {}\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 {\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n ApplicationRef,\n Injector,\n} from '@angular/core';\nimport {BasePortalOutlet, ComponentPortal, TemplatePortal} from './portal';\n\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nexport class DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n public outletElement: Element,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _defaultInjector: Injector) {\n super();\n }\n\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef: ComponentRef<T>;\n\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(\n componentFactory,\n portal.viewContainerRef.length,\n portal.injector || portal.viewContainerRef.injector);\n\n this.setDisposeFn(() => componentRef.destroy());\n } else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n\n return componentRef;\n }\n\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n viewRef.detectChanges();\n\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n\n this.setDisposeFn((() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n\n /**\n * Clears out a portal from the DOM.\n */\n dispose(): void {\n super.dispose();\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n }\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 {\n TemplateRef,\n ViewContainerRef,\n ElementRef,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport {\n throwNullPortalOutletError,\n throwPortalAlreadyAttachedError,\n throwNoPortalAttachedError,\n throwNullPortalError,\n throwPortalOutletAlreadyDisposedError,\n throwUnknownPortalTypeError\n} from './portal-errors';\n\n/** Interface that can be used to generically type a class. */\nexport interface ComponentType<T> {\n new (...args: any[]): T;\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nexport abstract class Portal<T> {\n private _attachedHost: PortalOutlet | null;\n\n /** Attach this portal to a host. */\n attach(host: PortalOutlet): T {\n if (host == null) {\n throwNullPortalOutletError();\n }\n\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n this._attachedHost = host;\n return <T> host.attach(this);\n }\n\n /** Detach this portal from its host */\n detach(): void {\n let host = this._attachedHost;\n\n if (host == null) {\n throwNoPortalAttachedError();\n } else {\n this._attachedHost = null;\n host.detach();\n }\n }\n\n /** Whether this portal is attached to a host. */\n get isAttached(): boolean {\n return this._attachedHost != null;\n }\n\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host: PortalOutlet | null) {\n this._attachedHost = host;\n }\n}\n\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> extends Portal<ComponentRef<T>> {\n /** The type of the component that will be instantiated for attachment. */\n component: ComponentType<T>;\n\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalOutlet.\n * The origin is necessary when the host is outside of the Angular application context.\n */\n viewContainerRef?: ViewContainerRef | null;\n\n /** [Optional] Injector used for the instantiation of the component. */\n injector?: Injector | null;\n\n /**\n * Alternate `ComponentFactoryResolver` to use when resolving the associated component.\n * Defaults to using the resolver from the outlet that the portal is attached to.\n */\n componentFactoryResolver?: ComponentFactoryResolver | null;\n\n constructor(\n component: ComponentType<T>,\n viewContainerRef?: ViewContainerRef | null,\n injector?: Injector | null,\n componentFactoryResolver?: ComponentFactoryResolver | null) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nexport class TemplatePortal<C = any> extends Portal<EmbeddedViewRef<C>> {\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef: TemplateRef<C>;\n\n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef: ViewContainerRef;\n\n /** Contextual data to be passed in to the embedded view. */\n context: C | undefined;\n\n constructor(template: TemplateRef<C>, viewContainerRef: ViewContainerRef, context?: C) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n\n get origin(): ElementRef {\n return this.templateRef.elementRef;\n }\n\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host: PortalOutlet, context: C | undefined = this.context): EmbeddedViewRef<C> {\n this.context = context;\n return super.attach(host);\n }\n\n detach(): void {\n this.context = undefined;\n return super.detach();\n }\n}\n\n\n/** A `PortalOutlet` is an space that can contain a single `Portal`. */\nexport interface PortalOutlet {\n /** Attaches a portal to this outlet. */\n attach(portal: Portal<any>): any;\n\n /** Detaches the currently attached portal from this outlet. */\n detach(): any;\n\n /** Performs cleanup before the outlet is destroyed. */\n dispose(): void;\n\n /** Whether there is currently a portal attached to this outlet. */\n hasAttached(): boolean;\n}\n\n\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nexport abstract class BasePortalOutlet implements PortalOutlet {\n /** The portal currently attached to the host. */\n protected _attachedPortal: Portal<any> | null;\n\n /** A function that will permanently dispose this host. */\n private _disposeFn: (() => void) | null;\n\n /** Whether this host has already been permanently disposed. */\n private _isDisposed: boolean = false;\n\n /** Whether this host has an attached portal. */\n hasAttached(): boolean {\n return !!this._attachedPortal;\n }\n\n attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;\n attach(portal: any): any;\n\n /** Attaches a portal. */\n attach(portal: Portal<any>): any {\n if (!portal) {\n throwNullPortalError();\n }\n\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n } else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n }\n\n throwUnknownPortalTypeError();\n }\n\n abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;\n\n abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;\n\n /** Detaches a previously attached portal. */\n detach(): void {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n\n this._invokeDisposeFn();\n }\n\n /** Permanently dispose of this portal host. */\n dispose(): void {\n if (this.hasAttached()) {\n this.detach();\n }\n\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n\n /** @docs-private */\n setDisposeFn(fn: () => void) {\n this._disposeFn = fn;\n }\n\n private _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\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\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nexport function throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nexport function throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n","/*! *****************************************************************************\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 = function(d, b) {\r\n 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 return extendStatics(d, b);\r\n};\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 = function() {\r\n __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 return __assign.apply(this, arguments);\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 this; }), 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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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 = typeof 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) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\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], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n"],"names":["NgModule","Output","ViewContainerRef","ComponentFactoryResolver","Directive","EventEmitter","tslib_1.__extends","TemplateRef"],"mappings":"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"}