@angular/cdk 2.0.0-beta.11 → 2.0.0-beta.12

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 (306) hide show
  1. package/_a11y.scss +23 -0
  2. package/_overlay.scss +93 -0
  3. package/a11y/index.metadata.json +2 -1
  4. package/a11y/typings/a11y-module.d.ts +2 -0
  5. package/a11y/typings/focus-monitor.d.ts +1 -1
  6. package/a11y/typings/index.d.ts +1 -1
  7. package/a11y/typings/index.metadata.json +1 -1
  8. package/a11y/typings/{public_api.d.ts → public-api.d.ts} +8 -2
  9. package/a11y-prebuilt.css +1 -0
  10. package/a11y.metadata.json +2 -1
  11. package/bidi/index.metadata.json +2 -1
  12. package/bidi/typings/bidi-module.d.ts +2 -0
  13. package/bidi/typings/index.d.ts +1 -1
  14. package/bidi/typings/index.metadata.json +1 -1
  15. package/bidi/typings/public-api.d.ts +10 -0
  16. package/bidi.metadata.json +2 -1
  17. package/bundles/cdk-a11y.umd.js +1368 -1357
  18. package/bundles/cdk-a11y.umd.js.map +1 -1
  19. package/bundles/cdk-a11y.umd.min.js +2 -2
  20. package/bundles/cdk-a11y.umd.min.js.map +1 -1
  21. package/bundles/cdk-bidi.umd.js +42 -40
  22. package/bundles/cdk-bidi.umd.js.map +1 -1
  23. package/bundles/cdk-bidi.umd.min.js +2 -2
  24. package/bundles/cdk-bidi.umd.min.js.map +1 -1
  25. package/bundles/cdk-coercion.umd.js +12 -0
  26. package/bundles/cdk-coercion.umd.js.map +1 -1
  27. package/bundles/cdk-coercion.umd.min.js +2 -2
  28. package/bundles/cdk-coercion.umd.min.js.map +1 -1
  29. package/bundles/cdk-collections.umd.js +113 -11
  30. package/bundles/cdk-collections.umd.js.map +1 -1
  31. package/bundles/cdk-collections.umd.min.js +2 -2
  32. package/bundles/cdk-collections.umd.min.js.map +1 -1
  33. package/bundles/cdk-keycodes.umd.js.map +1 -1
  34. package/bundles/cdk-keycodes.umd.min.js +1 -1
  35. package/bundles/cdk-keycodes.umd.min.js.map +1 -1
  36. package/bundles/cdk-layout.umd.js +235 -0
  37. package/bundles/cdk-layout.umd.js.map +1 -0
  38. package/bundles/cdk-layout.umd.min.js +9 -0
  39. package/bundles/cdk-layout.umd.min.js.map +1 -0
  40. package/bundles/cdk-observers.umd.js +41 -40
  41. package/bundles/cdk-observers.umd.js.map +1 -1
  42. package/bundles/cdk-observers.umd.min.js +2 -2
  43. package/bundles/cdk-observers.umd.min.js.map +1 -1
  44. package/bundles/cdk-overlay.umd.js +306 -265
  45. package/bundles/cdk-overlay.umd.js.map +1 -1
  46. package/bundles/cdk-overlay.umd.min.js +2 -2
  47. package/bundles/cdk-overlay.umd.min.js.map +1 -1
  48. package/bundles/cdk-platform.umd.js +19 -17
  49. package/bundles/cdk-platform.umd.js.map +1 -1
  50. package/bundles/cdk-platform.umd.min.js +2 -2
  51. package/bundles/cdk-platform.umd.min.js.map +1 -1
  52. package/bundles/cdk-portal.umd.js +71 -37
  53. package/bundles/cdk-portal.umd.js.map +1 -1
  54. package/bundles/cdk-portal.umd.min.js +2 -2
  55. package/bundles/cdk-portal.umd.min.js.map +1 -1
  56. package/bundles/cdk-rxjs.umd.js +13 -4
  57. package/bundles/cdk-rxjs.umd.js.map +1 -1
  58. package/bundles/cdk-rxjs.umd.min.js +2 -2
  59. package/bundles/cdk-rxjs.umd.min.js.map +1 -1
  60. package/bundles/cdk-scrolling.umd.js +89 -54
  61. package/bundles/cdk-scrolling.umd.js.map +1 -1
  62. package/bundles/cdk-scrolling.umd.min.js +2 -2
  63. package/bundles/cdk-scrolling.umd.min.js.map +1 -1
  64. package/bundles/cdk-stepper.umd.js +115 -90
  65. package/bundles/cdk-stepper.umd.js.map +1 -1
  66. package/bundles/cdk-stepper.umd.min.js +2 -2
  67. package/bundles/cdk-stepper.umd.min.js.map +1 -1
  68. package/bundles/cdk-table.umd.js +261 -218
  69. package/bundles/cdk-table.umd.js.map +1 -1
  70. package/bundles/cdk-table.umd.min.js +2 -2
  71. package/bundles/cdk-table.umd.min.js.map +1 -1
  72. package/bundles/cdk.umd.js +1 -1
  73. package/bundles/cdk.umd.js.map +1 -1
  74. package/bundles/cdk.umd.min.js +2 -2
  75. package/bundles/cdk.umd.min.js.map +1 -1
  76. package/cdk.metadata.json +2 -1
  77. package/coercion/index.metadata.json +2 -1
  78. package/coercion/typings/array.d.ts +9 -0
  79. package/coercion/typings/index.d.ts +1 -1
  80. package/coercion/typings/index.metadata.json +1 -1
  81. package/{typings/coercion/public_api.d.ts → coercion/typings/public-api.d.ts} +1 -0
  82. package/coercion.metadata.json +2 -1
  83. package/collections/index.metadata.json +2 -1
  84. package/collections/typings/index.d.ts +2 -1
  85. package/collections/typings/index.metadata.json +1 -1
  86. package/{typings/collections/public_api.d.ts → collections/typings/public-api.d.ts} +1 -0
  87. package/collections/typings/selection.d.ts +13 -3
  88. package/collections/typings/unique-selection-dispatcher.d.ts +40 -0
  89. package/collections.metadata.json +2 -1
  90. package/esm2015/a11y.js +1252 -1250
  91. package/esm2015/a11y.js.map +1 -1
  92. package/esm2015/bidi.js +1 -1
  93. package/esm2015/bidi.js.map +1 -1
  94. package/esm2015/cdk.js +1 -1
  95. package/esm2015/cdk.js.map +1 -1
  96. package/esm2015/coercion.js +11 -1
  97. package/esm2015/coercion.js.map +1 -1
  98. package/esm2015/collections.js +93 -8
  99. package/esm2015/collections.js.map +1 -1
  100. package/esm2015/keycodes.js.map +1 -1
  101. package/esm2015/layout.js +226 -0
  102. package/esm2015/layout.js.map +1 -0
  103. package/esm2015/observers.js +8 -7
  104. package/esm2015/observers.js.map +1 -1
  105. package/esm2015/overlay.js +157 -136
  106. package/esm2015/overlay.js.map +1 -1
  107. package/esm2015/platform.js +1 -1
  108. package/esm2015/platform.js.map +1 -1
  109. package/esm2015/portal.js +30 -1
  110. package/esm2015/portal.js.map +1 -1
  111. package/esm2015/rxjs.js +5 -1
  112. package/esm2015/rxjs.js.map +1 -1
  113. package/esm2015/scrolling.js +39 -8
  114. package/esm2015/scrolling.js.map +1 -1
  115. package/esm2015/stepper.js +27 -5
  116. package/esm2015/stepper.js.map +1 -1
  117. package/esm2015/table.js +68 -29
  118. package/esm2015/table.js.map +1 -1
  119. package/esm5/a11y.es5.js +1372 -1357
  120. package/esm5/a11y.es5.js.map +1 -1
  121. package/esm5/bidi.es5.js +45 -40
  122. package/esm5/bidi.es5.js.map +1 -1
  123. package/esm5/cdk.es5.js +4 -1
  124. package/esm5/cdk.es5.js.map +1 -1
  125. package/esm5/coercion.es5.js +14 -1
  126. package/esm5/coercion.es5.js.map +1 -1
  127. package/esm5/collections.es5.js +110 -8
  128. package/esm5/collections.es5.js.map +1 -1
  129. package/esm5/keycodes.es5.js +2 -0
  130. package/esm5/keycodes.es5.js.map +1 -1
  131. package/esm5/layout.es5.js +234 -0
  132. package/esm5/layout.es5.js.map +1 -0
  133. package/esm5/observers.es5.js +44 -40
  134. package/esm5/observers.es5.js.map +1 -1
  135. package/esm5/overlay.es5.js +304 -259
  136. package/esm5/overlay.es5.js.map +1 -1
  137. package/esm5/platform.es5.js +22 -17
  138. package/esm5/platform.es5.js.map +1 -1
  139. package/esm5/portal.es5.js +81 -44
  140. package/esm5/portal.es5.js.map +1 -1
  141. package/esm5/rxjs.es5.js +12 -1
  142. package/esm5/rxjs.es5.js.map +1 -1
  143. package/esm5/scrolling.es5.js +89 -51
  144. package/esm5/scrolling.es5.js.map +1 -1
  145. package/esm5/stepper.es5.js +119 -91
  146. package/esm5/stepper.es5.js.map +1 -1
  147. package/esm5/table.es5.js +265 -218
  148. package/esm5/table.es5.js.map +1 -1
  149. package/keycodes/index.metadata.json +2 -1
  150. package/keycodes/typings/index.d.ts +1 -1
  151. package/keycodes/typings/{public_api.d.ts → public-api.d.ts} +0 -0
  152. package/keycodes.metadata.json +2 -1
  153. package/layout/index.d.ts +8 -0
  154. package/layout/index.metadata.json +12 -0
  155. package/layout/package.json +7 -0
  156. package/layout/typings/breakpoints-observer.d.ts +37 -0
  157. package/layout/typings/breakpoints.d.ts +18 -0
  158. package/layout/typings/index.d.ts +4 -0
  159. package/layout/typings/index.metadata.json +1 -0
  160. package/layout/typings/media-matcher.d.ts +15 -0
  161. package/layout/typings/public-api.d.ts +5 -0
  162. package/layout.d.ts +8 -0
  163. package/layout.metadata.json +12 -0
  164. package/observers/index.metadata.json +2 -1
  165. package/observers/typings/index.d.ts +1 -1
  166. package/observers/typings/index.metadata.json +1 -1
  167. package/observers/typings/observe-content.d.ts +3 -3
  168. package/observers/typings/{public_api.d.ts → public-api.d.ts} +0 -0
  169. package/observers.metadata.json +2 -1
  170. package/overlay/index.metadata.json +2 -1
  171. package/overlay/typings/index.d.ts +2 -2
  172. package/overlay/typings/index.metadata.json +1 -1
  173. package/overlay/typings/overlay-config.d.ts +1 -1
  174. package/overlay/typings/overlay-directives.d.ts +3 -3
  175. package/overlay/typings/overlay-module.d.ts +11 -0
  176. package/overlay/typings/overlay-ref.d.ts +6 -6
  177. package/overlay/typings/overlay.d.ts +2 -2
  178. package/overlay/typings/position/connected-position-strategy.d.ts +5 -0
  179. package/overlay/typings/position/position-strategy.d.ts +2 -0
  180. package/overlay/typings/{public_api.d.ts → public-api.d.ts} +1 -4
  181. package/overlay/typings/scroll/scroll-strategy.d.ts +1 -1
  182. package/overlay-prebuilt.css +1 -0
  183. package/overlay.metadata.json +2 -1
  184. package/package.json +3 -3
  185. package/platform/index.metadata.json +2 -1
  186. package/platform/typings/index.d.ts +1 -1
  187. package/platform/typings/index.metadata.json +1 -1
  188. package/platform/typings/platform-module.d.ts +2 -0
  189. package/platform/typings/public-api.d.ts +10 -0
  190. package/platform.metadata.json +2 -1
  191. package/portal/index.metadata.json +2 -1
  192. package/portal/typings/index.d.ts +1 -1
  193. package/portal/typings/index.metadata.json +1 -1
  194. package/portal/typings/{public_api.d.ts → public-api.d.ts} +1 -0
  195. package/portal.metadata.json +2 -1
  196. package/rxjs/index.metadata.json +2 -1
  197. package/rxjs/typings/index.d.ts +1 -1
  198. package/rxjs/typings/index.metadata.json +1 -1
  199. package/rxjs/typings/{public_api.d.ts → public-api.d.ts} +0 -0
  200. package/rxjs/typings/rx-operators.d.ts +7 -0
  201. package/rxjs.metadata.json +2 -1
  202. package/scrolling/index.metadata.json +2 -1
  203. package/scrolling/typings/index.d.ts +1 -1
  204. package/scrolling/typings/index.metadata.json +1 -1
  205. package/scrolling/typings/public-api.d.ts +11 -0
  206. package/scrolling/typings/scrolling-module.d.ts +2 -0
  207. package/scrolling/typings/viewport-ruler.d.ts +20 -6
  208. package/scrolling.metadata.json +2 -1
  209. package/stepper/index.metadata.json +2 -1
  210. package/stepper/typings/index.d.ts +1 -1
  211. package/stepper/typings/index.metadata.json +1 -1
  212. package/stepper/typings/public-api.d.ts +11 -0
  213. package/stepper/typings/stepper-module.d.ts +2 -0
  214. package/stepper/typings/stepper.d.ts +8 -4
  215. package/stepper.metadata.json +2 -1
  216. package/table/index.metadata.json +2 -1
  217. package/table/typings/index.d.ts +1 -1
  218. package/table/typings/index.metadata.json +1 -1
  219. package/table/typings/public-api.d.ts +13 -0
  220. package/table/typings/row.d.ts +11 -3
  221. package/table/typings/table-errors.d.ts +10 -0
  222. package/table/typings/table-module.d.ts +2 -0
  223. package/table/typings/table.d.ts +17 -8
  224. package/table.metadata.json +2 -1
  225. package/typings/a11y/a11y-module.d.ts +2 -0
  226. package/typings/a11y/focus-monitor.d.ts +1 -1
  227. package/typings/a11y/index.d.ts +1 -1
  228. package/typings/a11y/index.metadata.json +1 -1
  229. package/typings/a11y/{public_api.d.ts → public-api.d.ts} +8 -2
  230. package/typings/bidi/bidi-module.d.ts +2 -0
  231. package/typings/bidi/index.d.ts +1 -1
  232. package/typings/bidi/index.metadata.json +1 -1
  233. package/typings/bidi/public-api.d.ts +10 -0
  234. package/typings/coercion/array.d.ts +9 -0
  235. package/typings/coercion/index.d.ts +1 -1
  236. package/typings/coercion/index.metadata.json +1 -1
  237. package/{coercion/typings/public_api.d.ts → typings/coercion/public-api.d.ts} +1 -0
  238. package/typings/collections/index.d.ts +2 -1
  239. package/typings/collections/index.metadata.json +1 -1
  240. package/{collections/typings/public_api.d.ts → typings/collections/public-api.d.ts} +1 -0
  241. package/typings/collections/selection.d.ts +13 -3
  242. package/typings/collections/unique-selection-dispatcher.d.ts +40 -0
  243. package/typings/index.d.ts +1 -1
  244. package/typings/index.metadata.json +1 -1
  245. package/typings/keycodes/index.d.ts +1 -1
  246. package/typings/keycodes/{public_api.d.ts → public-api.d.ts} +0 -0
  247. package/typings/layout/breakpoints-observer.d.ts +37 -0
  248. package/typings/layout/breakpoints.d.ts +18 -0
  249. package/typings/layout/index.d.ts +4 -0
  250. package/typings/layout/index.metadata.json +1 -0
  251. package/typings/layout/media-matcher.d.ts +15 -0
  252. package/typings/layout/public-api.d.ts +5 -0
  253. package/typings/observers/index.d.ts +1 -1
  254. package/typings/observers/index.metadata.json +1 -1
  255. package/typings/observers/observe-content.d.ts +3 -3
  256. package/typings/observers/{public_api.d.ts → public-api.d.ts} +0 -0
  257. package/typings/overlay/index.d.ts +2 -2
  258. package/typings/overlay/index.metadata.json +1 -1
  259. package/typings/overlay/overlay-config.d.ts +1 -1
  260. package/typings/overlay/overlay-directives.d.ts +3 -3
  261. package/typings/overlay/overlay-module.d.ts +11 -0
  262. package/typings/overlay/overlay-ref.d.ts +6 -6
  263. package/typings/overlay/overlay.d.ts +2 -2
  264. package/typings/overlay/position/connected-position-strategy.d.ts +5 -0
  265. package/typings/overlay/position/position-strategy.d.ts +2 -0
  266. package/typings/overlay/{public_api.d.ts → public-api.d.ts} +1 -4
  267. package/typings/overlay/scroll/scroll-strategy.d.ts +1 -1
  268. package/typings/platform/index.d.ts +1 -1
  269. package/typings/platform/index.metadata.json +1 -1
  270. package/typings/platform/platform-module.d.ts +2 -0
  271. package/typings/platform/public-api.d.ts +10 -0
  272. package/typings/portal/index.d.ts +1 -1
  273. package/typings/portal/index.metadata.json +1 -1
  274. package/typings/portal/{public_api.d.ts → public-api.d.ts} +1 -0
  275. package/typings/{public_api.d.ts → public-api.d.ts} +0 -0
  276. package/typings/rxjs/index.d.ts +1 -1
  277. package/typings/rxjs/index.metadata.json +1 -1
  278. package/typings/rxjs/{public_api.d.ts → public-api.d.ts} +0 -0
  279. package/typings/rxjs/rx-operators.d.ts +7 -0
  280. package/typings/scrolling/index.d.ts +1 -1
  281. package/typings/scrolling/index.metadata.json +1 -1
  282. package/typings/scrolling/public-api.d.ts +11 -0
  283. package/typings/scrolling/scrolling-module.d.ts +2 -0
  284. package/typings/scrolling/viewport-ruler.d.ts +20 -6
  285. package/typings/stepper/index.d.ts +1 -1
  286. package/typings/stepper/index.metadata.json +1 -1
  287. package/typings/stepper/public-api.d.ts +11 -0
  288. package/typings/stepper/stepper-module.d.ts +2 -0
  289. package/typings/stepper/stepper.d.ts +8 -4
  290. package/typings/table/index.d.ts +1 -1
  291. package/typings/table/index.metadata.json +1 -1
  292. package/typings/table/public-api.d.ts +13 -0
  293. package/typings/table/row.d.ts +11 -3
  294. package/typings/table/table-errors.d.ts +10 -0
  295. package/typings/table/table-module.d.ts +2 -0
  296. package/typings/table/table.d.ts +17 -8
  297. package/bidi/typings/public_api.d.ts +0 -4
  298. package/platform/typings/public_api.d.ts +0 -4
  299. package/scrolling/typings/public_api.d.ts +0 -5
  300. package/stepper/typings/public_api.d.ts +0 -5
  301. package/table/typings/public_api.d.ts +0 -7
  302. package/typings/bidi/public_api.d.ts +0 -4
  303. package/typings/platform/public_api.d.ts +0 -4
  304. package/typings/scrolling/public_api.d.ts +0 -5
  305. package/typings/stepper/public_api.d.ts +0 -5
  306. package/typings/table/public_api.d.ts +0 -7
@@ -129,5 +129,5 @@ PlatformModule.ctorParameters = () => [];
129
129
  * Generated bundle index. Do not edit.
130
130
  */
131
131
 
132
- export { PlatformModule, Platform, getSupportedInputTypes };
132
+ export { Platform, getSupportedInputTypes, PlatformModule };
133
133
  //# sourceMappingURL=platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sources":["../../../src/cdk/platform/index.ts","../../../src/cdk/platform/public_api.ts","../../../src/cdk/platform/features.ts","../../../src/cdk/platform/platform.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {PlatformModule,Platform,getSupportedInputTypes} from './public_api';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {NgModule} from '@angular/core';\nimport {Platform} from './platform';\nexport class PlatformModule {static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n providers: [Platform]\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction PlatformModule_tsickle_Closure_declarations() {\n/** @type {?} */\nPlatformModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPlatformModule.ctorParameters;\n}\n\n\n\nexport {Platform} from './platform';\nexport {getSupportedInputTypes} from './features';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","\n/**\n * Cached result Set of input types support by the current browser.\n */\nlet supportedInputTypes: Set<string>;\n/**\n * Types of <input> that *might* be supported.\n */\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 * @return {?} The input types supported by this browser.\n */\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 /** @type {?} */ 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 Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable} from '@angular/core';\n\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nconst /** @type {?} */ hasV8BreakIterator = (typeof(Intl) !== 'undefined' && ( /** @type {?} */((Intl as any))).v8BreakIterator);\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n * \\@docs-private\n */\nexport class Platform {\n isBrowser: boolean = typeof document === 'object' && !!document;\n/**\n * Layout Engines\n */\nEDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n BLINK = this.isBrowser &&\n (!!(( /** @type {?} */((window as any))).chrome || hasV8BreakIterator) && !!CSS && !this.EDGE && !this.TRIDENT);\n\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 = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n/**\n * Browsers and Platform Types\n */\nIOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !(window as any).MSStream;\n\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 = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\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 = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction Platform_tsickle_Closure_declarations() {\n/** @type {?} */\nPlatform.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPlatform.ctorParameters;\n/** @type {?} */\nPlatform.prototype.isBrowser;\n/**\n * Layout Engines\n * @type {?}\n */\nPlatform.prototype.EDGE;\n/** @type {?} */\nPlatform.prototype.TRIDENT;\n/** @type {?} */\nPlatform.prototype.BLINK;\n/** @type {?} */\nPlatform.prototype.WEBKIT;\n/**\n * Browsers and Platform Types\n * @type {?}\n */\nPlatform.prototype.IOS;\n/** @type {?} */\nPlatform.prototype.FIREFOX;\n/** @type {?} */\nPlatform.prototype.ANDROID;\n/** @type {?} */\nPlatform.prototype.SAFARI;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sources":["../../packages/cdk/platform/platform.js","../../packages/cdk/platform/features.js","../../packages/cdk/platform/platform-module.js","../../packages/cdk/platform/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Injectable } from '@angular/core';\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nconst /** @type {?} */ hasV8BreakIterator = (typeof (Intl) !== 'undefined' && ((Intl)).v8BreakIterator);\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n * \\@docs-private\n */\nexport class Platform {\n constructor() {\n this.isBrowser = typeof document === 'object' && !!document;\n /**\n * Layout Engines\n */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n this.BLINK = this.isBrowser &&\n (!!(((window)).chrome || hasV8BreakIterator) && !!CSS && !this.EDGE && !this.TRIDENT);\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /**\n * Browsers and Platform Types\n */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nPlatform.ctorParameters = () => [];\nfunction Platform_tsickle_Closure_declarations() {\n /** @type {?} */\n Platform.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n Platform.ctorParameters;\n /** @type {?} */\n Platform.prototype.isBrowser;\n /**\n * Layout Engines\n * @type {?}\n */\n Platform.prototype.EDGE;\n /** @type {?} */\n Platform.prototype.TRIDENT;\n /** @type {?} */\n Platform.prototype.BLINK;\n /** @type {?} */\n Platform.prototype.WEBKIT;\n /**\n * Browsers and Platform Types\n * @type {?}\n */\n Platform.prototype.IOS;\n /** @type {?} */\n Platform.prototype.FIREFOX;\n /** @type {?} */\n Platform.prototype.ANDROID;\n /** @type {?} */\n Platform.prototype.SAFARI;\n}\n//# sourceMappingURL=platform.js.map","/**\n * Cached result Set of input types support by the current browser.\n */\nlet supportedInputTypes;\n/**\n * Types of <input> that *might* be supported.\n */\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 * @return {?} The input types supported by this browser.\n */\nexport function getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let /** @type {?} */ featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n//# sourceMappingURL=features.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModule } from '@angular/core';\nimport { Platform } from './platform';\nexport class PlatformModule {\n}\nPlatformModule.decorators = [\n { type: NgModule, args: [{\n providers: [Platform]\n },] },\n];\n/**\n * @nocollapse\n */\nPlatformModule.ctorParameters = () => [];\nfunction PlatformModule_tsickle_Closure_declarations() {\n /** @type {?} */\n PlatformModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n PlatformModule.ctorParameters;\n}\n//# sourceMappingURL=platform-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { Platform, getSupportedInputTypes, PlatformModule } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}
package/esm2015/portal.js CHANGED
@@ -482,6 +482,7 @@ class PortalHostDirective extends BasePortalHost {
482
482
  PortalHostDirective.decorators = [
483
483
  { type: Directive, args: [{
484
484
  selector: '[cdkPortalHost], [portalHost]',
485
+ exportAs: 'cdkPortalHost',
485
486
  inputs: ['portal: cdkPortalHost']
486
487
  },] },
487
488
  ];
@@ -508,9 +509,37 @@ PortalModule.decorators = [
508
509
  */
509
510
  PortalModule.ctorParameters = () => [];
510
511
 
512
+ /**
513
+ * Custom injector to be used when providing custom
514
+ * injection tokens to components inside a portal.
515
+ * \@docs-private
516
+ */
517
+ class PortalInjector {
518
+ /**
519
+ * @param {?} _parentInjector
520
+ * @param {?} _customTokens
521
+ */
522
+ constructor(_parentInjector, _customTokens) {
523
+ this._parentInjector = _parentInjector;
524
+ this._customTokens = _customTokens;
525
+ }
526
+ /**
527
+ * @param {?} token
528
+ * @param {?=} notFoundValue
529
+ * @return {?}
530
+ */
531
+ get(token, notFoundValue) {
532
+ const /** @type {?} */ value = this._customTokens.get(token);
533
+ if (typeof value !== 'undefined') {
534
+ return value;
535
+ }
536
+ return this._parentInjector.get(token, notFoundValue);
537
+ }
538
+ }
539
+
511
540
  /**
512
541
  * Generated bundle index. Do not edit.
513
542
  */
514
543
 
515
- export { Portal, ComponentPortal, TemplatePortal, BasePortalHost, DomPortalHost, TemplatePortalDirective, PortalHostDirective, PortalModule };
544
+ export { Portal, ComponentPortal, TemplatePortal, BasePortalHost, DomPortalHost, TemplatePortalDirective, PortalHostDirective, PortalModule, PortalInjector };
516
545
  //# sourceMappingURL=portal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"portal.js","sources":["../../../src/cdk/portal/index.ts","../../../src/cdk/portal/portal-directives.ts","../../../src/cdk/portal/dom-portal-host.ts","../../../src/cdk/portal/portal.ts","../../../src/cdk/portal/portal-errors.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {ComponentType,Portal,ComponentPortal,TemplatePortal,PortalHost,BasePortalHost,DomPortalHost,TemplatePortalDirective,PortalHostDirective,PortalModule} from './public_api';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {\n NgModule,\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n TemplateRef,\n ComponentFactoryResolver,\n ViewContainerRef,\n OnDestroy,\n Input,\n} from '@angular/core';\nimport {Portal, TemplatePortal, ComponentPortal, BasePortalHost} from './portal';\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 * Usage:\n * <ng-template portal #greeting>\n * <p> Hello {{name}} </p>\n * </ng-template>\n */\nexport class TemplatePortalDirective extends TemplatePortal<any> {\n/**\n * @param {?} templateRef\n * @param {?} viewContainerRef\n */\nconstructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Directive, args: [{\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: TemplateRef, },\n{type: ViewContainerRef, },\n];\n}\n\nfunction TemplatePortalDirective_tsickle_Closure_declarations() {\n/** @type {?} */\nTemplatePortalDirective.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nTemplatePortalDirective.ctorParameters;\n}\n\n/**\n * Directive version of a PortalHost. Because the directive *is* a PortalHost, portals can be\n * directly attached to it, enabling declarative use.\n * \n * Usage:\n * <ng-template [cdkPortalHost]=\"greeting\"></ng-template>\n */\nexport class PortalHostDirective extends BasePortalHost implements OnDestroy {\n/**\n * The attached portal.\n */\nprivate _portal: Portal<any> | null = null;\n/**\n * @param {?} _componentFactoryResolver\n * @param {?} _viewContainerRef\n */\nconstructor(\nprivate _componentFactoryResolver: ComponentFactoryResolver,\nprivate _viewContainerRef: ViewContainerRef) {\n super();\n }\n/**\n * @deprecated\n * @return {?}\n */\nget _deprecatedPortal() { return this.portal; }\n/**\n * @param {?} v\n * @return {?}\n */\nset _deprecatedPortal(v) { this.portal = v; }\n/**\n * Portal associated with the Portal host.\n * @return {?}\n */\nget portal(): Portal<any> | null {\n return this._portal;\n }\n/**\n * @param {?} portal\n * @return {?}\n */\nset portal(portal: Portal<any> | null) {\n if (this.hasAttached()) {\n super.detach();\n }\n\n if (portal) {\n super.attach(portal);\n }\n\n this._portal = portal;\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n super.dispose();\n this._portal = null;\n }\n/**\n * Attach the given ComponentPortal to this PortalHost using the ComponentFactoryResolver.\n * \n * @template T\n * @param {?} portal Portal to be attached to the portal host.\n * @return {?}\n */\nattachComponentPortal<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 PortalHost.\n let /** @type {?} */ viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n\n let /** @type {?} */ componentFactory =\n this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let /** @type {?} */ ref = viewContainerRef.createComponent(\n componentFactory, viewContainerRef.length,\n portal.injector || viewContainerRef.parentInjector);\n\n super.setDisposeFn(() => ref.destroy());\n this._portal = portal;\n\n return ref;\n }\n/**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @template C\n * @param {?} portal Portal to be attached.\n * @return {?}\n */\nattachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n portal.setAttachedHost(this);\n const /** @type {?} */ viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n\n this._portal = portal;\n\n return viewRef;\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Directive, args: [{\n selector: '[cdkPortalHost], [portalHost]',\n inputs: ['portal: cdkPortalHost']\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ComponentFactoryResolver, },\n{type: ViewContainerRef, },\n];\nstatic propDecorators: {[key: string]: DecoratorInvocation[]} = {\n'_deprecatedPortal': [{ type: Input, args: ['portalHost', ] },],\n};\n}\n\nfunction PortalHostDirective_tsickle_Closure_declarations() {\n/** @type {?} */\nPortalHostDirective.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPortalHostDirective.ctorParameters;\n/** @type {?} */\nPortalHostDirective.propDecorators;\n/**\n * The attached portal.\n * @type {?}\n */\nPortalHostDirective.prototype._portal;\n/** @type {?} */\nPortalHostDirective.prototype._componentFactoryResolver;\n/** @type {?} */\nPortalHostDirective.prototype._viewContainerRef;\n}\n\nexport class PortalModule {static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n exports: [TemplatePortalDirective, PortalHostDirective],\n declarations: [TemplatePortalDirective, PortalHostDirective],\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction PortalModule_tsickle_Closure_declarations() {\n/** @type {?} */\nPortalModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPortalModule.ctorParameters;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n ApplicationRef,\n Injector,\n} from '@angular/core';\nimport {BasePortalHost, ComponentPortal, TemplatePortal} from './portal';\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n * \n * This is the only part of the portal core that directly touches the DOM.\n */\nexport class DomPortalHost extends BasePortalHost {\n/**\n * @param {?} _hostDomElement\n * @param {?} _componentFactoryResolver\n * @param {?} _appRef\n * @param {?} _defaultInjector\n */\nconstructor(\nprivate _hostDomElement: Element,\nprivate _componentFactoryResolver: ComponentFactoryResolver,\nprivate _appRef: ApplicationRef,\nprivate _defaultInjector: Injector) {\n super();\n }\n/**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @template T\n * @param {?} portal Portal to be attached\n * @return {?}\n */\nattachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n let /** @type {?} */ componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let /** @type {?} */ 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.parentInjector);\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._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n\n return componentRef;\n }\n/**\n * Attaches a template portal to the DOM as an embedded view.\n * @template C\n * @param {?} portal Portal to be attached.\n * @return {?}\n */\nattachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n let /** @type {?} */ viewContainer = portal.viewContainerRef;\n let /** @type {?} */ 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 DomPortalHost the view can be added everywhere in the DOM (e.g Overlay Container)\n // To move the view to the specified host element. We just re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this._hostDomElement.appendChild(rootNode));\n\n this.setDisposeFn((() => {\n let /** @type {?} */ 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 * Clears out a portal from the DOM.\n * @return {?}\n */\ndispose(): void {\n super.dispose();\n if (this._hostDomElement.parentNode != null) {\n this._hostDomElement.parentNode.removeChild(this._hostDomElement);\n }\n }\n/**\n * Gets the root HTMLElement for an instantiated component.\n * @param {?} componentRef\n * @return {?}\n */\nprivate _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n return /** @type {?} */(( ( /** @type {?} */((componentRef.hostView as EmbeddedViewRef<any>))).rootNodes[0] as HTMLElement));\n }\n}\n\nfunction DomPortalHost_tsickle_Closure_declarations() {\n/** @type {?} */\nDomPortalHost.prototype._hostDomElement;\n/** @type {?} */\nDomPortalHost.prototype._componentFactoryResolver;\n/** @type {?} */\nDomPortalHost.prototype._appRef;\n/** @type {?} */\nDomPortalHost.prototype._defaultInjector;\n}\n\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {\n TemplateRef,\n ViewContainerRef,\n ElementRef,\n ComponentRef,\n EmbeddedViewRef,\n Injector\n} from '@angular/core';\nimport {\n throwNullPortalHostError,\n throwPortalAlreadyAttachedError,\n throwNoPortalAttachedError,\n throwNullPortalError,\n throwPortalHostAlreadyDisposedError,\n throwUnknownPortalTypeError\n} from './portal-errors';\n\n\nexport interface ComponentType<T> {\n new (...args: any[]): T;\n}\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalHost`.\n * @abstract\n */\nexport abstract class Portal<T> {\nprivate _attachedHost: PortalHost | null;\n/**\n * Attach this portal to a host.\n * @param {?} host\n * @return {?}\n */\nattach(host: PortalHost): T {\n if (host == null) {\n throwNullPortalHostError();\n }\n\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n this._attachedHost = host;\n return /** @type {?} */(( <T> host.attach(this)));\n }\n/**\n * Detach this portal from its host\n * @return {?}\n */\ndetach(): void {\n let /** @type {?} */ 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 * @return {?}\n */\nget isAttached(): boolean {\n return this._attachedHost != null;\n }\n/**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n * @param {?} host\n * @return {?}\n */\nsetAttachedHost(host: PortalHost | null) {\n this._attachedHost = host;\n }\n}\n\nfunction Portal_tsickle_Closure_declarations() {\n/** @type {?} */\nPortal.prototype._attachedHost;\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/**\n * The type of the component that will be instantiated for attachment.\n */\ncomponent: ComponentType<T>;\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 PortalHost.\n * The origin is necessary when the host is outside of the Angular application context.\n */\nviewContainerRef?: ViewContainerRef | null;\n/**\n * [Optional] Injector used for the instantiation of the component.\n */\ninjector?: Injector | null;\n/**\n * @param {?} component\n * @param {?=} viewContainerRef\n * @param {?=} injector\n */\nconstructor(\n component: ComponentType<T>,\n viewContainerRef?: ViewContainerRef | null,\n injector?: Injector | null) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n }\n}\n\nfunction ComponentPortal_tsickle_Closure_declarations() {\n/**\n * The type of the component that will be instantiated for attachment.\n * @type {?}\n */\nComponentPortal.prototype.component;\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 PortalHost.\n * The origin is necessary when the host is outside of the Angular application context.\n * @type {?}\n */\nComponentPortal.prototype.viewContainerRef;\n/**\n * [Optional] Injector used for the instantiation of the component.\n * @type {?}\n */\nComponentPortal.prototype.injector;\n}\n\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nexport class TemplatePortal<C> extends Portal<C> {\n/**\n * The embedded template that will be used to instantiate an embedded View in the host.\n */\ntemplateRef: TemplateRef<C>;\n/**\n * Reference to the ViewContainer into which the template will be stamped out.\n */\nviewContainerRef: ViewContainerRef;\n\n context: C | undefined;\n/**\n * @param {?} template\n * @param {?} viewContainerRef\n * @param {?=} context\n */\nconstructor(template: TemplateRef<any>, viewContainerRef: ViewContainerRef, context?: C) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n if (context) {\n this.context = context;\n }\n }\n/**\n * @return {?}\n */\nget origin(): ElementRef {\n return this.templateRef.elementRef;\n }\n/**\n * Attach the the portal to the provided `PortalHost`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n * @param {?} host\n * @param {?=} context\n * @return {?}\n */\nattach(host: PortalHost, context: C | undefined = this.context): C {\n this.context = context;\n return super.attach(host);\n }\n/**\n * @return {?}\n */\ndetach(): void {\n this.context = undefined;\n return super.detach();\n }\n}\n\nfunction TemplatePortal_tsickle_Closure_declarations() {\n/**\n * The embedded template that will be used to instantiate an embedded View in the host.\n * @type {?}\n */\nTemplatePortal.prototype.templateRef;\n/**\n * Reference to the ViewContainer into which the template will be stamped out.\n * @type {?}\n */\nTemplatePortal.prototype.viewContainerRef;\n/** @type {?} */\nTemplatePortal.prototype.context;\n}\n\n\n\n/**\n * A `PortalHost` is an space that can contain a single `Portal`.\n */\nexport interface PortalHost {\n attach(portal: Portal<any>): any;\n\n detach(): any;\n\n dispose(): void;\n\n hasAttached(): boolean;\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching either a\n * ComponentPortal or a TemplatePortal.\n * @abstract\n */\nexport abstract class BasePortalHost implements PortalHost {\n/**\n * The portal currently attached to the host.\n */\nprivate _attachedPortal: Portal<any> | null;\n/**\n * A function that will permanently dispose this host.\n */\nprivate _disposeFn: (() => void) | null;\n/**\n * Whether this host has already been permanently disposed.\n */\nprivate _isDisposed: boolean = false;\n/**\n * Whether this host has an attached portal.\n * @return {?}\n */\nhasAttached(): boolean {\n return !!this._attachedPortal;\n }\n/**\n * @param {?} portal\n * @return {?}\n */\nattach(portal: Portal<any>): any {\n if (!portal) {\n throwNullPortalError();\n }\n\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n\n if (this._isDisposed) {\n throwPortalHostAlreadyDisposedError();\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\n * @template T\n * @param {?} portal\n * @return {?}\n */\nattachComponentPortal<T>(portal: ComponentPortal<T>) {}\n/**\n * @abstract\n * @template C\n * @param {?} portal\n * @return {?}\n */\nattachTemplatePortal<C>(portal: TemplatePortal<C>) {}\n/**\n * @return {?}\n */\ndetach(): void {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n\n this._invokeDisposeFn();\n }\n/**\n * @return {?}\n */\ndispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nsetDisposeFn(fn: () => void) {\n this._disposeFn = fn;\n }\n/**\n * @return {?}\n */\nprivate _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n\nfunction BasePortalHost_tsickle_Closure_declarations() {\n/**\n * The portal currently attached to the host.\n * @type {?}\n */\nBasePortalHost.prototype._attachedPortal;\n/**\n * A function that will permanently dispose this host.\n * @type {?}\n */\nBasePortalHost.prototype._disposeFn;\n/**\n * Whether this host has already been permanently disposed.\n * @type {?}\n */\nBasePortalHost.prototype._isDisposed;\n}\n\n","\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * \\@docs-private\n * @return {?}\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwPortalHostAlreadyDisposedError() {\n throw Error('This PortalHost has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * \\@docs-private\n * @return {?}\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalHost accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwNullPortalHostError() {\n throw Error('Attempting to attach a portal to a null PortalHost');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * \\@docs-privatew\n * @return {?}\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portal.js","sources":["../../packages/cdk/portal/portal-errors.js","../../packages/cdk/portal/portal.js","../../packages/cdk/portal/dom-portal-host.js","../../packages/cdk/portal/portal-directives.js","../../packages/cdk/portal/portal-injector.js","../../packages/cdk/portal/index.js"],"sourcesContent":["/**\n * Throws an exception when attempting to attach a null portal to a host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * \\@docs-private\n * @return {?}\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwPortalHostAlreadyDisposedError() {\n throw Error('This PortalHost has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * \\@docs-private\n * @return {?}\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalHost accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwNullPortalHostError() {\n throw Error('Attempting to attach a portal to a null PortalHost');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * \\@docs-privatew\n * @return {?}\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n//# sourceMappingURL=portal-errors.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { throwNullPortalHostError, throwPortalAlreadyAttachedError, throwNoPortalAttachedError, throwNullPortalError, throwPortalHostAlreadyDisposedError, throwUnknownPortalTypeError } from './portal-errors';\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalHost`.\n * @abstract\n */\nexport class Portal {\n /**\n * Attach this portal to a host.\n * @param {?} host\n * @return {?}\n */\n attach(host) {\n if (host == null) {\n throwNullPortalHostError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n this._attachedHost = host;\n return (host.attach(this));\n }\n /**\n * Detach this portal from its host\n * @return {?}\n */\n detach() {\n let /** @type {?} */ host = this._attachedHost;\n if (host == null) {\n throwNoPortalAttachedError();\n }\n else {\n this._attachedHost = null;\n host.detach();\n }\n }\n /**\n * Whether this portal is attached to a host.\n * @return {?}\n */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n * @param {?} host\n * @return {?}\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\nfunction Portal_tsickle_Closure_declarations() {\n /** @type {?} */\n Portal.prototype._attachedHost;\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal extends Portal {\n /**\n * @param {?} component\n * @param {?=} viewContainerRef\n * @param {?=} injector\n */\n constructor(component, viewContainerRef, injector) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n }\n}\nfunction ComponentPortal_tsickle_Closure_declarations() {\n /**\n * The type of the component that will be instantiated for attachment.\n * @type {?}\n */\n ComponentPortal.prototype.component;\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 PortalHost.\n * The origin is necessary when the host is outside of the Angular application context.\n * @type {?}\n */\n ComponentPortal.prototype.viewContainerRef;\n /**\n * [Optional] Injector used for the instantiation of the component.\n * @type {?}\n */\n ComponentPortal.prototype.injector;\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nexport class TemplatePortal extends Portal {\n /**\n * @param {?} template\n * @param {?} viewContainerRef\n * @param {?=} context\n */\n constructor(template, viewContainerRef, context) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n if (context) {\n this.context = context;\n }\n }\n /**\n * @return {?}\n */\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the the portal to the provided `PortalHost`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n * @param {?} host\n * @param {?=} context\n * @return {?}\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n /**\n * @return {?}\n */\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\nfunction TemplatePortal_tsickle_Closure_declarations() {\n /**\n * The embedded template that will be used to instantiate an embedded View in the host.\n * @type {?}\n */\n TemplatePortal.prototype.templateRef;\n /**\n * Reference to the ViewContainer into which the template will be stamped out.\n * @type {?}\n */\n TemplatePortal.prototype.viewContainerRef;\n /** @type {?} */\n TemplatePortal.prototype.context;\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching either a\n * ComponentPortal or a TemplatePortal.\n * @abstract\n */\nexport class BasePortalHost {\n constructor() {\n /**\n * Whether this host has already been permanently disposed.\n */\n this._isDisposed = false;\n }\n /**\n * Whether this host has an attached portal.\n * @return {?}\n */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /**\n * @param {?} portal\n * @return {?}\n */\n attach(portal) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalHostAlreadyDisposedError();\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n }\n throwUnknownPortalTypeError();\n }\n /**\n * @abstract\n * @template T\n * @param {?} portal\n * @return {?}\n */\n attachComponentPortal(portal) { }\n /**\n * @abstract\n * @template C\n * @param {?} portal\n * @return {?}\n */\n attachTemplatePortal(portal) { }\n /**\n * @return {?}\n */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /**\n * @return {?}\n */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n /**\n * @return {?}\n */\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\nfunction BasePortalHost_tsickle_Closure_declarations() {\n /**\n * The portal currently attached to the host.\n * @type {?}\n */\n BasePortalHost.prototype._attachedPortal;\n /**\n * A function that will permanently dispose this host.\n * @type {?}\n */\n BasePortalHost.prototype._disposeFn;\n /**\n * Whether this host has already been permanently disposed.\n * @type {?}\n */\n BasePortalHost.prototype._isDisposed;\n}\n//# sourceMappingURL=portal.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BasePortalHost } from './portal';\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nexport class DomPortalHost extends BasePortalHost {\n /**\n * @param {?} _hostDomElement\n * @param {?} _componentFactoryResolver\n * @param {?} _appRef\n * @param {?} _defaultInjector\n */\n constructor(_hostDomElement, _componentFactoryResolver, _appRef, _defaultInjector) {\n super();\n this._hostDomElement = _hostDomElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @template T\n * @param {?} portal Portal to be attached\n * @return {?}\n */\n attachComponentPortal(portal) {\n let /** @type {?} */ componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let /** @type {?} */ componentRef;\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(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.parentInjector);\n this.setDisposeFn(() => componentRef.destroy());\n }\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._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @template C\n * @param {?} portal Portal to be attached.\n * @return {?}\n */\n attachTemplatePortal(portal) {\n let /** @type {?} */ viewContainer = portal.viewContainerRef;\n let /** @type {?} */ viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n viewRef.detectChanges();\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalHost the view can be added everywhere in the DOM (e.g Overlay Container)\n // To move the view to the specified host element. We just re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this._hostDomElement.appendChild(rootNode));\n this.setDisposeFn((() => {\n let /** @type {?} */ index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n * @return {?}\n */\n dispose() {\n super.dispose();\n if (this._hostDomElement.parentNode != null) {\n this._hostDomElement.parentNode.removeChild(this._hostDomElement);\n }\n }\n /**\n * Gets the root HTMLElement for an instantiated component.\n * @param {?} componentRef\n * @return {?}\n */\n _getComponentRootNode(componentRef) {\n return (((componentRef.hostView)).rootNodes[0]);\n }\n}\nfunction DomPortalHost_tsickle_Closure_declarations() {\n /** @type {?} */\n DomPortalHost.prototype._hostDomElement;\n /** @type {?} */\n DomPortalHost.prototype._componentFactoryResolver;\n /** @type {?} */\n DomPortalHost.prototype._appRef;\n /** @type {?} */\n DomPortalHost.prototype._defaultInjector;\n}\n//# sourceMappingURL=dom-portal-host.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModule, Directive, TemplateRef, ComponentFactoryResolver, ViewContainerRef, Input, } from '@angular/core';\nimport { TemplatePortal, BasePortalHost } from './portal';\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 * Usage:\n * <ng-template portal #greeting>\n * <p> Hello {{name}} </p>\n * </ng-template>\n */\nexport class TemplatePortalDirective extends TemplatePortal {\n /**\n * @param {?} templateRef\n * @param {?} viewContainerRef\n */\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nTemplatePortalDirective.decorators = [\n { type: Directive, args: [{\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n },] },\n];\n/**\n * @nocollapse\n */\nTemplatePortalDirective.ctorParameters = () => [\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n];\nfunction TemplatePortalDirective_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplatePortalDirective.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n TemplatePortalDirective.ctorParameters;\n}\n/**\n * Directive version of a PortalHost. Because the directive *is* a PortalHost, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * <ng-template [cdkPortalHost]=\"greeting\"></ng-template>\n */\nexport class PortalHostDirective extends BasePortalHost {\n /**\n * @param {?} _componentFactoryResolver\n * @param {?} _viewContainerRef\n */\n constructor(_componentFactoryResolver, _viewContainerRef) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /**\n * The attached portal.\n */\n this._portal = null;\n }\n /**\n * @deprecated\n * @return {?}\n */\n get _deprecatedPortal() { return this.portal; }\n /**\n * @param {?} v\n * @return {?}\n */\n set _deprecatedPortal(v) { this.portal = v; }\n /**\n * Portal associated with the Portal host.\n * @return {?}\n */\n get portal() {\n return this._portal;\n }\n /**\n * @param {?} portal\n * @return {?}\n */\n set portal(portal) {\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._portal = portal;\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n super.dispose();\n this._portal = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalHost using the ComponentFactoryResolver.\n *\n * @template T\n * @param {?} portal Portal to be attached to the portal host.\n * @return {?}\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\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 PortalHost.\n let /** @type {?} */ viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n let /** @type {?} */ componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let /** @type {?} */ ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.parentInjector);\n super.setDisposeFn(() => ref.destroy());\n this._portal = portal;\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @template C\n * @param {?} portal Portal to be attached.\n * @return {?}\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const /** @type {?} */ viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._portal = portal;\n return viewRef;\n }\n}\nPortalHostDirective.decorators = [\n { type: Directive, args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost']\n },] },\n];\n/**\n * @nocollapse\n */\nPortalHostDirective.ctorParameters = () => [\n { type: ComponentFactoryResolver, },\n { type: ViewContainerRef, },\n];\nPortalHostDirective.propDecorators = {\n '_deprecatedPortal': [{ type: Input, args: ['portalHost',] },],\n};\nfunction PortalHostDirective_tsickle_Closure_declarations() {\n /** @type {?} */\n PortalHostDirective.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n PortalHostDirective.ctorParameters;\n /** @type {?} */\n PortalHostDirective.propDecorators;\n /**\n * The attached portal.\n * @type {?}\n */\n PortalHostDirective.prototype._portal;\n /** @type {?} */\n PortalHostDirective.prototype._componentFactoryResolver;\n /** @type {?} */\n PortalHostDirective.prototype._viewContainerRef;\n}\nexport class PortalModule {\n}\nPortalModule.decorators = [\n { type: NgModule, args: [{\n exports: [TemplatePortalDirective, PortalHostDirective],\n declarations: [TemplatePortalDirective, PortalHostDirective],\n },] },\n];\n/**\n * @nocollapse\n */\nPortalModule.ctorParameters = () => [];\nfunction PortalModule_tsickle_Closure_declarations() {\n /** @type {?} */\n PortalModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n PortalModule.ctorParameters;\n}\n//# sourceMappingURL=portal-directives.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\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 {\n /**\n * @param {?} _parentInjector\n * @param {?} _customTokens\n */\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n get(token, notFoundValue) {\n const /** @type {?} */ value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\nfunction PortalInjector_tsickle_Closure_declarations() {\n /** @type {?} */\n PortalInjector.prototype._parentInjector;\n /** @type {?} */\n PortalInjector.prototype._customTokens;\n}\n//# sourceMappingURL=portal-injector.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { Portal, ComponentPortal, TemplatePortal, BasePortalHost, DomPortalHost, TemplatePortalDirective, PortalHostDirective, PortalModule, PortalInjector } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}
package/esm2015/rxjs.js CHANGED
@@ -17,6 +17,7 @@ import { startWith } from 'rxjs/operator/startWith';
17
17
  import { debounceTime } from 'rxjs/operator/debounceTime';
18
18
  import { auditTime } from 'rxjs/operator/auditTime';
19
19
  import { takeUntil } from 'rxjs/operator/takeUntil';
20
+ import { delay } from 'rxjs/operator/delay';
20
21
 
21
22
  /**
22
23
  * Utility class used to chain RxJS operators.
@@ -92,6 +93,8 @@ class AuditTimeBrand {
92
93
  }
93
94
  class TakeUntilBrand {
94
95
  }
96
+ class DelayBrand {
97
+ }
95
98
  // We add `Function` to the type intersection to make this nomically different from
96
99
  // `finallyOperatorType` while still being structurally the same. Without this, TypeScript tries to
97
100
  // reduce `typeof _finallyOperator & FinallyBrand` to `finallyOperatorType<T>` and then fails
@@ -108,10 +111,11 @@ const startWith$1 = (startWith);
108
111
  const debounceTime$1 = (debounceTime);
109
112
  const auditTime$1 = (auditTime);
110
113
  const takeUntil$1 = (takeUntil);
114
+ const delay$1 = (delay);
111
115
 
112
116
  /**
113
117
  * Generated bundle index. Do not edit.
114
118
  */
115
119
 
116
- export { RxChain, FinallyBrand, CatchBrand, DoBrand, MapBrand, FilterBrand, ShareBrand, FirstBrand, SwitchMapBrand, StartWithBrand, DebounceTimeBrand, AuditTimeBrand, TakeUntilBrand, finallyOperator, catchOperator, doOperator, map$1 as map, filter$1 as filter, share$1 as share, first$1 as first, switchMap$1 as switchMap, startWith$1 as startWith, debounceTime$1 as debounceTime, auditTime$1 as auditTime, takeUntil$1 as takeUntil };
120
+ export { RxChain, FinallyBrand, CatchBrand, DoBrand, MapBrand, FilterBrand, ShareBrand, FirstBrand, SwitchMapBrand, StartWithBrand, DebounceTimeBrand, AuditTimeBrand, TakeUntilBrand, DelayBrand, finallyOperator, catchOperator, doOperator, map$1 as map, filter$1 as filter, share$1 as share, first$1 as first, switchMap$1 as switchMap, startWith$1 as startWith, debounceTime$1 as debounceTime, auditTime$1 as auditTime, takeUntil$1 as takeUntil, delay$1 as delay };
117
121
  //# sourceMappingURL=rxjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rxjs.js","sources":["../../../src/cdk/rxjs/index.ts","../../../src/cdk/rxjs/rx-operators.ts","../../../src/cdk/rxjs/rx-chain.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {RxChain,StrictRxChain,FinallyBrand,CatchBrand,DoBrand,MapBrand,FilterBrand,ShareBrand,FirstBrand,SwitchMapBrand,StartWithBrand,DebounceTimeBrand,AuditTimeBrand,TakeUntilBrand,finallyOperatorType,catchOperatorType,doOperatorType,mapOperatorType,filterOperatorType,shareOperatorType,firstOperatorType,switchMapOperatorType,startWithOperatorType,debounceTimeOperatorType,auditTimeOperatorType,takeUntilOperatorType,finallyOperator,catchOperator,doOperator,map,filter,share,first,switchMap,startWith,debounceTime,auditTime,takeUntil} from './public_api';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Observable, ObservableInput} from 'rxjs/Observable';\nimport {PartialObserver} from 'rxjs/Observer';\nimport {Subscription} from 'rxjs/Subscription';\nimport {IScheduler} from 'rxjs/Scheduler';\nimport {_finally as _finallyOperator} from 'rxjs/operator/finally';\nimport {_catch as _catchOperator} from 'rxjs/operator/catch';\nimport {_do as _doOperator} from 'rxjs/operator/do';\nimport {map as mapOperator} from 'rxjs/operator/map';\nimport {filter as filterOperator} from 'rxjs/operator/filter';\nimport {share as shareOperator} from 'rxjs/operator/share';\nimport {first as firstOperator} from 'rxjs/operator/first';\nimport {switchMap as switchMapOperator} from 'rxjs/operator/switchMap';\nimport {startWith as startWithOperator} from 'rxjs/operator/startWith';\nimport {debounceTime as debounceTimeOperator} from 'rxjs/operator/debounceTime';\nimport {auditTime as auditTimeOperator} from 'rxjs/operator/auditTime';\nimport {takeUntil as takeUntilOperator} from 'rxjs/operator/takeUntil';\n\n/**\n * Represents a strongly-typed chain of RxJS operators.\n *\n * We achieve strict type enforcement on the chained operators by creating types that\n * *unambiguously* match specific rxjs operators. These unambiguous types are created by\n * intersecting a \"brand\" to the `typeof` the existing operator. The brand (a class with a private\n * member) effectively forces nominal typing for the operators. This allows typescript to understand\n * that, for example, `filter` is *`filter`* and not, say, a map of T => boolean.\n *\n * The downside to this approach is that operators must be imported in their type-coerced form\n * rather than from the normal rxjs location.\n */\nexport interface StrictRxChain<T> {\n call<R>(operator: mapOperatorType<T, R>,\n project: (value: T, index: number) => R, thisArg?: any): StrictRxChain<R>;\n\n call<R>(operator: switchMapOperatorType<T, R>,\n project: (value: T, index: number) => ObservableInput<R>): StrictRxChain<R>;\n\n call<R>(operator: catchOperatorType<T, R>,\n selector: (err: any, caught: Observable<T>) => ObservableInput<R>): StrictRxChain<T | R>;\n\n call(operator: filterOperatorType<T>,\n predicate: (value: T, index: number) => boolean, thisArg?: any): StrictRxChain<T>;\n\n call(operator: shareOperatorType<T>): StrictRxChain<T>;\n\n call(operator: finallyOperatorType<T>, action: () => void): StrictRxChain<T>;\n\n call(operator: doOperatorType<T>, next: (x: T) => void, error?:\n (e: any) => void, complete?: () => void): StrictRxChain<T>;\n\n call(operator: doOperatorType<T>, observer: PartialObserver<T>): StrictRxChain<T>;\n\n call(operator: firstOperatorType<T>, thisArg?: any, defaultValue?: any): StrictRxChain<T>;\n\n call(operator: firstOperatorType<T>, predicate: (value: T) => boolean): StrictRxChain<T>;\n\n call(operator: startWithOperatorType<T>, ...args: any[]): StrictRxChain<T>;\n\n call(operator: debounceTimeOperatorType<T>, dueTime: number,\n scheduler?: IScheduler): StrictRxChain<T>;\n\n call(operator: auditTimeOperatorType<T>, duration: number,\n scheduler?: IScheduler): StrictRxChain<T>;\n\n call(operator: takeUntilOperatorType<T>, notifier: Observable<any>): StrictRxChain<T>;\n\n subscribe(fn: (t: T) => void): Subscription;\n\n result(): Observable<T>;\n}\nexport class FinallyBrand {\nprivate _; }\n\nfunction FinallyBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nFinallyBrand.prototype._;\n}\n\nexport class CatchBrand {\nprivate _; }\n\nfunction CatchBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nCatchBrand.prototype._;\n}\n\nexport class DoBrand {\nprivate _; }\n\nfunction DoBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nDoBrand.prototype._;\n}\n\nexport class MapBrand {\nprivate _; }\n\nfunction MapBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nMapBrand.prototype._;\n}\n\nexport class FilterBrand {\nprivate _; }\n\nfunction FilterBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nFilterBrand.prototype._;\n}\n\nexport class ShareBrand {\nprivate _; }\n\nfunction ShareBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nShareBrand.prototype._;\n}\n\nexport class FirstBrand {\nprivate _; }\n\nfunction FirstBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nFirstBrand.prototype._;\n}\n\nexport class SwitchMapBrand {\nprivate _; }\n\nfunction SwitchMapBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nSwitchMapBrand.prototype._;\n}\n\nexport class StartWithBrand {\nprivate _; }\n\nfunction StartWithBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nStartWithBrand.prototype._;\n}\n\nexport class DebounceTimeBrand {\nprivate _; }\n\nfunction DebounceTimeBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nDebounceTimeBrand.prototype._;\n}\n\nexport class AuditTimeBrand {\nprivate _; }\n\nfunction AuditTimeBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nAuditTimeBrand.prototype._;\n}\n\nexport class TakeUntilBrand {\nprivate _; }\n\nfunction TakeUntilBrand_tsickle_Closure_declarations() {\n/** @type {?} */\nTakeUntilBrand.prototype._;\n}\n\n/* tslint:enable:no-unused-variable */\n\n\nexport type finallyOperatorType<T> = typeof _finallyOperator & FinallyBrand;\nexport type catchOperatorType<T, R> = typeof _catchOperator & CatchBrand;\nexport type doOperatorType<T> = typeof _doOperator & DoBrand;\nexport type mapOperatorType<T, R> = typeof mapOperator & MapBrand;\nexport type filterOperatorType<T> = typeof filterOperator & FilterBrand;\nexport type shareOperatorType<T> = typeof shareOperator & ShareBrand;\nexport type firstOperatorType<T> = typeof firstOperator & FirstBrand;\nexport type switchMapOperatorType<T, R> = typeof switchMapOperator & SwitchMapBrand;\nexport type startWithOperatorType<T> = typeof startWithOperator & StartWithBrand;\nexport type debounceTimeOperatorType<T> = typeof debounceTimeOperator & DebounceTimeBrand;\nexport type auditTimeOperatorType<T> = typeof auditTimeOperator & AuditTimeBrand;\nexport type takeUntilOperatorType<T> = typeof takeUntilOperator & TakeUntilBrand;\n\n// We add `Function` to the type intersection to make this nomically different from\n// `finallyOperatorType` while still being structurally the same. Without this, TypeScript tries to\n// reduce `typeof _finallyOperator & FinallyBrand` to `finallyOperatorType<T>` and then fails\n// because `T` isn't known.\nexport const /** @type {?} */ finallyOperator = /** @type {?} */((\n _finallyOperator as typeof _finallyOperator & FinallyBrand & Function));\nexport const /** @type {?} */ catchOperator = /** @type {?} */(( _catchOperator as typeof _catchOperator & CatchBrand & Function));\nexport const /** @type {?} */ doOperator = /** @type {?} */(( _doOperator as typeof _doOperator & DoBrand & Function));\nexport const /** @type {?} */ map = /** @type {?} */(( mapOperator as typeof mapOperator & MapBrand & Function));\nexport const /** @type {?} */ filter = /** @type {?} */(( filterOperator as typeof filterOperator & FilterBrand & Function));\nexport const /** @type {?} */ share = /** @type {?} */(( shareOperator as typeof shareOperator & ShareBrand & Function));\nexport const /** @type {?} */ first = /** @type {?} */(( firstOperator as typeof firstOperator & FirstBrand & Function));\nexport const /** @type {?} */ switchMap = /** @type {?} */(( switchMapOperator as typeof switchMapOperator & SwitchMapBrand & Function));\nexport const /** @type {?} */ startWith = /** @type {?} */(( startWithOperator as typeof startWithOperator & StartWithBrand & Function));\nexport const /** @type {?} */ debounceTime = /** @type {?} */((\n debounceTimeOperator as typeof debounceTimeOperator & DebounceTimeBrand & Function));\nexport const /** @type {?} */ auditTime = /** @type {?} */(( auditTimeOperator as typeof auditTimeOperator & AuditTimeBrand & Function));\nexport const /** @type {?} */ takeUntil = /** @type {?} */(( takeUntilOperator as typeof takeUntilOperator & TakeUntilBrand & Function));\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Observable} from 'rxjs/Observable';\nimport {Subscription} from 'rxjs/Subscription';\nimport {StrictRxChain} from './rx-operators';\n/**\n * Utility class used to chain RxJS operators.\n * \n * This class is the concrete implementation, but the type used by the user when chaining\n * is StrictRxChain. The strict chain enforces types on the operators to the same level as\n * the prototype-added equivalents.\n */\nexport class RxChain<T> {\n/**\n * @param {?} _context\n */\nprivate constructor(private _context: Observable<T>) { }\n/**\n * Starts a new chain and specifies the initial `this` value.\n * @template O\n * @param {?} context Initial `this` value for the chain.\n * @return {?}\n */\nstatic from<O>(context: Observable<O>): StrictRxChain<O> {\n return new RxChain(context);\n }\n/**\n * Invokes an RxJS operator as a part of the chain.\n * @param {?} operator Operator to be invoked.\n * @param {...?} args Arguments to be passed to the operator.\n * @return {?}\n */\ncall(operator: Function, ...args: any[]): RxChain<any> {\n this._context = operator.call(this._context, ...args);\n return this;\n }\n/**\n * Subscribes to the result of the chain.\n * @param {?} fn Callback to be invoked when the result emits a value.\n * @return {?}\n */\nsubscribe(fn: (t: T) => void): Subscription {\n return this._context.subscribe(fn);\n }\n/**\n * Returns the result of the chain.\n * @return {?}\n */\nresult(): Observable<T> {\n return this._context;\n }\n}\n\nfunction RxChain_tsickle_Closure_declarations() {\n/** @type {?} */\nRxChain.prototype._context;\n}\n\n"],"names":["takeUntil","takeUntilOperator","auditTime","auditTimeOperator","debounceTime","debounceTimeOperator","startWith","startWithOperator","switchMap","switchMapOperator","first","firstOperator","share","shareOperator","filter","filterOperator","map","mapOperator","_doOperator","_catchOperator","_finallyOperator"],"mappings":";;;;;;;;;;;;;;;;;;;;AEYA;;;;;;;AAOA,AAAA,MAAA,OAAA,CAAA;;;;IAIA,WAAA,CAH8B,QAAuB,EAGrD;QAH8B,IAA9B,CAAA,QAA8B,GAAA,QAAA,CAAuB;KAAC;;;;;;;IAUtD,OAJG,IAAA,CAAA,OAAA,EAIH;QACI,OAJO,IAAI,OAAA,CAAQ,OAAC,CAAO,CAAC;KAK7B;;;;;;;IAOH,IAJG,CAAA,QAAA,EAAA,GAAA,IAAA,EAIH;QACI,IAAI,CAJC,QAAC,GAAU,QAAA,CAAS,IAAC,CAAI,IAAC,CAAI,QAAC,EAAS,GAAA,IAAI,CAAI,CAAC;QAKtD,OAJO,IAAA,CAAK;KAKb;;;;;;IAMH,SAJG,CAAA,EAAA,EAIH;QACI,OAJO,IAAA,CAAK,QAAC,CAAQ,SAAC,CAAS,EAAC,CAAE,CAAC;KAKpC;;;;;IAKH,MAJG,GAIH;QACI,OAJO,IAAA,CAAK,QAAC,CAAQ;KAKtB;CACF,AAED,AAGC;;ADeD,MAAA,YAAA,CAAA;CACuC;AAEvC,AAKA,AAAA,MAAA,UAAA,CAAA;CANqC;AASrC,AAKA,AAAA,MAAA,OAAA,CAAA;CAbkC;AAgBlC,AAKA,AAAA,MAAA,QAAA,CAAA;CApBmC;AAuBnC,AAKA,AAAA,MAAA,WAAA,CAAA;CA3BsC;AA8BtC,AAKA,AAAA,MAAA,UAAA,CAAA;CAlCqC;AAqCrC,AAKA,AAAA,MAAA,UAAA,CAAA;CAzCqC;AA4CrC,AAKA,AAAA,MAAA,cAAA,CAAA;CAhDyC;AAmDzC,AAKA,AAAA,MAAA,cAAA,CAAA;CAvDyC;AA0DzC,AAKA,AAAA,MAAA,iBAAA,CAAA;CA9D4C;AAiE5C,AAKA,AAAA,MAAA,cAAA,CAAA;CArEyC;AAwEzC,AAKA,AAAA,MAAA,cAAA,CAAA;CA5EyC;AA+EzC,AAqBA;;;;AAIA,AAnFO,MAAM,eAAA,IAoFToB,QAnF6D,CAAA,CAAS;AAoF1E,AAnFO,MAAM,aAAA,IAAgBD,MAAuD,CAAA,CAAS;AAoF7F,AAnFO,MAAM,UAAA,IAAaD,GAA8C,CAAA,CAAS;AAoFjF,AAnFO,MAAMF,KAAA,IAAMC,GAA+C,CAAA,CAAS;AAoF3E,AAnFO,MAAMH,QAAA,IAASC,MAAwD,CAAA,CAAS;AAoFvF,AAnFO,MAAMH,OAAA,IAAQC,KAAqD,CAAA,CAAS;AAoFnF,AAnFO,MAAMH,OAAA,IAAQC,KAAqD,CAAA,CAAS;AAoFnF,AAnFO,MAAMH,WAAA,IAAYC,SAAiE,CAAA,CAAS;AAoFnG,AAnFO,MAAMH,WAAA,IAAYC,SAAiE,CAAA,CAAS;AAoFnG,AAnFO,MAAMH,cAAA,IAoFTC,YAnF0E,CAAA,CAAS;AAoFvF,AAnFO,MAAMH,WAAA,IAAYC,SAAiE,CAAA,CAAS;AAoFnG,AAnFO,MAAMH,WAAA,IAAYC,SAAiE,CAAA,CAAS;;AD5HnG;;GAEG,AAEH,AAA8iB;;"}
1
+ {"version":3,"file":"rxjs.js","sources":["../../packages/cdk/rxjs/rx-chain.js","../../packages/cdk/rxjs/rx-operators.js","../../packages/cdk/rxjs/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Utility class used to chain RxJS operators.\n *\n * This class is the concrete implementation, but the type used by the user when chaining\n * is StrictRxChain. The strict chain enforces types on the operators to the same level as\n * the prototype-added equivalents.\n */\nexport class RxChain {\n /**\n * @param {?} _context\n */\n constructor(_context) {\n this._context = _context;\n }\n /**\n * Starts a new chain and specifies the initial `this` value.\n * @template O\n * @param {?} context Initial `this` value for the chain.\n * @return {?}\n */\n static from(context) {\n return new RxChain(context);\n }\n /**\n * Invokes an RxJS operator as a part of the chain.\n * @param {?} operator Operator to be invoked.\n * @param {...?} args Arguments to be passed to the operator.\n * @return {?}\n */\n call(operator, ...args) {\n this._context = operator.call(this._context, ...args);\n return this;\n }\n /**\n * Subscribes to the result of the chain.\n * @param {?} fn Callback to be invoked when the result emits a value.\n * @return {?}\n */\n subscribe(fn) {\n return this._context.subscribe(fn);\n }\n /**\n * Returns the result of the chain.\n * @return {?}\n */\n result() {\n return this._context;\n }\n}\nfunction RxChain_tsickle_Closure_declarations() {\n /** @type {?} */\n RxChain.prototype._context;\n}\n//# sourceMappingURL=rx-chain.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { _finally as _finallyOperator } from 'rxjs/operator/finally';\nimport { _catch as _catchOperator } from 'rxjs/operator/catch';\nimport { _do as _doOperator } from 'rxjs/operator/do';\nimport { map as mapOperator } from 'rxjs/operator/map';\nimport { filter as filterOperator } from 'rxjs/operator/filter';\nimport { share as shareOperator } from 'rxjs/operator/share';\nimport { first as firstOperator } from 'rxjs/operator/first';\nimport { switchMap as switchMapOperator } from 'rxjs/operator/switchMap';\nimport { startWith as startWithOperator } from 'rxjs/operator/startWith';\nimport { debounceTime as debounceTimeOperator } from 'rxjs/operator/debounceTime';\nimport { auditTime as auditTimeOperator } from 'rxjs/operator/auditTime';\nimport { takeUntil as takeUntilOperator } from 'rxjs/operator/takeUntil';\nimport { delay as delayOperator } from 'rxjs/operator/delay';\nexport class FinallyBrand {\n}\nfunction FinallyBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n FinallyBrand.prototype._;\n}\nexport class CatchBrand {\n}\nfunction CatchBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n CatchBrand.prototype._;\n}\nexport class DoBrand {\n}\nfunction DoBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n DoBrand.prototype._;\n}\nexport class MapBrand {\n}\nfunction MapBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n MapBrand.prototype._;\n}\nexport class FilterBrand {\n}\nfunction FilterBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n FilterBrand.prototype._;\n}\nexport class ShareBrand {\n}\nfunction ShareBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n ShareBrand.prototype._;\n}\nexport class FirstBrand {\n}\nfunction FirstBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n FirstBrand.prototype._;\n}\nexport class SwitchMapBrand {\n}\nfunction SwitchMapBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n SwitchMapBrand.prototype._;\n}\nexport class StartWithBrand {\n}\nfunction StartWithBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n StartWithBrand.prototype._;\n}\nexport class DebounceTimeBrand {\n}\nfunction DebounceTimeBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n DebounceTimeBrand.prototype._;\n}\nexport class AuditTimeBrand {\n}\nfunction AuditTimeBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n AuditTimeBrand.prototype._;\n}\nexport class TakeUntilBrand {\n}\nfunction TakeUntilBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n TakeUntilBrand.prototype._;\n}\nexport class DelayBrand {\n}\nfunction DelayBrand_tsickle_Closure_declarations() {\n /** @type {?} */\n DelayBrand.prototype._;\n}\n// We add `Function` to the type intersection to make this nomically different from\n// `finallyOperatorType` while still being structurally the same. Without this, TypeScript tries to\n// reduce `typeof _finallyOperator & FinallyBrand` to `finallyOperatorType<T>` and then fails\n// because `T` isn't known.\nexport const /** @type {?} */ finallyOperator = (_finallyOperator);\nexport const /** @type {?} */ catchOperator = (_catchOperator);\nexport const /** @type {?} */ doOperator = (_doOperator);\nexport const /** @type {?} */ map = (mapOperator);\nexport const /** @type {?} */ filter = (filterOperator);\nexport const /** @type {?} */ share = (shareOperator);\nexport const /** @type {?} */ first = (firstOperator);\nexport const /** @type {?} */ switchMap = (switchMapOperator);\nexport const /** @type {?} */ startWith = (startWithOperator);\nexport const /** @type {?} */ debounceTime = (debounceTimeOperator);\nexport const /** @type {?} */ auditTime = (auditTimeOperator);\nexport const /** @type {?} */ takeUntil = (takeUntilOperator);\nexport const /** @type {?} */ delay = (delayOperator);\n//# sourceMappingURL=rx-operators.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { RxChain, FinallyBrand, CatchBrand, DoBrand, MapBrand, FilterBrand, ShareBrand, FirstBrand, SwitchMapBrand, StartWithBrand, DebounceTimeBrand, AuditTimeBrand, TakeUntilBrand, DelayBrand, finallyOperator, catchOperator, doOperator, map, filter, share, first, switchMap, startWith, debounceTime, auditTime, takeUntil, delay } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["_finallyOperator","_catchOperator","_doOperator","map","mapOperator","filter","filterOperator","share","shareOperator","first","firstOperator","switchMap","switchMapOperator","startWith","startWithOperator","debounceTime","debounceTimeOperator","auditTime","auditTimeOperator","takeUntil","takeUntilOperator","delay","delayOperator"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOA;;;;;;;AAOA,AAAO,MAAM,OAAO,CAAC;;;;IAIjB,WAAW,CAAC,QAAQ,EAAE;QAClB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC5B;;;;;;;IAOD,OAAO,IAAI,CAAC,OAAO,EAAE;QACjB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/B;;;;;;;IAOD,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;KACf;;;;;;IAMD,SAAS,CAAC,EAAE,EAAE;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KACtC;;;;;IAKD,MAAM,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;CACJ,AACD,AAGC,AACD;;ACxCO,MAAM,YAAY,CAAC;CACzB;AACD,AAIA,AAAO,MAAM,UAAU,CAAC;CACvB;AACD,AAIA,AAAO,MAAM,OAAO,CAAC;CACpB;AACD,AAIA,AAAO,MAAM,QAAQ,CAAC;CACrB;AACD,AAIA,AAAO,MAAM,WAAW,CAAC;CACxB;AACD,AAIA,AAAO,MAAM,UAAU,CAAC;CACvB;AACD,AAIA,AAAO,MAAM,UAAU,CAAC;CACvB;AACD,AAIA,AAAO,MAAM,cAAc,CAAC;CAC3B;AACD,AAIA,AAAO,MAAM,cAAc,CAAC;CAC3B;AACD,AAIA,AAAO,MAAM,iBAAiB,CAAC;CAC9B;AACD,AAIA,AAAO,MAAM,cAAc,CAAC;CAC3B;AACD,AAIA,AAAO,MAAM,cAAc,CAAC;CAC3B;AACD,AAIA,AAAO,MAAM,UAAU,CAAC;CACvB;AACD,AAIA;;;;AAIA,AAAO,MAAuB,eAAe,IAAIA,QAAgB,CAAC,CAAC;AACnE,AAAO,MAAuB,aAAa,IAAIC,MAAc,CAAC,CAAC;AAC/D,AAAO,MAAuB,UAAU,IAAIC,GAAW,CAAC,CAAC;AACzD,AAAO,MAAuBC,KAAG,IAAIC,GAAW,CAAC,CAAC;AAClD,AAAO,MAAuBC,QAAM,IAAIC,MAAc,CAAC,CAAC;AACxD,AAAO,MAAuBC,OAAK,IAAIC,KAAa,CAAC,CAAC;AACtD,AAAO,MAAuBC,OAAK,IAAIC,KAAa,CAAC,CAAC;AACtD,AAAO,MAAuBC,WAAS,IAAIC,SAAiB,CAAC,CAAC;AAC9D,AAAO,MAAuBC,WAAS,IAAIC,SAAiB,CAAC,CAAC;AAC9D,AAAO,MAAuBC,cAAY,IAAIC,YAAoB,CAAC,CAAC;AACpE,AAAO,MAAuBC,WAAS,IAAIC,SAAiB,CAAC,CAAC;AAC9D,AAAO,MAAuBC,WAAS,IAAIC,SAAiB,CAAC,CAAC;AAC9D,AAAO,MAAuBC,OAAK,IAAIC,KAAa,CAAC,CAAC,AACtD;;ACnHA;;GAEG,AACH,AAAgW,AAChW;;"}
@@ -10,8 +10,9 @@ import { Platform, PlatformModule } from '@angular/cdk/platform';
10
10
  import { Subject } from 'rxjs/Subject';
11
11
  import { Subscription } from 'rxjs/Subscription';
12
12
  import { fromEvent } from 'rxjs/observable/fromEvent';
13
- import { merge } from 'rxjs/observable/merge';
14
13
  import { auditTime } from 'rxjs/operator/auditTime';
14
+ import { merge } from 'rxjs/observable/merge';
15
+ import { of } from 'rxjs/observable/of';
15
16
 
16
17
  /**
17
18
  * Time in ms to throttle the scrolling events by default.
@@ -90,7 +91,7 @@ class ScrollDispatcher {
90
91
  this._scrolledCount++;
91
92
  if (!this._globalSubscription) {
92
93
  this._globalSubscription = this._ngZone.runOutsideAngular(() => {
93
- return merge(fromEvent(window.document, 'scroll'), fromEvent(window, 'resize')).subscribe(() => this._notify());
94
+ return fromEvent(window.document, 'scroll').subscribe(() => this._notify());
94
95
  });
95
96
  }
96
97
  // Note that we need to do the subscribing from here, in order to be able to remove
@@ -244,17 +245,35 @@ Scrollable.ctorParameters = () => [
244
245
  { type: Renderer2, },
245
246
  ];
246
247
 
248
+ /**
249
+ * Time in ms to throttle the resize events by default.
250
+ */
251
+ const DEFAULT_RESIZE_TIME = 20;
247
252
  /**
248
253
  * Simple utility for getting the bounds of the browser viewport.
249
254
  * \@docs-private
250
255
  */
251
256
  class ViewportRuler {
252
257
  /**
258
+ * @param {?} platform
259
+ * @param {?} ngZone
253
260
  * @param {?} scrollDispatcher
254
261
  */
255
- constructor(scrollDispatcher) {
262
+ constructor(platform, ngZone, scrollDispatcher) {
263
+ this._change = platform.isBrowser ? ngZone.runOutsideAngular(() => {
264
+ return merge(fromEvent(window, 'resize'), fromEvent(window, 'orientationchange'));
265
+ }) : of();
256
266
  // Subscribe to scroll and resize events and update the document rectangle on changes.
257
- scrollDispatcher.scrolled(0, () => this._cacheViewportGeometry());
267
+ this._invalidateCacheSubscriptions = [
268
+ scrollDispatcher.scrolled(0, () => this._cacheViewportGeometry()),
269
+ this.change().subscribe(() => this._cacheViewportGeometry())
270
+ ];
271
+ }
272
+ /**
273
+ * @return {?}
274
+ */
275
+ ngOnDestroy() {
276
+ this._invalidateCacheSubscriptions.forEach(subscription => subscription.unsubscribe());
258
277
  }
259
278
  /**
260
279
  * Gets a ClientRect for the viewport's bounds.
@@ -311,6 +330,14 @@ class ViewportRuler {
311
330
  document.documentElement.scrollLeft || 0;
312
331
  return { top, left };
313
332
  }
333
+ /**
334
+ * Returns a stream that emits whenever the size of the viewport changes.
335
+ * @param {?=} throttleTime
336
+ * @return {?}
337
+ */
338
+ change(throttleTime = DEFAULT_RESIZE_TIME) {
339
+ return throttleTime > 0 ? auditTime.call(this._change, throttleTime) : this._change;
340
+ }
314
341
  /**
315
342
  * Caches the latest client rectangle of the document element.
316
343
  * @return {?}
@@ -326,16 +353,20 @@ ViewportRuler.decorators = [
326
353
  * @nocollapse
327
354
  */
328
355
  ViewportRuler.ctorParameters = () => [
356
+ { type: Platform, },
357
+ { type: NgZone, },
329
358
  { type: ScrollDispatcher, },
330
359
  ];
331
360
  /**
332
361
  * \@docs-private
333
362
  * @param {?} parentRuler
363
+ * @param {?} platform
364
+ * @param {?} ngZone
334
365
  * @param {?} scrollDispatcher
335
366
  * @return {?}
336
367
  */
337
- function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, scrollDispatcher) {
338
- return parentRuler || new ViewportRuler(scrollDispatcher);
368
+ function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone, scrollDispatcher) {
369
+ return parentRuler || new ViewportRuler(platform, ngZone, scrollDispatcher);
339
370
  }
340
371
  /**
341
372
  * \@docs-private
@@ -343,7 +374,7 @@ function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, scrollDispatcher) {
343
374
  const VIEWPORT_RULER_PROVIDER = {
344
375
  // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.
345
376
  provide: ViewportRuler,
346
- deps: [[new Optional(), new SkipSelf(), ViewportRuler], ScrollDispatcher],
377
+ deps: [[new Optional(), new SkipSelf(), ViewportRuler], Platform, NgZone, ScrollDispatcher],
347
378
  useFactory: VIEWPORT_RULER_PROVIDER_FACTORY
348
379
  };
349
380
 
@@ -366,5 +397,5 @@ ScrollDispatchModule.ctorParameters = () => [];
366
397
  * Generated bundle index. Do not edit.
367
398
  */
368
399
 
369
- export { ScrollDispatchModule, DEFAULT_SCROLL_TIME, ScrollDispatcher, SCROLL_DISPATCHER_PROVIDER_FACTORY, SCROLL_DISPATCHER_PROVIDER, Scrollable, ViewportRuler, VIEWPORT_RULER_PROVIDER_FACTORY, VIEWPORT_RULER_PROVIDER };
400
+ export { DEFAULT_SCROLL_TIME, ScrollDispatcher, SCROLL_DISPATCHER_PROVIDER_FACTORY, SCROLL_DISPATCHER_PROVIDER, Scrollable, DEFAULT_RESIZE_TIME, ViewportRuler, VIEWPORT_RULER_PROVIDER_FACTORY, VIEWPORT_RULER_PROVIDER, ScrollDispatchModule };
370
401
  //# sourceMappingURL=scrolling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scrolling.js","sources":["../../../src/cdk/scrolling/index.ts","../../../src/cdk/scrolling/public_api.ts","../../../src/cdk/scrolling/viewport-ruler.ts","../../../src/cdk/scrolling/scrollable.ts","../../../src/cdk/scrolling/scroll-dispatcher.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport {ScrollDispatchModule,DEFAULT_SCROLL_TIME,ScrollDispatcher,SCROLL_DISPATCHER_PROVIDER_FACTORY,SCROLL_DISPATCHER_PROVIDER,Scrollable,ViewportRuler,VIEWPORT_RULER_PROVIDER_FACTORY,VIEWPORT_RULER_PROVIDER} from './public_api';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {NgModule} from '@angular/core';\nimport {SCROLL_DISPATCHER_PROVIDER} from './scroll-dispatcher';\nimport {Scrollable} from './scrollable';\nimport {PlatformModule} from '@angular/cdk/platform';\nexport class ScrollDispatchModule {static decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n imports: [PlatformModule],\n exports: [Scrollable],\n declarations: [Scrollable],\n providers: [SCROLL_DISPATCHER_PROVIDER],\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ScrollDispatchModule_tsickle_Closure_declarations() {\n/** @type {?} */\nScrollDispatchModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nScrollDispatchModule.ctorParameters;\n}\n\n\nexport {DEFAULT_SCROLL_TIME,ScrollDispatcher,SCROLL_DISPATCHER_PROVIDER_FACTORY,SCROLL_DISPATCHER_PROVIDER} from './scroll-dispatcher';\nexport {Scrollable} from './scrollable';\nexport {ViewportRuler,VIEWPORT_RULER_PROVIDER_FACTORY,VIEWPORT_RULER_PROVIDER} from './viewport-ruler';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Injectable, Optional, SkipSelf} from '@angular/core';\nimport {ScrollDispatcher} from './scroll-dispatcher';\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * \\@docs-private\n */\nexport class ViewportRuler {\n/**\n * Cached document client rectangle.\n */\nprivate _documentRect?: ClientRect;\n/**\n * @param {?} scrollDispatcher\n */\nconstructor(scrollDispatcher: ScrollDispatcher) {\n // Subscribe to scroll and resize events and update the document rectangle on changes.\n scrollDispatcher.scrolled(0, () => this._cacheViewportGeometry());\n }\n/**\n * Gets a ClientRect for the viewport's bounds.\n * @param {?=} documentRect\n * @return {?}\n */\ngetViewportRect(documentRect = this._documentRect): ClientRect {\n // Cache the document bounding rect so that we don't recompute it for multiple calls.\n if (!documentRect) {\n this._cacheViewportGeometry();\n documentRect = this._documentRect;\n }\n\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const /** @type {?} */ scrollPosition = this.getViewportScrollPosition(documentRect);\n const /** @type {?} */ height = window.innerHeight;\n const /** @type {?} */ width = window.innerWidth;\n\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n/**\n * Gets the (top, left) scroll position of the viewport.\n * @param {?=} documentRect\n * @return {?}\n */\ngetViewportScrollPosition(documentRect = this._documentRect) {\n // Cache the document bounding rect so that we don't recompute it for multiple calls.\n if (!documentRect) {\n this._cacheViewportGeometry();\n documentRect = this._documentRect;\n }\n\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const /** @type {?} */ top = - /** @type {?} */((documentRect)).top || document.body.scrollTop || window.scrollY ||\n document.documentElement.scrollTop || 0;\n\n const /** @type {?} */ left = - /** @type {?} */((documentRect)).left || document.body.scrollLeft || window.scrollX ||\n document.documentElement.scrollLeft || 0;\n\n return {top, left};\n }\n/**\n * Caches the latest client rectangle of the document element.\n * @return {?}\n */\n_cacheViewportGeometry() {\n this._documentRect = document.documentElement.getBoundingClientRect();\n }\n\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ScrollDispatcher, },\n];\n}\n\nfunction ViewportRuler_tsickle_Closure_declarations() {\n/** @type {?} */\nViewportRuler.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nViewportRuler.ctorParameters;\n/**\n * Cached document client rectangle.\n * @type {?}\n */\nViewportRuler.prototype._documentRect;\n}\n\n/**\n * \\@docs-private\n * @param {?} parentRuler\n * @param {?} scrollDispatcher\n * @return {?}\n */\nexport function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler: ViewportRuler,\n scrollDispatcher: ScrollDispatcher) {\n return parentRuler || new ViewportRuler(scrollDispatcher);\n}\n/**\n * \\@docs-private\n */\nexport const VIEWPORT_RULER_PROVIDER = {\n // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.\n provide: ViewportRuler,\n deps: [[new Optional(), new SkipSelf(), ViewportRuler], ScrollDispatcher],\n useFactory: VIEWPORT_RULER_PROVIDER_FACTORY\n};\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {Directive, ElementRef, OnInit, OnDestroy, NgZone, Renderer2} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {ScrollDispatcher} from './scroll-dispatcher';\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nexport class Scrollable implements OnInit, OnDestroy {\nprivate _elementScrolled: Subject<Event> = new Subject();\nprivate _scrollListener: Function | null;\n/**\n * @param {?} _elementRef\n * @param {?} _scroll\n * @param {?} _ngZone\n * @param {?} _renderer\n */\nconstructor(private _elementRef: ElementRef,\nprivate _scroll: ScrollDispatcher,\nprivate _ngZone: NgZone,\nprivate _renderer: Renderer2) {}\n/**\n * @return {?}\n */\nngOnInit() {\n this._scrollListener = this._ngZone.runOutsideAngular(() => {\n return this._renderer.listen(this.getElementRef().nativeElement, 'scroll', (event: Event) => {\n this._elementScrolled.next(event);\n });\n });\n\n this._scroll.register(this);\n }\n/**\n * @return {?}\n */\nngOnDestroy() {\n this._scroll.deregister(this);\n\n if (this._scrollListener) {\n this._scrollListener();\n this._scrollListener = null;\n }\n }\n/**\n * Returns observable that emits when a scroll event is fired on the host element.\n * @return {?}\n */\nelementScrolled(): Observable<any> {\n return this._elementScrolled.asObservable();\n }\n/**\n * @return {?}\n */\ngetElementRef(): ElementRef {\n return this._elementRef;\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Directive, args: [{\n selector: '[cdk-scrollable], [cdkScrollable]'\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: ElementRef, },\n{type: ScrollDispatcher, },\n{type: NgZone, },\n{type: Renderer2, },\n];\n}\n\nfunction Scrollable_tsickle_Closure_declarations() {\n/** @type {?} */\nScrollable.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nScrollable.ctorParameters;\n/** @type {?} */\nScrollable.prototype._elementScrolled;\n/** @type {?} */\nScrollable.prototype._scrollListener;\n/** @type {?} */\nScrollable.prototype._elementRef;\n/** @type {?} */\nScrollable.prototype._scroll;\n/** @type {?} */\nScrollable.prototype._ngZone;\n/** @type {?} */\nScrollable.prototype._renderer;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\nimport {ElementRef, Injectable, NgZone, Optional, SkipSelf} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {merge} from 'rxjs/observable/merge';\nimport {auditTime} from 'rxjs/operator/auditTime';\nimport {Scrollable} from './scrollable';\n/**\n * Time in ms to throttle the scrolling events by default.\n */\nexport const DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nexport class ScrollDispatcher {\n/**\n * @param {?} _ngZone\n * @param {?} _platform\n */\nconstructor(private _ngZone: NgZone,\nprivate _platform: Platform) { }\n/**\n * Subject for notifying that a registered scrollable reference element has been scrolled.\n */\n_scrolled: Subject<void> = new Subject<void>();\n/**\n * Keeps track of the global `scroll` and `resize` subscriptions.\n */\n_globalSubscription: Subscription | null = null;\n/**\n * Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards.\n */\nprivate _scrolledCount = 0;\n/**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\nscrollableReferences: Map<Scrollable, Subscription> = new Map();\n/**\n * Registers a Scrollable with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event in its scrolled observable.\n * @param {?} scrollable Scrollable instance to be registered.\n * @return {?}\n */\nregister(scrollable: Scrollable): void {\n const /** @type {?} */ scrollSubscription = scrollable.elementScrolled().subscribe(() => this._notify());\n\n this.scrollableReferences.set(scrollable, scrollSubscription);\n }\n/**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param {?} scrollable Scrollable instance to be deregistered.\n * @return {?}\n */\nderegister(scrollable: Scrollable): void {\n const /** @type {?} */ scrollableReference = this.scrollableReferences.get(scrollable);\n\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollableReferences.delete(scrollable);\n }\n }\n/**\n * Subscribes to an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n * @param {?=} auditTimeInMs\n * @param {?=} callback\n * @return {?}\n */\nscrolled(auditTimeInMs: number = DEFAULT_SCROLL_TIME, callback: () => any): Subscription {\n // Scroll events can only happen on the browser, so do nothing if we're not on the browser.\n if (!this._platform.isBrowser) {\n return Subscription.EMPTY;\n }\n\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n let /** @type {?} */ observable = auditTimeInMs > 0 ?\n auditTime.call(this._scrolled.asObservable(), auditTimeInMs) :\n this._scrolled.asObservable();\n\n this._scrolledCount++;\n\n if (!this._globalSubscription) {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n return merge(\n fromEvent(window.document, 'scroll'),\n fromEvent(window, 'resize')\n ).subscribe(() => this._notify());\n });\n }\n\n // Note that we need to do the subscribing from here, in order to be able to remove\n // the global event listeners once there are no more subscriptions.\n let /** @type {?} */ subscription = observable.subscribe(callback);\n\n subscription.add(() => {\n this._scrolledCount--;\n\n if (this._globalSubscription && !this.scrollableReferences.size && !this._scrolledCount) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n });\n\n return subscription;\n }\n/**\n * Returns all registered Scrollables that contain the provided element.\n * @param {?} elementRef\n * @return {?}\n */\ngetScrollContainers(elementRef: ElementRef): Scrollable[] {\n const /** @type {?} */ scrollingContainers: Scrollable[] = [];\n\n this.scrollableReferences.forEach((_subscription: Subscription, scrollable: Scrollable) => {\n if (this.scrollableContainsElement(scrollable, elementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n\n return scrollingContainers;\n }\n/**\n * Returns true if the element is contained within the provided Scrollable.\n * @param {?} scrollable\n * @param {?} elementRef\n * @return {?}\n */\nscrollableContainsElement(scrollable: Scrollable, elementRef: ElementRef): boolean {\n let /** @type {?} */ element = elementRef.nativeElement;\n let /** @type {?} */ scrollableElement = scrollable.getElementRef().nativeElement;\n\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) { return true; }\n } while (element = element.parentElement);\n\n return false;\n }\n/**\n * Sends a notification that a scroll event has been fired.\n * @return {?}\n */\n_notify() {\n this._scrolled.next();\n }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n{type: Platform, },\n];\n}\n\nfunction ScrollDispatcher_tsickle_Closure_declarations() {\n/** @type {?} */\nScrollDispatcher.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nScrollDispatcher.ctorParameters;\n/**\n * Subject for notifying that a registered scrollable reference element has been scrolled.\n * @type {?}\n */\nScrollDispatcher.prototype._scrolled;\n/**\n * Keeps track of the global `scroll` and `resize` subscriptions.\n * @type {?}\n */\nScrollDispatcher.prototype._globalSubscription;\n/**\n * Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards.\n * @type {?}\n */\nScrollDispatcher.prototype._scrolledCount;\n/**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n * @type {?}\n */\nScrollDispatcher.prototype.scrollableReferences;\n/** @type {?} */\nScrollDispatcher.prototype._ngZone;\n/** @type {?} */\nScrollDispatcher.prototype._platform;\n}\n\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} ngZone\n * @param {?} platform\n * @return {?}\n */\nexport function SCROLL_DISPATCHER_PROVIDER_FACTORY(\n parentDispatcher: ScrollDispatcher, ngZone: NgZone, platform: Platform) {\n return parentDispatcher || new ScrollDispatcher(ngZone, platform);\n}\n/**\n * \\@docs-private\n */\nexport const SCROLL_DISPATCHER_PROVIDER = {\n // If there is already a ScrollDispatcher available, use that. Otherwise, provide a new one.\n provide: ScrollDispatcher,\n deps: [[new Optional(), new SkipSelf(), ScrollDispatcher], NgZone, Platform],\n useFactory: SCROLL_DISPATCHER_PROVIDER_FACTORY\n};\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scrolling.js","sources":["../../packages/cdk/scrolling/scroll-dispatcher.js","../../packages/cdk/scrolling/scrollable.js","../../packages/cdk/scrolling/viewport-ruler.js","../../packages/cdk/scrolling/scrolling-module.js","../../packages/cdk/scrolling/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Injectable, NgZone, Optional, SkipSelf } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { auditTime } from 'rxjs/operator/auditTime';\n/**\n * Time in ms to throttle the scrolling events by default.\n */\nexport const DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nexport class ScrollDispatcher {\n /**\n * @param {?} _ngZone\n * @param {?} _platform\n */\n constructor(_ngZone, _platform) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /**\n * Subject for notifying that a registered scrollable reference element has been scrolled.\n */\n this._scrolled = new Subject();\n /**\n * Keeps track of the global `scroll` and `resize` subscriptions.\n */\n this._globalSubscription = null;\n /**\n * Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards.\n */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollableReferences = new Map();\n }\n /**\n * Registers a Scrollable with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event in its scrolled observable.\n * @param {?} scrollable Scrollable instance to be registered.\n * @return {?}\n */\n register(scrollable) {\n const /** @type {?} */ scrollSubscription = scrollable.elementScrolled().subscribe(() => this._notify());\n this.scrollableReferences.set(scrollable, scrollSubscription);\n }\n /**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param {?} scrollable Scrollable instance to be deregistered.\n * @return {?}\n */\n deregister(scrollable) {\n const /** @type {?} */ scrollableReference = this.scrollableReferences.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollableReferences.delete(scrollable);\n }\n }\n /**\n * Subscribes to an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n * @param {?=} auditTimeInMs\n * @param {?=} callback\n * @return {?}\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME, callback) {\n // Scroll events can only happen on the browser, so do nothing if we're not on the browser.\n if (!this._platform.isBrowser) {\n return Subscription.EMPTY;\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n let /** @type {?} */ observable = auditTimeInMs > 0 ?\n auditTime.call(this._scrolled.asObservable(), auditTimeInMs) :\n this._scrolled.asObservable();\n this._scrolledCount++;\n if (!this._globalSubscription) {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n return fromEvent(window.document, 'scroll').subscribe(() => this._notify());\n });\n }\n // Note that we need to do the subscribing from here, in order to be able to remove\n // the global event listeners once there are no more subscriptions.\n let /** @type {?} */ subscription = observable.subscribe(callback);\n subscription.add(() => {\n this._scrolledCount--;\n if (this._globalSubscription && !this.scrollableReferences.size && !this._scrolledCount) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n });\n return subscription;\n }\n /**\n * Returns all registered Scrollables that contain the provided element.\n * @param {?} elementRef\n * @return {?}\n */\n getScrollContainers(elementRef) {\n const /** @type {?} */ scrollingContainers = [];\n this.scrollableReferences.forEach((_subscription, scrollable) => {\n if (this.scrollableContainsElement(scrollable, elementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /**\n * Returns true if the element is contained within the provided Scrollable.\n * @param {?} scrollable\n * @param {?} elementRef\n * @return {?}\n */\n scrollableContainsElement(scrollable, elementRef) {\n let /** @type {?} */ element = elementRef.nativeElement;\n let /** @type {?} */ scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while (element = element.parentElement);\n return false;\n }\n /**\n * Sends a notification that a scroll event has been fired.\n * @return {?}\n */\n _notify() {\n this._scrolled.next();\n }\n}\nScrollDispatcher.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nScrollDispatcher.ctorParameters = () => [\n { type: NgZone, },\n { type: Platform, },\n];\nfunction ScrollDispatcher_tsickle_Closure_declarations() {\n /** @type {?} */\n ScrollDispatcher.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n ScrollDispatcher.ctorParameters;\n /**\n * Subject for notifying that a registered scrollable reference element has been scrolled.\n * @type {?}\n */\n ScrollDispatcher.prototype._scrolled;\n /**\n * Keeps track of the global `scroll` and `resize` subscriptions.\n * @type {?}\n */\n ScrollDispatcher.prototype._globalSubscription;\n /**\n * Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards.\n * @type {?}\n */\n ScrollDispatcher.prototype._scrolledCount;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n * @type {?}\n */\n ScrollDispatcher.prototype.scrollableReferences;\n /** @type {?} */\n ScrollDispatcher.prototype._ngZone;\n /** @type {?} */\n ScrollDispatcher.prototype._platform;\n}\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} ngZone\n * @param {?} platform\n * @return {?}\n */\nexport function SCROLL_DISPATCHER_PROVIDER_FACTORY(parentDispatcher, ngZone, platform) {\n return parentDispatcher || new ScrollDispatcher(ngZone, platform);\n}\n/**\n * \\@docs-private\n */\nexport const SCROLL_DISPATCHER_PROVIDER = {\n // If there is already a ScrollDispatcher available, use that. Otherwise, provide a new one.\n provide: ScrollDispatcher,\n deps: [[new Optional(), new SkipSelf(), ScrollDispatcher], NgZone, Platform],\n useFactory: SCROLL_DISPATCHER_PROVIDER_FACTORY\n};\n//# sourceMappingURL=scroll-dispatcher.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ElementRef, NgZone, Renderer2 } from '@angular/core';\nimport { Subject } from 'rxjs/Subject';\nimport { ScrollDispatcher } from './scroll-dispatcher';\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nexport class Scrollable {\n /**\n * @param {?} _elementRef\n * @param {?} _scroll\n * @param {?} _ngZone\n * @param {?} _renderer\n */\n constructor(_elementRef, _scroll, _ngZone, _renderer) {\n this._elementRef = _elementRef;\n this._scroll = _scroll;\n this._ngZone = _ngZone;\n this._renderer = _renderer;\n this._elementScrolled = new Subject();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._scrollListener = this._ngZone.runOutsideAngular(() => {\n return this._renderer.listen(this.getElementRef().nativeElement, 'scroll', (event) => {\n this._elementScrolled.next(event);\n });\n });\n this._scroll.register(this);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._scroll.deregister(this);\n if (this._scrollListener) {\n this._scrollListener();\n this._scrollListener = null;\n }\n }\n /**\n * Returns observable that emits when a scroll event is fired on the host element.\n * @return {?}\n */\n elementScrolled() {\n return this._elementScrolled.asObservable();\n }\n /**\n * @return {?}\n */\n getElementRef() {\n return this._elementRef;\n }\n}\nScrollable.decorators = [\n { type: Directive, args: [{\n selector: '[cdk-scrollable], [cdkScrollable]'\n },] },\n];\n/**\n * @nocollapse\n */\nScrollable.ctorParameters = () => [\n { type: ElementRef, },\n { type: ScrollDispatcher, },\n { type: NgZone, },\n { type: Renderer2, },\n];\nfunction Scrollable_tsickle_Closure_declarations() {\n /** @type {?} */\n Scrollable.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n Scrollable.ctorParameters;\n /** @type {?} */\n Scrollable.prototype._elementScrolled;\n /** @type {?} */\n Scrollable.prototype._scrollListener;\n /** @type {?} */\n Scrollable.prototype._elementRef;\n /** @type {?} */\n Scrollable.prototype._scroll;\n /** @type {?} */\n Scrollable.prototype._ngZone;\n /** @type {?} */\n Scrollable.prototype._renderer;\n}\n//# sourceMappingURL=scrollable.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Injectable, Optional, SkipSelf, NgZone } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { ScrollDispatcher } from './scroll-dispatcher';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { merge } from 'rxjs/observable/merge';\nimport { auditTime } from 'rxjs/operator/auditTime';\nimport { of as observableOf } from 'rxjs/observable/of';\n/**\n * Time in ms to throttle the resize events by default.\n */\nexport const DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * \\@docs-private\n */\nexport class ViewportRuler {\n /**\n * @param {?} platform\n * @param {?} ngZone\n * @param {?} scrollDispatcher\n */\n constructor(platform, ngZone, scrollDispatcher) {\n this._change = platform.isBrowser ? ngZone.runOutsideAngular(() => {\n return merge(fromEvent(window, 'resize'), fromEvent(window, 'orientationchange'));\n }) : observableOf();\n // Subscribe to scroll and resize events and update the document rectangle on changes.\n this._invalidateCacheSubscriptions = [\n scrollDispatcher.scrolled(0, () => this._cacheViewportGeometry()),\n this.change().subscribe(() => this._cacheViewportGeometry())\n ];\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._invalidateCacheSubscriptions.forEach(subscription => subscription.unsubscribe());\n }\n /**\n * Gets a ClientRect for the viewport's bounds.\n * @param {?=} documentRect\n * @return {?}\n */\n getViewportRect(documentRect = this._documentRect) {\n // Cache the document bounding rect so that we don't recompute it for multiple calls.\n if (!documentRect) {\n this._cacheViewportGeometry();\n documentRect = this._documentRect;\n }\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const /** @type {?} */ scrollPosition = this.getViewportScrollPosition(documentRect);\n const /** @type {?} */ height = window.innerHeight;\n const /** @type {?} */ width = window.innerWidth;\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /**\n * Gets the (top, left) scroll position of the viewport.\n * @param {?=} documentRect\n * @return {?}\n */\n getViewportScrollPosition(documentRect = this._documentRect) {\n // Cache the document bounding rect so that we don't recompute it for multiple calls.\n if (!documentRect) {\n this._cacheViewportGeometry();\n documentRect = this._documentRect;\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const /** @type {?} */ top = -((documentRect)).top || document.body.scrollTop || window.scrollY ||\n document.documentElement.scrollTop || 0;\n const /** @type {?} */ left = -((documentRect)).left || document.body.scrollLeft || window.scrollX ||\n document.documentElement.scrollLeft || 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * @param {?=} throttleTime\n * @return {?}\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? auditTime.call(this._change, throttleTime) : this._change;\n }\n /**\n * Caches the latest client rectangle of the document element.\n * @return {?}\n */\n _cacheViewportGeometry() {\n this._documentRect = document.documentElement.getBoundingClientRect();\n }\n}\nViewportRuler.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nViewportRuler.ctorParameters = () => [\n { type: Platform, },\n { type: NgZone, },\n { type: ScrollDispatcher, },\n];\nfunction ViewportRuler_tsickle_Closure_declarations() {\n /** @type {?} */\n ViewportRuler.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n ViewportRuler.ctorParameters;\n /**\n * Cached document client rectangle.\n * @type {?}\n */\n ViewportRuler.prototype._documentRect;\n /**\n * Stream of viewport change events.\n * @type {?}\n */\n ViewportRuler.prototype._change;\n /**\n * Subscriptions to streams that invalidate the cached viewport dimensions.\n * @type {?}\n */\n ViewportRuler.prototype._invalidateCacheSubscriptions;\n}\n/**\n * \\@docs-private\n * @param {?} parentRuler\n * @param {?} platform\n * @param {?} ngZone\n * @param {?} scrollDispatcher\n * @return {?}\n */\nexport function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone, scrollDispatcher) {\n return parentRuler || new ViewportRuler(platform, ngZone, scrollDispatcher);\n}\n/**\n * \\@docs-private\n */\nexport const VIEWPORT_RULER_PROVIDER = {\n // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.\n provide: ViewportRuler,\n deps: [[new Optional(), new SkipSelf(), ViewportRuler], Platform, NgZone, ScrollDispatcher],\n useFactory: VIEWPORT_RULER_PROVIDER_FACTORY\n};\n//# sourceMappingURL=viewport-ruler.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModule } from '@angular/core';\nimport { SCROLL_DISPATCHER_PROVIDER } from './scroll-dispatcher';\nimport { Scrollable } from './scrollable';\nimport { PlatformModule } from '@angular/cdk/platform';\nexport class ScrollDispatchModule {\n}\nScrollDispatchModule.decorators = [\n { type: NgModule, args: [{\n imports: [PlatformModule],\n exports: [Scrollable],\n declarations: [Scrollable],\n providers: [SCROLL_DISPATCHER_PROVIDER],\n },] },\n];\n/**\n * @nocollapse\n */\nScrollDispatchModule.ctorParameters = () => [];\nfunction ScrollDispatchModule_tsickle_Closure_declarations() {\n /** @type {?} */\n ScrollDispatchModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n ScrollDispatchModule.ctorParameters;\n}\n//# sourceMappingURL=scrolling-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { DEFAULT_SCROLL_TIME, ScrollDispatcher, SCROLL_DISPATCHER_PROVIDER_FACTORY, SCROLL_DISPATCHER_PROVIDER, Scrollable, DEFAULT_RESIZE_TIME, ViewportRuler, VIEWPORT_RULER_PROVIDER_FACTORY, VIEWPORT_RULER_PROVIDER, ScrollDispatchModule } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["observableOf"],"mappings":";;;;;;;;;;;;;;;;AAaA;;;AAGA,AAAO,MAAM,mBAAmB,GAAG,EAAE,CAAC;;;;;AAKtC,AAAO,MAAM,gBAAgB,CAAC;;;;;IAK1B,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;;;QAI3B,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;;;;QAI/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;;;;QAIhC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;;;;;QAKxB,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;KACzC;;;;;;;IAOD,QAAQ,CAAC,UAAU,EAAE;QACjB,uBAAuB,kBAAkB,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;KACjE;;;;;;IAMD,UAAU,CAAC,UAAU,EAAE;QACnB,uBAAuB,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvF,IAAI,mBAAmB,EAAE;YACrB,mBAAmB,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAChD;KACJ;;;;;;;;;IASD,QAAQ,CAAC,aAAa,GAAG,mBAAmB,EAAE,QAAQ,EAAE;;QAEpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC3B,OAAO,YAAY,CAAC,KAAK,CAAC;SAC7B;;;QAGD,qBAAqB,UAAU,GAAG,aAAa,GAAG,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC;YAC5D,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM;gBAC5D,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aAC/E,CAAC,CAAC;SACN;;;QAGD,qBAAqB,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnE,YAAY,CAAC,GAAG,CAAC,MAAM;YACnB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACrF,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACnC;SACJ,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;KACvB;;;;;;IAMD,mBAAmB,CAAC,UAAU,EAAE;QAC5B,uBAAuB,mBAAmB,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,UAAU,KAAK;YAC7D,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;gBACxD,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACxC;SACJ,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC;KAC9B;;;;;;;IAOD,yBAAyB,CAAC,UAAU,EAAE,UAAU,EAAE;QAC9C,qBAAqB,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC;QACxD,qBAAqB,iBAAiB,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC;;;QAGlF,GAAG;YACC,IAAI,OAAO,IAAI,iBAAiB,EAAE;gBAC9B,OAAO,IAAI,CAAC;aACf;SACJ,QAAQ,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE;QAC1C,OAAO,KAAK,CAAC;KAChB;;;;;IAKD,OAAO,GAAG;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;CACJ;AACD,gBAAgB,CAAC,UAAU,GAAG;IAC1B,EAAE,IAAI,EAAE,UAAU,EAAE;CACvB,CAAC;;;;AAIF,gBAAgB,CAAC,cAAc,GAAG,MAAM;IACpC,EAAE,IAAI,EAAE,MAAM,GAAG;IACjB,EAAE,IAAI,EAAE,QAAQ,GAAG;CACtB,CAAC;AACF,AAkCA;;;;;;;AAOA,AAAO,SAAS,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;IACnF,OAAO,gBAAgB,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrE;;;;AAID,AAAO,MAAM,0BAA0B,GAAG;;IAEtC,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC5E,UAAU,EAAE,kCAAkC;CACjD,CAAC,AACF;;ACtMA;;;;;AAKA,AAAO,MAAM,UAAU,CAAC;;;;;;;IAOpB,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC;KACzC;;;;IAID,QAAQ,GAAG;QACP,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM;YACxD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK;gBAClF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC/B;;;;IAID,WAAW,GAAG;QACV,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;KACJ;;;;;IAKD,eAAe,GAAG;QACd,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C;;;;IAID,aAAa,GAAG;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;CACJ;AACD,UAAU,CAAC,UAAU,GAAG;IACpB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBACd,QAAQ,EAAE,mCAAmC;aAChD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,UAAU,CAAC,cAAc,GAAG,MAAM;IAC9B,EAAE,IAAI,EAAE,UAAU,GAAG;IACrB,EAAE,IAAI,EAAE,gBAAgB,GAAG;IAC3B,EAAE,IAAI,EAAE,MAAM,GAAG;IACjB,EAAE,IAAI,EAAE,SAAS,GAAG;CACvB,CAAC,AACF,AAoBC,AACD;;ACrFA;;;AAGA,AAAO,MAAM,mBAAmB,GAAG,EAAE,CAAC;;;;;AAKtC,AAAO,MAAM,aAAa,CAAC;;;;;;IAMvB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAC5C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM;YAC/D,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;SACrF,CAAC,GAAGA,EAAY,EAAE,CAAC;;QAEpB,IAAI,CAAC,6BAA6B,GAAG;YACjC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/D,CAAC;KACL;;;;IAID,WAAW,GAAG;QACV,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;KAC1F;;;;;;IAMD,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;;QAE/C,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;SACrC;;;;;;;;;;QAUD,uBAAuB,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACrF,uBAAuB,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QACnD,uBAAuB,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QACjD,OAAO;YACH,GAAG,EAAE,cAAc,CAAC,GAAG;YACvB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,MAAM,EAAE,cAAc,CAAC,GAAG,GAAG,MAAM;YACnC,KAAK,EAAE,cAAc,CAAC,IAAI,GAAG,KAAK;YAClC,MAAM;YACN,KAAK;SACR,CAAC;KACL;;;;;;IAMD,yBAAyB,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;;QAEzD,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;SACrC;;;;;;;QAOD,uBAAuB,GAAG,GAAG,CAAC,EAAE,YAAY,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO;YAC3F,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,CAAC;QAC5C,uBAAuB,IAAI,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO;YAC9F,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC;QAC7C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;KACxB;;;;;;IAMD,MAAM,CAAC,YAAY,GAAG,mBAAmB,EAAE;QACvC,OAAO,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;KACvF;;;;;IAKD,sBAAsB,GAAG;QACrB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;KACzE;CACJ;AACD,aAAa,CAAC,UAAU,GAAG;IACvB,EAAE,IAAI,EAAE,UAAU,EAAE;CACvB,CAAC;;;;AAIF,aAAa,CAAC,cAAc,GAAG,MAAM;IACjC,EAAE,IAAI,EAAE,QAAQ,GAAG;IACnB,EAAE,IAAI,EAAE,MAAM,GAAG;IACjB,EAAE,IAAI,EAAE,gBAAgB,GAAG;CAC9B,CAAC;AACF,AAwBA;;;;;;;;AAQA,AAAO,SAAS,+BAA+B,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC7F,OAAO,WAAW,IAAI,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC/E;;;;AAID,AAAO,MAAM,uBAAuB,GAAG;;IAEnC,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC;IAC3F,UAAU,EAAE,+BAA+B;CAC9C,CAAC,AACF;;AC/JO,MAAM,oBAAoB,CAAC;CACjC;AACD,oBAAoB,CAAC,UAAU,GAAG;IAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC,cAAc,CAAC;gBACzB,OAAO,EAAE,CAAC,UAAU,CAAC;gBACrB,YAAY,EAAE,CAAC,UAAU,CAAC;gBAC1B,SAAS,EAAE,CAAC,0BAA0B,CAAC;aAC1C,EAAE,EAAE;CAChB,CAAC;;;;AAIF,oBAAoB,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC,AAC/C,AAQC,AACD;;AClCA;;GAEG,AACH,AAAqQ,AACrQ;;"}