@angular/material 2.0.0-beta.0 → 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 (1664) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -165
  3. package/_theming.scss +3878 -0
  4. package/autocomplete/index.d.ts +8 -5
  5. package/autocomplete/index.metadata.json +12 -1
  6. package/autocomplete/package.json +7 -0
  7. package/autocomplete/typings/autocomplete-module.d.ts +2 -0
  8. package/autocomplete/typings/autocomplete-trigger.d.ts +159 -0
  9. package/autocomplete/typings/autocomplete.d.ts +62 -0
  10. package/autocomplete/typings/index.d.ts +4 -0
  11. package/autocomplete/typings/index.metadata.json +1 -0
  12. package/autocomplete/typings/public-api.d.ts +10 -0
  13. package/autocomplete.d.ts +8 -0
  14. package/autocomplete.metadata.json +12 -0
  15. package/bundles/material-autocomplete.umd.js +2969 -0
  16. package/bundles/material-autocomplete.umd.js.map +1 -0
  17. package/bundles/material-autocomplete.umd.min.js +10 -0
  18. package/bundles/material-autocomplete.umd.min.js.map +1 -0
  19. package/bundles/material-button-toggle.umd.js +2284 -0
  20. package/bundles/material-button-toggle.umd.js.map +1 -0
  21. package/bundles/material-button-toggle.umd.min.js +10 -0
  22. package/bundles/material-button-toggle.umd.min.js.map +1 -0
  23. package/bundles/material-button.umd.js +2092 -0
  24. package/bundles/material-button.umd.js.map +1 -0
  25. package/bundles/material-button.umd.min.js +10 -0
  26. package/bundles/material-button.umd.min.js.map +1 -0
  27. package/bundles/material-card.umd.js +2006 -0
  28. package/bundles/material-card.umd.js.map +1 -0
  29. package/bundles/material-card.umd.min.js +9 -0
  30. package/bundles/material-card.umd.min.js.map +1 -0
  31. package/bundles/material-checkbox.umd.js +2327 -0
  32. package/bundles/material-checkbox.umd.js.map +1 -0
  33. package/bundles/material-checkbox.umd.min.js +10 -0
  34. package/bundles/material-checkbox.umd.min.js.map +1 -0
  35. package/bundles/material-chips.umd.js +3542 -0
  36. package/bundles/material-chips.umd.js.map +1 -0
  37. package/bundles/material-chips.umd.min.js +10 -0
  38. package/bundles/material-chips.umd.min.js.map +1 -0
  39. package/bundles/material-core.umd.js +2206 -0
  40. package/bundles/material-core.umd.js.map +1 -0
  41. package/bundles/material-core.umd.min.js +9 -0
  42. package/bundles/material-core.umd.min.js.map +1 -0
  43. package/bundles/material-datepicker.umd.js +6128 -0
  44. package/bundles/material-datepicker.umd.js.map +1 -0
  45. package/bundles/material-datepicker.umd.min.js +12 -0
  46. package/bundles/material-datepicker.umd.min.js.map +1 -0
  47. package/bundles/material-dialog.umd.js +2530 -0
  48. package/bundles/material-dialog.umd.js.map +1 -0
  49. package/bundles/material-dialog.umd.min.js +10 -0
  50. package/bundles/material-dialog.umd.min.js.map +1 -0
  51. package/bundles/material-expansion.umd.js +2128 -0
  52. package/bundles/material-expansion.umd.js.map +1 -0
  53. package/bundles/material-expansion.umd.min.js +9 -0
  54. package/bundles/material-expansion.umd.min.js.map +1 -0
  55. package/bundles/material-form-field.umd.js +2091 -0
  56. package/bundles/material-form-field.umd.js.map +1 -0
  57. package/bundles/material-form-field.umd.min.js +10 -0
  58. package/bundles/material-form-field.umd.min.js.map +1 -0
  59. package/bundles/material-grid-list.umd.js +2621 -0
  60. package/bundles/material-grid-list.umd.js.map +1 -0
  61. package/bundles/material-grid-list.umd.min.js +10 -0
  62. package/bundles/material-grid-list.umd.min.js.map +1 -0
  63. package/bundles/material-icon.umd.js +2442 -0
  64. package/bundles/material-icon.umd.js.map +1 -0
  65. package/bundles/material-icon.umd.min.js +10 -0
  66. package/bundles/material-icon.umd.min.js.map +1 -0
  67. package/bundles/material-input.umd.js +2716 -0
  68. package/bundles/material-input.umd.js.map +1 -0
  69. package/bundles/material-input.umd.min.js +10 -0
  70. package/bundles/material-input.umd.min.js.map +1 -0
  71. package/bundles/material-list.umd.js +2611 -0
  72. package/bundles/material-list.umd.js.map +1 -0
  73. package/bundles/material-list.umd.min.js +11 -0
  74. package/bundles/material-list.umd.min.js.map +1 -0
  75. package/bundles/material-menu.umd.js +2613 -0
  76. package/bundles/material-menu.umd.js.map +1 -0
  77. package/bundles/material-menu.umd.min.js +10 -0
  78. package/bundles/material-menu.umd.min.js.map +1 -0
  79. package/bundles/material-paginator.umd.js +5228 -0
  80. package/bundles/material-paginator.umd.js.map +1 -0
  81. package/bundles/material-paginator.umd.min.js +11 -0
  82. package/bundles/material-paginator.umd.min.js.map +1 -0
  83. package/bundles/material-progress-bar.umd.js +1784 -0
  84. package/bundles/material-progress-bar.umd.js.map +1 -0
  85. package/bundles/material-progress-bar.umd.min.js +9 -0
  86. package/bundles/material-progress-bar.umd.min.js.map +1 -0
  87. package/bundles/material-progress-spinner.umd.js +2005 -0
  88. package/bundles/material-progress-spinner.umd.js.map +1 -0
  89. package/bundles/material-progress-spinner.umd.min.js +10 -0
  90. package/bundles/material-progress-spinner.umd.min.js.map +1 -0
  91. package/bundles/material-radio.umd.js +2530 -0
  92. package/bundles/material-radio.umd.js.map +1 -0
  93. package/bundles/material-radio.umd.min.js +10 -0
  94. package/bundles/material-radio.umd.min.js.map +1 -0
  95. package/bundles/material-select.umd.js +3843 -0
  96. package/bundles/material-select.umd.js.map +1 -0
  97. package/bundles/material-select.umd.min.js +10 -0
  98. package/bundles/material-select.umd.min.js.map +1 -0
  99. package/bundles/material-sidenav.umd.js +2577 -0
  100. package/bundles/material-sidenav.umd.js.map +1 -0
  101. package/bundles/material-sidenav.umd.min.js +10 -0
  102. package/bundles/material-sidenav.umd.min.js.map +1 -0
  103. package/bundles/material-slide-toggle.umd.js +2253 -0
  104. package/bundles/material-slide-toggle.umd.js.map +1 -0
  105. package/bundles/material-slide-toggle.umd.min.js +10 -0
  106. package/bundles/material-slide-toggle.umd.min.js.map +1 -0
  107. package/bundles/material-slider.umd.js +2621 -0
  108. package/bundles/material-slider.umd.js.map +1 -0
  109. package/bundles/material-slider.umd.min.js +10 -0
  110. package/bundles/material-slider.umd.min.js.map +1 -0
  111. package/bundles/material-snack-bar.umd.js +2258 -0
  112. package/bundles/material-snack-bar.umd.js.map +1 -0
  113. package/bundles/material-snack-bar.umd.min.js +10 -0
  114. package/bundles/material-snack-bar.umd.min.js.map +1 -0
  115. package/bundles/material-sort.umd.js +1917 -0
  116. package/bundles/material-sort.umd.js.map +1 -0
  117. package/bundles/material-sort.umd.min.js +9 -0
  118. package/bundles/material-sort.umd.min.js.map +1 -0
  119. package/bundles/material-stepper.umd.js +3271 -0
  120. package/bundles/material-stepper.umd.js.map +1 -0
  121. package/bundles/material-stepper.umd.min.js +10 -0
  122. package/bundles/material-stepper.umd.min.js.map +1 -0
  123. package/bundles/material-table.umd.js +1976 -0
  124. package/bundles/material-table.umd.js.map +1 -0
  125. package/bundles/material-table.umd.min.js +9 -0
  126. package/bundles/material-table.umd.min.js.map +1 -0
  127. package/bundles/material-tabs.umd.js +3341 -0
  128. package/bundles/material-tabs.umd.js.map +1 -0
  129. package/bundles/material-tabs.umd.min.js +10 -0
  130. package/bundles/material-tabs.umd.min.js.map +1 -0
  131. package/bundles/material-toolbar.umd.js +1790 -0
  132. package/bundles/material-toolbar.umd.js.map +1 -0
  133. package/bundles/material-toolbar.umd.min.js +9 -0
  134. package/bundles/material-toolbar.umd.min.js.map +1 -0
  135. package/bundles/material-tooltip.umd.js +2339 -0
  136. package/bundles/material-tooltip.umd.js.map +1 -0
  137. package/bundles/material-tooltip.umd.min.js +10 -0
  138. package/bundles/material-tooltip.umd.min.js.map +1 -0
  139. package/bundles/material.umd.js +21541 -12552
  140. package/bundles/material.umd.js.map +1 -0
  141. package/bundles/material.umd.min.js +22 -0
  142. package/bundles/material.umd.min.js.map +1 -0
  143. package/button/index.d.ts +8 -1
  144. package/button/index.metadata.json +12 -1
  145. package/button/package.json +7 -0
  146. package/button/typings/button-module.d.ts +2 -0
  147. package/button/typings/button.d.ts +77 -0
  148. package/button/typings/index.d.ts +4 -0
  149. package/button/typings/index.metadata.json +1 -0
  150. package/button/typings/public-api.d.ts +9 -0
  151. package/button-toggle/index.d.ts +8 -1
  152. package/button-toggle/index.metadata.json +12 -1
  153. package/button-toggle/package.json +7 -0
  154. package/button-toggle/typings/button-toggle-module.d.ts +2 -0
  155. package/button-toggle/typings/button-toggle.d.ts +163 -0
  156. package/button-toggle/typings/index.d.ts +4 -0
  157. package/button-toggle/typings/index.metadata.json +1 -0
  158. package/button-toggle/typings/public-api.d.ts +9 -0
  159. package/button-toggle.d.ts +8 -0
  160. package/button-toggle.metadata.json +12 -0
  161. package/button.d.ts +8 -0
  162. package/button.metadata.json +12 -0
  163. package/card/index.d.ts +8 -1
  164. package/card/index.metadata.json +12 -1
  165. package/card/package.json +7 -0
  166. package/card/typings/card-module.d.ts +2 -0
  167. package/card/typings/card.d.ts +95 -0
  168. package/card/typings/index.d.ts +4 -0
  169. package/card/typings/index.metadata.json +1 -0
  170. package/card/typings/public-api.d.ts +9 -0
  171. package/card.d.ts +8 -0
  172. package/card.metadata.json +12 -0
  173. package/checkbox/index.d.ts +8 -1
  174. package/checkbox/index.metadata.json +12 -1
  175. package/checkbox/package.json +7 -0
  176. package/checkbox/typings/checkbox-module.d.ts +2 -0
  177. package/checkbox/typings/checkbox-required-validator.d.ts +18 -0
  178. package/checkbox/typings/checkbox.d.ts +157 -0
  179. package/checkbox/typings/index.d.ts +4 -0
  180. package/checkbox/typings/index.metadata.json +1 -0
  181. package/checkbox/typings/public-api.d.ts +10 -0
  182. package/checkbox.d.ts +8 -0
  183. package/checkbox.metadata.json +12 -0
  184. package/chips/index.d.ts +8 -2
  185. package/chips/index.metadata.json +12 -1
  186. package/chips/package.json +7 -0
  187. package/chips/typings/chip-input.d.ts +43 -0
  188. package/chips/typings/chip-list.d.ts +222 -0
  189. package/chips/typings/chip.d.ts +123 -0
  190. package/chips/typings/chips-module.d.ts +2 -0
  191. package/chips/typings/index.d.ts +4 -0
  192. package/chips/typings/index.metadata.json +1 -0
  193. package/chips/typings/public-api.d.ts +11 -0
  194. package/chips.d.ts +8 -0
  195. package/chips.metadata.json +12 -0
  196. package/core/index.d.ts +8 -1
  197. package/core/index.metadata.json +12 -1
  198. package/core/package.json +7 -0
  199. package/core/typings/animation/animation.d.ts +20 -0
  200. package/core/typings/common-behaviors/color.d.ts +22 -0
  201. package/core/typings/common-behaviors/common-module.d.ts +25 -0
  202. package/core/typings/common-behaviors/constructor.d.ts +9 -0
  203. package/core/typings/common-behaviors/disable-ripple.d.ts +7 -0
  204. package/core/typings/common-behaviors/disabled.d.ts +7 -0
  205. package/core/typings/common-behaviors/index.d.ts +12 -0
  206. package/core/typings/common-behaviors/tabindex.d.ts +15 -0
  207. package/core/typings/compatibility/compatibility.d.ts +32 -0
  208. package/core/typings/datetime/date-adapter.d.ts +198 -0
  209. package/core/typings/datetime/date-formats.d.ts +20 -0
  210. package/core/typings/datetime/index.d.ts +8 -0
  211. package/core/typings/datetime/native-date-adapter.d.ts +50 -0
  212. package/core/typings/datetime/native-date-formats.d.ts +9 -0
  213. package/core/typings/error/error-options.d.ts +9 -0
  214. package/core/typings/gestures/gesture-annotations.d.ts +51 -0
  215. package/core/{gestures → typings/gestures}/gesture-config.d.ts +0 -0
  216. package/core/typings/index.d.ts +5 -0
  217. package/core/typings/index.metadata.json +1 -0
  218. package/core/typings/line/line.d.ts +30 -0
  219. package/core/typings/option/index.d.ts +4 -0
  220. package/core/typings/option/optgroup.d.ts +14 -0
  221. package/core/typings/option/option.d.ts +90 -0
  222. package/core/typings/placeholder/placeholder-options.d.ts +15 -0
  223. package/core/typings/public-api.d.ts +22 -0
  224. package/core/typings/ripple/index.d.ts +5 -0
  225. package/core/typings/ripple/ripple-ref.d.ts +28 -0
  226. package/core/typings/ripple/ripple-renderer.d.ts +69 -0
  227. package/core/typings/ripple/ripple.d.ts +65 -0
  228. package/core/typings/selection/index.d.ts +3 -0
  229. package/core/typings/selection/pseudo-checkbox/pseudo-checkbox.d.ts +20 -0
  230. package/core/typings/style/apply-transform.d.ts +13 -0
  231. package/core/typings/style/index.d.ts +8 -0
  232. package/core/typings/testing/month-constants.d.ts +12 -0
  233. package/core/typings/util/object-extend.d.ts +15 -0
  234. package/core.d.ts +7 -0
  235. package/core.metadata.json +12 -1
  236. package/datepicker/index.d.ts +8 -0
  237. package/datepicker/index.metadata.json +12 -0
  238. package/datepicker/package.json +7 -0
  239. package/datepicker/typings/calendar-body.d.ts +52 -0
  240. package/datepicker/typings/calendar.d.ts +97 -0
  241. package/datepicker/typings/coerce-date-property.d.ts +19 -0
  242. package/datepicker/typings/datepicker-errors.d.ts +9 -0
  243. package/datepicker/typings/datepicker-input.d.ts +92 -0
  244. package/datepicker/typings/datepicker-intl.d.ts +25 -0
  245. package/datepicker/typings/datepicker-module.d.ts +2 -0
  246. package/datepicker/typings/datepicker-toggle.d.ts +24 -0
  247. package/datepicker/typings/datepicker.d.ts +117 -0
  248. package/datepicker/typings/index.d.ts +4 -0
  249. package/datepicker/typings/index.metadata.json +1 -0
  250. package/datepicker/typings/month-view.d.ts +66 -0
  251. package/datepicker/typings/public-api.d.ts +17 -0
  252. package/datepicker/typings/year-view.d.ts +55 -0
  253. package/datepicker.d.ts +8 -0
  254. package/datepicker.metadata.json +12 -0
  255. package/dialog/index.d.ts +8 -9
  256. package/dialog/index.metadata.json +12 -1
  257. package/dialog/package.json +7 -0
  258. package/dialog/typings/dialog-config.d.ts +54 -0
  259. package/dialog/typings/dialog-container.d.ts +68 -0
  260. package/dialog/typings/dialog-content-directives.d.ts +43 -0
  261. package/dialog/typings/dialog-module.d.ts +2 -0
  262. package/dialog/typings/dialog-ref.d.ts +68 -0
  263. package/dialog/typings/dialog.d.ts +108 -0
  264. package/dialog/typings/index.d.ts +4 -0
  265. package/dialog/typings/index.metadata.json +1 -0
  266. package/dialog/typings/public-api.d.ts +13 -0
  267. package/dialog.d.ts +8 -0
  268. package/dialog.metadata.json +12 -0
  269. package/esm2015/autocomplete.js +673 -0
  270. package/esm2015/autocomplete.js.map +1 -0
  271. package/esm2015/button-toggle.js +589 -0
  272. package/esm2015/button-toggle.js.map +1 -0
  273. package/esm2015/button.js +318 -0
  274. package/esm2015/button.js.map +1 -0
  275. package/esm2015/card.js +312 -0
  276. package/esm2015/card.js.map +1 -0
  277. package/esm2015/checkbox.js +500 -0
  278. package/esm2015/checkbox.js.map +1 -0
  279. package/esm2015/chips.js +1330 -0
  280. package/esm2015/chips.js.map +1 -0
  281. package/esm2015/core.js +2117 -0
  282. package/esm2015/core.js.map +1 -0
  283. package/esm2015/datepicker.js +1813 -0
  284. package/esm2015/datepicker.js.map +1 -0
  285. package/esm2015/dialog.js +854 -0
  286. package/esm2015/dialog.js.map +1 -0
  287. package/esm2015/expansion.js +587 -0
  288. package/esm2015/expansion.js.map +1 -0
  289. package/esm2015/form-field.js +535 -0
  290. package/esm2015/form-field.js.map +1 -0
  291. package/esm2015/grid-list.js +827 -0
  292. package/esm2015/grid-list.js.map +1 -0
  293. package/esm2015/icon.js +735 -0
  294. package/esm2015/icon.js.map +1 -0
  295. package/esm2015/input.js +585 -0
  296. package/esm2015/input.js.map +1 -0
  297. package/esm2015/list.js +640 -0
  298. package/esm2015/list.js.map +1 -0
  299. package/esm2015/material.js +51 -0
  300. package/esm2015/material.js.map +1 -0
  301. package/esm2015/menu.js +923 -0
  302. package/esm2015/menu.js.map +1 -0
  303. package/esm2015/paginator.js +303 -0
  304. package/esm2015/paginator.js.map +1 -0
  305. package/esm2015/progress-bar.js +133 -0
  306. package/esm2015/progress-bar.js.map +1 -0
  307. package/esm2015/progress-spinner.js +303 -0
  308. package/esm2015/progress-spinner.js.map +1 -0
  309. package/esm2015/radio.js +709 -0
  310. package/esm2015/radio.js.map +1 -0
  311. package/esm2015/select.js +1394 -0
  312. package/esm2015/select.js.map +1 -0
  313. package/esm2015/sidenav.js +866 -0
  314. package/esm2015/sidenav.js.map +1 -0
  315. package/esm2015/slide-toggle.js +428 -0
  316. package/esm2015/slide-toggle.js.map +1 -0
  317. package/esm2015/slider.js +834 -0
  318. package/esm2015/slider.js.map +1 -0
  319. package/esm2015/snack-bar.js +596 -0
  320. package/esm2015/snack-bar.js.map +1 -0
  321. package/esm2015/sort.js +371 -0
  322. package/esm2015/sort.js.map +1 -0
  323. package/esm2015/stepper.js +395 -0
  324. package/esm2015/stepper.js.map +1 -0
  325. package/esm2015/table.js +272 -0
  326. package/esm2015/table.js.map +1 -0
  327. package/esm2015/tabs.js +1480 -0
  328. package/esm2015/tabs.js.map +1 -0
  329. package/esm2015/toolbar.js +89 -0
  330. package/esm2015/toolbar.js.map +1 -0
  331. package/esm2015/tooltip.js +671 -0
  332. package/esm2015/tooltip.js.map +1 -0
  333. package/esm5/autocomplete.es5.js +712 -0
  334. package/esm5/autocomplete.es5.js.map +1 -0
  335. package/esm5/button-toggle.es5.js +646 -0
  336. package/esm5/button-toggle.es5.js.map +1 -0
  337. package/esm5/button.es5.js +344 -0
  338. package/esm5/button.es5.js.map +1 -0
  339. package/esm5/card.es5.js +355 -0
  340. package/esm5/card.es5.js.map +1 -0
  341. package/esm5/checkbox.es5.js +538 -0
  342. package/esm5/checkbox.es5.js.map +1 -0
  343. package/esm5/chips.es5.js +1464 -0
  344. package/esm5/chips.es5.js.map +1 -0
  345. package/esm5/core.es5.js +2126 -0
  346. package/esm5/core.es5.js.map +1 -0
  347. package/esm5/datepicker.es5.js +1946 -0
  348. package/esm5/datepicker.es5.js.map +1 -0
  349. package/esm5/dialog.es5.js +894 -0
  350. package/esm5/dialog.es5.js.map +1 -0
  351. package/esm5/expansion.es5.js +622 -0
  352. package/esm5/expansion.es5.js.map +1 -0
  353. package/esm5/form-field.es5.js +580 -0
  354. package/esm5/form-field.es5.js.map +1 -0
  355. package/esm5/grid-list.es5.js +888 -0
  356. package/esm5/grid-list.es5.js.map +1 -0
  357. package/esm5/icon.es5.js +754 -0
  358. package/esm5/icon.es5.js.map +1 -0
  359. package/esm5/input.es5.js +630 -0
  360. package/esm5/input.es5.js.map +1 -0
  361. package/esm5/list.es5.js +704 -0
  362. package/esm5/list.es5.js.map +1 -0
  363. package/esm5/material.es5.js +51 -0
  364. package/esm5/material.es5.js.map +1 -0
  365. package/esm5/menu.es5.js +962 -0
  366. package/esm5/menu.es5.js.map +1 -0
  367. package/esm5/paginator.es5.js +328 -0
  368. package/esm5/paginator.es5.js.map +1 -0
  369. package/esm5/progress-bar.es5.js +147 -0
  370. package/esm5/progress-bar.es5.js.map +1 -0
  371. package/esm5/progress-spinner.es5.js +317 -0
  372. package/esm5/progress-spinner.es5.js.map +1 -0
  373. package/esm5/radio.es5.js +786 -0
  374. package/esm5/radio.es5.js.map +1 -0
  375. package/esm5/select.es5.js +1481 -0
  376. package/esm5/select.es5.js.map +1 -0
  377. package/esm5/sidenav.es5.js +946 -0
  378. package/esm5/sidenav.es5.js.map +1 -0
  379. package/esm5/slide-toggle.es5.js +455 -0
  380. package/esm5/slide-toggle.es5.js.map +1 -0
  381. package/esm5/slider.es5.js +938 -0
  382. package/esm5/slider.es5.js.map +1 -0
  383. package/esm5/snack-bar.es5.js +622 -0
  384. package/esm5/snack-bar.es5.js.map +1 -0
  385. package/esm5/sort.es5.js +389 -0
  386. package/esm5/sort.es5.js.map +1 -0
  387. package/esm5/stepper.es5.js +448 -0
  388. package/esm5/stepper.es5.js.map +1 -0
  389. package/esm5/table.es5.js +323 -0
  390. package/esm5/table.es5.js.map +1 -0
  391. package/esm5/tabs.es5.js +1591 -0
  392. package/esm5/tabs.es5.js.map +1 -0
  393. package/esm5/toolbar.es5.js +100 -0
  394. package/esm5/toolbar.es5.js.map +1 -0
  395. package/esm5/tooltip.es5.js +705 -0
  396. package/esm5/tooltip.es5.js.map +1 -0
  397. package/expansion/index.d.ts +8 -0
  398. package/expansion/index.metadata.json +12 -0
  399. package/expansion/package.json +7 -0
  400. package/expansion/typings/accordion-item.d.ts +41 -0
  401. package/expansion/typings/accordion.d.ts +29 -0
  402. package/expansion/typings/expansion-module.d.ts +2 -0
  403. package/expansion/typings/expansion-panel-header.d.ts +49 -0
  404. package/expansion/typings/expansion-panel.d.ts +40 -0
  405. package/expansion/typings/index.d.ts +5 -0
  406. package/expansion/typings/index.metadata.json +1 -0
  407. package/expansion/typings/public-api.d.ts +12 -0
  408. package/expansion.d.ts +8 -0
  409. package/expansion.metadata.json +12 -0
  410. package/form-field/index.d.ts +8 -0
  411. package/form-field/index.metadata.json +12 -0
  412. package/form-field/package.json +7 -0
  413. package/form-field/typings/error.d.ts +4 -0
  414. package/form-field/typings/form-field-control.d.ts +47 -0
  415. package/form-field/typings/form-field-errors.d.ts +13 -0
  416. package/form-field/typings/form-field-module.d.ts +2 -0
  417. package/form-field/typings/form-field.d.ts +78 -0
  418. package/form-field/typings/hint.d.ts +7 -0
  419. package/form-field/typings/index.d.ts +4 -0
  420. package/form-field/typings/index.metadata.json +1 -0
  421. package/form-field/typings/placeholder.d.ts +3 -0
  422. package/form-field/typings/prefix.d.ts +3 -0
  423. package/form-field/typings/public-api.d.ts +16 -0
  424. package/form-field/typings/suffix.d.ts +3 -0
  425. package/form-field.d.ts +8 -0
  426. package/form-field.metadata.json +12 -0
  427. package/grid-list/index.d.ts +8 -1
  428. package/grid-list/index.metadata.json +12 -1
  429. package/grid-list/package.json +7 -0
  430. package/grid-list/typings/grid-list-measure.d.ts +17 -0
  431. package/grid-list/typings/grid-list-module.d.ts +2 -0
  432. package/grid-list/typings/grid-list.d.ts +53 -0
  433. package/grid-list/typings/grid-tile.d.ts +55 -0
  434. package/grid-list/typings/index.d.ts +5 -0
  435. package/grid-list/typings/index.metadata.json +1 -0
  436. package/grid-list/typings/public-api.d.ts +10 -0
  437. package/grid-list/typings/tile-coordinator.d.ts +64 -0
  438. package/grid-list/typings/tile-styler.d.ts +129 -0
  439. package/grid-list.d.ts +8 -0
  440. package/grid-list.metadata.json +12 -0
  441. package/icon/index.d.ts +8 -1
  442. package/icon/index.metadata.json +12 -1
  443. package/icon/package.json +7 -0
  444. package/icon/typings/icon-module.d.ts +2 -0
  445. package/icon/typings/icon-registry.d.ts +187 -0
  446. package/icon/typings/icon.d.ts +69 -0
  447. package/icon/typings/index.d.ts +4 -0
  448. package/icon/typings/index.metadata.json +1 -0
  449. package/icon/typings/public-api.d.ts +10 -0
  450. package/icon.d.ts +8 -0
  451. package/icon.metadata.json +12 -0
  452. package/input/index.d.ts +8 -4
  453. package/input/index.metadata.json +12 -1
  454. package/input/package.json +7 -0
  455. package/input/typings/autosize.d.ts +43 -0
  456. package/input/typings/index.d.ts +4 -0
  457. package/input/typings/index.metadata.json +1 -0
  458. package/input/typings/input-errors.d.ts +9 -0
  459. package/input/typings/input-module.d.ts +2 -0
  460. package/input/typings/input.d.ts +85 -0
  461. package/input/typings/public-api.d.ts +11 -0
  462. package/input.d.ts +8 -0
  463. package/input.metadata.json +12 -0
  464. package/list/index.d.ts +8 -1
  465. package/list/index.metadata.json +12 -1
  466. package/list/package.json +7 -0
  467. package/list/typings/index.d.ts +4 -0
  468. package/list/typings/index.metadata.json +1 -0
  469. package/list/typings/list-module.d.ts +2 -0
  470. package/list/typings/list.d.ts +77 -0
  471. package/list/typings/public-api.d.ts +10 -0
  472. package/list/typings/selection-list.d.ts +103 -0
  473. package/list.d.ts +8 -0
  474. package/list.metadata.json +12 -0
  475. package/material.d.ts +39 -0
  476. package/material.metadata.json +105 -0
  477. package/menu/index.d.ts +8 -5
  478. package/menu/index.metadata.json +12 -1
  479. package/menu/package.json +7 -0
  480. package/menu/typings/index.d.ts +6 -0
  481. package/menu/typings/index.metadata.json +1 -0
  482. package/menu/typings/menu-animations.d.ts +27 -0
  483. package/menu/typings/menu-directive.d.ts +89 -0
  484. package/menu/typings/menu-errors.d.ts +24 -0
  485. package/menu/typings/menu-item.d.ts +42 -0
  486. package/menu/typings/menu-module.d.ts +2 -0
  487. package/menu/typings/menu-panel.d.ts +22 -0
  488. package/menu/typings/menu-positions.d.ts +9 -0
  489. package/menu/typings/menu-trigger.d.ts +115 -0
  490. package/menu/typings/menu.d.ts +12 -0
  491. package/menu/typings/public-api.d.ts +11 -0
  492. package/menu.d.ts +8 -0
  493. package/menu.metadata.json +12 -0
  494. package/package.json +10 -9
  495. package/paginator/index.d.ts +8 -0
  496. package/paginator/index.metadata.json +12 -0
  497. package/paginator/package.json +7 -0
  498. package/paginator/typings/index.d.ts +4 -0
  499. package/paginator/typings/index.metadata.json +1 -0
  500. package/paginator/typings/paginator-intl.d.ts +20 -0
  501. package/paginator/typings/paginator-module.d.ts +2 -0
  502. package/paginator/typings/paginator.d.ts +75 -0
  503. package/paginator/typings/public-api.d.ts +10 -0
  504. package/paginator.d.ts +8 -0
  505. package/paginator.metadata.json +12 -0
  506. package/prebuilt-themes/deeppurple-amber.css +1 -0
  507. package/prebuilt-themes/indigo-pink.css +1 -0
  508. package/prebuilt-themes/pink-bluegrey.css +1 -0
  509. package/prebuilt-themes/purple-green.css +1 -0
  510. package/progress-bar/index.d.ts +8 -1
  511. package/progress-bar/index.metadata.json +12 -1
  512. package/progress-bar/package.json +7 -0
  513. package/progress-bar/typings/index.d.ts +4 -0
  514. package/progress-bar/typings/index.metadata.json +1 -0
  515. package/progress-bar/typings/progress-bar-module.d.ts +2 -0
  516. package/progress-bar/typings/progress-bar.d.ts +32 -0
  517. package/progress-bar/typings/public-api.d.ts +9 -0
  518. package/progress-bar.d.ts +8 -0
  519. package/progress-bar.metadata.json +12 -0
  520. package/progress-spinner/index.d.ts +8 -2
  521. package/progress-spinner/index.metadata.json +12 -1
  522. package/progress-spinner/package.json +7 -0
  523. package/progress-spinner/typings/index.d.ts +4 -0
  524. package/progress-spinner/typings/index.metadata.json +1 -0
  525. package/progress-spinner/typings/progress-spinner-module.d.ts +3 -0
  526. package/progress-spinner/typings/progress-spinner.d.ts +69 -0
  527. package/progress-spinner/typings/public-api.d.ts +9 -0
  528. package/progress-spinner.d.ts +8 -0
  529. package/progress-spinner.metadata.json +12 -0
  530. package/radio/index.d.ts +8 -1
  531. package/radio/index.metadata.json +12 -1
  532. package/radio/package.json +7 -0
  533. package/radio/typings/index.d.ts +4 -0
  534. package/radio/typings/index.metadata.json +1 -0
  535. package/radio/typings/public-api.d.ts +9 -0
  536. package/radio/typings/radio-module.d.ts +2 -0
  537. package/radio/typings/radio.d.ts +215 -0
  538. package/radio.d.ts +8 -0
  539. package/radio.metadata.json +12 -0
  540. package/select/index.d.ts +8 -7
  541. package/select/index.metadata.json +12 -1
  542. package/select/package.json +7 -0
  543. package/select/typings/index.d.ts +4 -0
  544. package/select/typings/index.metadata.json +1 -0
  545. package/select/typings/public-api.d.ts +10 -0
  546. package/select/typings/select-animations.d.ts +30 -0
  547. package/select/typings/select-errors.d.ts +26 -0
  548. package/select/typings/select-module.d.ts +2 -0
  549. package/select/typings/select.d.ts +393 -0
  550. package/select.d.ts +8 -0
  551. package/select.metadata.json +12 -0
  552. package/sidenav/index.d.ts +8 -1
  553. package/sidenav/index.metadata.json +12 -1
  554. package/sidenav/package.json +7 -0
  555. package/sidenav/typings/drawer.d.ts +190 -0
  556. package/sidenav/typings/index.d.ts +4 -0
  557. package/sidenav/typings/index.metadata.json +1 -0
  558. package/sidenav/typings/public-api.d.ts +10 -0
  559. package/sidenav/typings/sidenav-module.d.ts +2 -0
  560. package/sidenav/typings/sidenav.d.ts +33 -0
  561. package/sidenav.d.ts +8 -0
  562. package/sidenav.metadata.json +12 -0
  563. package/slide-toggle/index.d.ts +8 -1
  564. package/slide-toggle/index.metadata.json +12 -1
  565. package/slide-toggle/package.json +7 -0
  566. package/slide-toggle/typings/index.d.ts +4 -0
  567. package/slide-toggle/typings/index.metadata.json +1 -0
  568. package/slide-toggle/typings/public-api.d.ts +9 -0
  569. package/slide-toggle/typings/slide-toggle-module.d.ts +2 -0
  570. package/slide-toggle/typings/slide-toggle.d.ts +93 -0
  571. package/slide-toggle.d.ts +8 -0
  572. package/slide-toggle.metadata.json +12 -0
  573. package/slider/index.d.ts +8 -1
  574. package/slider/index.metadata.json +12 -1
  575. package/slider/package.json +7 -0
  576. package/slider/typings/index.d.ts +4 -0
  577. package/slider/typings/index.metadata.json +1 -0
  578. package/slider/typings/public-api.d.ts +9 -0
  579. package/slider/typings/slider-module.d.ts +2 -0
  580. package/slider/typings/slider.d.ts +207 -0
  581. package/slider.d.ts +8 -0
  582. package/slider.metadata.json +12 -0
  583. package/snack-bar/index.d.ts +8 -4
  584. package/snack-bar/index.metadata.json +12 -1
  585. package/snack-bar/package.json +7 -0
  586. package/snack-bar/typings/index.d.ts +4 -0
  587. package/snack-bar/typings/index.metadata.json +1 -0
  588. package/snack-bar/typings/public-api.d.ts +13 -0
  589. package/snack-bar/typings/simple-snack-bar.d.ts +18 -0
  590. package/snack-bar/typings/snack-bar-config.d.ts +38 -0
  591. package/snack-bar/typings/snack-bar-container.d.ts +55 -0
  592. package/snack-bar/typings/snack-bar-module.d.ts +2 -0
  593. package/snack-bar/typings/snack-bar-ref.d.ts +51 -0
  594. package/snack-bar/typings/snack-bar.d.ts +70 -0
  595. package/snack-bar.d.ts +8 -0
  596. package/snack-bar.metadata.json +12 -0
  597. package/sort/index.d.ts +8 -0
  598. package/sort/index.metadata.json +12 -0
  599. package/sort/package.json +7 -0
  600. package/sort/typings/index.d.ts +4 -0
  601. package/sort/typings/index.metadata.json +1 -0
  602. package/sort/typings/public-api.d.ts +12 -0
  603. package/sort/typings/sort-direction.d.ts +8 -0
  604. package/sort/typings/sort-errors.d.ts +15 -0
  605. package/sort/typings/sort-header-intl.d.ts +17 -0
  606. package/sort/typings/sort-header.d.ts +43 -0
  607. package/sort/typings/sort-module.d.ts +2 -0
  608. package/sort/typings/sort.d.ts +55 -0
  609. package/sort.d.ts +8 -0
  610. package/sort.metadata.json +12 -0
  611. package/stepper/index.d.ts +8 -0
  612. package/stepper/index.metadata.json +12 -0
  613. package/stepper/package.json +7 -0
  614. package/stepper/typings/index.d.ts +4 -0
  615. package/stepper/typings/index.metadata.json +1 -0
  616. package/stepper/typings/public-api.d.ts +13 -0
  617. package/stepper/typings/step-header.d.ts +41 -0
  618. package/stepper/typings/step-label.d.ts +14 -0
  619. package/stepper/typings/stepper-button.d.ts +10 -0
  620. package/stepper/typings/stepper-intl.d.ts +11 -0
  621. package/stepper/typings/stepper-module.d.ts +2 -0
  622. package/stepper/typings/stepper.d.ts +26 -0
  623. package/stepper.d.ts +8 -0
  624. package/stepper.metadata.json +12 -0
  625. package/table/index.d.ts +8 -0
  626. package/table/index.metadata.json +12 -0
  627. package/table/package.json +7 -0
  628. package/table/typings/cell.d.ts +43 -0
  629. package/table/typings/index.d.ts +4 -0
  630. package/table/typings/index.metadata.json +1 -0
  631. package/table/typings/public-api.d.ts +11 -0
  632. package/table/typings/row.d.ts +25 -0
  633. package/table/typings/table-module.d.ts +2 -0
  634. package/table/typings/table.d.ts +8 -0
  635. package/table.d.ts +8 -0
  636. package/table.metadata.json +12 -0
  637. package/tabs/index.d.ts +8 -7
  638. package/tabs/index.metadata.json +12 -1
  639. package/tabs/package.json +7 -0
  640. package/tabs/typings/index.d.ts +8 -0
  641. package/tabs/typings/index.metadata.json +1 -0
  642. package/tabs/typings/ink-bar.d.ts +33 -0
  643. package/tabs/typings/public-api.d.ts +16 -0
  644. package/tabs/typings/tab-body.d.ts +69 -0
  645. package/tabs/typings/tab-group.d.ts +104 -0
  646. package/tabs/typings/tab-header.d.ts +158 -0
  647. package/tabs/typings/tab-label-wrapper.d.ts +25 -0
  648. package/tabs/typings/tab-label.d.ts +15 -0
  649. package/tabs/typings/tab-nav-bar/index.d.ts +8 -0
  650. package/tabs/typings/tab-nav-bar/tab-nav-bar.d.ts +78 -0
  651. package/tabs/typings/tab.d.ts +50 -0
  652. package/tabs/typings/tabs-module.d.ts +2 -0
  653. package/tabs.d.ts +8 -0
  654. package/tabs.metadata.json +12 -0
  655. package/toolbar/index.d.ts +8 -1
  656. package/toolbar/index.metadata.json +12 -1
  657. package/toolbar/package.json +7 -0
  658. package/toolbar/typings/index.d.ts +4 -0
  659. package/toolbar/typings/index.metadata.json +1 -0
  660. package/toolbar/typings/public-api.d.ts +9 -0
  661. package/toolbar/typings/toolbar-module.d.ts +2 -0
  662. package/toolbar/typings/toolbar.d.ts +21 -0
  663. package/toolbar.d.ts +8 -0
  664. package/toolbar.metadata.json +12 -0
  665. package/tooltip/index.d.ts +8 -1
  666. package/tooltip/index.metadata.json +12 -1
  667. package/tooltip/package.json +7 -0
  668. package/tooltip/typings/index.d.ts +4 -0
  669. package/tooltip/typings/index.metadata.json +1 -0
  670. package/tooltip/typings/public-api.d.ts +9 -0
  671. package/tooltip/typings/tooltip-module.d.ts +2 -0
  672. package/tooltip/typings/tooltip.d.ts +175 -0
  673. package/tooltip.d.ts +8 -0
  674. package/tooltip.metadata.json +12 -0
  675. package/typings/autocomplete/autocomplete-module.d.ts +2 -0
  676. package/typings/autocomplete/autocomplete-trigger.d.ts +159 -0
  677. package/typings/autocomplete/autocomplete.d.ts +62 -0
  678. package/typings/autocomplete/index.d.ts +4 -0
  679. package/typings/autocomplete/index.metadata.json +1 -0
  680. package/typings/autocomplete/public-api.d.ts +10 -0
  681. package/typings/button/button-module.d.ts +2 -0
  682. package/typings/button/button.d.ts +77 -0
  683. package/typings/button/index.d.ts +4 -0
  684. package/typings/button/index.metadata.json +1 -0
  685. package/typings/button/public-api.d.ts +9 -0
  686. package/typings/button-toggle/button-toggle-module.d.ts +2 -0
  687. package/typings/button-toggle/button-toggle.d.ts +163 -0
  688. package/typings/button-toggle/index.d.ts +4 -0
  689. package/typings/button-toggle/index.metadata.json +1 -0
  690. package/typings/button-toggle/public-api.d.ts +9 -0
  691. package/typings/card/card-module.d.ts +2 -0
  692. package/typings/card/card.d.ts +95 -0
  693. package/typings/card/index.d.ts +4 -0
  694. package/typings/card/index.metadata.json +1 -0
  695. package/typings/card/public-api.d.ts +9 -0
  696. package/typings/checkbox/checkbox-module.d.ts +2 -0
  697. package/typings/checkbox/checkbox-required-validator.d.ts +18 -0
  698. package/typings/checkbox/checkbox.d.ts +157 -0
  699. package/typings/checkbox/index.d.ts +4 -0
  700. package/typings/checkbox/index.metadata.json +1 -0
  701. package/typings/checkbox/public-api.d.ts +10 -0
  702. package/typings/chips/chip-input.d.ts +43 -0
  703. package/typings/chips/chip-list.d.ts +222 -0
  704. package/typings/chips/chip.d.ts +123 -0
  705. package/typings/chips/chips-module.d.ts +2 -0
  706. package/typings/chips/index.d.ts +4 -0
  707. package/typings/chips/index.metadata.json +1 -0
  708. package/typings/chips/public-api.d.ts +11 -0
  709. package/typings/core/animation/animation.d.ts +20 -0
  710. package/typings/core/common-behaviors/color.d.ts +22 -0
  711. package/typings/core/common-behaviors/common-module.d.ts +25 -0
  712. package/typings/core/common-behaviors/constructor.d.ts +9 -0
  713. package/typings/core/common-behaviors/disable-ripple.d.ts +7 -0
  714. package/typings/core/common-behaviors/disabled.d.ts +7 -0
  715. package/typings/core/common-behaviors/index.d.ts +12 -0
  716. package/typings/core/common-behaviors/tabindex.d.ts +15 -0
  717. package/typings/core/compatibility/compatibility.d.ts +32 -0
  718. package/typings/core/datetime/date-adapter.d.ts +198 -0
  719. package/typings/core/datetime/date-formats.d.ts +20 -0
  720. package/typings/core/datetime/index.d.ts +8 -0
  721. package/typings/core/datetime/native-date-adapter.d.ts +50 -0
  722. package/typings/core/datetime/native-date-formats.d.ts +9 -0
  723. package/typings/core/error/error-options.d.ts +9 -0
  724. package/typings/core/gestures/gesture-annotations.d.ts +51 -0
  725. package/typings/core/gestures/gesture-config.d.ts +23 -0
  726. package/typings/core/index.d.ts +5 -0
  727. package/typings/core/index.metadata.json +1 -0
  728. package/typings/core/line/line.d.ts +30 -0
  729. package/typings/core/option/index.d.ts +4 -0
  730. package/typings/core/option/optgroup.d.ts +14 -0
  731. package/typings/core/option/option.d.ts +90 -0
  732. package/typings/core/placeholder/placeholder-options.d.ts +15 -0
  733. package/typings/core/public-api.d.ts +22 -0
  734. package/typings/core/ripple/index.d.ts +5 -0
  735. package/typings/core/ripple/ripple-ref.d.ts +28 -0
  736. package/typings/core/ripple/ripple-renderer.d.ts +69 -0
  737. package/typings/core/ripple/ripple.d.ts +65 -0
  738. package/typings/core/selection/index.d.ts +3 -0
  739. package/typings/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +20 -0
  740. package/typings/core/style/apply-transform.d.ts +13 -0
  741. package/typings/core/style/index.d.ts +8 -0
  742. package/typings/core/testing/month-constants.d.ts +12 -0
  743. package/typings/core/util/object-extend.d.ts +15 -0
  744. package/typings/datepicker/calendar-body.d.ts +52 -0
  745. package/typings/datepicker/calendar.d.ts +97 -0
  746. package/typings/datepicker/coerce-date-property.d.ts +19 -0
  747. package/typings/datepicker/datepicker-errors.d.ts +9 -0
  748. package/typings/datepicker/datepicker-input.d.ts +92 -0
  749. package/typings/datepicker/datepicker-intl.d.ts +25 -0
  750. package/typings/datepicker/datepicker-module.d.ts +2 -0
  751. package/typings/datepicker/datepicker-toggle.d.ts +24 -0
  752. package/typings/datepicker/datepicker.d.ts +117 -0
  753. package/typings/datepicker/index.d.ts +4 -0
  754. package/typings/datepicker/index.metadata.json +1 -0
  755. package/typings/datepicker/month-view.d.ts +66 -0
  756. package/typings/datepicker/public-api.d.ts +17 -0
  757. package/typings/datepicker/year-view.d.ts +55 -0
  758. package/typings/dialog/dialog-config.d.ts +54 -0
  759. package/typings/dialog/dialog-container.d.ts +68 -0
  760. package/typings/dialog/dialog-content-directives.d.ts +43 -0
  761. package/typings/dialog/dialog-module.d.ts +2 -0
  762. package/typings/dialog/dialog-ref.d.ts +68 -0
  763. package/typings/dialog/dialog.d.ts +108 -0
  764. package/typings/dialog/index.d.ts +4 -0
  765. package/typings/dialog/index.metadata.json +1 -0
  766. package/typings/dialog/public-api.d.ts +13 -0
  767. package/typings/expansion/accordion-item.d.ts +41 -0
  768. package/typings/expansion/accordion.d.ts +29 -0
  769. package/typings/expansion/expansion-module.d.ts +2 -0
  770. package/typings/expansion/expansion-panel-header.d.ts +49 -0
  771. package/typings/expansion/expansion-panel.d.ts +40 -0
  772. package/typings/expansion/index.d.ts +5 -0
  773. package/typings/expansion/index.metadata.json +1 -0
  774. package/typings/expansion/public-api.d.ts +12 -0
  775. package/typings/form-field/error.d.ts +4 -0
  776. package/typings/form-field/form-field-control.d.ts +47 -0
  777. package/typings/form-field/form-field-errors.d.ts +13 -0
  778. package/typings/form-field/form-field-module.d.ts +2 -0
  779. package/typings/form-field/form-field.d.ts +78 -0
  780. package/typings/form-field/hint.d.ts +7 -0
  781. package/typings/form-field/index.d.ts +4 -0
  782. package/typings/form-field/index.metadata.json +1 -0
  783. package/typings/form-field/placeholder.d.ts +3 -0
  784. package/typings/form-field/prefix.d.ts +3 -0
  785. package/typings/form-field/public-api.d.ts +16 -0
  786. package/typings/form-field/suffix.d.ts +3 -0
  787. package/typings/grid-list/grid-list-measure.d.ts +17 -0
  788. package/typings/grid-list/grid-list-module.d.ts +2 -0
  789. package/typings/grid-list/grid-list.d.ts +53 -0
  790. package/typings/grid-list/grid-tile.d.ts +55 -0
  791. package/typings/grid-list/index.d.ts +5 -0
  792. package/typings/grid-list/index.metadata.json +1 -0
  793. package/typings/grid-list/public-api.d.ts +10 -0
  794. package/typings/grid-list/tile-coordinator.d.ts +64 -0
  795. package/typings/grid-list/tile-styler.d.ts +129 -0
  796. package/typings/icon/icon-module.d.ts +2 -0
  797. package/typings/icon/icon-registry.d.ts +187 -0
  798. package/typings/icon/icon.d.ts +69 -0
  799. package/typings/icon/index.d.ts +4 -0
  800. package/typings/icon/index.metadata.json +1 -0
  801. package/typings/icon/public-api.d.ts +10 -0
  802. package/typings/index.d.ts +4 -0
  803. package/typings/index.metadata.json +1 -0
  804. package/typings/input/autosize.d.ts +43 -0
  805. package/typings/input/index.d.ts +4 -0
  806. package/typings/input/index.metadata.json +1 -0
  807. package/typings/input/input-errors.d.ts +9 -0
  808. package/typings/input/input-module.d.ts +2 -0
  809. package/typings/input/input.d.ts +85 -0
  810. package/typings/input/public-api.d.ts +11 -0
  811. package/typings/list/index.d.ts +4 -0
  812. package/typings/list/index.metadata.json +1 -0
  813. package/typings/list/list-module.d.ts +2 -0
  814. package/typings/list/list.d.ts +77 -0
  815. package/typings/list/public-api.d.ts +10 -0
  816. package/typings/list/selection-list.d.ts +103 -0
  817. package/typings/menu/index.d.ts +6 -0
  818. package/typings/menu/index.metadata.json +1 -0
  819. package/typings/menu/menu-animations.d.ts +27 -0
  820. package/typings/menu/menu-directive.d.ts +89 -0
  821. package/typings/menu/menu-errors.d.ts +24 -0
  822. package/typings/menu/menu-item.d.ts +42 -0
  823. package/typings/menu/menu-module.d.ts +2 -0
  824. package/typings/menu/menu-panel.d.ts +22 -0
  825. package/typings/menu/menu-positions.d.ts +9 -0
  826. package/typings/menu/menu-trigger.d.ts +115 -0
  827. package/typings/menu/menu.d.ts +12 -0
  828. package/typings/menu/public-api.d.ts +11 -0
  829. package/typings/paginator/index.d.ts +4 -0
  830. package/typings/paginator/index.metadata.json +1 -0
  831. package/typings/paginator/paginator-intl.d.ts +20 -0
  832. package/typings/paginator/paginator-module.d.ts +2 -0
  833. package/typings/paginator/paginator.d.ts +75 -0
  834. package/typings/paginator/public-api.d.ts +10 -0
  835. package/typings/progress-bar/index.d.ts +4 -0
  836. package/typings/progress-bar/index.metadata.json +1 -0
  837. package/typings/progress-bar/progress-bar-module.d.ts +2 -0
  838. package/typings/progress-bar/progress-bar.d.ts +32 -0
  839. package/typings/progress-bar/public-api.d.ts +9 -0
  840. package/typings/progress-spinner/index.d.ts +4 -0
  841. package/typings/progress-spinner/index.metadata.json +1 -0
  842. package/typings/progress-spinner/progress-spinner-module.d.ts +3 -0
  843. package/typings/progress-spinner/progress-spinner.d.ts +69 -0
  844. package/typings/progress-spinner/public-api.d.ts +9 -0
  845. package/typings/public-api.d.ts +39 -0
  846. package/typings/radio/index.d.ts +4 -0
  847. package/typings/radio/index.metadata.json +1 -0
  848. package/typings/radio/public-api.d.ts +9 -0
  849. package/typings/radio/radio-module.d.ts +2 -0
  850. package/typings/radio/radio.d.ts +215 -0
  851. package/typings/select/index.d.ts +4 -0
  852. package/typings/select/index.metadata.json +1 -0
  853. package/typings/select/public-api.d.ts +10 -0
  854. package/typings/select/select-animations.d.ts +30 -0
  855. package/typings/select/select-errors.d.ts +26 -0
  856. package/typings/select/select-module.d.ts +2 -0
  857. package/typings/select/select.d.ts +393 -0
  858. package/typings/sidenav/drawer.d.ts +190 -0
  859. package/typings/sidenav/index.d.ts +4 -0
  860. package/typings/sidenav/index.metadata.json +1 -0
  861. package/typings/sidenav/public-api.d.ts +10 -0
  862. package/typings/sidenav/sidenav-module.d.ts +2 -0
  863. package/typings/sidenav/sidenav.d.ts +33 -0
  864. package/typings/slide-toggle/index.d.ts +4 -0
  865. package/typings/slide-toggle/index.metadata.json +1 -0
  866. package/typings/slide-toggle/public-api.d.ts +9 -0
  867. package/typings/slide-toggle/slide-toggle-module.d.ts +2 -0
  868. package/typings/slide-toggle/slide-toggle.d.ts +93 -0
  869. package/typings/slider/index.d.ts +4 -0
  870. package/typings/slider/index.metadata.json +1 -0
  871. package/typings/slider/public-api.d.ts +9 -0
  872. package/typings/slider/slider-module.d.ts +2 -0
  873. package/typings/slider/slider.d.ts +207 -0
  874. package/typings/snack-bar/index.d.ts +4 -0
  875. package/typings/snack-bar/index.metadata.json +1 -0
  876. package/typings/snack-bar/public-api.d.ts +13 -0
  877. package/typings/snack-bar/simple-snack-bar.d.ts +18 -0
  878. package/typings/snack-bar/snack-bar-config.d.ts +38 -0
  879. package/typings/snack-bar/snack-bar-container.d.ts +55 -0
  880. package/typings/snack-bar/snack-bar-module.d.ts +2 -0
  881. package/typings/snack-bar/snack-bar-ref.d.ts +51 -0
  882. package/typings/snack-bar/snack-bar.d.ts +70 -0
  883. package/typings/sort/index.d.ts +4 -0
  884. package/typings/sort/index.metadata.json +1 -0
  885. package/typings/sort/public-api.d.ts +12 -0
  886. package/typings/sort/sort-direction.d.ts +8 -0
  887. package/typings/sort/sort-errors.d.ts +15 -0
  888. package/typings/sort/sort-header-intl.d.ts +17 -0
  889. package/typings/sort/sort-header.d.ts +43 -0
  890. package/typings/sort/sort-module.d.ts +2 -0
  891. package/typings/sort/sort.d.ts +55 -0
  892. package/typings/stepper/index.d.ts +4 -0
  893. package/typings/stepper/index.metadata.json +1 -0
  894. package/typings/stepper/public-api.d.ts +13 -0
  895. package/typings/stepper/step-header.d.ts +41 -0
  896. package/typings/stepper/step-label.d.ts +14 -0
  897. package/typings/stepper/stepper-button.d.ts +10 -0
  898. package/typings/stepper/stepper-intl.d.ts +11 -0
  899. package/typings/stepper/stepper-module.d.ts +2 -0
  900. package/typings/stepper/stepper.d.ts +26 -0
  901. package/typings/table/cell.d.ts +43 -0
  902. package/typings/table/index.d.ts +4 -0
  903. package/typings/table/index.metadata.json +1 -0
  904. package/typings/table/public-api.d.ts +11 -0
  905. package/typings/table/row.d.ts +25 -0
  906. package/typings/table/table-module.d.ts +2 -0
  907. package/typings/table/table.d.ts +8 -0
  908. package/typings/tabs/index.d.ts +8 -0
  909. package/typings/tabs/index.metadata.json +1 -0
  910. package/typings/tabs/ink-bar.d.ts +33 -0
  911. package/typings/tabs/public-api.d.ts +16 -0
  912. package/typings/tabs/tab-body.d.ts +69 -0
  913. package/typings/tabs/tab-group.d.ts +104 -0
  914. package/typings/tabs/tab-header.d.ts +158 -0
  915. package/typings/tabs/tab-label-wrapper.d.ts +25 -0
  916. package/typings/tabs/tab-label.d.ts +15 -0
  917. package/typings/tabs/tab-nav-bar/index.d.ts +8 -0
  918. package/typings/tabs/tab-nav-bar/tab-nav-bar.d.ts +78 -0
  919. package/typings/tabs/tab.d.ts +50 -0
  920. package/typings/tabs/tabs-module.d.ts +2 -0
  921. package/typings/toolbar/index.d.ts +4 -0
  922. package/typings/toolbar/index.metadata.json +1 -0
  923. package/typings/toolbar/public-api.d.ts +9 -0
  924. package/typings/toolbar/toolbar-module.d.ts +2 -0
  925. package/typings/toolbar/toolbar.d.ts +21 -0
  926. package/typings/tooltip/index.d.ts +4 -0
  927. package/typings/tooltip/index.metadata.json +1 -0
  928. package/typings/tooltip/public-api.d.ts +9 -0
  929. package/typings/tooltip/tooltip-module.d.ts +2 -0
  930. package/typings/tooltip/tooltip.d.ts +175 -0
  931. package/typings/version.d.ts +10 -0
  932. package/autocomplete/README.md +0 -5
  933. package/autocomplete/_autocomplete-theme.scss +0 -5
  934. package/autocomplete/autocomplete.css +0 -0
  935. package/autocomplete/autocomplete.css.map +0 -1
  936. package/autocomplete/autocomplete.d.ts +0 -2
  937. package/autocomplete/autocomplete.html +0 -1
  938. package/autocomplete/autocomplete.js +0 -25
  939. package/autocomplete/autocomplete.js.map +0 -1
  940. package/autocomplete/autocomplete.metadata.json +0 -1
  941. package/autocomplete/autocomplete.scss +0 -0
  942. package/autocomplete/index.js +0 -34
  943. package/autocomplete/index.js.map +0 -1
  944. package/button/OVERVIEW.md +0 -25
  945. package/button/README.md +0 -116
  946. package/button/_button-base.scss +0 -111
  947. package/button/_button-theme.scss +0 -85
  948. package/button/button.css +0 -1
  949. package/button/button.css.map +0 -1
  950. package/button/button.d.ts +0 -46
  951. package/button/button.html +0 -1
  952. package/button/button.js +0 -203
  953. package/button/button.js.map +0 -1
  954. package/button/button.metadata.json +0 -1
  955. package/button/button.scss +0 -105
  956. package/button/index.js +0 -3
  957. package/button/index.js.map +0 -1
  958. package/button-toggle/OVERVIEW.md +0 -22
  959. package/button-toggle/README.md +0 -139
  960. package/button-toggle/_button-toggle-theme.scss +0 -14
  961. package/button-toggle/button-toggle.css +0 -1
  962. package/button-toggle/button-toggle.css.map +0 -1
  963. package/button-toggle/button-toggle.d.ts +0 -136
  964. package/button-toggle/button-toggle.html +0 -1
  965. package/button-toggle/button-toggle.js +0 -502
  966. package/button-toggle/button-toggle.js.map +0 -1
  967. package/button-toggle/button-toggle.metadata.json +0 -1
  968. package/button-toggle/button-toggle.scss +0 -49
  969. package/button-toggle/index.js +0 -3
  970. package/button-toggle/index.js.map +0 -1
  971. package/card/OVERVIEW.md +0 -45
  972. package/card/README.md +0 -116
  973. package/card/_card-theme.scss +0 -17
  974. package/card/card-header.html +0 -1
  975. package/card/card-title-group.html +0 -1
  976. package/card/card.css +0 -1
  977. package/card/card.css.map +0 -1
  978. package/card/card.d.ts +0 -54
  979. package/card/card.html +0 -1
  980. package/card/card.js +0 -174
  981. package/card/card.js.map +0 -1
  982. package/card/card.metadata.json +0 -1
  983. package/card/card.scss +0 -227
  984. package/card/index.js +0 -3
  985. package/card/index.js.map +0 -1
  986. package/checkbox/OVERVIEW.md +0 -28
  987. package/checkbox/README.md +0 -93
  988. package/checkbox/_checkbox-theme.scss +0 -84
  989. package/checkbox/checkbox.css +0 -1
  990. package/checkbox/checkbox.css.map +0 -1
  991. package/checkbox/checkbox.d.ts +0 -155
  992. package/checkbox/checkbox.html +0 -1
  993. package/checkbox/checkbox.js +0 -432
  994. package/checkbox/checkbox.js.map +0 -1
  995. package/checkbox/checkbox.metadata.json +0 -1
  996. package/checkbox/checkbox.scss +0 -431
  997. package/checkbox/index.js +0 -3
  998. package/checkbox/index.js.map +0 -1
  999. package/chips/OVERVIEW.md +0 -40
  1000. package/chips/README.md +0 -7
  1001. package/chips/_chips-theme.scss +0 -49
  1002. package/chips/chip-list.d.ts +0 -66
  1003. package/chips/chip-list.js +0 -210
  1004. package/chips/chip-list.js.map +0 -1
  1005. package/chips/chip-list.metadata.json +0 -1
  1006. package/chips/chip.d.ts +0 -53
  1007. package/chips/chip.js +0 -177
  1008. package/chips/chip.js.map +0 -1
  1009. package/chips/chip.metadata.json +0 -1
  1010. package/chips/chips.css +0 -1
  1011. package/chips/chips.css.map +0 -1
  1012. package/chips/chips.scss +0 -80
  1013. package/chips/index.js +0 -4
  1014. package/chips/index.js.map +0 -1
  1015. package/core/README.md +0 -1
  1016. package/core/_core.scss +0 -27
  1017. package/core/a11y/README.md +0 -30
  1018. package/core/a11y/_a11y.scss +0 -24
  1019. package/core/a11y/fake-mousedown.d.ts +0 -8
  1020. package/core/a11y/fake-mousedown.js +0 -12
  1021. package/core/a11y/fake-mousedown.js.map +0 -1
  1022. package/core/a11y/fake-mousedown.metadata.json +0 -1
  1023. package/core/a11y/focus-trap.d.ts +0 -41
  1024. package/core/a11y/focus-trap.html +0 -1
  1025. package/core/a11y/focus-trap.js +0 -129
  1026. package/core/a11y/focus-trap.js.map +0 -1
  1027. package/core/a11y/focus-trap.metadata.json +0 -1
  1028. package/core/a11y/index.d.ts +0 -7
  1029. package/core/a11y/index.js +0 -40
  1030. package/core/a11y/index.js.map +0 -1
  1031. package/core/a11y/index.metadata.json +0 -1
  1032. package/core/a11y/interactivity-checker.d.ts +0 -45
  1033. package/core/a11y/interactivity-checker.js +0 -210
  1034. package/core/a11y/interactivity-checker.js.map +0 -1
  1035. package/core/a11y/interactivity-checker.metadata.json +0 -1
  1036. package/core/a11y/list-key-manager.d.ts +0 -83
  1037. package/core/a11y/list-key-manager.js +0 -157
  1038. package/core/a11y/list-key-manager.js.map +0 -1
  1039. package/core/a11y/list-key-manager.metadata.json +0 -1
  1040. package/core/a11y/live-announcer.d.ts +0 -17
  1041. package/core/a11y/live-announcer.js +0 -63
  1042. package/core/a11y/live-announcer.js.map +0 -1
  1043. package/core/a11y/live-announcer.metadata.json +0 -1
  1044. package/core/animation/animation.d.ts +0 -13
  1045. package/core/animation/animation.js +0 -21
  1046. package/core/animation/animation.js.map +0 -1
  1047. package/core/animation/animation.metadata.json +0 -1
  1048. package/core/async/promise-completer.d.ts +0 -7
  1049. package/core/async/promise-completer.js +0 -13
  1050. package/core/async/promise-completer.js.map +0 -1
  1051. package/core/async/promise-completer.metadata.json +0 -1
  1052. package/core/coercion/boolean-property.d.ts +0 -2
  1053. package/core/coercion/boolean-property.js +0 -6
  1054. package/core/coercion/boolean-property.js.map +0 -1
  1055. package/core/coercion/boolean-property.metadata.json +0 -1
  1056. package/core/coercion/number-property.d.ts +0 -2
  1057. package/core/coercion/number-property.js +0 -10
  1058. package/core/coercion/number-property.js.map +0 -1
  1059. package/core/coercion/number-property.metadata.json +0 -1
  1060. package/core/compatibility/default-mode.d.ts +0 -19
  1061. package/core/compatibility/default-mode.js +0 -61
  1062. package/core/compatibility/default-mode.js.map +0 -1
  1063. package/core/compatibility/default-mode.metadata.json +0 -1
  1064. package/core/compatibility/no-conflict-mode.d.ts +0 -10
  1065. package/core/compatibility/no-conflict-mode.js +0 -47
  1066. package/core/compatibility/no-conflict-mode.js.map +0 -1
  1067. package/core/compatibility/no-conflict-mode.metadata.json +0 -1
  1068. package/core/coordination/unique-selection-dispatcher.d.ts +0 -21
  1069. package/core/coordination/unique-selection-dispatcher.js +0 -46
  1070. package/core/coordination/unique-selection-dispatcher.js.map +0 -1
  1071. package/core/coordination/unique-selection-dispatcher.metadata.json +0 -1
  1072. package/core/core.d.ts +0 -45
  1073. package/core/core.js +0 -110
  1074. package/core/core.js.map +0 -1
  1075. package/core/core.metadata.json +0 -1
  1076. package/core/errors/error.d.ts +0 -7
  1077. package/core/errors/error.js +0 -20
  1078. package/core/errors/error.js.map +0 -1
  1079. package/core/errors/error.metadata.json +0 -1
  1080. package/core/gestures/gesture-annotations.d.ts +0 -44
  1081. package/core/gestures/gesture-annotations.js +0 -7
  1082. package/core/gestures/gesture-annotations.js.map +0 -1
  1083. package/core/gestures/gesture-config.js +0 -85
  1084. package/core/gestures/gesture-config.js.map +0 -1
  1085. package/core/gestures/gesture-config.metadata.json +0 -1
  1086. package/core/index.js +0 -3
  1087. package/core/index.js.map +0 -1
  1088. package/core/keyboard/keycodes.d.ts +0 -14
  1089. package/core/keyboard/keycodes.js +0 -20
  1090. package/core/keyboard/keycodes.js.map +0 -1
  1091. package/core/keyboard/keycodes.metadata.json +0 -1
  1092. package/core/line/line.d.ts +0 -23
  1093. package/core/line/line.js +0 -74
  1094. package/core/line/line.js.map +0 -1
  1095. package/core/line/line.metadata.json +0 -1
  1096. package/core/observe-content/observe-content.d.ts +0 -17
  1097. package/core/observe-content/observe-content.js +0 -66
  1098. package/core/observe-content/observe-content.js.map +0 -1
  1099. package/core/observe-content/observe-content.metadata.json +0 -1
  1100. package/core/overlay/_overlay.scss +0 -68
  1101. package/core/overlay/generic-component-type.d.ts +0 -3
  1102. package/core/overlay/generic-component-type.js +0 -3
  1103. package/core/overlay/generic-component-type.js.map +0 -1
  1104. package/core/overlay/overlay-container.d.ts +0 -19
  1105. package/core/overlay/overlay-container.js +0 -33
  1106. package/core/overlay/overlay-container.js.map +0 -1
  1107. package/core/overlay/overlay-container.metadata.json +0 -1
  1108. package/core/overlay/overlay-directives.d.ts +0 -80
  1109. package/core/overlay/overlay-directives.js +0 -316
  1110. package/core/overlay/overlay-directives.js.map +0 -1
  1111. package/core/overlay/overlay-directives.metadata.json +0 -1
  1112. package/core/overlay/overlay-ref.d.ts +0 -56
  1113. package/core/overlay/overlay-ref.js +0 -155
  1114. package/core/overlay/overlay-ref.js.map +0 -1
  1115. package/core/overlay/overlay-ref.metadata.json +0 -1
  1116. package/core/overlay/overlay-state.d.ts +0 -24
  1117. package/core/overlay/overlay-state.js +0 -17
  1118. package/core/overlay/overlay-state.js.map +0 -1
  1119. package/core/overlay/overlay-state.metadata.json +0 -1
  1120. package/core/overlay/overlay.d.ts +0 -54
  1121. package/core/overlay/overlay.js +0 -97
  1122. package/core/overlay/overlay.js.map +0 -1
  1123. package/core/overlay/overlay.metadata.json +0 -1
  1124. package/core/overlay/position/connected-position-strategy.d.ts +0 -133
  1125. package/core/overlay/position/connected-position-strategy.js +0 -292
  1126. package/core/overlay/position/connected-position-strategy.js.map +0 -1
  1127. package/core/overlay/position/connected-position-strategy.metadata.json +0 -1
  1128. package/core/overlay/position/connected-position.d.ts +0 -56
  1129. package/core/overlay/position/connected-position.js +0 -65
  1130. package/core/overlay/position/connected-position.js.map +0 -1
  1131. package/core/overlay/position/connected-position.metadata.json +0 -1
  1132. package/core/overlay/position/fake-viewport-ruler.d.ts +0 -15
  1133. package/core/overlay/position/fake-viewport-ruler.js +0 -16
  1134. package/core/overlay/position/fake-viewport-ruler.js.map +0 -1
  1135. package/core/overlay/position/fake-viewport-ruler.metadata.json +0 -1
  1136. package/core/overlay/position/global-position-strategy.d.ts +0 -75
  1137. package/core/overlay/position/global-position-strategy.js +0 -148
  1138. package/core/overlay/position/global-position-strategy.js.map +0 -1
  1139. package/core/overlay/position/global-position-strategy.metadata.json +0 -1
  1140. package/core/overlay/position/overlay-position-builder.d.ts +0 -21
  1141. package/core/overlay/position/overlay-position-builder.js +0 -41
  1142. package/core/overlay/position/overlay-position-builder.js.map +0 -1
  1143. package/core/overlay/position/overlay-position-builder.metadata.json +0 -1
  1144. package/core/overlay/position/position-strategy.d.ts +0 -7
  1145. package/core/overlay/position/position-strategy.js +0 -3
  1146. package/core/overlay/position/position-strategy.js.map +0 -1
  1147. package/core/overlay/position/relative-position-strategy.d.ts +0 -9
  1148. package/core/overlay/position/relative-position-strategy.js +0 -16
  1149. package/core/overlay/position/relative-position-strategy.js.map +0 -1
  1150. package/core/overlay/position/relative-position-strategy.metadata.json +0 -1
  1151. package/core/overlay/position/viewport-ruler.d.ts +0 -16
  1152. package/core/overlay/position/viewport-ruler.js +0 -67
  1153. package/core/overlay/position/viewport-ruler.js.map +0 -1
  1154. package/core/overlay/position/viewport-ruler.metadata.json +0 -1
  1155. package/core/overlay/scroll/scroll-dispatcher.d.ts +0 -44
  1156. package/core/overlay/scroll/scroll-dispatcher.js +0 -94
  1157. package/core/overlay/scroll/scroll-dispatcher.js.map +0 -1
  1158. package/core/overlay/scroll/scroll-dispatcher.metadata.json +0 -1
  1159. package/core/overlay/scroll/scrollable.d.ts +0 -21
  1160. package/core/overlay/scroll/scrollable.js +0 -48
  1161. package/core/overlay/scroll/scrollable.js.map +0 -1
  1162. package/core/overlay/scroll/scrollable.metadata.json +0 -1
  1163. package/core/platform/features.d.ts +0 -2
  1164. package/core/platform/features.js +0 -37
  1165. package/core/platform/features.js.map +0 -1
  1166. package/core/platform/features.metadata.json +0 -1
  1167. package/core/platform/index.d.ts +0 -6
  1168. package/core/platform/index.js +0 -30
  1169. package/core/platform/index.js.map +0 -1
  1170. package/core/platform/index.metadata.json +0 -1
  1171. package/core/platform/platform.d.ts +0 -16
  1172. package/core/platform/platform.js +0 -48
  1173. package/core/platform/platform.js.map +0 -1
  1174. package/core/platform/platform.metadata.json +0 -1
  1175. package/core/portal/README.md +0 -72
  1176. package/core/portal/dom-portal-host.d.ts +0 -31
  1177. package/core/portal/dom-portal-host.js +0 -108
  1178. package/core/portal/dom-portal-host.js.map +0 -1
  1179. package/core/portal/dom-portal-host.metadata.json +0 -1
  1180. package/core/portal/portal-directives.d.ts +0 -49
  1181. package/core/portal/portal-directives.js +0 -148
  1182. package/core/portal/portal-directives.js.map +0 -1
  1183. package/core/portal/portal-directives.metadata.json +0 -1
  1184. package/core/portal/portal-errors.d.ts +0 -43
  1185. package/core/portal/portal-errors.js +0 -75
  1186. package/core/portal/portal-errors.js.map +0 -1
  1187. package/core/portal/portal-errors.metadata.json +0 -1
  1188. package/core/portal/portal.d.ts +0 -85
  1189. package/core/portal/portal.js +0 -155
  1190. package/core/portal/portal.js.map +0 -1
  1191. package/core/portal/portal.metadata.json +0 -1
  1192. package/core/projection/projection.d.ts +0 -45
  1193. package/core/projection/projection.js +0 -111
  1194. package/core/projection/projection.js.map +0 -1
  1195. package/core/projection/projection.metadata.json +0 -1
  1196. package/core/ripple/README.md +0 -27
  1197. package/core/ripple/_ripple.scss +0 -106
  1198. package/core/ripple/ripple-renderer.d.ts +0 -76
  1199. package/core/ripple/ripple-renderer.js +0 -177
  1200. package/core/ripple/ripple-renderer.js.map +0 -1
  1201. package/core/ripple/ripple-renderer.metadata.json +0 -1
  1202. package/core/ripple/ripple.d.ts +0 -92
  1203. package/core/ripple/ripple.js +0 -295
  1204. package/core/ripple/ripple.js.map +0 -1
  1205. package/core/ripple/ripple.metadata.json +0 -1
  1206. package/core/rtl/dir.d.ts +0 -21
  1207. package/core/rtl/dir.js +0 -87
  1208. package/core/rtl/dir.js.map +0 -1
  1209. package/core/rtl/dir.metadata.json +0 -1
  1210. package/core/style/_button-common.scss +0 -7
  1211. package/core/style/_elevation.scss +0 -174
  1212. package/core/style/_form-common.scss +0 -12
  1213. package/core/style/_layout-common.scss +0 -8
  1214. package/core/style/_list-common.scss +0 -49
  1215. package/core/style/_menu-common.scss +0 -89
  1216. package/core/style/_variables.scss +0 -64
  1217. package/core/style/apply-transform.d.ts +0 -6
  1218. package/core/style/apply-transform.js +0 -14
  1219. package/core/style/apply-transform.js.map +0 -1
  1220. package/core/style/apply-transform.metadata.json +0 -1
  1221. package/core/theming/_all-theme.scss +0 -52
  1222. package/core/theming/_palette.scss +0 -694
  1223. package/core/theming/_theming.scss +0 -84
  1224. package/core/theming/prebuilt/deeppurple-amber.css +0 -1
  1225. package/core/theming/prebuilt/deeppurple-amber.css.map +0 -1
  1226. package/core/theming/prebuilt/deeppurple-amber.scss +0 -14
  1227. package/core/theming/prebuilt/indigo-pink.css +0 -1
  1228. package/core/theming/prebuilt/indigo-pink.css.map +0 -1
  1229. package/core/theming/prebuilt/indigo-pink.scss +0 -14
  1230. package/core/theming/prebuilt/pink-bluegrey.css +0 -1
  1231. package/core/theming/prebuilt/pink-bluegrey.css.map +0 -1
  1232. package/core/theming/prebuilt/pink-bluegrey.scss +0 -14
  1233. package/core/theming/prebuilt/purple-green.css +0 -1
  1234. package/core/theming/prebuilt/purple-green.css.map +0 -1
  1235. package/core/theming/prebuilt/purple-green.scss +0 -14
  1236. package/core/typography/_typography.scss +0 -6
  1237. package/core/util/object-extend.d.ts +0 -8
  1238. package/core/util/object-extend.js +0 -29
  1239. package/core/util/object-extend.js.map +0 -1
  1240. package/core/util/object-extend.metadata.json +0 -1
  1241. package/core.js +0 -3
  1242. package/core.js.map +0 -1
  1243. package/dialog/OVERVIEW.md +0 -39
  1244. package/dialog/README.md +0 -102
  1245. package/dialog/_dialog-theme.scss +0 -11
  1246. package/dialog/dialog-config.d.ts +0 -26
  1247. package/dialog/dialog-config.js +0 -19
  1248. package/dialog/dialog-config.js.map +0 -1
  1249. package/dialog/dialog-config.metadata.json +0 -1
  1250. package/dialog/dialog-container.d.ts +0 -37
  1251. package/dialog/dialog-container.html +0 -1
  1252. package/dialog/dialog-container.js +0 -97
  1253. package/dialog/dialog-container.js.map +0 -1
  1254. package/dialog/dialog-container.metadata.json +0 -1
  1255. package/dialog/dialog-content-directives.d.ts +0 -26
  1256. package/dialog/dialog-content-directives.js +0 -81
  1257. package/dialog/dialog-content-directives.js.map +0 -1
  1258. package/dialog/dialog-content-directives.metadata.json +0 -1
  1259. package/dialog/dialog-errors.d.ts +0 -8
  1260. package/dialog/dialog-errors.js +0 -19
  1261. package/dialog/dialog-errors.js.map +0 -1
  1262. package/dialog/dialog-errors.metadata.json +0 -1
  1263. package/dialog/dialog-injector.d.ts +0 -9
  1264. package/dialog/dialog-injector.js +0 -17
  1265. package/dialog/dialog-injector.js.map +0 -1
  1266. package/dialog/dialog-injector.metadata.json +0 -1
  1267. package/dialog/dialog-ref.d.ts +0 -22
  1268. package/dialog/dialog-ref.js +0 -31
  1269. package/dialog/dialog-ref.js.map +0 -1
  1270. package/dialog/dialog-ref.metadata.json +0 -1
  1271. package/dialog/dialog.css +0 -1
  1272. package/dialog/dialog.css.map +0 -1
  1273. package/dialog/dialog.d.ts +0 -57
  1274. package/dialog/dialog.js +0 -157
  1275. package/dialog/dialog.js.map +0 -1
  1276. package/dialog/dialog.metadata.json +0 -1
  1277. package/dialog/dialog.scss +0 -54
  1278. package/dialog/index.js +0 -59
  1279. package/dialog/index.js.map +0 -1
  1280. package/grid-list/OVERVIEW.md +0 -43
  1281. package/grid-list/README.md +0 -105
  1282. package/grid-list/_grid-list-theme.scss +0 -6
  1283. package/grid-list/grid-list-errors.d.ts +0 -22
  1284. package/grid-list/grid-list-errors.js +0 -41
  1285. package/grid-list/grid-list-errors.js.map +0 -1
  1286. package/grid-list/grid-list-errors.metadata.json +0 -1
  1287. package/grid-list/grid-list-measure.d.ts +0 -10
  1288. package/grid-list/grid-list-measure.js +0 -16
  1289. package/grid-list/grid-list-measure.js.map +0 -1
  1290. package/grid-list/grid-list-measure.metadata.json +0 -1
  1291. package/grid-list/grid-list.css +0 -1
  1292. package/grid-list/grid-list.css.map +0 -1
  1293. package/grid-list/grid-list.d.ts +0 -49
  1294. package/grid-list/grid-list.html +0 -1
  1295. package/grid-list/grid-list.js +0 -166
  1296. package/grid-list/grid-list.js.map +0 -1
  1297. package/grid-list/grid-list.metadata.json +0 -1
  1298. package/grid-list/grid-list.scss +0 -91
  1299. package/grid-list/grid-tile-text.html +0 -1
  1300. package/grid-list/grid-tile.d.ts +0 -30
  1301. package/grid-list/grid-tile.html +0 -1
  1302. package/grid-list/grid-tile.js +0 -81
  1303. package/grid-list/grid-tile.js.map +0 -1
  1304. package/grid-list/grid-tile.metadata.json +0 -1
  1305. package/grid-list/index.js +0 -3
  1306. package/grid-list/index.js.map +0 -1
  1307. package/grid-list/tile-coordinator.d.ts +0 -56
  1308. package/grid-list/tile-coordinator.js +0 -129
  1309. package/grid-list/tile-coordinator.js.map +0 -1
  1310. package/grid-list/tile-coordinator.metadata.json +0 -1
  1311. package/grid-list/tile-styler.d.ts +0 -112
  1312. package/grid-list/tile-styler.js +0 -211
  1313. package/grid-list/tile-styler.js.map +0 -1
  1314. package/grid-list/tile-styler.metadata.json +0 -1
  1315. package/icon/OVERVIEW.md +0 -88
  1316. package/icon/README.md +0 -129
  1317. package/icon/_icon-theme.scss +0 -25
  1318. package/icon/fake-svgs.d.ts +0 -6
  1319. package/icon/fake-svgs.js +0 -31
  1320. package/icon/fake-svgs.js.map +0 -1
  1321. package/icon/fake-svgs.metadata.json +0 -1
  1322. package/icon/icon-registry.d.ts +0 -180
  1323. package/icon/icon-registry.js +0 -413
  1324. package/icon/icon-registry.js.map +0 -1
  1325. package/icon/icon-registry.metadata.json +0 -1
  1326. package/icon/icon.css +0 -1
  1327. package/icon/icon.css.map +0 -1
  1328. package/icon/icon.d.ts +0 -91
  1329. package/icon/icon.js +0 -264
  1330. package/icon/icon.js.map +0 -1
  1331. package/icon/icon.metadata.json +0 -1
  1332. package/icon/icon.scss +0 -13
  1333. package/icon/index.js +0 -3
  1334. package/icon/index.js.map +0 -1
  1335. package/index.d.ts +0 -25
  1336. package/index.js +0 -27
  1337. package/index.js.map +0 -1
  1338. package/index.metadata.json +0 -1
  1339. package/input/OVERVIEW.md +0 -72
  1340. package/input/README.md +0 -183
  1341. package/input/_input-theme.scss +0 -62
  1342. package/input/autosize.d.ts +0 -29
  1343. package/input/autosize.js +0 -94
  1344. package/input/autosize.js.map +0 -1
  1345. package/input/autosize.metadata.json +0 -1
  1346. package/input/index.js +0 -6
  1347. package/input/index.js.map +0 -1
  1348. package/input/input-container-errors.d.ts +0 -17
  1349. package/input/input-container-errors.js +0 -41
  1350. package/input/input-container-errors.js.map +0 -1
  1351. package/input/input-container-errors.metadata.json +0 -1
  1352. package/input/input-container.css +0 -1
  1353. package/input/input-container.css.map +0 -1
  1354. package/input/input-container.d.ts +0 -95
  1355. package/input/input-container.html +0 -1
  1356. package/input/input-container.js +0 -352
  1357. package/input/input-container.js.map +0 -1
  1358. package/input/input-container.metadata.json +0 -1
  1359. package/input/input-container.scss +0 -32
  1360. package/input/input.css +0 -1
  1361. package/input/input.css.map +0 -1
  1362. package/input/input.d.ts +0 -184
  1363. package/input/input.html +0 -1
  1364. package/input/input.js +0 -564
  1365. package/input/input.js.map +0 -1
  1366. package/input/input.metadata.json +0 -1
  1367. package/input/input.scss +0 -202
  1368. package/list/OVERVIEW.md +0 -124
  1369. package/list/README.md +0 -154
  1370. package/list/_list-theme.scss +0 -28
  1371. package/list/index.js +0 -3
  1372. package/list/index.js.map +0 -1
  1373. package/list/list-item.html +0 -1
  1374. package/list/list.css +0 -1
  1375. package/list/list.css.map +0 -1
  1376. package/list/list.d.ts +0 -23
  1377. package/list/list.js +0 -119
  1378. package/list/list.js.map +0 -1
  1379. package/list/list.metadata.json +0 -1
  1380. package/list/list.scss +0 -181
  1381. package/menu/OVERVIEW.md +0 -62
  1382. package/menu/README.md +0 -171
  1383. package/menu/_menu-theme.scss +0 -29
  1384. package/menu/index.js +0 -7
  1385. package/menu/index.js.map +0 -1
  1386. package/menu/menu-animations.d.ts +0 -19
  1387. package/menu/menu-animations.js +0 -43
  1388. package/menu/menu-animations.js.map +0 -1
  1389. package/menu/menu-animations.metadata.json +0 -1
  1390. package/menu/menu-directive.d.ts +0 -46
  1391. package/menu/menu-directive.js +0 -136
  1392. package/menu/menu-directive.js.map +0 -1
  1393. package/menu/menu-directive.metadata.json +0 -1
  1394. package/menu/menu-errors.d.ts +0 -24
  1395. package/menu/menu-errors.js +0 -43
  1396. package/menu/menu-errors.js.map +0 -1
  1397. package/menu/menu-errors.metadata.json +0 -1
  1398. package/menu/menu-item.d.ts +0 -20
  1399. package/menu/menu-item.html +0 -1
  1400. package/menu/menu-item.js +0 -77
  1401. package/menu/menu-item.js.map +0 -1
  1402. package/menu/menu-item.metadata.json +0 -1
  1403. package/menu/menu-panel.d.ts +0 -10
  1404. package/menu/menu-panel.js +0 -3
  1405. package/menu/menu-panel.js.map +0 -1
  1406. package/menu/menu-positions.d.ts +0 -2
  1407. package/menu/menu-positions.js +0 -3
  1408. package/menu/menu-positions.js.map +0 -1
  1409. package/menu/menu-trigger.d.ts +0 -92
  1410. package/menu/menu-trigger.js +0 -246
  1411. package/menu/menu-trigger.js.map +0 -1
  1412. package/menu/menu-trigger.metadata.json +0 -1
  1413. package/menu/menu.css +0 -1
  1414. package/menu/menu.css.map +0 -1
  1415. package/menu/menu.d.ts +0 -9
  1416. package/menu/menu.html +0 -1
  1417. package/menu/menu.js +0 -40
  1418. package/menu/menu.js.map +0 -1
  1419. package/menu/menu.metadata.json +0 -1
  1420. package/menu/menu.scss +0 -44
  1421. package/module.d.ts +0 -6
  1422. package/module.js +0 -132
  1423. package/module.js.map +0 -1
  1424. package/module.metadata.json +0 -1
  1425. package/progress-bar/OVERVIEW.md +0 -30
  1426. package/progress-bar/README.md +0 -54
  1427. package/progress-bar/_progress-bar-theme.scss +0 -70
  1428. package/progress-bar/index.js +0 -3
  1429. package/progress-bar/index.js.map +0 -1
  1430. package/progress-bar/progress-bar.css +0 -1
  1431. package/progress-bar/progress-bar.css.map +0 -1
  1432. package/progress-bar/progress-bar.d.ts +0 -36
  1433. package/progress-bar/progress-bar.html +0 -1
  1434. package/progress-bar/progress-bar.js +0 -124
  1435. package/progress-bar/progress-bar.js.map +0 -1
  1436. package/progress-bar/progress-bar.metadata.json +0 -1
  1437. package/progress-bar/progress-bar.scss +0 -230
  1438. package/progress-spinner/OVERVIEW.md +0 -23
  1439. package/progress-spinner/README.md +0 -51
  1440. package/progress-spinner/_progress-spinner-theme.scss +0 -23
  1441. package/progress-spinner/index.js +0 -4
  1442. package/progress-spinner/index.js.map +0 -1
  1443. package/progress-spinner/progress-circle.d.ts +0 -4
  1444. package/progress-spinner/progress-circle.js +0 -6
  1445. package/progress-spinner/progress-circle.js.map +0 -1
  1446. package/progress-spinner/progress-circle.metadata.json +0 -1
  1447. package/progress-spinner/progress-spinner.css +0 -1
  1448. package/progress-spinner/progress-spinner.css.map +0 -1
  1449. package/progress-spinner/progress-spinner.d.ts +0 -80
  1450. package/progress-spinner/progress-spinner.html +0 -1
  1451. package/progress-spinner/progress-spinner.js +0 -337
  1452. package/progress-spinner/progress-spinner.js.map +0 -1
  1453. package/progress-spinner/progress-spinner.metadata.json +0 -1
  1454. package/progress-spinner/progress-spinner.scss +0 -68
  1455. package/radio/OVERVIEW.md +0 -29
  1456. package/radio/README.md +0 -55
  1457. package/radio/_radio-theme.scss +0 -39
  1458. package/radio/index.js +0 -3
  1459. package/radio/index.js.map +0 -1
  1460. package/radio/radio.css +0 -1
  1461. package/radio/radio.css.map +0 -1
  1462. package/radio/radio.d.ts +0 -179
  1463. package/radio/radio.html +0 -1
  1464. package/radio/radio.js +0 -552
  1465. package/radio/radio.js.map +0 -1
  1466. package/radio/radio.metadata.json +0 -1
  1467. package/radio/radio.scss +0 -102
  1468. package/select/OVERVIEW.md +0 -8
  1469. package/select/README.md +0 -3
  1470. package/select/_select-theme.scss +0 -64
  1471. package/select/index.js +0 -38
  1472. package/select/index.js.map +0 -1
  1473. package/select/option.d.ts +0 -44
  1474. package/select/option.html +0 -1
  1475. package/select/option.js +0 -135
  1476. package/select/option.js.map +0 -1
  1477. package/select/option.metadata.json +0 -1
  1478. package/select/select-animations.d.ts +0 -29
  1479. package/select/select-animations.js +0 -66
  1480. package/select/select-animations.js.map +0 -1
  1481. package/select/select-animations.metadata.json +0 -1
  1482. package/select/select.css +0 -1
  1483. package/select/select.css.map +0 -1
  1484. package/select/select.d.ts +0 -258
  1485. package/select/select.html +0 -1
  1486. package/select/select.js +0 -604
  1487. package/select/select.js.map +0 -1
  1488. package/select/select.metadata.json +0 -1
  1489. package/select/select.scss +0 -131
  1490. package/sidenav/OVERVIEW.md +0 -70
  1491. package/sidenav/README.md +0 -166
  1492. package/sidenav/_sidenav-theme.scss +0 -37
  1493. package/sidenav/index.js +0 -3
  1494. package/sidenav/index.js.map +0 -1
  1495. package/sidenav/sidenav-container.html +0 -1
  1496. package/sidenav/sidenav-transitions.css +0 -1
  1497. package/sidenav/sidenav-transitions.css.map +0 -1
  1498. package/sidenav/sidenav-transitions.scss +0 -14
  1499. package/sidenav/sidenav.css +0 -1
  1500. package/sidenav/sidenav.css.map +0 -1
  1501. package/sidenav/sidenav.d.ts +0 -182
  1502. package/sidenav/sidenav.html +0 -1
  1503. package/sidenav/sidenav.js +0 -580
  1504. package/sidenav/sidenav.js.map +0 -1
  1505. package/sidenav/sidenav.metadata.json +0 -1
  1506. package/sidenav/sidenav.scss +0 -151
  1507. package/slide-toggle/OVERVIEW.md +0 -24
  1508. package/slide-toggle/README.md +0 -66
  1509. package/slide-toggle/_slide-toggle-theme.scss +0 -89
  1510. package/slide-toggle/index.js +0 -3
  1511. package/slide-toggle/index.js.map +0 -1
  1512. package/slide-toggle/slide-toggle.css +0 -1
  1513. package/slide-toggle/slide-toggle.css.map +0 -1
  1514. package/slide-toggle/slide-toggle.d.ts +0 -84
  1515. package/slide-toggle/slide-toggle.html +0 -1
  1516. package/slide-toggle/slide-toggle.js +0 -347
  1517. package/slide-toggle/slide-toggle.js.map +0 -1
  1518. package/slide-toggle/slide-toggle.metadata.json +0 -1
  1519. package/slide-toggle/slide-toggle.scss +0 -158
  1520. package/slider/OVERVIEW.md +0 -87
  1521. package/slider/README.md +0 -150
  1522. package/slider/_slider-theme.scss +0 -32
  1523. package/slider/index.js +0 -3
  1524. package/slider/index.js.map +0 -1
  1525. package/slider/slider.css +0 -1
  1526. package/slider/slider.css.map +0 -1
  1527. package/slider/slider.d.ts +0 -176
  1528. package/slider/slider.html +0 -1
  1529. package/slider/slider.js +0 -609
  1530. package/slider/slider.js.map +0 -1
  1531. package/slider/slider.metadata.json +0 -1
  1532. package/slider/slider.scss +0 -307
  1533. package/slider/test-gesture-config.d.ts +0 -21
  1534. package/slider/test-gesture-config.js +0 -60
  1535. package/slider/test-gesture-config.js.map +0 -1
  1536. package/slider/test-gesture-config.metadata.json +0 -1
  1537. package/snack-bar/OVERVIEW.md +0 -47
  1538. package/snack-bar/README.md +0 -37
  1539. package/snack-bar/index.js +0 -6
  1540. package/snack-bar/index.js.map +0 -1
  1541. package/snack-bar/simple-snack-bar.css +0 -1
  1542. package/snack-bar/simple-snack-bar.css.map +0 -1
  1543. package/snack-bar/simple-snack-bar.d.ts +0 -17
  1544. package/snack-bar/simple-snack-bar.html +0 -1
  1545. package/snack-bar/simple-snack-bar.js +0 -38
  1546. package/snack-bar/simple-snack-bar.js.map +0 -1
  1547. package/snack-bar/simple-snack-bar.metadata.json +0 -1
  1548. package/snack-bar/simple-snack-bar.scss +0 -28
  1549. package/snack-bar/snack-bar-config.d.ts +0 -15
  1550. package/snack-bar/snack-bar-config.js +0 -18
  1551. package/snack-bar/snack-bar-config.js.map +0 -1
  1552. package/snack-bar/snack-bar-config.metadata.json +0 -1
  1553. package/snack-bar/snack-bar-container.css +0 -1
  1554. package/snack-bar/snack-bar-container.css.map +0 -1
  1555. package/snack-bar/snack-bar-container.d.ts +0 -43
  1556. package/snack-bar/snack-bar-container.html +0 -1
  1557. package/snack-bar/snack-bar-container.js +0 -124
  1558. package/snack-bar/snack-bar-container.js.map +0 -1
  1559. package/snack-bar/snack-bar-container.metadata.json +0 -1
  1560. package/snack-bar/snack-bar-container.scss +0 -27
  1561. package/snack-bar/snack-bar-errors.d.ts +0 -8
  1562. package/snack-bar/snack-bar-errors.js +0 -19
  1563. package/snack-bar/snack-bar-errors.js.map +0 -1
  1564. package/snack-bar/snack-bar-errors.metadata.json +0 -1
  1565. package/snack-bar/snack-bar-ref.d.ts +0 -38
  1566. package/snack-bar/snack-bar-ref.js +0 -70
  1567. package/snack-bar/snack-bar-ref.js.map +0 -1
  1568. package/snack-bar/snack-bar-ref.metadata.json +0 -1
  1569. package/snack-bar/snack-bar.d.ts +0 -45
  1570. package/snack-bar/snack-bar.js +0 -145
  1571. package/snack-bar/snack-bar.js.map +0 -1
  1572. package/snack-bar/snack-bar.metadata.json +0 -1
  1573. package/system-config-spec.d.ts +0 -2
  1574. package/tabs/OVERVIEW.md +0 -81
  1575. package/tabs/README.md +0 -64
  1576. package/tabs/Tabs Pagination.png +0 -0
  1577. package/tabs/_tabs-common.scss +0 -42
  1578. package/tabs/_tabs-theme.scss +0 -24
  1579. package/tabs/index.js +0 -9
  1580. package/tabs/index.js.map +0 -1
  1581. package/tabs/ink-bar.d.ts +0 -27
  1582. package/tabs/ink-bar.js +0 -58
  1583. package/tabs/ink-bar.js.map +0 -1
  1584. package/tabs/ink-bar.metadata.json +0 -1
  1585. package/tabs/tab-body.d.ts +0 -59
  1586. package/tabs/tab-body.html +0 -1
  1587. package/tabs/tab-body.js +0 -157
  1588. package/tabs/tab-body.js.map +0 -1
  1589. package/tabs/tab-body.metadata.json +0 -1
  1590. package/tabs/tab-group.css +0 -1
  1591. package/tabs/tab-group.css.map +0 -1
  1592. package/tabs/tab-group.d.ts +0 -71
  1593. package/tabs/tab-group.html +0 -1
  1594. package/tabs/tab-group.js +0 -236
  1595. package/tabs/tab-group.js.map +0 -1
  1596. package/tabs/tab-group.metadata.json +0 -1
  1597. package/tabs/tab-group.scss +0 -59
  1598. package/tabs/tab-header.css +0 -1
  1599. package/tabs/tab-header.css.map +0 -1
  1600. package/tabs/tab-header.d.ts +0 -137
  1601. package/tabs/tab-header.html +0 -1
  1602. package/tabs/tab-header.js +0 -354
  1603. package/tabs/tab-header.js.map +0 -1
  1604. package/tabs/tab-header.metadata.json +0 -1
  1605. package/tabs/tab-header.scss +0 -85
  1606. package/tabs/tab-label-wrapper.d.ts +0 -15
  1607. package/tabs/tab-label-wrapper.js +0 -53
  1608. package/tabs/tab-label-wrapper.js.map +0 -1
  1609. package/tabs/tab-label-wrapper.metadata.json +0 -1
  1610. package/tabs/tab-label.d.ts +0 -6
  1611. package/tabs/tab-label.js +0 -32
  1612. package/tabs/tab-label.js.map +0 -1
  1613. package/tabs/tab-label.metadata.json +0 -1
  1614. package/tabs/tab-nav-bar/index.d.ts +0 -1
  1615. package/tabs/tab-nav-bar/index.js +0 -3
  1616. package/tabs/tab-nav-bar/index.js.map +0 -1
  1617. package/tabs/tab-nav-bar/index.metadata.json +0 -1
  1618. package/tabs/tab-nav-bar/tab-nav-bar.css +0 -1
  1619. package/tabs/tab-nav-bar/tab-nav-bar.css.map +0 -1
  1620. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +0 -37
  1621. package/tabs/tab-nav-bar/tab-nav-bar.html +0 -1
  1622. package/tabs/tab-nav-bar/tab-nav-bar.js +0 -103
  1623. package/tabs/tab-nav-bar/tab-nav-bar.js.map +0 -1
  1624. package/tabs/tab-nav-bar/tab-nav-bar.metadata.json +0 -1
  1625. package/tabs/tab-nav-bar/tab-nav-bar.scss +0 -26
  1626. package/tabs/tab.d.ts +0 -30
  1627. package/tabs/tab.html +0 -1
  1628. package/tabs/tab.js +0 -74
  1629. package/tabs/tab.js.map +0 -1
  1630. package/tabs/tab.metadata.json +0 -1
  1631. package/toolbar/OVERVIEW.md +0 -51
  1632. package/toolbar/README.md +0 -68
  1633. package/toolbar/_toolbar-theme.scss +0 -33
  1634. package/toolbar/index.js +0 -3
  1635. package/toolbar/index.js.map +0 -1
  1636. package/toolbar/toolbar.css +0 -1
  1637. package/toolbar/toolbar.css.map +0 -1
  1638. package/toolbar/toolbar.d.ts +0 -16
  1639. package/toolbar/toolbar.html +0 -1
  1640. package/toolbar/toolbar.js +0 -84
  1641. package/toolbar/toolbar.js.map +0 -1
  1642. package/toolbar/toolbar.metadata.json +0 -1
  1643. package/toolbar/toolbar.scss +0 -58
  1644. package/tooltip/OVERVIEW.md +0 -35
  1645. package/tooltip/README.md +0 -28
  1646. package/tooltip/_tooltip-theme.scss +0 -9
  1647. package/tooltip/index.js +0 -3
  1648. package/tooltip/index.js.map +0 -1
  1649. package/tooltip/tooltip-errors.d.ts +0 -8
  1650. package/tooltip/tooltip-errors.js +0 -19
  1651. package/tooltip/tooltip-errors.js.map +0 -1
  1652. package/tooltip/tooltip-errors.metadata.json +0 -1
  1653. package/tooltip/tooltip.css +0 -1
  1654. package/tooltip/tooltip.css.map +0 -1
  1655. package/tooltip/tooltip.d.ts +0 -116
  1656. package/tooltip/tooltip.html +0 -1
  1657. package/tooltip/tooltip.js +0 -387
  1658. package/tooltip/tooltip.js.map +0 -1
  1659. package/tooltip/tooltip.metadata.json +0 -1
  1660. package/tooltip/tooltip.scss +0 -26
  1661. package/tsconfig-srcs.json +0 -31
  1662. package/tsconfig.json +0 -34
  1663. package/typedoc.json +0 -20
  1664. package/typings.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","material/core.es5.js","material/form-field.es5.js","material/autocomplete.es5.js","material/button.es5.js","material/button-toggle.es5.js","material/card.es5.js","material/checkbox.es5.js","material/chips.es5.js","material/dialog.es5.js","material/icon.es5.js","material/datepicker.es5.js","material/expansion.es5.js","material/grid-list.es5.js","material/input.es5.js","material/list.es5.js","material/menu.es5.js","material/select.es5.js","material/tooltip.es5.js","material/paginator.es5.js","material/progress-bar.es5.js","material/progress-spinner.es5.js","material/radio.es5.js","material/sidenav.es5.js","material/slide-toggle.es5.js","material/slider.es5.js","material/snack-bar.es5.js","material/sort.es5.js","material/stepper.es5.js","material/table.es5.js","material/tabs.es5.js","material/toolbar.es5.js","material.es5.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Input, LOCALE_ID, NgModule, NgZone, Optional, Output, ViewEncapsulation, isDevMode } from '@angular/core';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs/Subject';\nimport { HammerGestureConfig } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\n\n/**\n * \\@docs-private\n */\nvar AnimationCurves = (function () {\n function AnimationCurves() {\n }\n AnimationCurves.STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\n AnimationCurves.DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\n AnimationCurves.ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\n AnimationCurves.SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n return AnimationCurves;\n}());\n/**\n * \\@docs-private\n */\nvar AnimationDurations = (function () {\n function AnimationDurations() {\n }\n AnimationDurations.COMPLEX = '375ms';\n AnimationDurations.ENTERING = '225ms';\n AnimationDurations.EXITING = '195ms';\n return AnimationDurations;\n}());\n\nvar MATERIAL_COMPATIBILITY_MODE = new InjectionToken('md-compatibility-mode');\n/**\n * Selector that matches all elements that may have style collisions with AngularJS Material.\n */\nvar MAT_ELEMENTS_SELECTOR = \"\\n [mat-button],\\n [mat-fab],\\n [mat-icon-button],\\n [mat-mini-fab],\\n [mat-raised-button],\\n [matCardSubtitle],\\n [matCardTitle],\\n [matCellDef],\\n [matColumnDef],\\n [matDialogActions],\\n [matDialogClose],\\n [matDialogContent],\\n [matDialogTitle],\\n [matHeaderCellDef],\\n [matHeaderRowDef],\\n [matLine],\\n [matRowDef],\\n [matStepLabel],\\n [matStepperNext],\\n [matStepperPrevious],\\n [matTabLabel],\\n [matTabLink],\\n [matTabNav],\\n [matTooltip],\\n [matInput],\\n [matPrefix],\\n [matSuffix],\\n mat-autocomplete,\\n mat-button-toggle,\\n mat-button-toggle,\\n mat-button-toggle-group,\\n mat-card,\\n mat-card-actions,\\n mat-card-content,\\n mat-card-footer,\\n mat-card-header,\\n mat-card-subtitle,\\n mat-card-title,\\n mat-card-title-group,\\n mat-cell,\\n mat-checkbox,\\n mat-chip,\\n mat-dialog-actions,\\n mat-dialog-container,\\n mat-dialog-content,\\n mat-divider,\\n mat-error,\\n mat-grid-list,\\n mat-grid-tile,\\n mat-grid-tile-footer,\\n mat-grid-tile-header,\\n mat-header-cell,\\n mat-header-row,\\n mat-hint,\\n mat-horizontal-stepper,\\n mat-icon,\\n mat-input-container,\\n mat-form-field,\\n mat-list,\\n mat-list-item,\\n mat-menu,\\n mat-nav-list,\\n mat-option,\\n mat-placeholder,\\n mat-progress-bar,\\n mat-pseudo-checkbox,\\n mat-radio-button,\\n mat-radio-group,\\n mat-row,\\n mat-select,\\n mat-sidenav,\\n mat-sidenav-container,\\n mat-slider,\\n mat-spinner,\\n mat-step,\\n mat-tab,\\n mat-table,\\n mat-tab-group,\\n mat-toolbar,\\n mat-vertical-stepper\";\n/**\n * Selector that matches all elements that may have style collisions with AngularJS Material.\n */\nvar MD_ELEMENTS_SELECTOR = \"\\n [md-button],\\n [md-fab],\\n [md-icon-button],\\n [md-mini-fab],\\n [md-raised-button],\\n [mdCardSubtitle],\\n [mdCardTitle],\\n [mdCellDef],\\n [mdColumnDef],\\n [mdDialogActions],\\n [mdDialogClose],\\n [mdDialogContent],\\n [mdDialogTitle],\\n [mdHeaderCellDef],\\n [mdHeaderRowDef],\\n [mdLine],\\n [mdRowDef],\\n [mdStepLabel],\\n [mdStepperNext],\\n [mdStepperPrevious],\\n [mdTabLabel],\\n [mdTabLink],\\n [mdTabNav],\\n [mdTooltip],\\n [mdInput],\\n [mdPrefix],\\n [mdSuffix],\\n md-autocomplete,\\n md-button-toggle,\\n md-button-toggle,\\n md-button-toggle-group,\\n md-card,\\n md-card-actions,\\n md-card-content,\\n md-card-footer,\\n md-card-header,\\n md-card-subtitle,\\n md-card-title,\\n md-card-title-group,\\n md-cell,\\n md-checkbox,\\n md-chip,\\n md-dialog-actions,\\n md-dialog-container,\\n md-dialog-content,\\n md-divider,\\n md-error,\\n md-grid-list,\\n md-grid-tile,\\n md-grid-tile-footer,\\n md-grid-tile-header,\\n md-header-cell,\\n md-header-row,\\n md-hint,\\n md-horizontal-stepper,\\n md-icon,\\n md-input-container,\\n md-form-field,\\n md-list,\\n md-list-item,\\n md-menu,\\n md-nav-list,\\n md-option,\\n md-placeholder,\\n md-progress-bar,\\n md-pseudo-checkbox,\\n md-radio-button,\\n md-radio-group,\\n md-row,\\n md-select,\\n md-sidenav,\\n md-sidenav-container,\\n md-slider,\\n md-spinner,\\n md-step,\\n md-tab,\\n md-table,\\n md-tab-group,\\n md-toolbar,\\n md-vertical-stepper\";\n/**\n * Directive that enforces that the `mat-` prefix cannot be used.\n */\nvar MatPrefixRejector = (function () {\n function MatPrefixRejector() {\n }\n MatPrefixRejector.decorators = [\n { type: Directive, args: [{ selector: MAT_ELEMENTS_SELECTOR },] },\n ];\n /**\n * @nocollapse\n */\n MatPrefixRejector.ctorParameters = function () { return []; };\n return MatPrefixRejector;\n}());\n/**\n * Directive that enforces that the `md-` prefix cannot be used.\n */\nvar MdPrefixRejector = (function () {\n function MdPrefixRejector() {\n }\n MdPrefixRejector.decorators = [\n { type: Directive, args: [{ selector: MD_ELEMENTS_SELECTOR },] },\n ];\n /**\n * @nocollapse\n */\n MdPrefixRejector.ctorParameters = function () { return []; };\n return MdPrefixRejector;\n}());\n/**\n * Module that enforces the default compatibility mode settings. When this module is loaded\n * without NoConflictStyleCompatibilityMode also being imported, it will throw an error if\n * there are any uses of the `mat-` prefix.\n */\nvar CompatibilityModule = (function () {\n function CompatibilityModule() {\n }\n CompatibilityModule.decorators = [\n { type: NgModule, args: [{\n declarations: [MatPrefixRejector, MdPrefixRejector],\n exports: [MatPrefixRejector, MdPrefixRejector],\n },] },\n ];\n /**\n * @nocollapse\n */\n CompatibilityModule.ctorParameters = function () { return []; };\n return CompatibilityModule;\n}());\n/**\n * Module that enforces \"no-conflict\" compatibility mode settings. When this module is loaded,\n * it will throw an error if there are any uses of the `md-` prefix.\n */\nvar NoConflictStyleCompatibilityMode = (function () {\n function NoConflictStyleCompatibilityMode() {\n }\n NoConflictStyleCompatibilityMode.decorators = [\n { type: NgModule },\n ];\n /**\n * @nocollapse\n */\n NoConflictStyleCompatibilityMode.ctorParameters = function () { return []; };\n return NoConflictStyleCompatibilityMode;\n}());\n\n/**\n * Injection token that configures whether the Material sanity checks are enabled.\n */\nvar MATERIAL_SANITY_CHECKS = new InjectionToken('mat-sanity-checks');\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, compatibility mode, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\nvar MatCommonModule = (function () {\n /**\n * @param {?} sanityChecksEnabled\n */\n function MatCommonModule(sanityChecksEnabled) {\n /**\n * Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype).\n */\n this._hasDoneGlobalChecks = false;\n /**\n * Reference to the global `document` object.\n */\n this._document = typeof document === 'object' && document ? document : null;\n if (sanityChecksEnabled && !this._hasDoneGlobalChecks && isDevMode()) {\n this._checkDoctype();\n this._checkTheme();\n this._hasDoneGlobalChecks = true;\n }\n }\n /**\n * @return {?}\n */\n MatCommonModule.prototype._checkDoctype = function () {\n if (this._document && !this._document.doctype) {\n console.warn('Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.');\n }\n };\n /**\n * @return {?}\n */\n MatCommonModule.prototype._checkTheme = function () {\n if (this._document && typeof getComputedStyle === 'function') {\n var /** @type {?} */ testElement = this._document.createElement('div');\n testElement.classList.add('mat-theme-loaded-marker');\n this._document.body.appendChild(testElement);\n var /** @type {?} */ computedStyle = getComputedStyle(testElement);\n // In some situations, the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn('Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming');\n }\n this._document.body.removeChild(testElement);\n }\n };\n MatCommonModule.decorators = [\n { type: NgModule, args: [{\n imports: [CompatibilityModule, BidiModule],\n exports: [CompatibilityModule, BidiModule],\n providers: [{\n provide: MATERIAL_SANITY_CHECKS, useValue: true,\n }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCommonModule.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MATERIAL_SANITY_CHECKS,] },] },\n ]; };\n return MatCommonModule;\n}());\n\n/**\n * Mixin to augment a directive with a `disabled` property.\n * @template T\n * @param {?} base\n * @return {?}\n */\nfunction mixinDisabled(base) {\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n _this._disabled = false;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"disabled\", {\n /**\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * Mixin to augment a directive with a `color` property.\n * @template T\n * @param {?} base\n * @param {?=} defaultColor\n * @return {?}\n */\nfunction mixinColor(base, defaultColor) {\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n // Set the default color that can be specified from the mixin.\n _this.color = defaultColor;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"color\", {\n /**\n * @return {?}\n */\n get: function () { return this._color; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ colorPalette = value || defaultColor;\n if (colorPalette !== this._color) {\n if (this._color) {\n this._renderer.removeClass(this._elementRef.nativeElement, \"mat-\" + this._color);\n }\n if (colorPalette) {\n this._renderer.addClass(this._elementRef.nativeElement, \"mat-\" + colorPalette);\n }\n this._color = colorPalette;\n }\n },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * Mixin to augment a directive with a `disableRipple` property.\n * @template T\n * @param {?} base\n * @return {?}\n */\nfunction mixinDisableRipple(base) {\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n _this._disableRipple = false;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"disableRipple\", {\n /**\n * Whether the ripple effect is disabled or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disableRipple = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * Mixin to augment a directive with a `tabIndex` property.\n * @template T\n * @param {?} base\n * @param {?=} defaultTabIndex\n * @return {?}\n */\nfunction mixinTabIndex(base, defaultTabIndex) {\n if (defaultTabIndex === void 0) { defaultTabIndex = 0; }\n return (function (_super) {\n __extends(class_1, _super);\n /**\n * @param {...?} args\n */\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n _this._tabIndex = defaultTabIndex;\n return _this;\n }\n Object.defineProperty(class_1.prototype, \"tabIndex\", {\n /**\n * @return {?}\n */\n get: function () { return this.disabled ? -1 : this._tabIndex; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? value : defaultTabIndex;\n },\n enumerable: true,\n configurable: true\n });\n return class_1;\n }(base));\n}\n\n/**\n * InjectionToken for datepicker that can be used to override default locale code.\n */\nvar MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE');\n/**\n * Provider for MAT_DATE_LOCALE injection token.\n */\nvar MAT_DATE_LOCALE_PROVIDER = { provide: MAT_DATE_LOCALE, useExisting: LOCALE_ID };\n/**\n * Adapts type `D` to be usable as a date by cdk-based components that work with dates.\n * @abstract\n */\nvar DateAdapter = (function () {\n function DateAdapter() {\n this._localeChanges = new Subject();\n }\n Object.defineProperty(DateAdapter.prototype, \"localeChanges\", {\n /**\n * A stream that emits when the locale changes.\n * @return {?}\n */\n get: function () { return this._localeChanges; },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the year component of the given date.\n * @abstract\n * @param {?} date The date to extract the year from.\n * @return {?} The year component.\n */\n DateAdapter.prototype.getYear = function (date) { };\n /**\n * Gets the month component of the given date.\n * @abstract\n * @param {?} date The date to extract the month from.\n * @return {?} The month component (0-indexed, 0 = January).\n */\n DateAdapter.prototype.getMonth = function (date) { };\n /**\n * Gets the date of the month component of the given date.\n * @abstract\n * @param {?} date The date to extract the date of the month from.\n * @return {?} The month component (1-indexed, 1 = first of month).\n */\n DateAdapter.prototype.getDate = function (date) { };\n /**\n * Gets the day of the week component of the given date.\n * @abstract\n * @param {?} date The date to extract the day of the week from.\n * @return {?} The month component (0-indexed, 0 = Sunday).\n */\n DateAdapter.prototype.getDayOfWeek = function (date) { };\n /**\n * Gets a list of names for the months.\n * @abstract\n * @param {?} style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @return {?} An ordered list of all month names, starting with January.\n */\n DateAdapter.prototype.getMonthNames = function (style) { };\n /**\n * Gets a list of names for the dates of the month.\n * @abstract\n * @return {?} An ordered list of all date of the month names, starting with '1'.\n */\n DateAdapter.prototype.getDateNames = function () { };\n /**\n * Gets a list of names for the days of the week.\n * @abstract\n * @param {?} style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @return {?} An ordered list of all weekday names, starting with Sunday.\n */\n DateAdapter.prototype.getDayOfWeekNames = function (style) { };\n /**\n * Gets the name for the year of the given date.\n * @abstract\n * @param {?} date The date to get the year name for.\n * @return {?} The name of the given year (e.g. '2017').\n */\n DateAdapter.prototype.getYearName = function (date) { };\n /**\n * Gets the first day of the week.\n * @abstract\n * @return {?} The first day of the week (0-indexed, 0 = Sunday).\n */\n DateAdapter.prototype.getFirstDayOfWeek = function () { };\n /**\n * Gets the number of days in the month of the given date.\n * @abstract\n * @param {?} date The date whose month should be checked.\n * @return {?} The number of days in the month of the given date.\n */\n DateAdapter.prototype.getNumDaysInMonth = function (date) { };\n /**\n * Clones the given date.\n * @abstract\n * @param {?} date The date to clone\n * @return {?} A new date equal to the given date.\n */\n DateAdapter.prototype.clone = function (date) { };\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @abstract\n * @param {?} year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param {?} month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param {?} date The date of month of the date. Must be an integer 1 - length of the given month.\n * @return {?} The new date, or null if invalid.\n */\n DateAdapter.prototype.createDate = function (year, month, date) { };\n /**\n * Gets today's date.\n * @abstract\n * @return {?} Today's date.\n */\n DateAdapter.prototype.today = function () { };\n /**\n * Parses a date from a value.\n * @abstract\n * @param {?} value The value to parse.\n * @param {?} parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @return {?} The parsed date.\n */\n DateAdapter.prototype.parse = function (value, parseFormat) { };\n /**\n * Formats a date as a string.\n * @abstract\n * @param {?} date The value to format.\n * @param {?} displayFormat The format to use to display the date as a string.\n * @return {?} The formatted date string.\n */\n DateAdapter.prototype.format = function (date, displayFormat) { };\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @abstract\n * @param {?} date The date to add years to.\n * @param {?} years The number of years to add (may be negative).\n * @return {?} A new date equal to the given one with the specified number of years added.\n */\n DateAdapter.prototype.addCalendarYears = function (date, years) { };\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @abstract\n * @param {?} date The date to add months to.\n * @param {?} months The number of months to add (may be negative).\n * @return {?} A new date equal to the given one with the specified number of months added.\n */\n DateAdapter.prototype.addCalendarMonths = function (date, months) { };\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @abstract\n * @param {?} date The date to add days to.\n * @param {?} days The number of days to add (may be negative).\n * @return {?} A new date equal to the given one with the specified number of days added.\n */\n DateAdapter.prototype.addCalendarDays = function (date, days) { };\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * @abstract\n * @param {?} date The date to get the ISO date string for.\n * @return {?} The ISO date string date string.\n */\n DateAdapter.prototype.toIso8601 = function (date) { };\n /**\n * Creates a date from an RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339).\n * @abstract\n * @param {?} iso8601String The ISO date string to create a date from\n * @return {?} The date created from the ISO date string.\n */\n DateAdapter.prototype.fromIso8601 = function (iso8601String) { };\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @abstract\n * @param {?} obj The object to check\n * @return {?} Whether the object is a date instance.\n */\n DateAdapter.prototype.isDateInstance = function (obj) { };\n /**\n * Checks whether the given date is valid.\n * @abstract\n * @param {?} date The date to check.\n * @return {?} Whether the date is valid.\n */\n DateAdapter.prototype.isValid = function (date) { };\n /**\n * Sets the locale used for all dates.\n * @param {?} locale The new locale.\n * @return {?}\n */\n DateAdapter.prototype.setLocale = function (locale) {\n this.locale = locale;\n this._localeChanges.next();\n };\n /**\n * Compares two dates.\n * @param {?} first The first date to compare.\n * @param {?} second The second date to compare.\n * @return {?} 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n DateAdapter.prototype.compareDate = function (first, second) {\n return this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second);\n };\n /**\n * Checks if two dates are equal.\n * @param {?} first The first date to check.\n * @param {?} second The second date to check.\n * Null dates are considered equal to other null dates.\n * @return {?}\n */\n DateAdapter.prototype.sameDate = function (first, second) {\n return first && second ? !this.compareDate(first, second) : first == second;\n };\n /**\n * Clamp the given date between min and max dates.\n * @param {?} date The date to clamp.\n * @param {?=} min The minimum value to allow. If null or omitted no min is enforced.\n * @param {?=} max The maximum value to allow. If null or omitted no max is enforced.\n * @return {?} `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n DateAdapter.prototype.clampDate = function (date, min, max) {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n };\n return DateAdapter;\n}());\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param {?} dest The object which will have properties copied to it.\n * @param {...?} sources The source objects from which properties will be copied.\n * @return {?}\n */\nfunction extendObject(dest) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n var source = sources_1[_a];\n if (source != null) {\n for (var /** @type {?} */ key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n return dest;\n}\n\n/**\n * Whether the browser supports the Intl API.\n */\nvar SUPPORTS_INTL_API = typeof Intl != 'undefined';\n/**\n * The default month names to use if Intl API is not available.\n */\nvar DEFAULT_MONTH_NAMES = {\n 'long': [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\n 'October', 'November', 'December'\n ],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n/**\n * The default date names to use if Intl API is not available.\n */\nvar DEFAULT_DATE_NAMES = range(31, function (i) { return String(i + 1); });\n/**\n * The default day of the week names to use if Intl API is not available.\n */\nvar DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nvar ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/**\n * Creates an array and fills it with values.\n * @template T\n * @param {?} length\n * @param {?} valueFunction\n * @return {?}\n */\nfunction range(length, valueFunction) {\n var /** @type {?} */ valuesArray = Array(length);\n for (var /** @type {?} */ i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/**\n * Adapts the native JS Date for use with cdk-based components that work with dates.\n */\nvar NativeDateAdapter = (function (_super) {\n __extends(NativeDateAdapter, _super);\n /**\n * @param {?} matDateLocale\n */\n function NativeDateAdapter(matDateLocale) {\n var _this = _super.call(this) || this;\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n _this.useUtcForDisplay = true;\n _super.prototype.setLocale.call(_this, matDateLocale);\n return _this;\n }\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getYear = function (date) {\n return date.getFullYear();\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getMonth = function (date) {\n return date.getMonth();\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getDate = function (date) {\n return date.getDate();\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getDayOfWeek = function (date) {\n return date.getDay();\n };\n /**\n * @param {?} style\n * @return {?}\n */\n NativeDateAdapter.prototype.getMonthNames = function (style) {\n var _this = this;\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf_1 = new Intl.DateTimeFormat(this.locale, { month: style });\n return range(12, function (i) { return _this._stripDirectionalityCharacters(dtf_1.format(new Date(2017, i, 1))); });\n }\n return DEFAULT_MONTH_NAMES[style];\n };\n /**\n * @return {?}\n */\n NativeDateAdapter.prototype.getDateNames = function () {\n var _this = this;\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf_2 = new Intl.DateTimeFormat(this.locale, { day: 'numeric' });\n return range(31, function (i) { return _this._stripDirectionalityCharacters(dtf_2.format(new Date(2017, 0, i + 1))); });\n }\n return DEFAULT_DATE_NAMES;\n };\n /**\n * @param {?} style\n * @return {?}\n */\n NativeDateAdapter.prototype.getDayOfWeekNames = function (style) {\n var _this = this;\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf_3 = new Intl.DateTimeFormat(this.locale, { weekday: style });\n return range(7, function (i) { return _this._stripDirectionalityCharacters(dtf_3.format(new Date(2017, 0, i + 1))); });\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getYearName = function (date) {\n if (SUPPORTS_INTL_API) {\n var /** @type {?} */ dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric' });\n return this._stripDirectionalityCharacters(dtf.format(date));\n }\n return String(this.getYear(date));\n };\n /**\n * @return {?}\n */\n NativeDateAdapter.prototype.getFirstDayOfWeek = function () {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.getNumDaysInMonth = function (date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.clone = function (date) {\n return this.createDate(this.getYear(date), this.getMonth(date), this.getDate(date));\n };\n /**\n * @param {?} year\n * @param {?} month\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.createDate = function (year, month, date) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(\"Invalid month index \\\"\" + month + \"\\\". Month index has to be between 0 and 11.\");\n }\n if (date < 1) {\n throw Error(\"Invalid date \\\"\" + date + \"\\\". Date has to be greater than 0.\");\n }\n var /** @type {?} */ result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month) {\n throw Error(\"Invalid date \\\"\" + date + \"\\\" for month with index \\\"\" + month + \"\\\".\");\n }\n return result;\n };\n /**\n * @return {?}\n */\n NativeDateAdapter.prototype.today = function () {\n return new Date();\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NativeDateAdapter.prototype.parse = function (value) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n };\n /**\n * @param {?} date\n * @param {?} displayFormat\n * @return {?}\n */\n NativeDateAdapter.prototype.format = function (date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n if (SUPPORTS_INTL_API) {\n if (this.useUtcForDisplay) {\n date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n displayFormat = extendObject({}, displayFormat, { timeZone: 'utc' });\n }\n var /** @type {?} */ dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(dtf.format(date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n };\n /**\n * @param {?} date\n * @param {?} years\n * @return {?}\n */\n NativeDateAdapter.prototype.addCalendarYears = function (date, years) {\n return this.addCalendarMonths(date, years * 12);\n };\n /**\n * @param {?} date\n * @param {?} months\n * @return {?}\n */\n NativeDateAdapter.prototype.addCalendarMonths = function (date, months) {\n var /** @type {?} */ newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n };\n /**\n * @param {?} date\n * @param {?} days\n * @return {?}\n */\n NativeDateAdapter.prototype.addCalendarDays = function (date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.toIso8601 = function (date) {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate())\n ].join('-');\n };\n /**\n * @param {?} iso8601String\n * @return {?}\n */\n NativeDateAdapter.prototype.fromIso8601 = function (iso8601String) {\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(iso8601String)) {\n var /** @type {?} */ d = new Date(iso8601String);\n if (this.isValid(d)) {\n return d;\n }\n }\n return null;\n };\n /**\n * @param {?} obj\n * @return {?}\n */\n NativeDateAdapter.prototype.isDateInstance = function (obj) {\n return obj instanceof Date;\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype.isValid = function (date) {\n return !isNaN(date.getTime());\n };\n /**\n * Creates a date but allows the month and date to overflow.\n * @param {?} year\n * @param {?} month\n * @param {?} date\n * @return {?}\n */\n NativeDateAdapter.prototype._createDateWithOverflow = function (year, month, date) {\n var /** @type {?} */ result = new Date(year, month, date);\n // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n // abbreviations for 19xx.\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\n };\n /**\n * Pads a number to make it two digits.\n * @param {?} n The number to pad.\n * @return {?} The padded number.\n */\n NativeDateAdapter.prototype._2digit = function (n) {\n return ('00' + n).slice(-2);\n };\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param {?} str The string to strip direction characters from.\n * @return {?} The stripped string.\n */\n NativeDateAdapter.prototype._stripDirectionalityCharacters = function (str) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n };\n NativeDateAdapter.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n NativeDateAdapter.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_LOCALE,] },] },\n ]; };\n return NativeDateAdapter;\n}(DateAdapter));\n\nvar MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\nvar MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n }\n};\n\nvar NativeDateModule = (function () {\n function NativeDateModule() {\n }\n NativeDateModule.decorators = [\n { type: NgModule, args: [{\n providers: [\n { provide: DateAdapter, useClass: NativeDateAdapter },\n MAT_DATE_LOCALE_PROVIDER\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n NativeDateModule.ctorParameters = function () { return []; };\n return NativeDateModule;\n}());\nvar MatNativeDateModule = (function () {\n function MatNativeDateModule() {\n }\n MatNativeDateModule.decorators = [\n { type: NgModule, args: [{\n imports: [NativeDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatNativeDateModule.ctorParameters = function () { return []; };\n return MatNativeDateModule;\n}());\n\n/**\n * Error state matcher that matches when a control is invalid and dirty.\n */\nvar ShowOnDirtyErrorStateMatcher = (function () {\n function ShowOnDirtyErrorStateMatcher() {\n }\n /**\n * @param {?} control\n * @param {?} form\n * @return {?}\n */\n ShowOnDirtyErrorStateMatcher.prototype.isErrorState = function (control, form) {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n };\n ShowOnDirtyErrorStateMatcher.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n ShowOnDirtyErrorStateMatcher.ctorParameters = function () { return []; };\n return ShowOnDirtyErrorStateMatcher;\n}());\n/**\n * Provider that defines how form controls behave with regards to displaying error messages.\n */\nvar ErrorStateMatcher = (function () {\n function ErrorStateMatcher() {\n }\n /**\n * @param {?} control\n * @param {?} form\n * @return {?}\n */\n ErrorStateMatcher.prototype.isErrorState = function (control, form) {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n };\n ErrorStateMatcher.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n ErrorStateMatcher.ctorParameters = function () { return []; };\n return ErrorStateMatcher;\n}());\n\nvar GestureConfig = (function (_super) {\n __extends(GestureConfig, _super);\n function GestureConfig() {\n var _this = _super.call(this) || this;\n _this._hammer = typeof window !== 'undefined' ? ((window)).Hammer : null;\n /* List of new event names to add to the gesture support list */\n _this.events = _this._hammer ? [\n 'longpress',\n 'slide',\n 'slidestart',\n 'slideend',\n 'slideright',\n 'slideleft'\n ] : [];\n if (!_this._hammer && isDevMode()) {\n console.warn('Could not find HammerJS. Certain Angular Material ' +\n 'components may not work correctly.');\n }\n return _this;\n }\n /**\n * Builds Hammer instance manually to add custom recognizers that match the Material Design spec.\n *\n * Our gesture names come from the Material Design gestures spec:\n * https://www.google.com/design/spec/patterns/gestures.html#gestures-touch-mechanics\n *\n * More information on default recognizers can be found in Hammer docs:\n * http://hammerjs.github.io/recognizer-pan/\n * http://hammerjs.github.io/recognizer-press/\n *\n * @param {?} element Element to which to assign the new HammerJS gestures.\n * @return {?} Newly-created HammerJS instance.\n */\n GestureConfig.prototype.buildHammer = function (element) {\n var /** @type {?} */ mc = new this._hammer(element);\n // Default Hammer Recognizers.\n var /** @type {?} */ pan = new this._hammer.Pan();\n var /** @type {?} */ swipe = new this._hammer.Swipe();\n var /** @type {?} */ press = new this._hammer.Press();\n // Notice that a HammerJS recognizer can only depend on one other recognizer once.\n // Otherwise the previous `recognizeWith` will be dropped.\n // TODO: Confirm threshold numbers with Material Design UX Team\n var /** @type {?} */ slide = this._createRecognizer(pan, { event: 'slide', threshold: 0 }, swipe);\n var /** @type {?} */ longpress = this._createRecognizer(press, { event: 'longpress', time: 500 });\n // Overwrite the default `pan` event to use the swipe event.\n pan.recognizeWith(swipe);\n // Add customized gestures to Hammer manager\n mc.add([swipe, press, pan, slide, longpress]);\n return (mc);\n };\n /**\n * Creates a new recognizer, without affecting the default recognizers of HammerJS\n * @param {?} base\n * @param {?} options\n * @param {...?} inheritances\n * @return {?}\n */\n GestureConfig.prototype._createRecognizer = function (base, options) {\n var inheritances = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n inheritances[_i - 2] = arguments[_i];\n }\n var /** @type {?} */ recognizer = new ((base.constructor))(options);\n inheritances.push(base);\n inheritances.forEach(function (item) { return recognizer.recognizeWith(item); });\n return recognizer;\n };\n GestureConfig.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n GestureConfig.ctorParameters = function () { return []; };\n return GestureConfig;\n}(HammerGestureConfig));\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a \\@ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\nvar MatLine = (function () {\n function MatLine() {\n }\n MatLine.decorators = [\n { type: Directive, args: [{\n selector: '[mat-line], [matLine]',\n host: { 'class': 'mat-line' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatLine.ctorParameters = function () { return []; };\n return MatLine;\n}());\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * \\@docs-private\n */\nvar MatLineSetter = (function () {\n /**\n * @param {?} _lines\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatLineSetter(_lines, _renderer, _element) {\n var _this = this;\n this._lines = _lines;\n this._renderer = _renderer;\n this._element = _element;\n this._setLineClass(this._lines.length);\n this._lines.changes.subscribe(function () {\n _this._setLineClass(_this._lines.length);\n });\n }\n /**\n * @param {?} count\n * @return {?}\n */\n MatLineSetter.prototype._setLineClass = function (count) {\n this._resetClasses();\n if (count === 2 || count === 3) {\n this._setClass(\"mat-\" + count + \"-line\", true);\n }\n else if (count > 3) {\n this._setClass(\"mat-multi-line\", true);\n }\n };\n /**\n * @return {?}\n */\n MatLineSetter.prototype._resetClasses = function () {\n this._setClass('mat-2-line', false);\n this._setClass('mat-3-line', false);\n this._setClass('mat-multi-line', false);\n };\n /**\n * @param {?} className\n * @param {?} isAdd\n * @return {?}\n */\n MatLineSetter.prototype._setClass = function (className, isAdd) {\n if (isAdd) {\n this._renderer.addClass(this._element.nativeElement, className);\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, className);\n }\n };\n return MatLineSetter;\n}());\nvar MatLineModule = (function () {\n function MatLineModule() {\n }\n MatLineModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatLineModule.ctorParameters = function () { return []; };\n return MatLineModule;\n}());\n\nvar RippleState = {};\nRippleState.FADING_IN = 0;\nRippleState.VISIBLE = 1;\nRippleState.FADING_OUT = 2;\nRippleState.HIDDEN = 3;\nRippleState[RippleState.FADING_IN] = \"FADING_IN\";\nRippleState[RippleState.VISIBLE] = \"VISIBLE\";\nRippleState[RippleState.FADING_OUT] = \"FADING_OUT\";\nRippleState[RippleState.HIDDEN] = \"HIDDEN\";\n/**\n * Reference to a previously launched ripple element.\n */\nvar RippleRef = (function () {\n /**\n * @param {?} _renderer\n * @param {?} element\n * @param {?} config\n */\n function RippleRef(_renderer, element, config) {\n this._renderer = _renderer;\n this.element = element;\n this.config = config;\n /**\n * Current state of the ripple reference.\n */\n this.state = RippleState.HIDDEN;\n }\n /**\n * Fades out the ripple element.\n * @return {?}\n */\n RippleRef.prototype.fadeOut = function () {\n this._renderer.fadeOutRipple(this);\n };\n return RippleRef;\n}());\n\n/**\n * Fade-in duration for the ripples. Can be modified with the speedFactor option.\n */\nvar RIPPLE_FADE_IN_DURATION = 450;\n/**\n * Fade-out duration for the ripples in milliseconds. This can't be modified by the speedFactor.\n */\nvar RIPPLE_FADE_OUT_DURATION = 400;\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * \\@docs-private\n */\nvar RippleRenderer = (function () {\n /**\n * @param {?} elementRef\n * @param {?} _ngZone\n * @param {?} platform\n */\n function RippleRenderer(elementRef, _ngZone, platform) {\n this._ngZone = _ngZone;\n /**\n * Whether the pointer is currently being held on the trigger or not.\n */\n this._isPointerDown = false;\n /**\n * Events to be registered on the trigger element.\n */\n this._triggerEvents = new Map();\n /**\n * Set of currently active ripple references.\n */\n this._activeRipples = new Set();\n /**\n * Ripple config for all ripples created by events.\n */\n this.rippleConfig = {};\n /**\n * Whether mouse ripples should be created or not.\n */\n this.rippleDisabled = false;\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = elementRef.nativeElement;\n // Specify events which need to be registered on the trigger.\n this._triggerEvents.set('mousedown', this.onMousedown.bind(this));\n this._triggerEvents.set('touchstart', this.onTouchstart.bind(this));\n this._triggerEvents.set('mouseup', this.onPointerUp.bind(this));\n this._triggerEvents.set('touchend', this.onPointerUp.bind(this));\n this._triggerEvents.set('mouseleave', this.onPointerLeave.bind(this));\n // By default use the host element as trigger element.\n this.setTriggerElement(this._containerElement);\n }\n }\n /**\n * Fades in a ripple at the given coordinates.\n * @param {?} x Coordinate within the element, along the X axis at which to start the ripple.\n * @param {?} y\n * @param {?=} config Extra ripple options.\n * @return {?}\n */\n RippleRenderer.prototype.fadeInRipple = function (x, y, config) {\n var _this = this;\n if (config === void 0) { config = {}; }\n var /** @type {?} */ containerRect = this._containerElement.getBoundingClientRect();\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n var /** @type {?} */ radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n var /** @type {?} */ duration = RIPPLE_FADE_IN_DURATION * (1 / (config.speedFactor || 1));\n var /** @type {?} */ offsetX = x - containerRect.left;\n var /** @type {?} */ offsetY = y - containerRect.top;\n var /** @type {?} */ ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n ripple.style.left = offsetX - radius + \"px\";\n ripple.style.top = offsetY - radius + \"px\";\n ripple.style.height = radius * 2 + \"px\";\n ripple.style.width = radius * 2 + \"px\";\n // If the color is not set, the default CSS color will be used.\n ripple.style.backgroundColor = config.color || null;\n ripple.style.transitionDuration = duration + \"ms\";\n this._containerElement.appendChild(ripple);\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical because then the `scale` would not animate properly.\n enforceStyleRecalculation(ripple);\n ripple.style.transform = 'scale(1)';\n // Exposed reference to the ripple that will be returned.\n var /** @type {?} */ rippleRef = new RippleRef(this, ripple, config);\n rippleRef.state = RippleState.FADING_IN;\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.add(rippleRef);\n // Wait for the ripple element to be completely faded in.\n // Once it's faded in, the ripple can be hidden immediately if the mouse is released.\n this.runTimeoutOutsideZone(function () {\n rippleRef.state = RippleState.VISIBLE;\n if (!config.persistent && !_this._isPointerDown) {\n rippleRef.fadeOut();\n }\n }, duration);\n return rippleRef;\n };\n /**\n * Fades out a ripple reference.\n * @param {?} rippleRef\n * @return {?}\n */\n RippleRenderer.prototype.fadeOutRipple = function (rippleRef) {\n // For ripples that are not active anymore, don't re-un the fade-out animation.\n if (!this._activeRipples.delete(rippleRef)) {\n return;\n }\n var /** @type {?} */ rippleEl = rippleRef.element;\n rippleEl.style.transitionDuration = RIPPLE_FADE_OUT_DURATION + \"ms\";\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n // Once the ripple faded out, the ripple can be safely removed from the DOM.\n this.runTimeoutOutsideZone(function () {\n rippleRef.state = RippleState.HIDDEN; /** @type {?} */\n ((rippleEl.parentNode)).removeChild(rippleEl);\n }, RIPPLE_FADE_OUT_DURATION);\n };\n /**\n * Fades out all currently active ripples.\n * @return {?}\n */\n RippleRenderer.prototype.fadeOutAll = function () {\n this._activeRipples.forEach(function (ripple) { return ripple.fadeOut(); });\n };\n /**\n * Sets the trigger element and registers the mouse events.\n * @param {?} element\n * @return {?}\n */\n RippleRenderer.prototype.setTriggerElement = function (element) {\n var _this = this;\n // Remove all previously register event listeners from the trigger element.\n if (this._triggerElement) {\n this._triggerEvents.forEach(function (fn, type) {\n ((_this._triggerElement)).removeEventListener(type, fn);\n });\n }\n if (element) {\n // If the element is not null, register all event listeners on the trigger element.\n this._ngZone.runOutsideAngular(function () {\n _this._triggerEvents.forEach(function (fn, type) { return element.addEventListener(type, fn); });\n });\n }\n this._triggerElement = element;\n };\n /**\n * Function being called whenever the trigger is being pressed.\n * @param {?} event\n * @return {?}\n */\n RippleRenderer.prototype.onMousedown = function (event) {\n if (!this.rippleDisabled) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this.rippleConfig);\n }\n };\n /**\n * Function being called whenever the pointer is being released.\n * @return {?}\n */\n RippleRenderer.prototype.onPointerUp = function () {\n this._isPointerDown = false;\n // Fade-out all ripples that are completely visible and not persistent.\n this._activeRipples.forEach(function (ripple) {\n if (!ripple.config.persistent && ripple.state === RippleState.VISIBLE) {\n ripple.fadeOut();\n }\n });\n };\n /**\n * Function being called whenever the pointer leaves the trigger.\n * @return {?}\n */\n RippleRenderer.prototype.onPointerLeave = function () {\n if (this._isPointerDown) {\n this.onPointerUp();\n }\n };\n /**\n * Function being called whenever the trigger is being touched.\n * @param {?} event\n * @return {?}\n */\n RippleRenderer.prototype.onTouchstart = function (event) {\n if (!this.rippleDisabled) {\n var _a = event.touches[0], clientX = _a.clientX, clientY = _a.clientY;\n this._isPointerDown = true;\n this.fadeInRipple(clientX, clientY, this.rippleConfig);\n }\n };\n /**\n * Runs a timeout outside of the Angular zone to avoid triggering the change detection.\n * @param {?} fn\n * @param {?=} delay\n * @return {?}\n */\n RippleRenderer.prototype.runTimeoutOutsideZone = function (fn, delay) {\n if (delay === void 0) { delay = 0; }\n this._ngZone.runOutsideAngular(function () { return setTimeout(fn, delay); });\n };\n return RippleRenderer;\n}());\n/**\n * @param {?} element\n * @return {?}\n */\nfunction enforceStyleRecalculation(element) {\n // Enforce a style recalculation by calling `getComputedStyle` and accessing any property.\n // Calling `getPropertyValue` is important to let optimizers know that this is not a noop.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n window.getComputedStyle(element).getPropertyValue('opacity');\n}\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n * @param {?} x\n * @param {?} y\n * @param {?} rect\n * @return {?}\n */\nfunction distanceToFurthestCorner(x, y, rect) {\n var /** @type {?} */ distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n var /** @type {?} */ distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\n}\n\n/**\n * Injection token that can be used to specify the global ripple options.\n */\nvar MAT_RIPPLE_GLOBAL_OPTIONS = new InjectionToken('mat-ripple-global-options');\nvar MatRipple = (function () {\n /**\n * @param {?} elementRef\n * @param {?} ngZone\n * @param {?} platform\n * @param {?} globalOptions\n */\n function MatRipple(elementRef, ngZone, platform, globalOptions) {\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n this.radius = 0;\n /**\n * If set, the normal duration of ripple animations is divided by this value. For example,\n * setting it to 0.5 will cause the animations to take twice as long.\n * A changed speedFactor will not modify the fade-out duration of the ripples.\n */\n this.speedFactor = 1;\n this._rippleRenderer = new RippleRenderer(elementRef, ngZone, platform);\n this._globalOptions = globalOptions ? globalOptions : {};\n this._updateRippleRenderer();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n MatRipple.prototype.ngOnChanges = function (changes) {\n if ((changes['trigger'] || changes['_matRippleTrigger']) && this.trigger) {\n this._rippleRenderer.setTriggerElement(this.trigger);\n }\n this._updateRippleRenderer();\n };\n /**\n * @return {?}\n */\n MatRipple.prototype.ngOnDestroy = function () {\n // Set the trigger element to null to cleanup all listeners.\n this._rippleRenderer.setTriggerElement(null);\n };\n /**\n * Launches a manual ripple at the specified position.\n * @param {?} x\n * @param {?} y\n * @param {?=} config\n * @return {?}\n */\n MatRipple.prototype.launch = function (x, y, config) {\n if (config === void 0) { config = this.rippleConfig; }\n return this._rippleRenderer.fadeInRipple(x, y, config);\n };\n /**\n * Fades out all currently showing ripple elements.\n * @return {?}\n */\n MatRipple.prototype.fadeOutAll = function () {\n this._rippleRenderer.fadeOutAll();\n };\n Object.defineProperty(MatRipple.prototype, \"rippleConfig\", {\n /**\n * Ripple configuration from the directive's input values.\n * @return {?}\n */\n get: function () {\n return {\n centered: this.centered,\n speedFactor: this.speedFactor * (this._globalOptions.baseSpeedFactor || 1),\n radius: this.radius,\n color: this.color\n };\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Updates the ripple renderer with the latest ripple configuration.\n * @return {?}\n */\n MatRipple.prototype._updateRippleRenderer = function () {\n this._rippleRenderer.rippleDisabled = this._globalOptions.disabled || this.disabled;\n this._rippleRenderer.rippleConfig = this.rippleConfig;\n };\n MatRipple.decorators = [\n { type: Directive, args: [{\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRipple.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n ]; };\n MatRipple.propDecorators = {\n 'trigger': [{ type: Input, args: ['matRippleTrigger',] },],\n 'centered': [{ type: Input, args: ['matRippleCentered',] },],\n 'disabled': [{ type: Input, args: ['matRippleDisabled',] },],\n 'radius': [{ type: Input, args: ['matRippleRadius',] },],\n 'speedFactor': [{ type: Input, args: ['matRippleSpeedFactor',] },],\n 'color': [{ type: Input, args: ['matRippleColor',] },],\n 'unbounded': [{ type: Input, args: ['matRippleUnbounded',] },],\n };\n return MatRipple;\n}());\n\nvar MatRippleModule = (function () {\n function MatRippleModule() {\n }\n MatRippleModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule, PlatformModule],\n exports: [MatRipple, MatCommonModule],\n declarations: [MatRipple],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRippleModule.ctorParameters = function () { return []; };\n return MatRippleModule;\n}());\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with <mat-checkbox> and should *not* be used if the user would directly interact\n * with the checkbox. The pseudo-checkbox should only be used as an implementation detail of\n * more complex components that appropriately handle selected / checked state.\n * \\@docs-private\n */\nvar MatPseudoCheckbox = (function () {\n function MatPseudoCheckbox() {\n /**\n * Display state of the checkbox.\n */\n this.state = 'unchecked';\n /**\n * Whether the checkbox is disabled.\n */\n this.disabled = false;\n }\n MatPseudoCheckbox.decorators = [\n { type: Component, args: [{encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n styles: [\".mat-pseudo-checkbox{width:20px;height:20px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:'';border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:9px;left:2px;width:16px;opacity:1}.mat-pseudo-checkbox-checked::after{top:5px;left:3px;width:12px;height:5px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1}\"],\n template: '',\n host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPseudoCheckbox.ctorParameters = function () { return []; };\n MatPseudoCheckbox.propDecorators = {\n 'state': [{ type: Input },],\n 'disabled': [{ type: Input },],\n };\n return MatPseudoCheckbox;\n}());\n\nvar MatPseudoCheckboxModule = (function () {\n function MatPseudoCheckboxModule() {\n }\n MatPseudoCheckboxModule.decorators = [\n { type: NgModule, args: [{\n exports: [MatPseudoCheckbox],\n declarations: [MatPseudoCheckbox]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPseudoCheckboxModule.ctorParameters = function () { return []; };\n return MatPseudoCheckboxModule;\n}());\n\n/**\n * \\@docs-private\n */\nvar MatOptgroupBase = (function () {\n function MatOptgroupBase() {\n }\n return MatOptgroupBase;\n}());\nvar _MatOptgroupMixinBase = mixinDisabled(MatOptgroupBase);\n// Counter for unique group ids.\nvar _uniqueOptgroupIdCounter = 0;\n/**\n * Component that is used to group instances of `mat-option`.\n */\nvar MatOptgroup = (function (_super) {\n __extends(MatOptgroup, _super);\n function MatOptgroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Unique id for the underlying label.\n */\n _this._labelId = \"mat-optgroup-label-\" + _uniqueOptgroupIdCounter++;\n return _this;\n }\n MatOptgroup.decorators = [\n { type: Component, args: [{selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n template: \"<label class=\\\"mat-optgroup-label\\\" [id]=\\\"_labelId\\\">{{ label }}</label><ng-content select=\\\"mat-option\\\"></ng-content>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled'],\n host: {\n 'class': 'mat-optgroup',\n 'role': 'group',\n '[class.mat-optgroup-disabled]': 'disabled',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-labelledby]': '_labelId',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatOptgroup.ctorParameters = function () { return []; };\n MatOptgroup.propDecorators = {\n 'label': [{ type: Input },],\n };\n return MatOptgroup;\n}(_MatOptgroupMixinBase));\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nvar _uniqueIdCounter = 0;\n/**\n * Event object emitted by MatOption when selected or deselected.\n */\nvar MatOptionSelectionChange = (function () {\n /**\n * @param {?} source\n * @param {?=} isUserInput\n */\n function MatOptionSelectionChange(source, isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this.source = source;\n this.isUserInput = isUserInput;\n }\n return MatOptionSelectionChange;\n}());\n/**\n * Single option inside of a `<mat-select>` element.\n */\nvar MatOption = (function () {\n /**\n * @param {?} _element\n * @param {?} _changeDetectorRef\n * @param {?} group\n */\n function MatOption(_element, _changeDetectorRef, group) {\n this._element = _element;\n this._changeDetectorRef = _changeDetectorRef;\n this.group = group;\n this._selected = false;\n this._active = false;\n this._multiple = false;\n this._disableRipple = false;\n /**\n * Whether the option is disabled.\n */\n this._disabled = false;\n this._id = \"mat-option-\" + _uniqueIdCounter++;\n /**\n * Event emitted when the option is selected or deselected.\n */\n this.onSelectionChange = new EventEmitter();\n }\n Object.defineProperty(MatOption.prototype, \"multiple\", {\n /**\n * Whether the wrapping component is in multiple selection mode.\n * @return {?}\n */\n get: function () { return this._multiple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this._multiple) {\n this._multiple = value;\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"id\", {\n /**\n * The unique ID of the option.\n * @return {?}\n */\n get: function () { return this._id; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"selected\", {\n /**\n * Whether or not the option is currently selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"disabled\", {\n /**\n * Whether the option is disabled.\n * @return {?}\n */\n get: function () { return (this.group && this.group.disabled) || this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"disableRipple\", {\n /**\n * Whether ripples for the option are disabled.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = value;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"active\", {\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n * @return {?}\n */\n get: function () {\n return this._active;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatOption.prototype, \"viewValue\", {\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n * @return {?}\n */\n get: function () {\n // TODO(kara): Add input property alternative for node envs.\n return (this._getHostElement().textContent || '').trim();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Selects the option.\n * @return {?}\n */\n MatOption.prototype.select = function () {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n };\n /**\n * Deselects the option.\n * @return {?}\n */\n MatOption.prototype.deselect = function () {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n };\n /**\n * Sets focus onto this option.\n * @return {?}\n */\n MatOption.prototype.focus = function () {\n var /** @type {?} */ element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus();\n }\n };\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n * @return {?}\n */\n MatOption.prototype.setActiveStyles = function () {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n * @return {?}\n */\n MatOption.prototype.setInactiveStyles = function () {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * Gets the label to be used when determining whether the option should be focused.\n * @return {?}\n */\n MatOption.prototype.getLabel = function () {\n return this.viewValue;\n };\n /**\n * Ensures the option is selected when activated from the keyboard.\n * @param {?} event\n * @return {?}\n */\n MatOption.prototype._handleKeydown = function (event) {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n };\n /**\n * Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.\n * @return {?}\n */\n MatOption.prototype._selectViaInteraction = function () {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n };\n /**\n * Returns the correct tabindex for the option depending on disabled state.\n * @return {?}\n */\n MatOption.prototype._getTabIndex = function () {\n return this.disabled ? '-1' : '0';\n };\n /**\n * Gets the host DOM element.\n * @return {?}\n */\n MatOption.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n /**\n * Emits the selection change event.\n * @param {?=} isUserInput\n * @return {?}\n */\n MatOption.prototype._emitSelectionChangeEvent = function (isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n };\n /**\n * Counts the amount of option group labels that precede the specified option.\n * @param {?} optionIndex Index of the option at which to start counting.\n * @param {?} options Flat list of all of the options.\n * @param {?} optionGroups Flat list of all of the option groups.\n * @return {?}\n */\n MatOption.countGroupLabelsBeforeOption = function (optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n var /** @type {?} */ optionsArray = options.toArray();\n var /** @type {?} */ groups = optionGroups.toArray();\n var /** @type {?} */ groupCounter = 0;\n for (var /** @type {?} */ i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n };\n MatOption.decorators = [\n { type: Component, args: [{selector: 'mat-option',\n exportAs: 'matOption',\n host: {\n 'role': 'option',\n '[attr.tabindex]': '_getTabIndex()',\n '[class.mat-selected]': 'selected',\n '[class.mat-option-multiple]': 'multiple',\n '[class.mat-active]': 'active',\n '[id]': 'id',\n '[attr.aria-selected]': 'selected.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[class.mat-option-disabled]': 'disabled',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-option',\n },\n template: \"<span *ngIf=\\\"multiple\\\"><mat-pseudo-checkbox class=\\\"mat-option-pseudo-checkbox\\\" [state]=\\\"selected ? 'checked' : ''\\\" [disabled]=\\\"disabled\\\"></mat-pseudo-checkbox></span><span class=\\\"mat-option-text\\\"><ng-content></ng-content></span><div class=\\\"mat-option-ripple\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\"></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatOption.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: MatOptgroup, decorators: [{ type: Optional },] },\n ]; };\n MatOption.propDecorators = {\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'onSelectionChange': [{ type: Output },],\n };\n return MatOption;\n}());\n\nvar MatOptionModule = (function () {\n function MatOptionModule() {\n }\n MatOptionModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatRippleModule, CommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatOptionModule.ctorParameters = function () { return []; };\n return MatOptionModule;\n}());\n\n/**\n * InjectionToken that can be used to specify the global placeholder options.\n */\nvar MAT_PLACEHOLDER_GLOBAL_OPTIONS = new InjectionToken('mat-placeholder-global-options');\n\n/**\n * Applies a CSS transform to an element, including browser-prefixed properties.\n * @param {?} element\n * @param {?} transformValue\n * @return {?}\n */\nfunction applyCssTransform(element, transformValue) {\n // It's important to trim the result, because the browser will ignore the set operation\n // if the string contains only whitespace.\n var /** @type {?} */ value = transformValue.trim();\n element.style.transform = value;\n element.style.webkitTransform = value;\n}\n\n/**\n * When constructing a Date, the month is zero-based. This can be confusing, since people are\n * used to seeing them one-based. So we create these aliases to make writing the tests easier.\n */\nvar JAN = 0;\nvar FEB = 1;\nvar MAR = 2;\nvar APR = 3;\nvar MAY = 4;\nvar JUN = 5;\nvar JUL = 6;\nvar AUG = 7;\nvar SEP = 8;\nvar OCT = 9;\nvar NOV = 10;\nvar DEC = 11;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDurations, MatCommonModule, MATERIAL_SANITY_CHECKS, mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MATERIAL_COMPATIBILITY_MODE, MAT_ELEMENTS_SELECTOR, MD_ELEMENTS_SELECTOR, MatPrefixRejector, MdPrefixRejector, CompatibilityModule, NoConflictStyleCompatibilityMode, NativeDateModule, MatNativeDateModule, MAT_DATE_LOCALE, MAT_DATE_LOCALE_PROVIDER, DateAdapter, MAT_DATE_FORMATS, NativeDateAdapter, MAT_NATIVE_DATE_FORMATS, ShowOnDirtyErrorStateMatcher, ErrorStateMatcher, GestureConfig, MatLine, MatLineSetter, MatLineModule, MatOptionModule, MatOptionSelectionChange, MatOption, MatOptgroupBase, _MatOptgroupMixinBase, MatOptgroup, MAT_PLACEHOLDER_GLOBAL_OPTIONS, MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRef, RippleState, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION, MatRippleModule, MatPseudoCheckboxModule, MatPseudoCheckbox, applyCssTransform, extendObject, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, RippleRenderer as ɵa0 };\n//# sourceMappingURL=core.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, Inject, Input, NgModule, Optional, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { first, startWith } from '@angular/cdk/rxjs';\nimport { MAT_PLACEHOLDER_GLOBAL_OPTIONS } from '@angular/material/core';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\n\nvar nextUniqueId = 0;\n/**\n * Single error message to be shown underneath the form field.\n */\nvar MatError = (function () {\n function MatError() {\n this.id = \"mat-error-\" + nextUniqueId++;\n }\n MatError.decorators = [\n { type: Directive, args: [{\n selector: 'mat-error',\n host: {\n 'class': 'mat-error',\n 'role': 'alert',\n '[attr.id]': 'id',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatError.ctorParameters = function () { return []; };\n MatError.propDecorators = {\n 'id': [{ type: Input },],\n };\n return MatError;\n}());\n\n/**\n * An interface which allows a control to work inside of a `MatFormField`.\n * @abstract\n */\nvar MatFormFieldControl = (function () {\n function MatFormFieldControl() {\n }\n /**\n * Sets the list of element IDs that currently describe this control.\n * @abstract\n * @param {?} ids\n * @return {?}\n */\n MatFormFieldControl.prototype.setDescribedByIds = function (ids) { };\n /**\n * Handles a click on the control's container.\n * @abstract\n * @param {?} event\n * @return {?}\n */\n MatFormFieldControl.prototype.onContainerClick = function (event) { };\n return MatFormFieldControl;\n}());\n\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getMatFormFieldPlaceholderConflictError() {\n return Error('Placeholder attribute and child element were both specified.');\n}\n/**\n * \\@docs-private\n * @param {?} align\n * @return {?}\n */\nfunction getMatFormFieldDuplicatedHintError(align) {\n return Error(\"A hint was already declared for 'align=\\\"\" + align + \"\\\"'.\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getMatFormFieldMissingControlError() {\n return Error('mat-form-field must contain a MatFormFieldControl. ' +\n 'Did you forget to add matInput to the native input or textarea element?');\n}\n\nvar nextUniqueId$2 = 0;\n/**\n * Hint text to be shown underneath the form field control.\n */\nvar MatHint = (function () {\n function MatHint() {\n /**\n * Whether to align the hint label at the start or end of the line.\n */\n this.align = 'start';\n /**\n * Unique ID for the hint. Used for the aria-describedby on the form field control.\n */\n this.id = \"mat-hint-\" + nextUniqueId$2++;\n }\n MatHint.decorators = [\n { type: Directive, args: [{\n selector: 'mat-hint',\n host: {\n 'class': 'mat-hint',\n '[class.mat-right]': 'align == \"end\"',\n '[attr.id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHint.ctorParameters = function () { return []; };\n MatHint.propDecorators = {\n 'align': [{ type: Input },],\n 'id': [{ type: Input },],\n };\n return MatHint;\n}());\n\n/**\n * The floating placeholder for an `MatFormField`.\n */\nvar MatPlaceholder = (function () {\n function MatPlaceholder() {\n }\n MatPlaceholder.decorators = [\n { type: Directive, args: [{\n selector: 'mat-placeholder'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPlaceholder.ctorParameters = function () { return []; };\n return MatPlaceholder;\n}());\n\n/**\n * Prefix to be placed the the front of the form field.\n */\nvar MatPrefix = (function () {\n function MatPrefix() {\n }\n MatPrefix.decorators = [\n { type: Directive, args: [{\n selector: '[matPrefix]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPrefix.ctorParameters = function () { return []; };\n return MatPrefix;\n}());\n\n/**\n * Suffix to be placed at the end of the form field.\n */\nvar MatSuffix = (function () {\n function MatSuffix() {\n }\n MatSuffix.decorators = [\n { type: Directive, args: [{\n selector: '[matSuffix]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSuffix.ctorParameters = function () { return []; };\n return MatSuffix;\n}());\n\nvar nextUniqueId$1 = 0;\n/**\n * Container for form controls that applies Material Design styling and behavior.\n */\nvar MatFormField = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _changeDetectorRef\n * @param {?} placeholderOptions\n */\n function MatFormField(_elementRef, _renderer, _changeDetectorRef, placeholderOptions) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Color of the form field underline, based on the theme.\n */\n this.color = 'primary';\n /**\n * Override for the logic that disables the placeholder animation in certain cases.\n */\n this._showAlwaysAnimate = false;\n /**\n * State of the mat-hint and mat-error animations.\n */\n this._subscriptAnimationState = '';\n this._hintLabel = '';\n // Unique id for the hint label.\n this._hintLabelId = \"mat-hint-\" + nextUniqueId$1++;\n this._placeholderOptions = placeholderOptions ? placeholderOptions : {};\n this.floatPlaceholder = this._placeholderOptions.float || 'auto';\n }\n Object.defineProperty(MatFormField.prototype, \"dividerColor\", {\n /**\n * @deprecated Use `color` instead.\n * @return {?}\n */\n get: function () { return this.color; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this.color = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"hideRequiredMarker\", {\n /**\n * Whether the required marker should be hidden.\n * @return {?}\n */\n get: function () { return this._hideRequiredMarker; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"_shouldAlwaysFloat\", {\n /**\n * Whether the floating label should always float or not.\n * @return {?}\n */\n get: function () {\n return this._floatPlaceholder === 'always' && !this._showAlwaysAnimate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"_canPlaceholderFloat\", {\n /**\n * Whether the placeholder can float or not.\n * @return {?}\n */\n get: function () { return this._floatPlaceholder !== 'never'; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"hintLabel\", {\n /**\n * Text for the form field hint.\n * @return {?}\n */\n get: function () { return this._hintLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._hintLabel = value;\n this._processHints();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatFormField.prototype, \"floatPlaceholder\", {\n /**\n * Whether the placeholder should always float, never float or float as the user types.\n * @return {?}\n */\n get: function () { return this._floatPlaceholder; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this._floatPlaceholder) {\n this._floatPlaceholder = value || this._placeholderOptions.float || 'auto';\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatFormField.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._validateControlChild();\n if (this._control.controlType) {\n this._renderer.addClass(this._elementRef.nativeElement, \"mat-form-field-type-\" + this._control.controlType);\n }\n // Subscribe to changes in the child control state in order to update the form field UI.\n startWith.call(this._control.stateChanges, null).subscribe(function () {\n _this._validatePlaceholders();\n _this._syncDescribedByIds();\n _this._changeDetectorRef.markForCheck();\n });\n var /** @type {?} */ ngControl = this._control.ngControl;\n if (ngControl && ngControl.valueChanges) {\n ngControl.valueChanges.subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n }\n // Re-validate when the number of hints changes.\n startWith.call(this._hintChildren.changes, null).subscribe(function () {\n _this._processHints();\n _this._changeDetectorRef.markForCheck();\n });\n // Update the aria-described by when the number of errors changes.\n startWith.call(this._errorChildren.changes, null).subscribe(function () {\n _this._syncDescribedByIds();\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatFormField.prototype.ngAfterContentChecked = function () {\n this._validateControlChild();\n };\n /**\n * @return {?}\n */\n MatFormField.prototype.ngAfterViewInit = function () {\n // Avoid animations on load.\n this._subscriptAnimationState = 'enter';\n this._changeDetectorRef.detectChanges();\n };\n /**\n * Determines whether a class from the NgControl should be forwarded to the host element.\n * @param {?} prop\n * @return {?}\n */\n MatFormField.prototype._shouldForward = function (prop) {\n var /** @type {?} */ ngControl = this._control ? this._control.ngControl : null;\n return ngControl && ((ngControl))[prop];\n };\n /**\n * Whether the form field has a placeholder.\n * @return {?}\n */\n MatFormField.prototype._hasPlaceholder = function () {\n return !!(this._control.placeholder || this._placeholderChild);\n };\n /**\n * Determines whether to display hints or errors.\n * @return {?}\n */\n MatFormField.prototype._getDisplayedMessages = function () {\n return (this._errorChildren && this._errorChildren.length > 0 &&\n this._control.errorState) ? 'error' : 'hint';\n };\n /**\n * Animates the placeholder up and locks it in position.\n * @return {?}\n */\n MatFormField.prototype._animateAndLockPlaceholder = function () {\n var _this = this;\n if (this._placeholder && this._canPlaceholderFloat) {\n this._showAlwaysAnimate = true;\n this._floatPlaceholder = 'always';\n first.call(fromEvent(this._placeholder.nativeElement, 'transitionend')).subscribe(function () {\n _this._showAlwaysAnimate = false;\n });\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n * or child element with the `mat-placeholder` directive).\n * @return {?}\n */\n MatFormField.prototype._validatePlaceholders = function () {\n if (this._control.placeholder && this._placeholderChild) {\n throw getMatFormFieldPlaceholderConflictError();\n }\n };\n /**\n * Does any extra processing that is required when handling the hints.\n * @return {?}\n */\n MatFormField.prototype._processHints = function () {\n this._validateHints();\n this._syncDescribedByIds();\n };\n /**\n * Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the\n * attribute being considered as `align=\"start\"`.\n * @return {?}\n */\n MatFormField.prototype._validateHints = function () {\n var _this = this;\n if (this._hintChildren) {\n var /** @type {?} */ startHint_1;\n var /** @type {?} */ endHint_1;\n this._hintChildren.forEach(function (hint) {\n if (hint.align == 'start') {\n if (startHint_1 || _this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint_1 = hint;\n }\n else if (hint.align == 'end') {\n if (endHint_1) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint_1 = hint;\n }\n });\n }\n };\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n * @return {?}\n */\n MatFormField.prototype._syncDescribedByIds = function () {\n if (this._control) {\n var /** @type {?} */ ids = [];\n if (this._getDisplayedMessages() === 'hint') {\n var /** @type {?} */ startHint = this._hintChildren ?\n this._hintChildren.find(function (hint) { return hint.align === 'start'; }) : null;\n var /** @type {?} */ endHint = this._hintChildren ?\n this._hintChildren.find(function (hint) { return hint.align === 'end'; }) : null;\n if (startHint) {\n ids.push(startHint.id);\n }\n else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n if (endHint) {\n ids.push(endHint.id);\n }\n }\n else if (this._errorChildren) {\n ids = this._errorChildren.map(function (error) { return error.id; });\n }\n this._control.setDescribedByIds(ids);\n }\n };\n /**\n * Throws an error if the form field's control is missing.\n * @return {?}\n */\n MatFormField.prototype._validateControlChild = function () {\n if (!this._control) {\n throw getMatFormFieldMissingControlError();\n }\n };\n MatFormField.decorators = [\n { type: Component, args: [{// TODO(mmalerba): the input-container selectors and classes are deprecated and will be removed.\n selector: 'mat-input-container, mat-form-field',\n exportAs: 'matFormField',\n template: \"<div class=\\\"mat-input-wrapper mat-form-field-wrapper\\\"><div class=\\\"mat-input-flex mat-form-field-flex\\\" #connectionContainer (click)=\\\"_control.onContainerClick && _control.onContainerClick($event)\\\"><div class=\\\"mat-input-prefix mat-form-field-prefix\\\" *ngIf=\\\"_prefixChildren.length\\\"><ng-content select=\\\"[matPrefix]\\\"></ng-content></div><div class=\\\"mat-input-infix mat-form-field-infix\\\"><ng-content></ng-content><span class=\\\"mat-input-placeholder-wrapper mat-form-field-placeholder-wrapper\\\"><label class=\\\"mat-input-placeholder mat-form-field-placeholder\\\" [attr.for]=\\\"_control.id\\\" [attr.aria-owns]=\\\"_control.id\\\" [class.mat-empty]=\\\"_control.empty && !_shouldAlwaysFloat\\\" [class.mat-form-field-empty]=\\\"_control.empty && !_shouldAlwaysFloat\\\" [class.mat-accent]=\\\"color == 'accent'\\\" [class.mat-warn]=\\\"color == 'warn'\\\" #placeholder *ngIf=\\\"_hasPlaceholder()\\\"><ng-content select=\\\"mat-placeholder\\\"></ng-content>{{_control.placeholder}} <span class=\\\"mat-placeholder-required mat-form-field-required-marker\\\" aria-hidden=\\\"true\\\" *ngIf=\\\"!hideRequiredMarker && _control.required\\\">*</span></label></span></div><div class=\\\"mat-input-suffix mat-form-field-suffix\\\" *ngIf=\\\"_suffixChildren.length\\\"><ng-content select=\\\"[matSuffix]\\\"></ng-content></div></div><div class=\\\"mat-input-underline mat-form-field-underline\\\" #underline [class.mat-disabled]=\\\"_control.disabled\\\"><span class=\\\"mat-input-ripple mat-form-field-ripple\\\" [class.mat-accent]=\\\"color == 'accent'\\\" [class.mat-warn]=\\\"color == 'warn'\\\"></span></div><div class=\\\"mat-input-subscript-wrapper mat-form-field-subscript-wrapper\\\" [ngSwitch]=\\\"_getDisplayedMessages()\\\"><div *ngSwitchCase=\\\"'error'\\\" [@transitionMessages]=\\\"_subscriptAnimationState\\\"><ng-content select=\\\"mat-error\\\"></ng-content></div><div class=\\\"mat-input-hint-wrapper mat-form-field-hint-wrapper\\\" *ngSwitchCase=\\\"'hint'\\\" [@transitionMessages]=\\\"_subscriptAnimationState\\\"><div *ngIf=\\\"hintLabel\\\" [id]=\\\"_hintLabelId\\\" class=\\\"mat-hint\\\">{{hintLabel}}</div><ng-content select=\\\"mat-hint:not([align='end'])\\\"></ng-content><div class=\\\"mat-input-hint-spacer mat-form-field-hint-spacer\\\"></div><ng-content select=\\\"mat-hint[align='end']\\\"></ng-content></div></div></div>\",\n // MatInput is a directive and can't have styles, so we need to include its styles here.\n // The MatInput styles are fairly minimal so it shouldn't be a big deal for people who\n // aren't using MatInput.\n styles: [\".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0}.mat-form-field-placeholder-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}.mat-form-field-placeholder{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform:perspective(100px);-ms-transform:none;transform-origin:0 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1);display:none}[dir=rtl] .mat-form-field-placeholder{transform-origin:100% 0;left:auto;right:0}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-placeholder,.mat-form-field-empty.mat-form-field-placeholder{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-placeholder-wrapper .mat-form-field-placeholder{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-placeholder-wrapper .mat-form-field-placeholder{display:block;transition:none}.mat-form-field-placeholder:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;height:1px;width:100%}.mat-form-field-underline.mat-disabled{background-position:0;background-color:transparent}.mat-form-field-underline .mat-form-field-ripple{position:absolute;height:1px;top:0;left:0;width:100%;transform-origin:50%;transform:scaleX(.5);visibility:hidden;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}.mat-focused .mat-form-field-underline .mat-form-field-ripple{height:2px}.mat-focused .mat-form-field-underline .mat-form-field-ripple,.mat-form-field-invalid .mat-form-field-underline .mat-form-field-ripple{visibility:visible;transform:scaleX(1);transition:transform 150ms linear,background-color .3s cubic-bezier(.55,0,.55,.2)}.mat-form-field-subscript-wrapper{position:absolute;width:100%;overflow:hidden}.mat-form-field-placeholder-wrapper .mat-icon,.mat-form-field-subscript-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block} .mat-input-element{font:inherit;background:0 0;color:currentColor;border:none;outline:0;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element::placeholder{color:transparent!important}.mat-input-element::-moz-placeholder{color:transparent!important}.mat-input-element::-webkit-input-placeholder{color:transparent!important}.mat-input-element:-ms-input-placeholder{color:transparent!important}textarea.mat-input-element{resize:vertical;overflow:auto}\"],\n animations: [\n // TODO(mmalerba): Use angular animations for placeholder animation as well.\n trigger('transitionMessages', [\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-100%)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ]),\n ],\n host: {\n 'class': 'mat-input-container mat-form-field',\n '[class.mat-input-invalid]': '_control.errorState',\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-can-float]': '_canPlaceholderFloat',\n '[class.mat-form-field-should-float]': '_control.shouldPlaceholderFloat || _shouldAlwaysFloat',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-primary]': 'color == \"primary\"',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatFormField.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_PLACEHOLDER_GLOBAL_OPTIONS,] },] },\n ]; };\n MatFormField.propDecorators = {\n 'color': [{ type: Input },],\n 'dividerColor': [{ type: Input },],\n 'hideRequiredMarker': [{ type: Input },],\n 'hintLabel': [{ type: Input },],\n 'floatPlaceholder': [{ type: Input },],\n 'underlineRef': [{ type: ViewChild, args: ['underline',] },],\n '_connectionContainerRef': [{ type: ViewChild, args: ['connectionContainer',] },],\n '_placeholder': [{ type: ViewChild, args: ['placeholder',] },],\n '_control': [{ type: ContentChild, args: [MatFormFieldControl,] },],\n '_placeholderChild': [{ type: ContentChild, args: [MatPlaceholder,] },],\n '_errorChildren': [{ type: ContentChildren, args: [MatError,] },],\n '_hintChildren': [{ type: ContentChildren, args: [MatHint,] },],\n '_prefixChildren': [{ type: ContentChildren, args: [MatPrefix,] },],\n '_suffixChildren': [{ type: ContentChildren, args: [MatSuffix,] },],\n };\n return MatFormField;\n}());\n\nvar MatFormFieldModule = (function () {\n function MatFormFieldModule() {\n }\n MatFormFieldModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n MatError,\n MatHint,\n MatFormField,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n imports: [\n CommonModule,\n PlatformModule,\n ],\n exports: [\n MatError,\n MatHint,\n MatFormField,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatFormFieldModule.ctorParameters = function () { return []; };\n return MatFormFieldModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatFormFieldModule, MatError, MatFormField, MatFormFieldControl, getMatFormFieldPlaceholderConflictError, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, MatHint, MatPlaceholder, MatPrefix, MatSuffix };\n//# sourceMappingURL=form-field.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Host, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatCommonModule, MatOptgroup, MatOption, MatOptionModule } from '@angular/material/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { RxChain, delay, doOperator, filter, first, switchMap } from '@angular/cdk/rxjs';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { merge } from 'rxjs/observable/merge';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nvar _uniqueAutocompleteIdCounter = 0;\n/**\n * Event object that is emitted when an autocomplete option is selected\n */\nvar MatAutocompleteSelectedEvent = (function () {\n /**\n * @param {?} source\n * @param {?} option\n */\n function MatAutocompleteSelectedEvent(source, option) {\n this.source = source;\n this.option = option;\n }\n return MatAutocompleteSelectedEvent;\n}());\nvar MatAutocomplete = (function () {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _elementRef\n */\n function MatAutocomplete(_changeDetectorRef, _elementRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /**\n * Whether the autocomplete panel should be visible, depending on option length.\n */\n this.showPanel = false;\n this._isOpen = false;\n /**\n * Function that maps an option's control value to its display value in the trigger.\n */\n this.displayWith = null;\n /**\n * Event that is emitted whenever an option from the list is selected.\n */\n this.optionSelected = new EventEmitter();\n this._classList = {};\n /**\n * Unique ID to be used by autocomplete trigger's \"aria-owns\" property.\n */\n this.id = \"mat-autocomplete-\" + _uniqueAutocompleteIdCounter++;\n }\n Object.defineProperty(MatAutocomplete.prototype, \"isOpen\", {\n /**\n * Whether the autocomplete panel is open.\n * @return {?}\n */\n get: function () {\n return this._isOpen && this.showPanel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocomplete.prototype, \"classList\", {\n /**\n * Takes classes set on the host md-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n * @param {?} classList\n * @return {?}\n */\n set: function (classList) {\n var _this = this;\n if (classList && classList.length) {\n classList.split(' ').forEach(function (className) { return _this._classList[className.trim()] = true; });\n this._elementRef.nativeElement.className = '';\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatAutocomplete.prototype.ngAfterContentInit = function () {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n // Set the initial visibiity state.\n this._setVisibility();\n };\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n * @param {?} scrollTop\n * @return {?}\n */\n MatAutocomplete.prototype._setScrollTop = function (scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n };\n /**\n * Returns the panel's scrollTop.\n * @return {?}\n */\n MatAutocomplete.prototype._getScrollTop = function () {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n };\n /**\n * Panel should hide itself when the option list is empty.\n * @return {?}\n */\n MatAutocomplete.prototype._setVisibility = function () {\n this.showPanel = !!this.options.length;\n this._classList['mat-autocomplete-visible'] = this.showPanel;\n this._classList['mat-autocomplete-hidden'] = !this.showPanel;\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Emits the `select` event.\n * @param {?} option\n * @return {?}\n */\n MatAutocomplete.prototype._emitSelectEvent = function (option) {\n var /** @type {?} */ event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n };\n MatAutocomplete.decorators = [\n { type: Component, args: [{selector: 'mat-autocomplete',\n template: \"<ng-template><div class=\\\"mat-autocomplete-panel\\\" role=\\\"listbox\\\" [id]=\\\"id\\\" [ngClass]=\\\"_classList\\\" #panel><ng-content></ng-content></div></ng-template>\",\n styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative}.mat-autocomplete-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n host: {\n 'class': 'mat-autocomplete'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAutocomplete.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: ElementRef, },\n ]; };\n MatAutocomplete.propDecorators = {\n 'template': [{ type: ViewChild, args: [TemplateRef,] },],\n 'panel': [{ type: ViewChild, args: ['panel',] },],\n 'options': [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n 'optionGroups': [{ type: ContentChildren, args: [MatOptgroup,] },],\n 'displayWith': [{ type: Input },],\n 'optionSelected': [{ type: Output },],\n 'classList': [{ type: Input, args: ['class',] },],\n };\n return MatAutocomplete;\n}());\n\n/**\n * The height of each autocomplete option.\n */\nvar AUTOCOMPLETE_OPTION_HEIGHT = 48;\n/**\n * The total height of the autocomplete panel.\n */\nvar AUTOCOMPLETE_PANEL_HEIGHT = 256;\n/**\n * Injection token that determines the scroll handling while the autocomplete panel is open.\n */\nvar MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * \\@docs-private\n */\nvar MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatAutocompleteTrigger; }),\n multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @return {?}\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n 'you\\'re attempting to open it after the ngAfterContentInit hook.');\n}\nvar MatAutocompleteTrigger = (function () {\n /**\n * @param {?} _element\n * @param {?} _overlay\n * @param {?} _viewContainerRef\n * @param {?} _zone\n * @param {?} _changeDetectorRef\n * @param {?} _scrollStrategy\n * @param {?} _dir\n * @param {?} _formField\n * @param {?} _document\n */\n function MatAutocompleteTrigger(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, _scrollStrategy, _dir, _formField, _document) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._panelOpen = false;\n /**\n * Whether or not the placeholder state is being overridden.\n */\n this._manuallyFloatingPlaceholder = false;\n /**\n * Stream of escape keyboard events.\n */\n this._escapeEventStream = new Subject();\n /**\n * View -> model callback called when value changes\n */\n this._onChange = function () { };\n /**\n * View -> model callback called when autocomplete has been touched\n */\n this._onTouched = function () { };\n }\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.ngOnDestroy = function () {\n this._destroyPanel();\n this._escapeEventStream.complete();\n };\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"panelOpen\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._panelOpen && this.autocomplete.showPanel;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Opens the autocomplete suggestion panel.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.openPanel = function () {\n this._attachOverlay();\n this._floatPlaceholder();\n };\n /**\n * Closes the autocomplete suggestion panel.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.closePanel = function () {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._resetPlaceholder();\n if (this._panelOpen) {\n this.autocomplete._isOpen = this._panelOpen = false;\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the placeholder is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n };\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"panelClosingActions\", {\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n * @return {?}\n */\n get: function () {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut, this._escapeEventStream, this._outsideClickStream);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"optionSelections\", {\n /**\n * Stream of autocomplete option selections.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.autocomplete.options.map(function (option) { return option.onSelectionChange; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"activeOption\", {\n /**\n * The currently active option, coerced to MatOption type.\n * @return {?}\n */\n get: function () {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatAutocompleteTrigger.prototype, \"_outsideClickStream\", {\n /**\n * Stream of clicks outside of the autocomplete panel.\n * @return {?}\n */\n get: function () {\n var _this = this;\n if (!this._document) {\n return of(null);\n }\n return RxChain.from(merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'touchend'))).call(filter, function (event) {\n var /** @type {?} */ clickTarget = (event.target);\n var /** @type {?} */ formField = _this._formField ?\n _this._formField._elementRef.nativeElement : null;\n return _this._panelOpen &&\n clickTarget !== _this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!!_this._overlayRef && !_this._overlayRef.overlayElement.contains(clickTarget));\n }).result();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the autocomplete's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param {?} value New value to be written to the model.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.writeValue = function (value) {\n var _this = this;\n Promise.resolve(null).then(function () { return _this._setTriggerValue(value); });\n };\n /**\n * Saves a callback function to be invoked when the autocomplete's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param {?} fn Callback to be triggered when the value changes.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\n };\n /**\n * Saves a callback function to be invoked when the autocomplete is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param {?} fn Callback to be triggered when the component has been touched.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._handleKeydown = function (event) {\n var /** @type {?} */ keyCode = event.keyCode;\n if (keyCode === ESCAPE && this.panelOpen) {\n this._resetActiveItem();\n this._escapeEventStream.next();\n event.stopPropagation();\n }\n else if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else {\n var /** @type {?} */ prevActiveItem = this.autocomplete._keyManager.activeItem;\n var /** @type {?} */ isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption();\n }\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._handleInput = function (event) {\n // We need to ensure that the input is focused, because IE will fire the `input`\n // event on focus/blur/load if the input has a placeholder. See:\n // https://connect.microsoft.com/IE/feedback/details/885747/\n if (document.activeElement === event.target) {\n this._onChange(((event.target)).value);\n this.openPanel();\n }\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._handleFocus = function () {\n if (!this._element.nativeElement.readOnly) {\n this._attachOverlay();\n this._floatPlaceholder(true);\n }\n };\n /**\n * In \"auto\" mode, the placeholder will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the placeholder until the panel can be closed.\n * @param {?=} shouldAnimate Whether the placeholder should be animated when it is floated.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._floatPlaceholder = function (shouldAnimate) {\n if (shouldAnimate === void 0) { shouldAnimate = false; }\n if (this._formField && this._formField.floatPlaceholder === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockPlaceholder();\n }\n else {\n this._formField.floatPlaceholder = 'always';\n }\n this._manuallyFloatingPlaceholder = true;\n }\n };\n /**\n * If the placeholder has been manually elevated, return it to its normal state.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._resetPlaceholder = function () {\n if (this._manuallyFloatingPlaceholder) {\n this._formField.floatPlaceholder = 'auto';\n this._manuallyFloatingPlaceholder = false;\n }\n };\n /**\n * Given that we are not actually focusing active options, we must manually adjust scroll\n * to reveal options below the fold. First, we find the offset of the option from the top\n * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n * the panel height + the option height, so the active option will be just visible at the\n * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n * will become the offset. If that offset is visible within the panel already, the scrollTop is\n * not adjusted.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._scrollToOption = function () {\n var /** @type {?} */ activeOptionIndex = this.autocomplete._keyManager.activeItemIndex || 0;\n var /** @type {?} */ labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex, this.autocomplete.options, this.autocomplete.optionGroups);\n var /** @type {?} */ optionOffset = (activeOptionIndex + labelCount) * AUTOCOMPLETE_OPTION_HEIGHT;\n var /** @type {?} */ panelTop = this.autocomplete._getScrollTop();\n if (optionOffset < panelTop) {\n // Scroll up to reveal selected option scrolled above the panel top\n this.autocomplete._setScrollTop(optionOffset);\n }\n else if (optionOffset + AUTOCOMPLETE_OPTION_HEIGHT > panelTop + AUTOCOMPLETE_PANEL_HEIGHT) {\n // Scroll down to reveal selected option scrolled below the panel bottom\n var /** @type {?} */ newScrollTop = optionOffset - AUTOCOMPLETE_PANEL_HEIGHT + AUTOCOMPLETE_OPTION_HEIGHT;\n this.autocomplete._setScrollTop(Math.max(0, newScrollTop));\n }\n };\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._subscribeToClosingActions = function () {\n var _this = this;\n var /** @type {?} */ firstStable = first.call(this._zone.onStable.asObservable());\n var /** @type {?} */ optionChanges = RxChain.from(this.autocomplete.options.changes)\n .call(doOperator, function () { return _this._positionStrategy.recalculateLastPosition(); })\n .call(delay, 0)\n .result();\n // When the zone is stable initially, and when the option list changes...\n return RxChain.from(merge(firstStable, optionChanges))\n .call(switchMap, function () {\n _this._resetActiveItem();\n _this.autocomplete._setVisibility();\n return _this.panelClosingActions;\n })\n .call(first)\n .subscribe(function (event) { return _this._setValueAndClose(event); });\n };\n /**\n * Destroys the autocomplete suggestion panel.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._destroyPanel = function () {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._setTriggerValue = function (value) {\n var /** @type {?} */ toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n this.autocomplete.displayWith(value) :\n value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n var /** @type {?} */ inputValue = toDisplay != null ? toDisplay : '';\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = inputValue;\n }\n else {\n this._element.nativeElement.value = inputValue;\n }\n };\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n * @param {?} event\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._setValueAndClose = function (event) {\n if (event && event.source) {\n this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source.value);\n this._onChange(event.source.value);\n this._element.nativeElement.focus();\n this.autocomplete._emitSelectEvent(event.source);\n }\n this.closePanel();\n };\n /**\n * Clear any previous selected option and emit a selection change event for this option\n * @param {?} skip\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._clearPreviousSelectedOption = function (skip) {\n this.autocomplete.options.forEach(function (option) {\n if (option != skip && option.selected) {\n option.deselect();\n }\n });\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._attachOverlay = function () {\n if (!this.autocomplete) {\n throw getMatAutocompleteMissingPanelError();\n }\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n this._overlayRef = this._overlay.create(this._getOverlayConfig());\n }\n else {\n /** Update the panel width, in case the host width has changed */\n this._overlayRef.getConfig().width = this._getHostWidth();\n this._overlayRef.updateSize();\n }\n if (this._overlayRef && !this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._panelOpen = true;\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._getOverlayConfig = function () {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getHostWidth(),\n direction: this._dir ? this._dir.value : 'ltr'\n });\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._getOverlayPosition = function () {\n this._positionStrategy = this._overlay.position().connectedTo(this._getConnectedElement(), { originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' })\n .withFallbackPosition({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' });\n return this._positionStrategy;\n };\n /**\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._getConnectedElement = function () {\n return this._formField ? this._formField._connectionContainerRef : this._element;\n };\n /**\n * Returns the width of the input element, so the panel width can match it.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._getHostWidth = function () {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n };\n /**\n * Reset active item to -1 so arrow events will activate the correct options.\n * @return {?}\n */\n MatAutocompleteTrigger.prototype._resetActiveItem = function () {\n this.autocomplete._keyManager.setActiveItem(-1);\n };\n MatAutocompleteTrigger.decorators = [\n { type: Directive, args: [{\n selector: \"input[matAutocomplete], textarea[matAutocomplete]\",\n host: {\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'aria-autocomplete': 'list',\n '[attr.aria-activedescendant]': 'activeOption?.id',\n '[attr.aria-expanded]': 'panelOpen.toString()',\n '[attr.aria-owns]': 'autocomplete?.id',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAutocompleteTrigger.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Overlay, },\n { type: ViewContainerRef, },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY,] },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: MatFormField, decorators: [{ type: Optional }, { type: Host },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatAutocompleteTrigger.propDecorators = {\n 'autocomplete': [{ type: Input, args: ['matAutocomplete',] },],\n };\n return MatAutocompleteTrigger;\n}());\n\nvar MatAutocompleteModule = (function () {\n function MatAutocompleteModule() {\n }\n MatAutocompleteModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatOptionModule, OverlayModule, MatCommonModule, CommonModule],\n exports: [MatAutocomplete, MatOptionModule, MatAutocompleteTrigger, MatCommonModule],\n declarations: [MatAutocomplete, MatAutocompleteTrigger],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAutocompleteModule.ctorParameters = function () { return []; };\n return MatAutocompleteModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatAutocompleteSelectedEvent, MatAutocomplete, MatAutocompleteModule, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, getMatAutocompleteMissingPanelError, MatAutocompleteTrigger };\n//# sourceMappingURL=autocomplete.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, Directive, ElementRef, Inject, NgModule, Optional, Renderer2, Self, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled } from '@angular/material/core';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Platform } from '@angular/cdk/platform';\n\n/**\n * Default color palette for round buttons (mat-fab and mat-mini-fab)\n */\nvar DEFAULT_ROUND_BUTTON_COLOR = 'accent';\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatButtonCssMatStyler = (function () {\n function MatButtonCssMatStyler() {\n }\n MatButtonCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-button], a[mat-button]',\n host: { 'class': 'mat-button' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonCssMatStyler.ctorParameters = function () { return []; };\n return MatButtonCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatRaisedButtonCssMatStyler = (function () {\n function MatRaisedButtonCssMatStyler() {\n }\n MatRaisedButtonCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-raised-button], a[mat-raised-button]',\n host: { 'class': 'mat-raised-button' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRaisedButtonCssMatStyler.ctorParameters = function () { return []; };\n return MatRaisedButtonCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatIconButtonCssMatStyler = (function () {\n function MatIconButtonCssMatStyler() {\n }\n MatIconButtonCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-icon-button], a[mat-icon-button]',\n host: { 'class': 'mat-icon-button' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatIconButtonCssMatStyler.ctorParameters = function () { return []; };\n return MatIconButtonCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatFab = (function () {\n /**\n * @param {?} button\n * @param {?} anchor\n */\n function MatFab(button, anchor) {\n // Set the default color palette for the mat-fab components.\n (button || anchor).color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n MatFab.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-fab], a[mat-fab]',\n host: { 'class': 'mat-fab' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatFab.ctorParameters = function () { return [\n { type: MatButton, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatButton; }),] },] },\n { type: MatAnchor, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatAnchor; }),] },] },\n ]; };\n return MatFab;\n}());\n/**\n * Directive that targets mini-fab buttons and anchors. It's used to apply the `mat-` class\n * to all mini-fab buttons and also is responsible for setting the default color palette.\n * \\@docs-private\n */\nvar MatMiniFab = (function () {\n /**\n * @param {?} button\n * @param {?} anchor\n */\n function MatMiniFab(button, anchor) {\n // Set the default color palette for the mat-mini-fab components.\n (button || anchor).color = DEFAULT_ROUND_BUTTON_COLOR;\n }\n MatMiniFab.decorators = [\n { type: Directive, args: [{\n selector: 'button[mat-mini-fab], a[mat-mini-fab]',\n host: { 'class': 'mat-mini-fab' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMiniFab.ctorParameters = function () { return [\n { type: MatButton, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatButton; }),] },] },\n { type: MatAnchor, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [forwardRef(function () { return MatAnchor; }),] },] },\n ]; };\n return MatMiniFab;\n}());\n/**\n * \\@docs-private\n */\nvar MatButtonBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatButtonBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatButtonBase;\n}());\nvar _MatButtonMixinBase = mixinColor(mixinDisabled(mixinDisableRipple(MatButtonBase)));\n/**\n * Material design button.\n */\nvar MatButton = (function (_super) {\n __extends(MatButton, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _platform\n * @param {?} _focusMonitor\n */\n function MatButton(renderer, elementRef, _platform, _focusMonitor) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._platform = _platform;\n _this._focusMonitor = _focusMonitor;\n /**\n * Whether the button is round.\n */\n _this._isRoundButton = _this._hasAttributeWithPrefix('fab', 'mini-fab');\n /**\n * Whether the button is icon button.\n */\n _this._isIconButton = _this._hasAttributeWithPrefix('icon-button');\n _this._focusMonitor.monitor(_this._elementRef.nativeElement, _this._renderer, true);\n return _this;\n }\n /**\n * @return {?}\n */\n MatButton.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n };\n /**\n * Focuses the button.\n * @return {?}\n */\n MatButton.prototype.focus = function () {\n this._getHostElement().focus();\n };\n /**\n * @return {?}\n */\n MatButton.prototype._getHostElement = function () {\n return this._elementRef.nativeElement;\n };\n /**\n * @return {?}\n */\n MatButton.prototype._isRippleDisabled = function () {\n return this.disableRipple || this.disabled;\n };\n /**\n * Gets whether the button has one of the given attributes with a 'mat-' prefix.\n * @param {...?} unprefixedAttributeNames\n * @return {?}\n */\n MatButton.prototype._hasAttributeWithPrefix = function () {\n var _this = this;\n var unprefixedAttributeNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n unprefixedAttributeNames[_i] = arguments[_i];\n }\n // If not on the browser, say that there are none of the attributes present.\n // Since these only affect how the ripple displays (and ripples only happen on the client),\n // detecting these attributes isn't necessary when not on the browser.\n if (!this._platform.isBrowser) {\n return false;\n }\n return unprefixedAttributeNames.some(function (suffix) {\n return _this._getHostElement().hasAttribute('mat-' + suffix);\n });\n };\n MatButton.decorators = [\n { type: Component, args: [{selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button],\\n button[mat-fab], button[mat-mini-fab]\",\n exportAs: 'matButton',\n host: {\n '[disabled]': 'disabled || null',\n },\n template: \"<span class=\\\"mat-button-wrapper\\\"><ng-content></ng-content></span><div matRipple class=\\\"mat-button-ripple\\\" [class.mat-button-ripple-round]=\\\"_isRoundButton || _isIconButton\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"_isIconButton\\\" [matRippleTrigger]=\\\"_getHostElement()\\\"></div><div class=\\\"mat-button-focus-overlay\\\"></div>\",\n styles: [\".mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:88px;line-height:36px;padding:0 16px;border-radius:2px}[disabled].mat-button,[disabled].mat-fab,[disabled].mat-icon-button,[disabled].mat-mini-fab,[disabled].mat-raised-button{cursor:default}.cdk-keyboard-focused.mat-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-icon-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-mini-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-raised-button .mat-button-focus-overlay{opacity:1}.mat-button::-moz-focus-inner,.mat-fab::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-mini-fab::-moz-focus-inner,.mat-raised-button::-moz-focus-inner{border:0}.mat-fab,.mat-mini-fab,.mat-raised-button{transform:translate3d(0,0,0);transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1)}.mat-fab:not([class*=mat-elevation-z]),.mat-mini-fab:not([class*=mat-elevation-z]),.mat-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-raised-button:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}[disabled].mat-fab,[disabled].mat-mini-fab,[disabled].mat-raised-button{box-shadow:none}.mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{transition:none;opacity:0}.mat-button:hover .mat-button-focus-overlay{opacity:1}.mat-fab{min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button .mat-icon,.mat-icon-button i{line-height:24px}.mat-button,.mat-icon-button,.mat-raised-button{color:currentColor}.mat-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*{vertical-align:middle}.mat-button-focus-overlay,.mat-button-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-focus-overlay{background-color:rgba(0,0,0,.12);border-radius:inherit;opacity:0;transition:opacity .2s cubic-bezier(.35,0,.25,1),background-color .2s cubic-bezier(.35,0,.25,1)}@media screen and (-ms-high-contrast:active){.mat-button-focus-overlay{background-color:rgba(255,255,255,.5)}}.mat-button-ripple-round{border-radius:50%;z-index:1}@media screen and (-ms-high-contrast:active){.mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{outline:solid 1px}}\"],\n inputs: ['disabled', 'disableRipple', 'color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButton.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Platform, },\n { type: FocusMonitor, },\n ]; };\n return MatButton;\n}(_MatButtonMixinBase));\n/**\n * Raised Material design button.\n */\nvar MatAnchor = (function (_super) {\n __extends(MatAnchor, _super);\n /**\n * @param {?} platform\n * @param {?} focusMonitor\n * @param {?} elementRef\n * @param {?} renderer\n */\n function MatAnchor(platform, focusMonitor, elementRef, renderer) {\n return _super.call(this, renderer, elementRef, platform, focusMonitor) || this;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n MatAnchor.prototype._haltDisabledEvents = function (event) {\n // A disabled button shouldn't apply any actions\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n MatAnchor.decorators = [\n { type: Component, args: [{selector: \"a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab]\",\n exportAs: 'matButton, matAnchor',\n host: {\n '[attr.tabindex]': 'disabled ? -1 : 0',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_haltDisabledEvents($event)',\n },\n inputs: ['disabled', 'disableRipple', 'color'],\n template: \"<span class=\\\"mat-button-wrapper\\\"><ng-content></ng-content></span><div matRipple class=\\\"mat-button-ripple\\\" [class.mat-button-ripple-round]=\\\"_isRoundButton || _isIconButton\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"_isIconButton\\\" [matRippleTrigger]=\\\"_getHostElement()\\\"></div><div class=\\\"mat-button-focus-overlay\\\"></div>\",\n styles: [\".mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:88px;line-height:36px;padding:0 16px;border-radius:2px}[disabled].mat-button,[disabled].mat-fab,[disabled].mat-icon-button,[disabled].mat-mini-fab,[disabled].mat-raised-button{cursor:default}.cdk-keyboard-focused.mat-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-icon-button .mat-button-focus-overlay,.cdk-keyboard-focused.mat-mini-fab .mat-button-focus-overlay,.cdk-keyboard-focused.mat-raised-button .mat-button-focus-overlay{opacity:1}.mat-button::-moz-focus-inner,.mat-fab::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-mini-fab::-moz-focus-inner,.mat-raised-button::-moz-focus-inner{border:0}.mat-fab,.mat-mini-fab,.mat-raised-button{transform:translate3d(0,0,0);transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1)}.mat-fab:not([class*=mat-elevation-z]),.mat-mini-fab:not([class*=mat-elevation-z]),.mat-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-raised-button:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}[disabled].mat-fab,[disabled].mat-mini-fab,[disabled].mat-raised-button{box-shadow:none}.mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{transition:none;opacity:0}.mat-button:hover .mat-button-focus-overlay{opacity:1}.mat-fab{min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button .mat-icon,.mat-icon-button i{line-height:24px}.mat-button,.mat-icon-button,.mat-raised-button{color:currentColor}.mat-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*{vertical-align:middle}.mat-button-focus-overlay,.mat-button-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-focus-overlay{background-color:rgba(0,0,0,.12);border-radius:inherit;opacity:0;transition:opacity .2s cubic-bezier(.35,0,.25,1),background-color .2s cubic-bezier(.35,0,.25,1)}@media screen and (-ms-high-contrast:active){.mat-button-focus-overlay{background-color:rgba(255,255,255,.5)}}.mat-button-ripple-round{border-radius:50%;z-index:1}@media screen and (-ms-high-contrast:active){.mat-button,.mat-fab,.mat-icon-button,.mat-mini-fab,.mat-raised-button{outline:solid 1px}}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAnchor.ctorParameters = function () { return [\n { type: Platform, },\n { type: FocusMonitor, },\n { type: ElementRef, },\n { type: Renderer2, },\n ]; };\n return MatAnchor;\n}(MatButton));\n\nvar MatButtonModule = (function () {\n function MatButtonModule() {\n }\n MatButtonModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatRippleModule,\n MatCommonModule,\n A11yModule,\n ],\n exports: [\n MatButton,\n MatAnchor,\n MatMiniFab,\n MatFab,\n MatCommonModule,\n MatButtonCssMatStyler,\n MatRaisedButtonCssMatStyler,\n MatIconButtonCssMatStyler,\n ],\n declarations: [\n MatButton,\n MatAnchor,\n MatMiniFab,\n MatFab,\n MatButtonCssMatStyler,\n MatRaisedButtonCssMatStyler,\n MatIconButtonCssMatStyler,\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonModule.ctorParameters = function () { return []; };\n return MatButtonModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatButtonModule, MatButtonCssMatStyler, MatRaisedButtonCssMatStyler, MatIconButtonCssMatStyler, MatFab, MatMiniFab, MatButtonBase, _MatButtonMixinBase, MatButton, MatAnchor };\n//# sourceMappingURL=button.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule, mixinDisabled } from '@angular/material/core';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER, UniqueSelectionDispatcher } from '@angular/cdk/collections';\n\n/**\n * \\@docs-private\n */\nvar MatButtonToggleGroupBase = (function () {\n function MatButtonToggleGroupBase() {\n }\n return MatButtonToggleGroupBase;\n}());\nvar _MatButtonToggleGroupMixinBase = mixinDisabled(MatButtonToggleGroupBase);\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * \\@docs-private\n */\nvar MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatButtonToggleGroup; }),\n multi: true\n};\nvar _uniqueIdCounter = 0;\n/**\n * Change event object emitted by MatButtonToggle.\n */\nvar MatButtonToggleChange = (function () {\n function MatButtonToggleChange() {\n }\n return MatButtonToggleChange;\n}());\n/**\n * Exclusive selection button toggle group that behaves like a radio-button group.\n */\nvar MatButtonToggleGroup = (function (_super) {\n __extends(MatButtonToggleGroup, _super);\n /**\n * @param {?} _changeDetector\n */\n function MatButtonToggleGroup(_changeDetector) {\n var _this = _super.call(this) || this;\n _this._changeDetector = _changeDetector;\n /**\n * The value for the button toggle group. Should match currently selected button toggle.\n */\n _this._value = null;\n /**\n * The HTML name attribute applied to toggles in this group.\n */\n _this._name = \"mat-button-toggle-group-\" + _uniqueIdCounter++;\n /**\n * Whether the button toggle group should be vertical.\n */\n _this._vertical = false;\n /**\n * The currently selected button toggle, should match the value.\n */\n _this._selected = null;\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _this._controlValueAccessorChangeFn = function () { };\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n */\n _this._onTouched = function () { };\n /**\n * Event emitted when the group's value changes.\n */\n _this.change = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatButtonToggleGroup.prototype, \"name\", {\n /**\n * `name` attribute for the underlying `input` element.\n * @return {?}\n */\n get: function () {\n return this._name;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._name = value;\n this._updateButtonToggleNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggleGroup.prototype, \"vertical\", {\n /**\n * Whether the toggle group is vertical.\n * @return {?}\n */\n get: function () {\n return this._vertical;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggleGroup.prototype, \"value\", {\n /**\n * Value of the toggle group.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (this._value != newValue) {\n this._value = newValue;\n this._updateSelectedButtonToggleFromValue();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggleGroup.prototype, \"selected\", {\n /**\n * Whether the toggle group is selected.\n * @return {?}\n */\n get: function () {\n return this._selected;\n },\n /**\n * @param {?} selected\n * @return {?}\n */\n set: function (selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n if (selected && !selected.checked) {\n selected.checked = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatButtonToggleGroup.prototype._updateButtonToggleNames = function () {\n var _this = this;\n if (this._buttonToggles) {\n this._buttonToggles.forEach(function (toggle) {\n toggle.name = _this._name;\n });\n }\n };\n /**\n * @return {?}\n */\n MatButtonToggleGroup.prototype._updateSelectedButtonToggleFromValue = function () {\n var _this = this;\n var /** @type {?} */ isAlreadySelected = this._selected != null && this._selected.value == this._value;\n if (this._buttonToggles != null && !isAlreadySelected) {\n var /** @type {?} */ matchingButtonToggle = this._buttonToggles.filter(function (buttonToggle) { return buttonToggle.value == _this._value; })[0];\n if (matchingButtonToggle) {\n this.selected = matchingButtonToggle;\n }\n else if (this.value == null) {\n this.selected = null;\n this._buttonToggles.forEach(function (buttonToggle) {\n buttonToggle.checked = false;\n });\n }\n }\n };\n /**\n * Dispatch change event with current selection and group value.\n * @return {?}\n */\n MatButtonToggleGroup.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatButtonToggleChange();\n event.source = this._selected;\n event.value = this._value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value Value to be set to the model.\n * @return {?}\n */\n MatButtonToggleGroup.prototype.writeValue = function (value) {\n this.value = value;\n this._changeDetector.markForCheck();\n };\n /**\n * Registers a callback that will be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn On change callback function.\n * @return {?}\n */\n MatButtonToggleGroup.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\n };\n /**\n * Registers a callback that will be triggered when the control has been touched.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn On touch callback function.\n * @return {?}\n */\n MatButtonToggleGroup.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.\n * @param {?} isDisabled Whether the component should be disabled.\n * @return {?}\n */\n MatButtonToggleGroup.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._markButtonTogglesForCheck();\n };\n /**\n * @return {?}\n */\n MatButtonToggleGroup.prototype._markButtonTogglesForCheck = function () {\n if (this._buttonToggles) {\n this._buttonToggles.forEach(function (toggle) { return toggle._markForCheck(); });\n }\n };\n MatButtonToggleGroup.decorators = [\n { type: Directive, args: [{\n selector: 'mat-button-toggle-group:not([multiple])',\n providers: [MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR],\n inputs: ['disabled'],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-button-toggle-group',\n '[class.mat-button-toggle-vertical]': 'vertical'\n },\n exportAs: 'matButtonToggleGroup',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggleGroup.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n ]; };\n MatButtonToggleGroup.propDecorators = {\n '_buttonToggles': [{ type: ContentChildren, args: [forwardRef(function () { return MatButtonToggle; }),] },],\n 'name': [{ type: Input },],\n 'vertical': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'change': [{ type: Output },],\n };\n return MatButtonToggleGroup;\n}(_MatButtonToggleGroupMixinBase));\n/**\n * Multiple selection button-toggle group. `ngModel` is not supported in this mode.\n */\nvar MatButtonToggleGroupMultiple = (function (_super) {\n __extends(MatButtonToggleGroupMultiple, _super);\n function MatButtonToggleGroupMultiple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Whether the button toggle group should be vertical.\n */\n _this._vertical = false;\n return _this;\n }\n Object.defineProperty(MatButtonToggleGroupMultiple.prototype, \"vertical\", {\n /**\n * Whether the toggle group is vertical.\n * @return {?}\n */\n get: function () {\n return this._vertical;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n MatButtonToggleGroupMultiple.decorators = [\n { type: Directive, args: [{\n selector: 'mat-button-toggle-group[multiple]',\n exportAs: 'matButtonToggleGroup',\n inputs: ['disabled'],\n host: {\n 'class': 'mat-button-toggle-group',\n '[class.mat-button-toggle-vertical]': 'vertical',\n 'role': 'group'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggleGroupMultiple.ctorParameters = function () { return []; };\n MatButtonToggleGroupMultiple.propDecorators = {\n 'vertical': [{ type: Input },],\n };\n return MatButtonToggleGroupMultiple;\n}(_MatButtonToggleGroupMixinBase));\n/**\n * Single button inside of a toggle group.\n */\nvar MatButtonToggle = (function () {\n /**\n * @param {?} toggleGroup\n * @param {?} toggleGroupMultiple\n * @param {?} _changeDetectorRef\n * @param {?} _buttonToggleDispatcher\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _focusMonitor\n */\n function MatButtonToggle(toggleGroup, toggleGroupMultiple, _changeDetectorRef, _buttonToggleDispatcher, _renderer, _elementRef, _focusMonitor) {\n var _this = this;\n this._changeDetectorRef = _changeDetectorRef;\n this._buttonToggleDispatcher = _buttonToggleDispatcher;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n /**\n * Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will\n * take precedence so this may be omitted.\n */\n this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n /**\n * Whether or not this button toggle is checked.\n */\n this._checked = false;\n /**\n * Whether or not this button toggle is disabled.\n */\n this._disabled = false;\n /**\n * Value assigned to this button toggle.\n */\n this._value = null;\n /**\n * Whether or not the button toggle is a single selection.\n */\n this._isSingleSelector = false;\n /**\n * Unregister function for _buttonToggleDispatcher *\n */\n this._removeUniqueSelectionListener = function () { };\n /**\n * Event emitted when the group value changes.\n */\n this.change = new EventEmitter();\n this.buttonToggleGroup = toggleGroup;\n this.buttonToggleGroupMultiple = toggleGroupMultiple;\n if (this.buttonToggleGroup) {\n this._removeUniqueSelectionListener =\n _buttonToggleDispatcher.listen(function (id, name) {\n if (id != _this.id && name == _this.name) {\n _this.checked = false;\n _this._changeDetectorRef.markForCheck();\n }\n });\n this._type = 'radio';\n this.name = this.buttonToggleGroup.name;\n this._isSingleSelector = true;\n }\n else {\n // Even if there is no group at all, treat the button toggle as a checkbox so it can be\n // toggled on or off.\n this._type = 'checkbox';\n this._isSingleSelector = false;\n }\n }\n Object.defineProperty(MatButtonToggle.prototype, \"inputId\", {\n /**\n * Unique ID for the underlying `input` element.\n * @return {?}\n */\n get: function () {\n return this.id + \"-input\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggle.prototype, \"checked\", {\n /**\n * Whether the button is checked.\n * @return {?}\n */\n get: function () { return this._checked; },\n /**\n * @param {?} newCheckedState\n * @return {?}\n */\n set: function (newCheckedState) {\n if (this._isSingleSelector && newCheckedState) {\n // Notify all button toggles with the same name (in the same group) to un-check.\n this._buttonToggleDispatcher.notify(this.id, this.name);\n this._changeDetectorRef.markForCheck();\n }\n this._checked = newCheckedState;\n if (newCheckedState && this._isSingleSelector && this.buttonToggleGroup.value != this.value) {\n this.buttonToggleGroup.selected = this;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggle.prototype, \"value\", {\n /**\n * MatButtonToggleGroup reads this to assign its own value.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (this._value != value) {\n if (this.buttonToggleGroup != null && this.checked) {\n this.buttonToggleGroup.value = value;\n }\n this._value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatButtonToggle.prototype, \"disabled\", {\n /**\n * Whether the button is disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled || (this.buttonToggleGroup != null && this.buttonToggleGroup.disabled) ||\n (this.buttonToggleGroupMultiple != null && this.buttonToggleGroupMultiple.disabled);\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatButtonToggle.prototype.ngOnInit = function () {\n if (this.id == null) {\n this.id = \"mat-button-toggle-\" + _uniqueIdCounter++;\n }\n if (this.buttonToggleGroup && this._value == this.buttonToggleGroup.value) {\n this._checked = true;\n }\n this._focusMonitor.monitor(this._elementRef.nativeElement, this._renderer, true);\n };\n /**\n * Focuses the button.\n * @return {?}\n */\n MatButtonToggle.prototype.focus = function () {\n this._inputElement.nativeElement.focus();\n };\n /**\n * Toggle the state of the current button toggle.\n * @return {?}\n */\n MatButtonToggle.prototype._toggle = function () {\n this.checked = !this.checked;\n };\n /**\n * Checks the button toggle due to an interaction with the underlying native input.\n * @param {?} event\n * @return {?}\n */\n MatButtonToggle.prototype._onInputChange = function (event) {\n event.stopPropagation();\n if (this._isSingleSelector) {\n // Propagate the change one-way via the group, which will in turn mark this\n // button toggle as checked.\n var /** @type {?} */ groupValueChanged = this.buttonToggleGroup.selected != this;\n this.checked = true;\n this.buttonToggleGroup.selected = this;\n this.buttonToggleGroup._onTouched();\n if (groupValueChanged) {\n this.buttonToggleGroup._emitChangeEvent();\n }\n }\n else {\n this._toggle();\n }\n // Emit a change event when the native input does.\n this._emitChangeEvent();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatButtonToggle.prototype._onInputClick = function (event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `slide-toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n };\n /**\n * Dispatch change event with current value.\n * @return {?}\n */\n MatButtonToggle.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatButtonToggleChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\n };\n /**\n * @return {?}\n */\n MatButtonToggle.prototype.ngOnDestroy = function () {\n this._removeUniqueSelectionListener();\n };\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n * @return {?}\n */\n MatButtonToggle.prototype._markForCheck = function () {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update button toggle's status\n this._changeDetectorRef.markForCheck();\n };\n MatButtonToggle.decorators = [\n { type: Component, args: [{selector: 'mat-button-toggle',\n template: \"<label [attr.for]=\\\"inputId\\\" class=\\\"mat-button-toggle-label\\\"><input #input class=\\\"mat-button-toggle-input cdk-visually-hidden\\\" [type]=\\\"_type\\\" [id]=\\\"inputId\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled || null\\\" [name]=\\\"name\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onInputChange($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-button-toggle-label-content\\\"><ng-content></ng-content></div></label><div class=\\\"mat-button-toggle-focus-overlay\\\"></div>\",\n styles: [\".mat-button-toggle-group,.mat-button-toggle-standalone{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);position:relative;display:inline-flex;flex-direction:row;border-radius:2px;cursor:pointer;white-space:nowrap;overflow:hidden}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle-disabled .mat-button-toggle-label-content{cursor:default}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.mat-button-toggle-label-content{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;cursor:pointer}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{border-radius:inherit;pointer-events:none;opacity:0;top:0;left:0;right:0;bottom:0;position:absolute}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matButtonToggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup && !buttonToggleGroupMultiple',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n 'class': 'mat-button-toggle',\n '[attr.id]': 'id',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggle.ctorParameters = function () { return [\n { type: MatButtonToggleGroup, decorators: [{ type: Optional },] },\n { type: MatButtonToggleGroupMultiple, decorators: [{ type: Optional },] },\n { type: ChangeDetectorRef, },\n { type: UniqueSelectionDispatcher, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: FocusMonitor, },\n ]; };\n MatButtonToggle.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n 'id': [{ type: Input },],\n 'name': [{ type: Input },],\n 'checked': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'change': [{ type: Output },],\n };\n return MatButtonToggle;\n}());\n\nvar MatButtonToggleModule = (function () {\n function MatButtonToggleModule() {\n }\n MatButtonToggleModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule, A11yModule],\n exports: [\n MatButtonToggleGroup,\n MatButtonToggleGroupMultiple,\n MatButtonToggle,\n MatCommonModule,\n ],\n declarations: [MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatButtonToggleModule.ctorParameters = function () { return []; };\n return MatButtonToggleModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatButtonToggleGroupBase, _MatButtonToggleGroupMixinBase, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle, MatButtonToggleModule };\n//# sourceMappingURL=button-toggle.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, Directive, Input, NgModule, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * Content of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardContent = (function () {\n function MatCardContent() {\n }\n MatCardContent.decorators = [\n { type: Directive, args: [{\n selector: 'mat-card-content',\n host: { 'class': 'mat-card-content' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardContent.ctorParameters = function () { return []; };\n return MatCardContent;\n}());\n/**\n * Title of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardTitle = (function () {\n function MatCardTitle() {\n }\n MatCardTitle.decorators = [\n { type: Directive, args: [{\n selector: \"mat-card-title, [mat-card-title], [matCardTitle]\",\n host: {\n 'class': 'mat-card-title'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardTitle.ctorParameters = function () { return []; };\n return MatCardTitle;\n}());\n/**\n * Sub-title of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardSubtitle = (function () {\n function MatCardSubtitle() {\n }\n MatCardSubtitle.decorators = [\n { type: Directive, args: [{\n selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\",\n host: {\n 'class': 'mat-card-subtitle'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardSubtitle.ctorParameters = function () { return []; };\n return MatCardSubtitle;\n}());\n/**\n * Action section of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardActions = (function () {\n function MatCardActions() {\n /**\n * Position of the actions inside the card.\n */\n this.align = 'start';\n }\n MatCardActions.decorators = [\n { type: Directive, args: [{\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-card-actions',\n '[class.mat-card-actions-align-end]': 'align === \"end\"',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardActions.ctorParameters = function () { return []; };\n MatCardActions.propDecorators = {\n 'align': [{ type: Input },],\n };\n return MatCardActions;\n}());\n/**\n * Footer of a card, needed as it's used as a selector in the API.\n * \\@docs-private\n */\nvar MatCardFooter = (function () {\n function MatCardFooter() {\n }\n MatCardFooter.decorators = [\n { type: Directive, args: [{\n selector: 'mat-card-footer',\n host: { 'class': 'mat-card-footer' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardFooter.ctorParameters = function () { return []; };\n return MatCardFooter;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardImage = (function () {\n function MatCardImage() {\n }\n MatCardImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-image], [matCardImage]',\n host: { 'class': 'mat-card-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardImage.ctorParameters = function () { return []; };\n return MatCardImage;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardSmImage = (function () {\n function MatCardSmImage() {\n }\n MatCardSmImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: { 'class': 'mat-card-sm-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardSmImage.ctorParameters = function () { return []; };\n return MatCardSmImage;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardMdImage = (function () {\n function MatCardMdImage() {\n }\n MatCardMdImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: { 'class': 'mat-card-md-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardMdImage.ctorParameters = function () { return []; };\n return MatCardMdImage;\n}());\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardLgImage = (function () {\n function MatCardLgImage() {\n }\n MatCardLgImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: { 'class': 'mat-card-lg-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardLgImage.ctorParameters = function () { return []; };\n return MatCardLgImage;\n}());\n/**\n * Large image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardXlImage = (function () {\n function MatCardXlImage() {\n }\n MatCardXlImage.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: { 'class': 'mat-card-xl-image' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardXlImage.ctorParameters = function () { return []; };\n return MatCardXlImage;\n}());\n/**\n * Avatar image used in a card, needed to add the mat- CSS styling.\n * \\@docs-private\n */\nvar MatCardAvatar = (function () {\n function MatCardAvatar() {\n }\n MatCardAvatar.decorators = [\n { type: Directive, args: [{\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: { 'class': 'mat-card-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardAvatar.ctorParameters = function () { return []; };\n return MatCardAvatar;\n}());\n/**\n * A basic content container component that adds the styles of a Material design card.\n *\n * While this component can be used alone, it also provides a number\n * of preset styles for common card sections, including:\n * - mat-card-title\n * - mat-card-subtitle\n * - mat-card-content\n * - mat-card-actions\n * - mat-card-footer\n */\nvar MatCard = (function () {\n function MatCard() {\n }\n MatCard.decorators = [\n { type: Component, args: [{selector: 'mat-card',\n exportAs: 'matCard',\n template: \"<ng-content></ng-content><ng-content select=\\\"mat-card-footer\\\"></ng-content>\",\n styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:block;position:relative;padding:24px;border-radius:2px}.mat-card:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-card{outline:solid 1px}}.mat-card-flat{box-shadow:none}.mat-card-actions,.mat-card-content,.mat-card-subtitle,.mat-card-title{display:block;margin-bottom:16px}.mat-card-actions{margin-left:-16px;margin-right:-16px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 48px);margin:0 -24px 16px -24px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-footer{display:block;margin:0 -24px -24px -24px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button{margin:0 4px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header-text{margin:0 8px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0}.mat-card-lg-image,.mat-card-md-image,.mat-card-sm-image{margin:-8px 0}.mat-card-title-group{display:flex;justify-content:space-between;margin:0 -8px}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}@media (max-width:600px){.mat-card{padding:24px 16px}.mat-card-actions{margin-left:-8px;margin-right:-8px}.mat-card-image{width:calc(100% + 32px);margin:16px -16px}.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}.mat-card-header{margin:-8px 0 0 0}.mat-card-footer{margin-left:-16px;margin-right:-16px}}.mat-card-content>:first-child,.mat-card>:first-child{margin-top:0}.mat-card-content>:last-child:not(.mat-card-footer),.mat-card>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-24px}.mat-card>.mat-card-actions:last-child{margin-bottom:-16px;padding-bottom:0}.mat-card-actions .mat-button:first-child,.mat-card-actions .mat-raised-button:first-child{margin-left:0;margin-right:0}.mat-card-subtitle:not(:first-child),.mat-card-title:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCard.ctorParameters = function () { return []; };\n return MatCard;\n}());\n/**\n * Component intended to be used within the `<mat-card>` component. It adds styles for a\n * preset header section (i.e. a title, subtitle, and avatar layout).\n * \\@docs-private\n */\nvar MatCardHeader = (function () {\n function MatCardHeader() {\n }\n MatCardHeader.decorators = [\n { type: Component, args: [{selector: 'mat-card-header',\n template: \"<ng-content select=\\\"[mat-card-avatar], [matCardAvatar]\\\"></ng-content><div class=\\\"mat-card-header-text\\\"><ng-content select=\\\"mat-card-title, mat-card-subtitle, [mat-card-title], [mat-card-subtitle]\\\"></ng-content></div><ng-content></ng-content>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card-header' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardHeader.ctorParameters = function () { return []; };\n return MatCardHeader;\n}());\n/**\n * Component intended to be used within the <mat-card> component. It adds styles for a preset\n * layout that groups an image with a title section.\n * \\@docs-private\n */\nvar MatCardTitleGroup = (function () {\n function MatCardTitleGroup() {\n }\n MatCardTitleGroup.decorators = [\n { type: Component, args: [{selector: 'mat-card-title-group',\n template: \"<div><ng-content select=\\\"mat-card-title, mat-card-subtitle, [mat-card-title], [mat-card-subtitle]\\\"></ng-content></div><ng-content select=\\\"img\\\"></ng-content><ng-content></ng-content>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'mat-card-title-group' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardTitleGroup.ctorParameters = function () { return []; };\n return MatCardTitleGroup;\n}());\n\nvar MatCardModule = (function () {\n function MatCardModule() {\n }\n MatCardModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule,\n ],\n declarations: [\n MatCard, MatCardHeader, MatCardTitleGroup, MatCardContent, MatCardTitle, MatCardSubtitle,\n MatCardActions, MatCardFooter, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardImage,\n MatCardXlImage, MatCardAvatar,\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCardModule.ctorParameters = function () { return []; };\n return MatCardModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCardContent, MatCardTitle, MatCardSubtitle, MatCardActions, MatCardFooter, MatCardImage, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardXlImage, MatCardAvatar, MatCard, MatCardHeader, MatCardTitleGroup, MatCardModule };\n//# sourceMappingURL=card.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Input, NgModule, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { CheckboxRequiredValidator, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n// Increasing integer for generating unique ids for checkbox components.\nvar nextUniqueId = 0;\n/**\n * Provider Expression that allows mat-checkbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * \\@docs-private\n */\nvar MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatCheckbox; }),\n multi: true\n};\nvar TransitionCheckState = {};\nTransitionCheckState.Init = 0;\nTransitionCheckState.Checked = 1;\nTransitionCheckState.Unchecked = 2;\nTransitionCheckState.Indeterminate = 3;\nTransitionCheckState[TransitionCheckState.Init] = \"Init\";\nTransitionCheckState[TransitionCheckState.Checked] = \"Checked\";\nTransitionCheckState[TransitionCheckState.Unchecked] = \"Unchecked\";\nTransitionCheckState[TransitionCheckState.Indeterminate] = \"Indeterminate\";\n/**\n * Change event object emitted by MatCheckbox.\n */\nvar MatCheckboxChange = (function () {\n function MatCheckboxChange() {\n }\n return MatCheckboxChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatCheckboxBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatCheckboxBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatCheckboxBase;\n}());\nvar _MatCheckboxMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatCheckboxBase)), 'accent'));\n/**\n * A material design checkbox component. Supports all of the functionality of an HTML5 checkbox,\n * and exposes a similar API. A MatCheckbox can be either checked, unchecked, indeterminate, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n * See: https://www.google.com/design/spec/components/selection-controls.html\n */\nvar MatCheckbox = (function (_super) {\n __extends(MatCheckbox, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _changeDetectorRef\n * @param {?} _focusMonitor\n * @param {?} tabIndex\n */\n function MatCheckbox(renderer, elementRef, _changeDetectorRef, _focusMonitor, tabIndex) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._focusMonitor = _focusMonitor;\n /**\n * Attached to the aria-label attribute of the host element. In most cases, arial-labelledby will\n * take precedence so this may be omitted.\n */\n _this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n _this.ariaLabelledby = null;\n _this._uniqueId = \"mat-checkbox-\" + ++nextUniqueId;\n /**\n * A unique id for the checkbox input. If none is supplied, it will be auto-generated.\n */\n _this.id = _this._uniqueId;\n /**\n * Whether the label should appear after or before the checkbox. Defaults to 'after'\n */\n _this.labelPosition = 'after';\n /**\n * Name value will be applied to the input element if present\n */\n _this.name = null;\n /**\n * Event emitted when the checkbox's `checked` value changes.\n */\n _this.change = new EventEmitter();\n /**\n * Event emitted when the checkbox's `indeterminate` value changes.\n */\n _this.indeterminateChange = new EventEmitter();\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * \\@docs-private\n */\n _this.onTouched = function () { };\n _this._currentAnimationClass = '';\n _this._currentCheckState = TransitionCheckState.Init;\n _this._checked = false;\n _this._indeterminate = false;\n _this._controlValueAccessorChangeFn = function () { };\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n Object.defineProperty(MatCheckbox.prototype, \"inputId\", {\n /**\n * Returns the unique id for the visual hidden input.\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCheckbox.prototype, \"required\", {\n /**\n * Whether the checkbox is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCheckbox.prototype, \"align\", {\n /**\n * Whether or not the checkbox should appear before or after the label.\n * @deprecated\n * @return {?}\n */\n get: function () {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatCheckbox.prototype.ngAfterViewInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatCheckbox.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n };\n Object.defineProperty(MatCheckbox.prototype, \"checked\", {\n /**\n * Whether the checkbox is checked.\n * @return {?}\n */\n get: function () {\n return this._checked;\n },\n /**\n * @param {?} checked\n * @return {?}\n */\n set: function (checked) {\n if (checked != this.checked) {\n this._checked = checked;\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCheckbox.prototype, \"indeterminate\", {\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n * @return {?}\n */\n get: function () {\n return this._indeterminate;\n },\n /**\n * @param {?} indeterminate\n * @return {?}\n */\n set: function (indeterminate) {\n var /** @type {?} */ changed = indeterminate != this._indeterminate;\n this._indeterminate = indeterminate;\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(TransitionCheckState.Indeterminate);\n }\n else {\n this._transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n this.indeterminateChange.emit(this._indeterminate);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatCheckbox.prototype._isRippleDisabled = function () {\n return this.disableRipple || this.disabled;\n };\n /**\n * Method being called whenever the label text changes.\n * @return {?}\n */\n MatCheckbox.prototype._onLabelTextChange = function () {\n // This method is getting called whenever the label of the checkbox changes.\n // Since the checkbox uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value Value to be set to the model.\n * @return {?}\n */\n MatCheckbox.prototype.writeValue = function (value) {\n this.checked = !!value;\n };\n /**\n * Registers a callback to be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Function to be called on change.\n * @return {?}\n */\n MatCheckbox.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\n };\n /**\n * Registers a callback to be triggered when the control has been touched.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be triggered when the checkbox is touched.\n * @return {?}\n */\n MatCheckbox.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Sets the checkbox's disabled state. Implemented as a part of ControlValueAccessor.\n * @param {?} isDisabled Whether the checkbox should be disabled.\n * @return {?}\n */\n MatCheckbox.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n };\n /**\n * @param {?} newState\n * @return {?}\n */\n MatCheckbox.prototype._transitionCheckState = function (newState) {\n var /** @type {?} */ oldState = this._currentCheckState;\n var /** @type {?} */ renderer = this._renderer;\n var /** @type {?} */ elementRef = this._elementRef;\n if (oldState === newState) {\n return;\n }\n if (this._currentAnimationClass.length > 0) {\n renderer.removeClass(elementRef.nativeElement, this._currentAnimationClass);\n }\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(oldState, newState);\n this._currentCheckState = newState;\n if (this._currentAnimationClass.length > 0) {\n renderer.addClass(elementRef.nativeElement, this._currentAnimationClass);\n }\n };\n /**\n * @return {?}\n */\n MatCheckbox.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatCheckboxChange();\n event.source = this;\n event.checked = this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n };\n /**\n * Function is called whenever the focus changes for the input element.\n * @param {?} focusOrigin\n * @return {?}\n */\n MatCheckbox.prototype._onInputFocusChange = function (focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n this._removeFocusRipple();\n this.onTouched();\n }\n };\n /**\n * Toggles the `checked` state of the checkbox.\n * @return {?}\n */\n MatCheckbox.prototype.toggle = function () {\n this.checked = !this.checked;\n };\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @param {?} event\n * @return {?}\n */\n MatCheckbox.prototype._onInputClick = function (event) {\n var _this = this;\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `checkbox` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n this._removeFocusRipple();\n if (!this.disabled) {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this._indeterminate) {\n Promise.resolve().then(function () {\n _this._indeterminate = false;\n _this.indeterminateChange.emit(_this._indeterminate);\n });\n }\n this.toggle();\n this._transitionCheckState(this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n }\n };\n /**\n * Focuses the checkbox.\n * @return {?}\n */\n MatCheckbox.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatCheckbox.prototype._onInteractionEvent = function (event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n };\n /**\n * @param {?} oldState\n * @param {?} newState\n * @return {?}\n */\n MatCheckbox.prototype._getAnimationClassForCheckStateTransition = function (oldState, newState) {\n var /** @type {?} */ animSuffix = '';\n switch (oldState) {\n case TransitionCheckState.Init:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === TransitionCheckState.Checked) {\n animSuffix = 'unchecked-checked';\n }\n else if (newState == TransitionCheckState.Indeterminate) {\n animSuffix = 'unchecked-indeterminate';\n }\n else {\n return '';\n }\n break;\n case TransitionCheckState.Unchecked:\n animSuffix = newState === TransitionCheckState.Checked ?\n 'unchecked-checked' : 'unchecked-indeterminate';\n break;\n case TransitionCheckState.Checked:\n animSuffix = newState === TransitionCheckState.Unchecked ?\n 'checked-unchecked' : 'checked-indeterminate';\n break;\n case TransitionCheckState.Indeterminate:\n animSuffix = newState === TransitionCheckState.Checked ?\n 'indeterminate-checked' : 'indeterminate-unchecked';\n break;\n }\n return \"mat-checkbox-anim-\" + animSuffix;\n };\n /**\n * Fades out the focus state ripple.\n * @return {?}\n */\n MatCheckbox.prototype._removeFocusRipple = function () {\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n };\n MatCheckbox.decorators = [\n { type: Component, args: [{selector: 'mat-checkbox',\n template: \"<label [attr.for]=\\\"inputId\\\" class=\\\"mat-checkbox-layout\\\" #label><div class=\\\"mat-checkbox-inner-container\\\" [class.mat-checkbox-inner-container-no-side-margin]=\\\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\\\"><input #input class=\\\"mat-checkbox-input cdk-visually-hidden\\\" type=\\\"checkbox\\\" [id]=\\\"inputId\\\" [required]=\\\"required\\\" [checked]=\\\"checked\\\" [attr.value]=\\\"value\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [tabIndex]=\\\"tabIndex\\\" [indeterminate]=\\\"indeterminate\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onInteractionEvent($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div matRipple class=\\\"mat-checkbox-ripple\\\" [matRippleTrigger]=\\\"label\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"true\\\"></div><div class=\\\"mat-checkbox-frame\\\"></div><div class=\\\"mat-checkbox-background\\\"><svg version=\\\"1.1\\\" focusable=\\\"false\\\" class=\\\"mat-checkbox-checkmark\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" xml:space=\\\"preserve\\\"><path class=\\\"mat-checkbox-checkmark-path\\\" fill=\\\"none\\\" stroke=\\\"white\\\" d=\\\"M4.1,12.7 9,17.6 20.3,6.3\\\"/></svg><div class=\\\"mat-checkbox-mixedmark\\\"></div></div></div><span class=\\\"mat-checkbox-label\\\" #checkboxLabel (cdkObserveContent)=\\\"_onLabelTextChange()\\\"><span style=\\\"display:none\\\">&nbsp;</span><ng-content></ng-content></span></label>\",\n styles: [\"@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.91026}50%{animation-timing-function:cubic-bezier(0,0,.2,.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0,0,0,1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(.4,0,1,1);stroke-dashoffset:0}to{stroke-dashoffset:-22.91026}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0,0,.2,.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(.14,0,0,1);opacity:1;transform:rotate(0)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}100%,32.8%{opacity:0;transform:scaleX(0)}}.mat-checkbox-checkmark,.mat-checkbox-mixedmark{width:calc(100% - 4px)}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{transition:background .4s cubic-bezier(.25,.8,.25,1),box-shadow 280ms cubic-bezier(.4,0,.2,1);cursor:pointer}.mat-checkbox-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-inner-container{display:inline-block;height:20px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:20px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0,0,.2,.1);border-width:2px;border-style:solid}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0,0,.2,.1),opacity 90ms cubic-bezier(0,0,.2,.1)}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.91026;stroke-dasharray:22.91026;stroke-width:2.66667px}.mat-checkbox-mixedmark{height:2px;opacity:0;transform:scaleX(0) rotate(0)}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0s mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0s mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0s mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:.5s linear 0s mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0s mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:.3s linear 0s mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}.mat-checkbox-ripple{position:absolute;left:-15px;top:-15px;right:-15px;bottom:-15px;border-radius:50%;z-index:1;pointer-events:none}\"],\n exportAs: 'matCheckbox',\n host: {\n 'class': 'mat-checkbox',\n '[id]': 'id',\n '[class.mat-checkbox-indeterminate]': 'indeterminate',\n '[class.mat-checkbox-checked]': 'checked',\n '[class.mat-checkbox-disabled]': 'disabled',\n '[class.mat-checkbox-label-before]': 'labelPosition == \"before\"',\n },\n providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCheckbox.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: FocusMonitor, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatCheckbox.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'id': [{ type: Input },],\n 'required': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'name': [{ type: Input },],\n 'change': [{ type: Output },],\n 'indeterminateChange': [{ type: Output },],\n 'value': [{ type: Input },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n 'checked': [{ type: Input },],\n 'indeterminate': [{ type: Input },],\n };\n return MatCheckbox;\n}(_MatCheckboxMixinBase));\n\nvar _MatCheckboxRequiredValidator = CheckboxRequiredValidator;\nvar MAT_CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(function () { return MatCheckboxRequiredValidator; }),\n multi: true\n};\n/**\n * Validator for Material checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `mat-checkbox`.\n */\nvar MatCheckboxRequiredValidator = (function (_super) {\n __extends(MatCheckboxRequiredValidator, _super);\n function MatCheckboxRequiredValidator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatCheckboxRequiredValidator.decorators = [\n { type: Directive, args: [{\n selector: \"mat-checkbox[required][formControlName],\\n mat-checkbox[required][formControl], mat-checkbox[required][ngModel]\",\n providers: [MAT_CHECKBOX_REQUIRED_VALIDATOR],\n host: { '[attr.required]': 'required ? \"\" : null' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCheckboxRequiredValidator.ctorParameters = function () { return []; };\n return MatCheckboxRequiredValidator;\n}(_MatCheckboxRequiredValidator));\n\nvar MatCheckboxModule = (function () {\n function MatCheckboxModule() {\n }\n MatCheckboxModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatRippleModule, MatCommonModule, ObserversModule, A11yModule],\n exports: [MatCheckbox, MatCheckboxRequiredValidator, MatCommonModule],\n declarations: [MatCheckbox, MatCheckboxRequiredValidator],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCheckboxModule.ctorParameters = function () { return []; };\n return MatCheckboxModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, TransitionCheckState, MatCheckboxChange, MatCheckboxBase, _MatCheckboxMixinBase, MatCheckbox, MatCheckboxModule, _MatCheckboxRequiredValidator, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckboxRequiredValidator };\n//# sourceMappingURL=checkbox.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, Self, ViewEncapsulation } from '@angular/core';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BACKSPACE, DELETE, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { startWith } from '@angular/cdk/rxjs';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { mixinColor, mixinDisabled } from '@angular/material/core';\n\n/**\n * Event object emitted by MatChip when selected or deselected.\n */\nvar MatChipSelectionChange = (function () {\n /**\n * @param {?} source\n * @param {?} selected\n * @param {?=} isUserInput\n */\n function MatChipSelectionChange(source, selected, isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this.source = source;\n this.selected = selected;\n this.isUserInput = isUserInput;\n }\n return MatChipSelectionChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatChipBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatChipBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatChipBase;\n}());\nvar _MatChipMixinBase = mixinColor(mixinDisabled(MatChipBase), 'primary');\n/**\n * Dummy directive to add CSS class to basic chips.\n * \\@docs-private\n */\nvar MatBasicChip = (function () {\n function MatBasicChip() {\n }\n MatBasicChip.decorators = [\n { type: Directive, args: [{\n selector: \"mat-basic-chip, [mat-basic-chip]\",\n host: { 'class': 'mat-basic-chip' },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatBasicChip.ctorParameters = function () { return []; };\n return MatBasicChip;\n}());\n/**\n * Material design styled Chip component. Used inside the MatChipList component.\n */\nvar MatChip = (function (_super) {\n __extends(MatChip, _super);\n /**\n * @param {?} renderer\n * @param {?} _elementRef\n */\n function MatChip(renderer, _elementRef) {\n var _this = _super.call(this, renderer, _elementRef) || this;\n _this._elementRef = _elementRef;\n _this._selected = false;\n _this._selectable = true;\n _this._removable = true;\n /**\n * Whether the chip has focus.\n */\n _this._hasFocus = false;\n /**\n * Emits when the chip is focused.\n */\n _this._onFocus = new Subject();\n /**\n * Emits when the chip is blured.\n */\n _this._onBlur = new Subject();\n /**\n * Emitted when the chip is selected or deselected.\n */\n _this.selectionChange = new EventEmitter();\n /**\n * Emitted when the chip is destroyed.\n */\n _this.destroyed = new EventEmitter();\n /**\n * Emitted when the chip is destroyed.\n * @deprecated Use 'destroyed' instead.\n */\n _this.destroy = _this.destroyed;\n /**\n * Emitted when a chip is to be removed.\n */\n _this.removed = new EventEmitter();\n /**\n * Emitted when a chip is to be removed.\n * @deprecated Use `removed` instead.\n */\n _this.onRemove = _this.removed;\n return _this;\n }\n Object.defineProperty(MatChip.prototype, \"selected\", {\n /**\n * Whether the chip is selected.\n * @return {?}\n */\n get: function () {\n return this._selected;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceBooleanProperty(value);\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"value\", {\n /**\n * The value of the chip. Defaults to the content inside <mat-chip> tags.\n * @return {?}\n */\n get: function () {\n return this._value != undefined\n ? this._value\n : this._elementRef.nativeElement.textContent;\n },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n this._value = newValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"selectable\", {\n /**\n * Whether or not the chips are selectable. When a chip is not selectable,\n * changes to it's selected state are always ignored.\n * @return {?}\n */\n get: function () {\n return this._selectable;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selectable = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"removable\", {\n /**\n * Determines whether or not the chip displays the remove styling and emits (remove) events.\n * @return {?}\n */\n get: function () {\n return this._removable;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._removable = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChip.prototype, \"ariaSelected\", {\n /**\n * @return {?}\n */\n get: function () {\n return this.selectable ? this.selected.toString() : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatChip.prototype.ngOnDestroy = function () {\n this.destroyed.emit({ chip: this });\n };\n /**\n * Selects the chip.\n * @return {?}\n */\n MatChip.prototype.select = function () {\n this._selected = true;\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: true\n });\n };\n /**\n * Deselects the chip.\n * @return {?}\n */\n MatChip.prototype.deselect = function () {\n this._selected = false;\n this.selectionChange.emit({\n source: this,\n isUserInput: false,\n selected: false\n });\n };\n /**\n * Select this chip and emit selected event\n * @return {?}\n */\n MatChip.prototype.selectViaInteraction = function () {\n this._selected = true;\n // Emit select event when selected changes.\n this.selectionChange.emit({\n source: this,\n isUserInput: true,\n selected: true\n });\n };\n /**\n * Toggles the current selected state of this chip.\n * @param {?=} isUserInput\n * @return {?}\n */\n MatChip.prototype.toggleSelected = function (isUserInput) {\n if (isUserInput === void 0) { isUserInput = false; }\n this._selected = !this.selected;\n this.selectionChange.emit({\n source: this,\n isUserInput: isUserInput,\n selected: this._selected\n });\n return this.selected;\n };\n /**\n * Allows for programmatic focusing of the chip.\n * @return {?}\n */\n MatChip.prototype.focus = function () {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({ chip: this });\n };\n /**\n * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n * BACKSPACE keys are pressed.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n * @return {?}\n */\n MatChip.prototype.remove = function () {\n if (this.removable) {\n this.removed.emit({ chip: this });\n }\n };\n /**\n * Ensures events fire properly upon click.\n * @param {?} event\n * @return {?}\n */\n MatChip.prototype._handleClick = function (event) {\n // Check disabled\n if (this.disabled) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.focus();\n };\n /**\n * Handle custom key presses.\n * @param {?} event\n * @return {?}\n */\n MatChip.prototype._handleKeydown = function (event) {\n if (this.disabled) {\n return;\n }\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n // If we are removable, remove the focused chip\n this.remove();\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n case SPACE:\n // If we are selectable, toggle the focused chip\n if (this.selectable) {\n this.toggleSelected(true);\n }\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n };\n /**\n * @return {?}\n */\n MatChip.prototype._blur = function () {\n this._hasFocus = false;\n this._onBlur.next({ chip: this });\n };\n MatChip.decorators = [\n { type: Directive, args: [{\n selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\",\n inputs: ['color', 'disabled'],\n exportAs: 'matChip',\n host: {\n 'class': 'mat-chip',\n 'tabindex': '-1',\n 'role': 'option',\n '[class.mat-chip-selected]': 'selected',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-selected]': 'ariaSelected',\n '(click)': '_handleClick($event)',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_hasFocus = true',\n '(blur)': '_blur()',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChip.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatChip.propDecorators = {\n 'selected': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selectable': [{ type: Input },],\n 'removable': [{ type: Input },],\n 'selectionChange': [{ type: Output },],\n 'destroyed': [{ type: Output },],\n 'destroy': [{ type: Output },],\n 'removed': [{ type: Output },],\n 'onRemove': [{ type: Output, args: ['remove',] },],\n };\n return MatChip;\n}(_MatChipMixinBase));\n/**\n * Applies proper (click) support and adds styling for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * <mat-chip>\n * <mat-icon matChipRemove>cancel</mat-icon>\n * </mat-chip>\n *\n * You *may* use a custom icon, but you may need to override the `mat-chip-remove` positioning\n * styles to properly center the icon within the chip.\n */\nvar MatChipRemove = (function () {\n /**\n * @param {?} _parentChip\n */\n function MatChipRemove(_parentChip) {\n this._parentChip = _parentChip;\n }\n /**\n * Calls the parent chip's public `remove()` method if applicable.\n * @return {?}\n */\n MatChipRemove.prototype._handleClick = function () {\n if (this._parentChip.removable) {\n this._parentChip.remove();\n }\n };\n MatChipRemove.decorators = [\n { type: Directive, args: [{\n selector: '[matChipRemove]',\n host: {\n 'class': 'mat-chip-remove',\n '(click)': '_handleClick($event)',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipRemove.ctorParameters = function () { return [\n { type: MatChip, },\n ]; };\n return MatChipRemove;\n}());\n\n// Increasing integer for generating unique ids for chip-list components.\nvar nextUniqueId = 0;\n/**\n * Change event object that is emitted when the chip list value has changed.\n */\nvar MatChipListChange = (function () {\n /**\n * @param {?} source\n * @param {?} value\n */\n function MatChipListChange(source, value) {\n this.source = source;\n this.value = value;\n }\n return MatChipListChange;\n}());\n/**\n * A material design chips component (named ChipList for it's similarity to the List component).\n */\nvar MatChipList = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _changeDetectorRef\n * @param {?} _dir\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} ngControl\n */\n function MatChipList(_renderer, _elementRef, _changeDetectorRef, _dir, _parentForm, _parentFormGroup, ngControl) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n this.controlType = 'mat-chip-list';\n /**\n * Stream that emits whenever the state of the input changes such that the wrapping `MatFormField`\n * needs to run change detection.\n */\n this.stateChanges = new Subject();\n /**\n * When a chip is destroyed, we track the index so we can focus the appropriate next chip.\n */\n this._lastDestroyedIndex = null;\n /**\n * Track which chips we're listening to for focus/destruction.\n */\n this._chipSet = new WeakMap();\n /**\n * Subscription to tabbing out from the chip list.\n */\n this._tabOutSubscription = Subscription.EMPTY;\n /**\n * Whether or not the chip is selectable.\n */\n this._selectable = true;\n /**\n * Whether the component is in multiple selection mode.\n */\n this._multiple = false;\n /**\n * Uid of the chip list\n */\n this._uid = \"mat-chip-list-\" + nextUniqueId++;\n /**\n * Whether this is required\n */\n this._required = false;\n /**\n * Whether this is disabled\n */\n this._disabled = false;\n /**\n * Tab index for the chip list.\n */\n this._tabIndex = 0;\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use _tabIndex\n */\n this._userTabIndex = null;\n /**\n * Function when touched\n */\n this._onTouched = function () { };\n /**\n * Function when changed\n */\n this._onChange = function () { };\n /**\n * Comparison function to specify which option is displayed. Defaults to object equality.\n */\n this._compareWith = function (o1, o2) { return o1 === o2; };\n /**\n * Orientation of the chip list.\n */\n this.ariaOrientation = 'horizontal';\n /**\n * Event emitted when the selected chip list value has been changed by the user.\n */\n this.change = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the chip-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * \\@docs-private\n */\n this.valueChange = new EventEmitter();\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n Object.defineProperty(MatChipList.prototype, \"selected\", {\n /**\n * The array of selected chips inside chip list.\n * @return {?}\n */\n get: function () {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"multiple\", {\n /**\n * Whether the user should be allowed to select multiple chips.\n * @return {?}\n */\n get: function () { return this._multiple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._multiple = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"compareWith\", {\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n * @return {?}\n */\n get: function () { return this._compareWith; },\n /**\n * @param {?} fn\n * @return {?}\n */\n set: function (fn) {\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"value\", {\n /**\n * Required for FormFieldControl\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n this.writeValue(newValue);\n this._value = newValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"id\", {\n /**\n * @return {?}\n */\n get: function () { return this._id || this._uid; },\n /**\n * Required for FormFieldControl. The ID of the chip list\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._id = value;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"required\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._required;\n },\n /**\n * Required for FormFieldControl. Whether the chip list is required.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"placeholder\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n },\n /**\n * For FormFieldControl. Use chip input's placholder if there's a chip input\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._placeholder = value;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"focused\", {\n /**\n * Whether any chips or the matChipInput inside of this chip-list has focus.\n * @return {?}\n */\n get: function () {\n return this.chips.some(function (chip) { return chip._hasFocus; }) ||\n (this._chipInput && this._chipInput.focused);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"empty\", {\n /**\n * Whether this chip-list contains no chips and no matChipInput.\n * @return {?}\n */\n get: function () {\n return (!this._chipInput || this._chipInput.empty) && this.chips.length === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"shouldPlaceholderFloat\", {\n /**\n * @return {?}\n */\n get: function () {\n return this.empty;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"disabled\", {\n /**\n * Whether this chip-list is disabled.\n * @return {?}\n */\n get: function () { return this.ngControl ? this.ngControl.disabled : this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"errorState\", {\n /**\n * Whether the chip list is in an error state.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ isInvalid = this.ngControl && this.ngControl.invalid;\n var /** @type {?} */ isTouched = this.ngControl && this.ngControl.touched;\n var /** @type {?} */ isSubmitted = (this._parentFormGroup && this._parentFormGroup.submitted) ||\n (this._parentForm && this._parentForm.submitted);\n return !!(isInvalid && (isTouched || isSubmitted));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"selectable\", {\n /**\n * Whether or not this chip is selectable. When a chip is not selectable,\n * its selected state is always ignored.\n * @return {?}\n */\n get: function () { return this._selectable; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._selectable = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"tabIndex\", {\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._userTabIndex = value;\n this._tabIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipSelectionChanges\", {\n /**\n * Combined stream of all of the child chips' selection change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip.selectionChange; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipFocusChanges\", {\n /**\n * Combined stream of all of the child chips' focus change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip._onFocus; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipBlurChanges\", {\n /**\n * Combined stream of all of the child chips' blur change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip._onBlur; }));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipList.prototype, \"chipRemoveChanges\", {\n /**\n * Combined stream of all of the child chips' remove change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.chips.map(function (chip) { return chip.destroy; }));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatChipList.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._keyManager = new FocusKeyManager(this.chips).withWrap();\n // Prevents the chip list from capturing focus and redirecting\n // it back to the first chip when the user tabs out.\n this._tabOutSubscription = this._keyManager.tabOut.subscribe(function () {\n _this._tabIndex = -1;\n setTimeout(function () { return _this._tabIndex = _this._userTabIndex || 0; });\n });\n // When the list changes, re-subscribe\n this._changeSubscription = startWith.call(this.chips.changes, null).subscribe(function () {\n _this._resetChips();\n // Reset chips selected/deselected status\n _this._initializeSelection();\n // Check to see if we need to update our tab index\n _this._updateTabIndex();\n // Check to see if we have a destroyed chip and need to refocus\n _this._updateFocusForDestroyedChips();\n });\n };\n /**\n * @return {?}\n */\n MatChipList.prototype.ngOnInit = function () {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype.ngOnDestroy = function () {\n this._tabOutSubscription.unsubscribe();\n if (this._changeSubscription) {\n this._changeSubscription.unsubscribe();\n }\n this._dropSubscriptions();\n };\n /**\n * Associates an HTML input element with this chip list.\n * @param {?} inputElement\n * @return {?}\n */\n MatChipList.prototype.registerInput = function (inputElement) {\n this._chipInput = inputElement;\n };\n /**\n * @param {?} ids\n * @return {?}\n */\n MatChipList.prototype.setDescribedByIds = function (ids) { this._ariaDescribedby = ids.join(' '); };\n /**\n * @param {?} value\n * @return {?}\n */\n MatChipList.prototype.writeValue = function (value) {\n if (this.chips) {\n this._setSelectionByValue(value, false);\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatChipList.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatChipList.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * @param {?} disabled\n * @return {?}\n */\n MatChipList.prototype.setDisabledState = function (disabled) {\n this.disabled = disabled;\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype.onContainerClick = function () {\n this.focus();\n };\n /**\n * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n * @return {?}\n */\n MatChipList.prototype.focus = function () {\n // TODO: ARIA says this should focus the first `selected` chip if any are selected.\n // Focus on first element if there's no chipInput inside chip-list\n if (this._chipInput && this._chipInput.focused) {\n // do nothing\n }\n else if (this.chips.length > 0) {\n this._keyManager.setFirstItemActive();\n this.stateChanges.next();\n }\n else {\n this._focusInput();\n this.stateChanges.next();\n }\n };\n /**\n * Attempt to focus an input if we have one.\n * @return {?}\n */\n MatChipList.prototype._focusInput = function () {\n if (this._chipInput) {\n this._chipInput.focus();\n }\n };\n /**\n * Pass events to the keyboard manager. Available here for tests.\n * @param {?} event\n * @return {?}\n */\n MatChipList.prototype._keydown = function (event) {\n var /** @type {?} */ code = event.keyCode;\n var /** @type {?} */ target = (event.target);\n var /** @type {?} */ isInputEmpty = this._isInputEmpty(target);\n var /** @type {?} */ isRtl = this._dir && this._dir.value == 'rtl';\n var /** @type {?} */ isPrevKey = (code === (isRtl ? RIGHT_ARROW : LEFT_ARROW));\n var /** @type {?} */ isNextKey = (code === (isRtl ? LEFT_ARROW : RIGHT_ARROW));\n var /** @type {?} */ isBackKey = code === BACKSPACE;\n // If they are on an empty input and hit backspace, focus the last chip\n if (isInputEmpty && isBackKey) {\n this._keyManager.setLastItemActive();\n event.preventDefault();\n return;\n }\n // If they are on a chip, check for space/left/right, otherwise pass to our key manager (like\n // up/down keys)\n if (target && target.classList.contains('mat-chip')) {\n if (isPrevKey) {\n this._keyManager.setPreviousItemActive();\n event.preventDefault();\n }\n else if (isNextKey) {\n this._keyManager.setNextItemActive();\n event.preventDefault();\n }\n else {\n this._keyManager.onKeydown(event);\n }\n }\n this.stateChanges.next();\n };\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n * @return {?}\n */\n MatChipList.prototype._updateTabIndex = function () {\n // If we have 0 chips, we should not allow keyboard focus\n this._tabIndex = this._userTabIndex || (this.chips.length === 0 ? -1 : 0);\n };\n /**\n * Update key manager's active item when chip is deleted.\n * If the deleted chip is the last chip in chip list, focus the new last chip.\n * Otherwise focus the next chip in the list.\n * Save `_lastDestroyedIndex` so we can set the correct focus.\n * @param {?} chip\n * @return {?}\n */\n MatChipList.prototype._updateKeyManager = function (chip) {\n var /** @type {?} */ chipIndex = this.chips.toArray().indexOf(chip);\n if (this._isValidIndex(chipIndex)) {\n if (chip._hasFocus) {\n // Check whether the chip is not the last item\n if (chipIndex < this.chips.length - 1) {\n this._keyManager.setActiveItem(chipIndex);\n }\n else if (chipIndex - 1 >= 0) {\n this._keyManager.setActiveItem(chipIndex - 1);\n }\n }\n if (this._keyManager.activeItemIndex === chipIndex) {\n this._lastDestroyedIndex = chipIndex;\n }\n }\n };\n /**\n * Checks to see if a focus chip was recently destroyed so that we can refocus the next closest\n * one.\n * @return {?}\n */\n MatChipList.prototype._updateFocusForDestroyedChips = function () {\n var /** @type {?} */ chipsArray = this.chips;\n if (this._lastDestroyedIndex != null && chipsArray.length > 0) {\n // Check whether the destroyed chip was the last item\n var /** @type {?} */ newFocusIndex = Math.min(this._lastDestroyedIndex, chipsArray.length - 1);\n this._keyManager.setActiveItem(newFocusIndex);\n var /** @type {?} */ focusChip = this._keyManager.activeItem;\n // Focus the chip\n if (focusChip) {\n focusChip.focus();\n }\n }\n // Reset our destroyed index\n this._lastDestroyedIndex = null;\n };\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param {?} index The index to be checked.\n * @return {?} True if the index is valid for our list of chips.\n */\n MatChipList.prototype._isValidIndex = function (index) {\n return index >= 0 && index < this.chips.length;\n };\n /**\n * @param {?} element\n * @return {?}\n */\n MatChipList.prototype._isInputEmpty = function (element) {\n if (element && element.nodeName.toLowerCase() === 'input') {\n var /** @type {?} */ input = (element);\n return !input.value;\n }\n return false;\n };\n /**\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?}\n */\n MatChipList.prototype._setSelectionByValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = true; }\n this._clearSelection();\n this.chips.forEach(function (chip) { return chip.deselect(); });\n if (Array.isArray(value)) {\n value.forEach(function (currentValue) { return _this._selectValue(currentValue, isUserInput); });\n this._sortValues();\n }\n else {\n var /** @type {?} */ correspondingChip = this._selectValue(value, isUserInput);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what chip the user interacted with last.\n if (correspondingChip) {\n this._keyManager.setActiveItem(this.chips.toArray().indexOf(correspondingChip));\n }\n }\n };\n /**\n * Finds and selects the chip based on its value.\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?} Chip that has the corresponding value.\n */\n MatChipList.prototype._selectValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = true; }\n var /** @type {?} */ correspondingChip = this.chips.find(function (chip) {\n return chip.value != null && _this._compareWith(chip.value, value);\n });\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n this._selectionModel.select(correspondingChip);\n }\n return correspondingChip;\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._initializeSelection = function () {\n var _this = this;\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(function () {\n if (_this.ngControl || _this._value) {\n _this._setSelectionByValue(_this.ngControl ? _this.ngControl.value : _this._value, false);\n _this.stateChanges.next();\n }\n });\n };\n /**\n * Deselects every chip in the list.\n * @param {?=} skip Chip that should not be deselected.\n * @return {?}\n */\n MatChipList.prototype._clearSelection = function (skip) {\n this._selectionModel.clear();\n this.chips.forEach(function (chip) {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n this.stateChanges.next();\n };\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n * @return {?}\n */\n MatChipList.prototype._sortValues = function () {\n var _this = this;\n if (this._multiple) {\n this._selectionModel.clear();\n this.chips.forEach(function (chip) {\n if (chip.selected) {\n _this._selectionModel.select(chip);\n }\n });\n this.stateChanges.next();\n }\n };\n /**\n * Emits change event to set the model value.\n * @param {?=} fallbackValue\n * @return {?}\n */\n MatChipList.prototype._propagateChanges = function (fallbackValue) {\n var /** @type {?} */ valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(function (chip) { return chip.value; });\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n };\n /**\n * When blurred, mark the field as touched when focus moved outside the chip list.\n * @return {?}\n */\n MatChipList.prototype._blur = function () {\n var _this = this;\n if (!this.disabled) {\n if (this._chipInput) {\n // If there's a chip input, we should check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(function () {\n if (!_this.focused) {\n _this._markAsTouched();\n }\n });\n }\n else {\n // If there's no chip input, then mark the field as touched.\n this._markAsTouched();\n }\n }\n };\n /**\n * Mark the field as touched\n * @return {?}\n */\n MatChipList.prototype._markAsTouched = function () {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._resetChips = function () {\n this._dropSubscriptions();\n this._listenToChipsFocus();\n this._listenToChipsSelection();\n this._listenToChipsRemoved();\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._dropSubscriptions = function () {\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n if (this._chipSelectionSubscription) {\n this._chipSelectionSubscription.unsubscribe();\n this._chipSelectionSubscription = null;\n }\n };\n /**\n * Listens to user-generated selection events on each chip.\n * @return {?}\n */\n MatChipList.prototype._listenToChipsSelection = function () {\n var _this = this;\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(function (event) {\n event.source.selected\n ? _this._selectionModel.select(event.source)\n : _this._selectionModel.deselect(event.source);\n // For single selection chip list, make sure the deselected value is unselected.\n if (!_this.multiple) {\n _this.chips.forEach(function (chip) {\n if (!_this._selectionModel.isSelected(chip) && chip.selected) {\n chip.deselect();\n }\n });\n }\n if (event.isUserInput) {\n _this._propagateChanges();\n }\n });\n };\n /**\n * Listens to user-generated selection events on each chip.\n * @return {?}\n */\n MatChipList.prototype._listenToChipsFocus = function () {\n var _this = this;\n this._chipFocusSubscription = this.chipFocusChanges.subscribe(function (event) {\n var /** @type {?} */ chipIndex = _this.chips.toArray().indexOf(event.chip);\n if (_this._isValidIndex(chipIndex)) {\n _this._keyManager.updateActiveItemIndex(chipIndex);\n }\n _this.stateChanges.next();\n });\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(function (_) {\n _this._blur();\n _this.stateChanges.next();\n });\n };\n /**\n * @return {?}\n */\n MatChipList.prototype._listenToChipsRemoved = function () {\n var _this = this;\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe(function (event) {\n _this._updateKeyManager(event.chip);\n });\n };\n MatChipList.decorators = [\n { type: Component, args: [{selector: 'mat-chip-list',\n template: \"<div class=\\\"mat-chip-list-wrapper\\\"><ng-content></ng-content></div>\",\n exportAs: 'matChipList',\n host: {\n '[attr.tabindex]': '_tabIndex',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-multiselectable]': 'multiple',\n '[class.mat-chip-list-disabled]': 'disabled',\n '[class.mat-chip-list-invalid]': 'errorState',\n '[class.mat-chip-list-required]': 'required',\n 'role': 'listbox',\n '[attr.aria-orientation]': 'ariaOrientation',\n 'class': 'mat-chip-list',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)'\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatChipList }],\n styles: [\".mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.mat-chip:not(.mat-basic-chip){transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:24px;align-items:center;cursor:default}.mat-chip:not(.mat-basic-chip)+.mat-chip:not(.mat-basic-chip){margin:0 0 3px 8px}[dir=rtl] .mat-chip:not(.mat-basic-chip)+.mat-chip:not(.mat-basic-chip){margin:0 8px 3px 0}.mat-form-field-prefix .mat-chip:not(.mat-basic-chip):last-child{margin-right:8px}[dir=rtl] .mat-form-field-prefix .mat-chip:not(.mat-basic-chip):last-child{margin-left:8px}.mat-chip:not(.mat-basic-chip) .mat-chip-remove.mat-icon{width:1em;height:1em}.mat-chip:not(.mat-basic-chip):focus{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);outline:0}@media screen and (-ms-high-contrast:active){.mat-chip:not(.mat-basic-chip){outline:solid 1px}}.mat-chip-list-stacked .mat-chip-list-wrapper{display:block}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip){display:block;margin:0;margin-bottom:8px}[dir=rtl] .mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip){margin:0;margin-bottom:8px}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip):last-child,[dir=rtl] .mat-chip-list-stacked .mat-chip-list-wrapper .mat-chip:not(.mat-basic-chip):last-child{margin-bottom:0}.mat-form-field-prefix .mat-chip-list-wrapper{margin-bottom:8px}.mat-chip-remove{margin-right:-4px;margin-left:6px;cursor:pointer}[dir=rtl] .mat-chip-remove{margin-right:6px;margin-left:-4px}input.mat-chip-input{width:150px;margin:3px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipList.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: NgControl, decorators: [{ type: Optional }, { type: Self },] },\n ]; };\n MatChipList.propDecorators = {\n 'multiple': [{ type: Input },],\n 'compareWith': [{ type: Input },],\n 'value': [{ type: Input },],\n 'id': [{ type: Input },],\n 'required': [{ type: Input },],\n 'placeholder': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'ariaOrientation': [{ type: Input, args: ['aria-orientation',] },],\n 'selectable': [{ type: Input },],\n 'tabIndex': [{ type: Input },],\n 'change': [{ type: Output },],\n 'valueChange': [{ type: Output },],\n 'chips': [{ type: ContentChildren, args: [MatChip,] },],\n };\n return MatChipList;\n}());\n\n/**\n * Directive that adds chip-specific behaviors to an input element inside <mat-form-field>.\n * May be placed inside or outside of an <mat-chip-list>.\n */\nvar MatChipInput = (function () {\n /**\n * @param {?} _elementRef\n */\n function MatChipInput(_elementRef) {\n this._elementRef = _elementRef;\n this.focused = false;\n this._addOnBlur = false;\n /**\n * The list of key codes that will trigger a chipEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n // TODO(tinayuangao): Support Set here\n this.separatorKeyCodes = [ENTER];\n /**\n * Emitted when a chip is to be added.\n */\n this.chipEnd = new EventEmitter();\n this.placeholder = '';\n this._inputElement = this._elementRef.nativeElement;\n }\n Object.defineProperty(MatChipInput.prototype, \"chipList\", {\n /**\n * Register input for chip list\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value) {\n this._chipList = value;\n this._chipList.registerInput(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipInput.prototype, \"addOnBlur\", {\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n * @return {?}\n */\n get: function () { return this._addOnBlur; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._addOnBlur = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatChipInput.prototype, \"empty\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ value = this._inputElement.value;\n return value == null || value === '';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Utility method to make host definition/tests more clear.\n * @param {?=} event\n * @return {?}\n */\n MatChipInput.prototype._keydown = function (event) {\n this._emitChipEnd(event);\n };\n /**\n * Checks to see if the blur should emit the (chipEnd) event.\n * @return {?}\n */\n MatChipInput.prototype._blur = function () {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipList.focused) {\n this._chipList._blur();\n }\n this._chipList.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatChipInput.prototype._focus = function () {\n this.focused = true;\n this._chipList.stateChanges.next();\n };\n /**\n * Checks to see if the (chipEnd) event needs to be emitted.\n * @param {?=} event\n * @return {?}\n */\n MatChipInput.prototype._emitChipEnd = function (event) {\n if (!this._inputElement.value && !!event) {\n this._chipList._keydown(event);\n }\n if (!event || this.separatorKeyCodes.indexOf(event.keyCode) > -1) {\n this.chipEnd.emit({ input: this._inputElement, value: this._inputElement.value });\n if (event) {\n event.preventDefault();\n }\n }\n };\n /**\n * @return {?}\n */\n MatChipInput.prototype.focus = function () { this._inputElement.focus(); };\n MatChipInput.decorators = [\n { type: Directive, args: [{\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n 'class': 'mat-chip-input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipInput.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n MatChipInput.propDecorators = {\n 'chipList': [{ type: Input, args: ['matChipInputFor',] },],\n 'addOnBlur': [{ type: Input, args: ['matChipInputAddOnBlur',] },],\n 'separatorKeyCodes': [{ type: Input, args: ['matChipInputSeparatorKeyCodes',] },],\n 'chipEnd': [{ type: Output, args: ['matChipInputTokenEnd',] },],\n 'placeholder': [{ type: Input },],\n };\n return MatChipInput;\n}());\n\nvar MatChipsModule = (function () {\n function MatChipsModule() {\n }\n MatChipsModule.decorators = [\n { type: NgModule, args: [{\n imports: [],\n exports: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip],\n declarations: [MatChipList, MatChip, MatChipInput, MatChipRemove, MatChipRemove, MatBasicChip]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatChipsModule.ctorParameters = function () { return []; };\n return MatChipsModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatChipsModule, MatChipListChange, MatChipList, MatChipSelectionChange, MatChipBase, _MatChipMixinBase, MatBasicChip, MatChip, MatChipRemove, MatChipInput };\n//# sourceMappingURL=chips.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Injector, Input, NgModule, Optional, SkipSelf, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { BasePortalHost, ComponentPortal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { A11yModule, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { MatCommonModule, extendObject } from '@angular/material/core';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { RxChain, filter, first, startWith } from '@angular/cdk/rxjs';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { defer } from 'rxjs/observable/defer';\nimport { Subject } from 'rxjs/Subject';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nvar MatDialogConfig = (function () {\n function MatDialogConfig() {\n /**\n * The ARIA role of the dialog element.\n */\n this.role = 'dialog';\n /**\n * Custom class for the overlay pane.\n */\n this.panelClass = '';\n /**\n * Whether the dialog has a backdrop.\n */\n this.hasBackdrop = true;\n /**\n * Custom class for the backdrop,\n */\n this.backdropClass = '';\n /**\n * Whether the user can use escape or clicking outside to close a modal.\n */\n this.disableClose = false;\n /**\n * Width of the dialog.\n */\n this.width = '';\n /**\n * Height of the dialog.\n */\n this.height = '';\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * Layout direction for the dialog's content.\n */\n this.direction = 'ltr';\n /**\n * ID of the element that describes the dialog.\n */\n this.ariaDescribedBy = null;\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n }\n return MatDialogConfig;\n}());\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalHost without an origin.\n * \\@docs-private\n * @return {?}\n */\nfunction throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * \\@docs-private\n */\nvar MatDialogContainer = (function (_super) {\n __extends(MatDialogContainer, _super);\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _changeDetectorRef\n * @param {?} _document\n */\n function MatDialogContainer(_elementRef, _focusTrapFactory, _changeDetectorRef, _document) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n _this._focusTrapFactory = _focusTrapFactory;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._document = _document;\n /**\n * Element that was focused before the dialog was opened. Save this to restore upon close.\n */\n _this._elementFocusedBeforeDialogWasOpened = null;\n /**\n * State of the dialog animation.\n */\n _this._state = 'enter';\n /**\n * Emits when an animation state changes.\n */\n _this._animationStateChanged = new EventEmitter();\n /**\n * ID of the element that should be considered as the dialog's label.\n */\n _this._ariaLabelledBy = null;\n /**\n * Whether the container is currently mid-animation.\n */\n _this._isAnimating = false;\n return _this;\n }\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @template T\n * @param {?} portal Portal to be attached as the dialog content.\n * @return {?}\n */\n MatDialogContainer.prototype.attachComponentPortal = function (portal) {\n if (this._portalHost.hasAttached()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n this._savePreviouslyFocusedElement();\n return this._portalHost.attachComponentPortal(portal);\n };\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @template C\n * @param {?} portal Portal to be attached as the dialog content.\n * @return {?}\n */\n MatDialogContainer.prototype.attachTemplatePortal = function (portal) {\n if (this._portalHost.hasAttached()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n this._savePreviouslyFocusedElement();\n return this._portalHost.attachTemplatePortal(portal);\n };\n /**\n * Moves the focus inside the focus trap.\n * @return {?}\n */\n MatDialogContainer.prototype._trapFocus = function () {\n var _this = this;\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n // If were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty.\n this._focusTrap.focusInitialElementWhenReady().then(function (hasMovedFocus) {\n // If we didn't find any focusable elements inside the dialog, focus the\n // container so the user can't tab into other elements behind it.\n if (!hasMovedFocus) {\n _this._elementRef.nativeElement.focus();\n }\n });\n };\n /**\n * Restores focus to the element that was focused before the dialog opened.\n * @return {?}\n */\n MatDialogContainer.prototype._restoreFocus = function () {\n var /** @type {?} */ toFocus = this._elementFocusedBeforeDialogWasOpened;\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n };\n /**\n * Saves a reference to the element that was focused before the dialog was opened.\n * @return {?}\n */\n MatDialogContainer.prototype._savePreviouslyFocusedElement = function () {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = (this._document.activeElement);\n }\n };\n /**\n * Callback, invoked whenever an animation on the host completes.\n * @param {?} event\n * @return {?}\n */\n MatDialogContainer.prototype._onAnimationDone = function (event) {\n if (event.toState === 'enter') {\n this._trapFocus();\n }\n else if (event.toState === 'exit') {\n this._restoreFocus();\n }\n this._animationStateChanged.emit(event);\n this._isAnimating = false;\n };\n /**\n * Callback, invoked when an animation on the host starts.\n * @param {?} event\n * @return {?}\n */\n MatDialogContainer.prototype._onAnimationStart = function (event) {\n this._isAnimating = true;\n this._animationStateChanged.emit(event);\n };\n /**\n * Starts the dialog exit animation.\n * @return {?}\n */\n MatDialogContainer.prototype._startExitAnimation = function () {\n this._state = 'exit';\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\n };\n MatDialogContainer.decorators = [\n { type: Component, args: [{selector: 'mat-dialog-container',\n template: \"<ng-template cdkPortalHost></ng-template>\",\n styles: [\".mat-dialog-container{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);display:block;padding:24px;border-radius:2px;box-sizing:border-box;overflow:auto;max-width:80vw;outline:0;width:100%;height:100%}@media screen and (-ms-high-contrast:active){.mat-dialog-container{outline:solid 1px}}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch;-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:12px 0;display:flex;flex-wrap:wrap}.mat-dialog-actions:last-child{margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button+.mat-button,.mat-dialog-actions .mat-button+.mat-raised-button,.mat-dialog-actions .mat-raised-button+.mat-button,.mat-dialog-actions .mat-raised-button+.mat-raised-button{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button+.mat-button,[dir=rtl] .mat-dialog-actions .mat-button+.mat-raised-button,[dir=rtl] .mat-dialog-actions .mat-raised-button+.mat-button,[dir=rtl] .mat-dialog-actions .mat-raised-button+.mat-raised-button{margin-left:0;margin-right:8px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [\n trigger('slideDialog', [\n // Note: The `enter` animation doesn't transition to something like `translate3d(0, 0, 0)\n // scale(1)`, because for some reason specifying the transform explicitly, causes IE both\n // to blur the dialog content and decimate the animation performance. Leaving it as `none`\n // solves both issues.\n state('enter', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translate3d(0, 25%, 0) scale(0.9)', opacity: 0 })),\n state('exit', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),\n transition('* => *', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')),\n ])\n ],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n '[attr.role]': '_config?.role',\n '[attr.aria-labelledby]': '_ariaLabelledBy',\n '[attr.aria-describedby]': '_config?.ariaDescribedBy || null',\n '[@slideDialog]': '_state',\n '(@slideDialog.start)': '_onAnimationStart($event)',\n '(@slideDialog.done)': '_onAnimationDone($event)',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogContainer.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDialogContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n };\n return MatDialogContainer;\n}(BasePortalHost));\n\n// TODO(jelbourn): resizing\n// Counter for unique dialog ids.\nvar uniqueId = 0;\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nvar MatDialogRef = (function () {\n /**\n * @param {?} _overlayRef\n * @param {?} _containerInstance\n * @param {?=} id\n */\n function MatDialogRef(_overlayRef, _containerInstance, id) {\n if (id === void 0) { id = \"mat-dialog-\" + uniqueId++; }\n var _this = this;\n this._overlayRef = _overlayRef;\n this._containerInstance = _containerInstance;\n this.id = id;\n /**\n * Whether the user is allowed to close the dialog.\n */\n this.disableClose = this._containerInstance._config.disableClose;\n /**\n * Subject for notifying the user that the dialog has finished opening.\n */\n this._afterOpen = new Subject();\n /**\n * Subject for notifying the user that the dialog has finished closing.\n */\n this._afterClosed = new Subject();\n /**\n * Subject for notifying the user that the dialog has started closing.\n */\n this._beforeClose = new Subject();\n // Emit when opening animation completes\n RxChain.from(_containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'done' && event.toState === 'enter'; })\n .call(first)\n .subscribe(function () {\n _this._afterOpen.next();\n _this._afterOpen.complete();\n });\n // Dispose overlay when closing animation is complete\n RxChain.from(_containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'done' && event.toState === 'exit'; })\n .call(first)\n .subscribe(function () {\n _this._overlayRef.dispose();\n _this._afterClosed.next(_this._result);\n _this._afterClosed.complete();\n _this.componentInstance = null;\n });\n }\n /**\n * Close the dialog.\n * @param {?=} dialogResult Optional result to return to the dialog opener.\n * @return {?}\n */\n MatDialogRef.prototype.close = function (dialogResult) {\n var _this = this;\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n RxChain.from(this._containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'start'; })\n .call(first)\n .subscribe(function () {\n _this._beforeClose.next(dialogResult);\n _this._beforeClose.complete();\n _this._overlayRef.detachBackdrop();\n });\n this._containerInstance._startExitAnimation();\n };\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n * @return {?}\n */\n MatDialogRef.prototype.afterOpen = function () {\n return this._afterOpen.asObservable();\n };\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n * @return {?}\n */\n MatDialogRef.prototype.afterClosed = function () {\n return this._afterClosed.asObservable();\n };\n /**\n * Gets an observable that is notified when the dialog has started closing.\n * @return {?}\n */\n MatDialogRef.prototype.beforeClose = function () {\n return this._beforeClose.asObservable();\n };\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n * @return {?}\n */\n MatDialogRef.prototype.backdropClick = function () {\n return this._overlayRef.backdropClick();\n };\n /**\n * Updates the dialog's position.\n * @param {?=} position New dialog position.\n * @return {?}\n */\n MatDialogRef.prototype.updatePosition = function (position) {\n var /** @type {?} */ strategy = this._getPositionStrategy();\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n }\n else {\n strategy.centerHorizontally();\n }\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n }\n else {\n strategy.centerVertically();\n }\n this._overlayRef.updatePosition();\n return this;\n };\n /**\n * Updates the dialog's width and height.\n * @param {?=} width New width of the dialog.\n * @param {?=} height New height of the dialog.\n * @return {?}\n */\n MatDialogRef.prototype.updateSize = function (width, height) {\n if (width === void 0) { width = 'auto'; }\n if (height === void 0) { height = 'auto'; }\n this._getPositionStrategy().width(width).height(height);\n this._overlayRef.updatePosition();\n return this;\n };\n /**\n * Returns whether the dialog is animating.\n * @return {?}\n */\n MatDialogRef.prototype._isAnimating = function () {\n return this._containerInstance._isAnimating;\n };\n /**\n * Fetches the position strategy object from the overlay ref.\n * @return {?}\n */\n MatDialogRef.prototype._getPositionStrategy = function () {\n return (this._overlayRef.getConfig().positionStrategy);\n };\n return MatDialogRef;\n}());\n\nvar MAT_DIALOG_DATA = new InjectionToken('MatDialogData');\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n */\nvar MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken('mat-dialog-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.block(); };\n}\n/**\n * \\@docs-private\n */\nvar MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Service to open Material Design modal dialogs.\n */\nvar MatDialog = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _injector\n * @param {?} location\n * @param {?} _scrollStrategy\n * @param {?} _parentDialog\n */\n function MatDialog(_overlay, _injector, location, _scrollStrategy, _parentDialog) {\n var _this = this;\n this._overlay = _overlay;\n this._injector = _injector;\n this._scrollStrategy = _scrollStrategy;\n this._parentDialog = _parentDialog;\n this._openDialogsAtThisLevel = [];\n this._afterAllClosedAtThisLevel = new Subject();\n this._afterOpenAtThisLevel = new Subject();\n this._boundKeydown = this._handleKeydown.bind(this);\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n this.afterAllClosed = defer(function () { return _this.openDialogs.length ?\n _this._afterAllClosed :\n startWith.call(_this._afterAllClosed, undefined); });\n // Close all of the dialogs when the user goes forwards/backwards in history or when the\n // location hash changes. Note that this usually doesn't include clicking on links (unless\n // the user is using the `HashLocationStrategy`).\n if (!_parentDialog && location) {\n location.subscribe(function () { return _this.closeAll(); });\n }\n }\n Object.defineProperty(MatDialog.prototype, \"openDialogs\", {\n /**\n * Keeps track of the currently-open dialogs.\n * @return {?}\n */\n get: function () {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDialog.prototype, \"afterOpen\", {\n /**\n * Stream that emits when a dialog has been opened.\n * @return {?}\n */\n get: function () {\n return this._parentDialog ? this._parentDialog.afterOpen : this._afterOpenAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDialog.prototype, \"_afterAllClosed\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Opens a modal dialog containing the given component.\n * @template T\n * @param {?} componentOrTemplateRef Type of the component to load into the dialog,\n * or a TemplateRef to instantiate as the dialog content.\n * @param {?=} config Extra configuration options.\n * @return {?} Reference to the newly-opened dialog.\n */\n MatDialog.prototype.open = function (componentOrTemplateRef, config) {\n var _this = this;\n var /** @type {?} */ inProgressDialog = this.openDialogs.find(function (dialog) { return dialog._isAnimating(); });\n // If there's a dialog that is in the process of being opened, return it instead.\n if (inProgressDialog) {\n return inProgressDialog;\n }\n config = _applyConfigDefaults(config);\n if (config.id && this.getDialogById(config.id)) {\n throw Error(\"Dialog with id \\\"\" + config.id + \"\\\" exists already. The dialog id must be unique.\");\n }\n var /** @type {?} */ overlayRef = this._createOverlay(config);\n var /** @type {?} */ dialogContainer = this._attachDialogContainer(overlayRef, config);\n var /** @type {?} */ dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);\n if (!this.openDialogs.length) {\n document.addEventListener('keydown', this._boundKeydown);\n }\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(function () { return _this._removeOpenDialog(dialogRef); });\n this.afterOpen.next(dialogRef);\n return dialogRef;\n };\n /**\n * Closes all of the currently-open dialogs.\n * @return {?}\n */\n MatDialog.prototype.closeAll = function () {\n var /** @type {?} */ i = this.openDialogs.length;\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n this.openDialogs[i].close();\n }\n };\n /**\n * Finds an open dialog by its id.\n * @param {?} id ID to use when looking up the dialog.\n * @return {?}\n */\n MatDialog.prototype.getDialogById = function (id) {\n return this.openDialogs.find(function (dialog) { return dialog.id === id; });\n };\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to the OverlayRef for the created overlay.\n */\n MatDialog.prototype._createOverlay = function (config) {\n var /** @type {?} */ overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n };\n /**\n * Creates an overlay config from a dialog config.\n * @param {?} dialogConfig The dialog configuration.\n * @return {?} The overlay configuration.\n */\n MatDialog.prototype._getOverlayConfig = function (dialogConfig) {\n var /** @type {?} */ state$$1 = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction\n });\n if (dialogConfig.backdropClass) {\n state$$1.backdropClass = dialogConfig.backdropClass;\n }\n return state$$1;\n };\n /**\n * Attaches an MatDialogContainer to a dialog's already-created overlay.\n * @param {?} overlay Reference to the dialog's underlying overlay.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to a ComponentRef for the attached container.\n */\n MatDialog.prototype._attachDialogContainer = function (overlay, config) {\n var /** @type {?} */ containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef);\n var /** @type {?} */ containerRef = overlay.attach(containerPortal);\n containerRef.instance._config = config;\n return containerRef.instance;\n };\n /**\n * Attaches the user-provided component to the already-created MatDialogContainer.\n * @template T\n * @param {?} componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param {?} dialogContainer Reference to the wrapping MatDialogContainer.\n * @param {?} overlayRef Reference to the overlay in which the dialog resides.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to the MatDialogRef that should be returned to the user.\n */\n MatDialog.prototype._attachDialogContent = function (componentOrTemplateRef, dialogContainer, overlayRef, config) {\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n var /** @type {?} */ dialogRef = new MatDialogRef(overlayRef, dialogContainer, config.id);\n // When the dialog backdrop is clicked, we want to close it.\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(function () {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, /** @type {?} */ ((null)), /** @type {?} */ ({ $implicit: config.data, dialogRef: dialogRef })));\n }\n else {\n var /** @type {?} */ injector = this._createInjector(config, dialogRef, dialogContainer);\n var /** @type {?} */ contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, undefined, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n return dialogRef;\n };\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @template T\n * @param {?} config Config object that is used to construct the dialog.\n * @param {?} dialogRef Reference to the dialog.\n * @param {?} dialogContainer\n * @return {?} The custom injector that can be used inside the dialog.\n */\n MatDialog.prototype._createInjector = function (config, dialogRef, dialogContainer) {\n var /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n var /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatDialogRef, dialogRef);\n injectionTokens.set(MatDialogContainer, dialogContainer);\n injectionTokens.set(MAT_DIALOG_DATA, config.data);\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: of()\n });\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n };\n /**\n * Removes a dialog from the array of open dialogs.\n * @param {?} dialogRef Dialog to be removed.\n * @return {?}\n */\n MatDialog.prototype._removeOpenDialog = function (dialogRef) {\n var /** @type {?} */ index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // no open dialogs are left, call next on afterAllClosed Subject\n if (!this.openDialogs.length) {\n this._afterAllClosed.next();\n document.removeEventListener('keydown', this._boundKeydown);\n }\n }\n };\n /**\n * Handles global key presses while there are open dialogs. Closes the\n * top dialog when the user presses escape.\n * @param {?} event\n * @return {?}\n */\n MatDialog.prototype._handleKeydown = function (event) {\n var /** @type {?} */ topDialog = this.openDialogs[this.openDialogs.length - 1];\n var /** @type {?} */ canClose = topDialog ? !topDialog.disableClose : false;\n if (event.keyCode === ESCAPE && canClose) {\n topDialog.close();\n }\n };\n MatDialog.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatDialog.ctorParameters = function () { return [\n { type: Overlay, },\n { type: Injector, },\n { type: Location, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_SCROLL_STRATEGY,] },] },\n { type: MatDialog, decorators: [{ type: Optional }, { type: SkipSelf },] },\n ]; };\n return MatDialog;\n}());\n/**\n * Applies default options to the dialog config.\n * @param {?=} config Config to be modified.\n * @return {?} The new configuration object.\n */\nfunction _applyConfigDefaults(config) {\n return extendObject(new MatDialogConfig(), config);\n}\n\n/**\n * Counter used to generate unique IDs for dialog elements.\n */\nvar dialogElementUid = 0;\n/**\n * Button that will close the current dialog.\n */\nvar MatDialogClose = (function () {\n /**\n * @param {?} dialogRef\n */\n function MatDialogClose(dialogRef) {\n this.dialogRef = dialogRef;\n /**\n * Screenreader label for the button.\n */\n this.ariaLabel = 'Close dialog';\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n MatDialogClose.prototype.ngOnChanges = function (changes) {\n var /** @type {?} */ proxiedChange = changes._matDialogClose || changes._matDialogCloseResult;\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n };\n MatDialogClose.decorators = [\n { type: Directive, args: [{\n selector: \"button[mat-dialog-close], button[matDialogClose]\",\n exportAs: 'matDialogClose',\n host: {\n '(click)': 'dialogRef.close(dialogResult)',\n '[attr.aria-label]': 'ariaLabel',\n 'type': 'button',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogClose.ctorParameters = function () { return [\n { type: MatDialogRef, },\n ]; };\n MatDialogClose.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'dialogResult': [{ type: Input, args: ['mat-dialog-close',] },],\n '_matDialogClose': [{ type: Input, args: ['matDialogClose',] },],\n };\n return MatDialogClose;\n}());\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\nvar MatDialogTitle = (function () {\n /**\n * @param {?} _container\n */\n function MatDialogTitle(_container) {\n this._container = _container;\n this.id = \"mat-dialog-title-\" + dialogElementUid++;\n }\n /**\n * @return {?}\n */\n MatDialogTitle.prototype.ngOnInit = function () {\n var _this = this;\n if (this._container && !this._container._ariaLabelledBy) {\n Promise.resolve().then(function () { return _this._container._ariaLabelledBy = _this.id; });\n }\n };\n MatDialogTitle.decorators = [\n { type: Directive, args: [{\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogTitle.ctorParameters = function () { return [\n { type: MatDialogContainer, decorators: [{ type: Optional },] },\n ]; };\n MatDialogTitle.propDecorators = {\n 'id': [{ type: Input },],\n };\n return MatDialogTitle;\n}());\n/**\n * Scrollable content container of a dialog.\n */\nvar MatDialogContent = (function () {\n function MatDialogContent() {\n }\n MatDialogContent.decorators = [\n { type: Directive, args: [{\n selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\",\n host: { 'class': 'mat-dialog-content' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogContent.ctorParameters = function () { return []; };\n return MatDialogContent;\n}());\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\nvar MatDialogActions = (function () {\n function MatDialogActions() {\n }\n MatDialogActions.decorators = [\n { type: Directive, args: [{\n selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\",\n host: { 'class': 'mat-dialog-actions' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogActions.ctorParameters = function () { return []; };\n return MatDialogActions;\n}());\n\nvar MatDialogModule = (function () {\n function MatDialogModule() {\n }\n MatDialogModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n OverlayModule,\n PortalModule,\n A11yModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDialogModule.ctorParameters = function () { return []; };\n return MatDialogModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDialogModule, MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog, throwMatDialogContentAlreadyAttachedError, MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogConfig, MatDialogRef };\n//# sourceMappingURL=dialog.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Attribute, ChangeDetectionStrategy, Component, ElementRef, Injectable, Input, NgModule, Optional, Renderer2, SecurityContext, SkipSelf, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule, mixinColor } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { RxChain, catchOperator, doOperator, finallyOperator, first, map, share } from '@angular/cdk/rxjs';\nimport { Http } from '@angular/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Observable } from 'rxjs/Observable';\nimport { forkJoin } from 'rxjs/observable/forkJoin';\nimport { of } from 'rxjs/observable/of';\nimport { _throw } from 'rxjs/observable/throw';\n\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n * \\@docs-private\n * @param {?} iconName\n * @return {?}\n */\nfunction getMatIconNameNotFoundError(iconName) {\n return Error(\"Unable to find icon with the name \\\"\" + iconName + \"\\\"\");\n}\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<mat-icon>` without including \\@angular/http.\n * \\@docs-private\n * @return {?}\n */\nfunction getMatIconNoHttpProviderError() {\n return Error('Could not find Http provider for use with Angular Material icons. ' +\n 'Please include the HttpModule from @angular/http in your app imports.');\n}\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * \\@docs-private\n * @param {?} url URL that was attempted to be sanitized.\n * @return {?}\n */\nfunction getMatIconFailedToSanitizeError(url) {\n return Error(\"The URL provided to MatIconRegistry was not trusted as a resource URL \" +\n (\"via Angular's DomSanitizer. Attempted URL was \\\"\" + url + \"\\\".\"));\n}\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * \\@docs-private\n */\nvar SvgIconConfig = (function () {\n /**\n * @param {?} url\n */\n function SvgIconConfig(url) {\n this.url = url;\n this.svgElement = null;\n }\n return SvgIconConfig;\n}());\n/**\n * Service to register and display icons used by the <mat-icon> component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Registers aliases for CSS classes, for use with icon fonts.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\nvar MatIconRegistry = (function () {\n /**\n * @param {?} _http\n * @param {?} _sanitizer\n */\n function MatIconRegistry(_http, _sanitizer) {\n this._http = _http;\n this._sanitizer = _sanitizer;\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n this._svgIconConfigs = new Map();\n /**\n * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n * Multiple icon sets can be registered under the same namespace.\n */\n this._iconSetConfigs = new Map();\n /**\n * Cache for icons loaded by direct URLs.\n */\n this._cachedIconsByUrl = new Map();\n /**\n * In-progress icon fetches. Used to coalesce multiple requests to the same URL.\n */\n this._inProgressUrlFetches = new Map();\n /**\n * Map from font identifiers to their CSS class names. Used for icon fonts.\n */\n this._fontCssClassesByAlias = new Map();\n /**\n * The CSS class to apply when an <mat-icon> component has no icon name, url, or font specified.\n * The default 'material-icons' value assumes that the material icon font has been loaded as\n * described at http://google.github.io/material-design-icons/#icon-font-for-the-web\n */\n this._defaultFontSetClass = 'material-icons';\n }\n /**\n * Registers an icon by URL in the default namespace.\n * @param {?} iconName Name under which the icon should be registered.\n * @param {?} url\n * @return {?}\n */\n MatIconRegistry.prototype.addSvgIcon = function (iconName, url) {\n return this.addSvgIconInNamespace('', iconName, url);\n };\n /**\n * Registers an icon by URL in the specified namespace.\n * @param {?} namespace Namespace in which the icon should be registered.\n * @param {?} iconName Name under which the icon should be registered.\n * @param {?} url\n * @return {?}\n */\n MatIconRegistry.prototype.addSvgIconInNamespace = function (namespace, iconName, url) {\n var /** @type {?} */ key = iconKey(namespace, iconName);\n this._svgIconConfigs.set(key, new SvgIconConfig(url));\n return this;\n };\n /**\n * Registers an icon set by URL in the default namespace.\n * @param {?} url\n * @return {?}\n */\n MatIconRegistry.prototype.addSvgIconSet = function (url) {\n return this.addSvgIconSetInNamespace('', url);\n };\n /**\n * Registers an icon set by URL in the specified namespace.\n * @param {?} namespace Namespace in which to register the icon set.\n * @param {?} url\n * @return {?}\n */\n MatIconRegistry.prototype.addSvgIconSetInNamespace = function (namespace, url) {\n var /** @type {?} */ config = new SvgIconConfig(url);\n var /** @type {?} */ configNamespace = this._iconSetConfigs.get(namespace);\n if (configNamespace) {\n configNamespace.push(config);\n }\n else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n return this;\n };\n /**\n * Defines an alias for a CSS class name to be used for icon fonts. Creating an matIcon\n * component with the alias as the fontSet input will cause the class name to be applied\n * to the <mat-icon> element.\n *\n * @param {?} alias Alias for the font.\n * @param {?=} className Class name override to be used instead of the alias.\n * @return {?}\n */\n MatIconRegistry.prototype.registerFontClassAlias = function (alias, className) {\n if (className === void 0) { className = alias; }\n this._fontCssClassesByAlias.set(alias, className);\n return this;\n };\n /**\n * Returns the CSS class name associated with the alias by a previous call to\n * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.\n * @param {?} alias\n * @return {?}\n */\n MatIconRegistry.prototype.classNameForFontAlias = function (alias) {\n return this._fontCssClassesByAlias.get(alias) || alias;\n };\n /**\n * Sets the CSS class name to be used for icon fonts when an <mat-icon> component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n *\n * @param {?} className\n * @return {?}\n */\n MatIconRegistry.prototype.setDefaultFontSetClass = function (className) {\n this._defaultFontSetClass = className;\n return this;\n };\n /**\n * Returns the CSS class name to be used for icon fonts when an <mat-icon> component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n * @return {?}\n */\n MatIconRegistry.prototype.getDefaultFontSetClass = function () {\n return this._defaultFontSetClass;\n };\n /**\n * Returns an Observable that produces the icon (as an <svg> DOM element) from the given URL.\n * The response from the URL may be cached so this will not always cause an HTTP request, but\n * the produced element will always be a new copy of the originally fetched icon. (That is,\n * it will not contain any modifications made to elements previously returned).\n *\n * @param {?} safeUrl URL from which to fetch the SVG icon.\n * @return {?}\n */\n MatIconRegistry.prototype.getSvgIconFromUrl = function (safeUrl) {\n var _this = this;\n var /** @type {?} */ url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n if (!url) {\n throw getMatIconFailedToSanitizeError(safeUrl);\n }\n var /** @type {?} */ cachedIcon = this._cachedIconsByUrl.get(url);\n if (cachedIcon) {\n return of(cloneSvg(cachedIcon));\n }\n return RxChain.from(this._loadSvgIconFromConfig(new SvgIconConfig(url)))\n .call(doOperator, function (svg) { return _this._cachedIconsByUrl.set(/** @type {?} */ ((url)), svg); })\n .call(map, function (svg) { return cloneSvg(svg); })\n .result();\n };\n /**\n * Returns an Observable that produces the icon (as an <svg> DOM element) with the given name\n * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n * if not, the Observable will throw an error.\n *\n * @param {?} name Name of the icon to be retrieved.\n * @param {?=} namespace Namespace in which to look for the icon.\n * @return {?}\n */\n MatIconRegistry.prototype.getNamedSvgIcon = function (name, namespace) {\n if (namespace === void 0) { namespace = ''; }\n // Return (copy of) cached icon if possible.\n var /** @type {?} */ key = iconKey(namespace, name);\n var /** @type {?} */ config = this._svgIconConfigs.get(key);\n if (config) {\n return this._getSvgFromConfig(config);\n }\n // See if we have any icon sets registered for the namespace.\n var /** @type {?} */ iconSetConfigs = this._iconSetConfigs.get(namespace);\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n return _throw(getMatIconNameNotFoundError(key));\n };\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n * @param {?} config\n * @return {?}\n */\n MatIconRegistry.prototype._getSvgFromConfig = function (config) {\n if (config.svgElement) {\n // We already have the SVG element for this icon, return a copy.\n return of(cloneSvg(config.svgElement));\n }\n else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return RxChain.from(this._loadSvgIconFromConfig(config))\n .call(doOperator, function (svg) { return config.svgElement = svg; })\n .call(map, function (svg) { return cloneSvg(svg); })\n .result();\n }\n };\n /**\n * Attempts to find an icon with the specified name in any of the SVG icon sets.\n * First searches the available cached icons for a nested element with a matching name, and\n * if found copies the element to a new <svg> element. If not found, fetches all icon sets\n * that have not been cached, and searches again after all fetches are completed.\n * The returned Observable produces the SVG element if possible, and throws\n * an error if no icon with the specified name can be found.\n * @param {?} name\n * @param {?} iconSetConfigs\n * @return {?}\n */\n MatIconRegistry.prototype._getSvgFromIconSetConfigs = function (name, iconSetConfigs) {\n var _this = this;\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n var /** @type {?} */ namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n if (namedIcon) {\n // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return of(namedIcon);\n }\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n var /** @type {?} */ iconSetFetchRequests = iconSetConfigs\n .filter(function (iconSetConfig) { return !iconSetConfig.svgElement; })\n .map(function (iconSetConfig) {\n return RxChain.from(_this._loadSvgIconSetFromConfig(iconSetConfig))\n .call(catchOperator, function (err) {\n var /** @type {?} */ url = _this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n // Swallow errors fetching individual URLs so the combined Observable won't\n // necessarily fail.\n console.log(\"Loading icon set URL: \" + url + \" failed: \" + err);\n return of(null);\n })\n .call(doOperator, function (svg) {\n // Cache the SVG element.\n if (svg) {\n iconSetConfig.svgElement = svg;\n }\n })\n .result();\n });\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return map.call(forkJoin.call(Observable, iconSetFetchRequests), function () {\n var /** @type {?} */ foundIcon = _this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n return foundIcon;\n });\n };\n /**\n * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n * @param {?} iconName\n * @param {?} iconSetConfigs\n * @return {?}\n */\n MatIconRegistry.prototype._extractIconWithNameFromAnySet = function (iconName, iconSetConfigs) {\n // Iterate backwards, so icon sets added later have precedence.\n for (var /** @type {?} */ i = iconSetConfigs.length - 1; i >= 0; i--) {\n var /** @type {?} */ config = iconSetConfigs[i];\n if (config.svgElement) {\n var /** @type {?} */ foundIcon = this._extractSvgIconFromSet(config.svgElement, iconName);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n };\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n * @param {?} config\n * @return {?}\n */\n MatIconRegistry.prototype._loadSvgIconFromConfig = function (config) {\n var _this = this;\n return map.call(this._fetchUrl(config.url), function (svgText) { return _this._createSvgElementForSingleIcon(svgText); });\n };\n /**\n * Loads the content of the icon set URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n * @param {?} config\n * @return {?}\n */\n MatIconRegistry.prototype._loadSvgIconSetFromConfig = function (config) {\n var _this = this;\n // TODO: Document that icons should only be loaded from trusted sources.\n return map.call(this._fetchUrl(config.url), function (svgText) { return _this._svgElementFromString(svgText); });\n };\n /**\n * Creates a DOM element from the given SVG string, and adds default attributes.\n * @param {?} responseText\n * @return {?}\n */\n MatIconRegistry.prototype._createSvgElementForSingleIcon = function (responseText) {\n var /** @type {?} */ svg = this._svgElementFromString(responseText);\n this._setSvgAttributes(svg);\n return svg;\n };\n /**\n * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n * @param {?} iconSet\n * @param {?} iconName\n * @return {?}\n */\n MatIconRegistry.prototype._extractSvgIconFromSet = function (iconSet, iconName) {\n var /** @type {?} */ iconNode = iconSet.querySelector('#' + iconName);\n if (!iconNode) {\n return null;\n }\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconNode.tagName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(/** @type {?} */ (iconNode.cloneNode(true)));\n }\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconNode.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconNode));\n }\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n var /** @type {?} */ svg = this._svgElementFromString('<svg></svg>');\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconNode.cloneNode(true));\n return this._setSvgAttributes(svg);\n };\n /**\n * Creates a DOM element from the given SVG string.\n * @param {?} str\n * @return {?}\n */\n MatIconRegistry.prototype._svgElementFromString = function (str) {\n // TODO: Is there a better way than innerHTML? Renderer doesn't appear to have a method for\n // creating an element from an HTML string.\n var /** @type {?} */ div = document.createElement('DIV');\n div.innerHTML = str;\n var /** @type {?} */ svg = (div.querySelector('svg'));\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n return svg;\n };\n /**\n * Converts an element into an SVG node by cloning all of its children.\n * @param {?} element\n * @return {?}\n */\n MatIconRegistry.prototype._toSvgElement = function (element) {\n var /** @type {?} */ svg = this._svgElementFromString('<svg></svg>');\n for (var /** @type {?} */ i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === Node.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n return svg;\n };\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n * @param {?} svg\n * @return {?}\n */\n MatIconRegistry.prototype._setSvgAttributes = function (svg) {\n if (!svg.getAttribute('xmlns')) {\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n }\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n return svg;\n };\n /**\n * Returns an Observable which produces the string contents of the given URL. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n * @param {?} safeUrl\n * @return {?}\n */\n MatIconRegistry.prototype._fetchUrl = function (safeUrl) {\n var _this = this;\n if (!this._http) {\n throw getMatIconNoHttpProviderError();\n }\n var /** @type {?} */ url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n if (!url) {\n throw getMatIconFailedToSanitizeError(safeUrl);\n }\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n var /** @type {?} */ inProgressFetch = this._inProgressUrlFetches.get(url);\n if (inProgressFetch) {\n return inProgressFetch;\n }\n // TODO(jelbourn): for some reason, the `finally` operator \"loses\" the generic type on the\n // Observable. Figure out why and fix it.\n var /** @type {?} */ req = RxChain.from(this._http.get(url))\n .call(map, function (response) { return response.text(); })\n .call(finallyOperator, function () { return _this._inProgressUrlFetches.delete(url); })\n .call(share)\n .result();\n this._inProgressUrlFetches.set(url, req);\n return req;\n };\n MatIconRegistry.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatIconRegistry.ctorParameters = function () { return [\n { type: Http, decorators: [{ type: Optional },] },\n { type: DomSanitizer, },\n ]; };\n return MatIconRegistry;\n}());\n/**\n * \\@docs-private\n * @param {?} parentRegistry\n * @param {?} http\n * @param {?} sanitizer\n * @return {?}\n */\nfunction ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, http, sanitizer) {\n return parentRegistry || new MatIconRegistry(http, sanitizer);\n}\n/**\n * \\@docs-private\n */\nvar ICON_REGISTRY_PROVIDER = {\n // If there is already an MatIconRegistry available, use that. Otherwise, provide a new one.\n provide: MatIconRegistry,\n deps: [[new Optional(), new SkipSelf(), MatIconRegistry], [new Optional(), Http], DomSanitizer],\n useFactory: ICON_REGISTRY_PROVIDER_FACTORY\n};\n/**\n * Clones an SVGElement while preserving type information.\n * @param {?} svg\n * @return {?}\n */\nfunction cloneSvg(svg) {\n return (svg.cloneNode(true));\n}\n/**\n * Returns the cache key to use for an icon namespace and name.\n * @param {?} namespace\n * @param {?} name\n * @return {?}\n */\nfunction iconKey(namespace, name) {\n return namespace + ':' + name;\n}\n\n/**\n * \\@docs-private\n */\nvar MatIconBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatIconBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatIconBase;\n}());\nvar _MatIconMixinBase = mixinColor(MatIconBase);\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * <mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>\n *\n * - Use a font ligature as an icon by putting the ligature text in the content of the <mat-icon>\n * component. By default the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * <mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fortawesome.github.io/Font-Awesome/examples/\n * Example:\n * <mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>\n */\nvar MatIcon = (function (_super) {\n __extends(MatIcon, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _iconRegistry\n * @param {?} ariaHidden\n */\n function MatIcon(renderer, elementRef, _iconRegistry, ariaHidden) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._iconRegistry = _iconRegistry;\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n renderer.setAttribute(elementRef.nativeElement, 'aria-hidden', 'true');\n }\n return _this;\n }\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * 'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)\n * @param {?} iconName\n * @return {?}\n */\n MatIcon.prototype._splitIconName = function (iconName) {\n if (!iconName) {\n return ['', ''];\n }\n var /** @type {?} */ parts = iconName.split(':');\n switch (parts.length) {\n case 1: return ['', parts[0]]; // Use default namespace.\n case 2: return (parts);\n default: throw Error(\"Invalid icon name: \\\"\" + iconName + \"\\\"\");\n }\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n MatIcon.prototype.ngOnChanges = function (changes) {\n var _this = this;\n // Only update the inline SVG icon if the inputs changed, to avoid unnecessary DOM operations.\n if (changes.svgIcon) {\n if (this.svgIcon) {\n var _a = this._splitIconName(this.svgIcon), namespace = _a[0], iconName = _a[1];\n first.call(this._iconRegistry.getNamedSvgIcon(iconName, namespace)).subscribe(function (svg) { return _this._setSvgElement(svg); }, function (err) { return console.log(\"Error retrieving icon: \" + err.message); });\n }\n else {\n this._clearSvgElement();\n }\n }\n if (this._usingFontIcon()) {\n this._updateFontIconClasses();\n }\n };\n /**\n * @return {?}\n */\n MatIcon.prototype.ngOnInit = function () {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n if (this._usingFontIcon()) {\n this._updateFontIconClasses();\n }\n };\n /**\n * @return {?}\n */\n MatIcon.prototype._usingFontIcon = function () {\n return !this.svgIcon;\n };\n /**\n * @param {?} svg\n * @return {?}\n */\n MatIcon.prototype._setSvgElement = function (svg) {\n this._clearSvgElement();\n this._renderer.appendChild(this._elementRef.nativeElement, svg);\n };\n /**\n * @return {?}\n */\n MatIcon.prototype._clearSvgElement = function () {\n var /** @type {?} */ layoutElement = this._elementRef.nativeElement;\n var /** @type {?} */ childCount = layoutElement.childNodes.length;\n // Remove existing child nodes and add the new SVG element. Note that we can't\n // use innerHTML, because IE will throw if the element has a data binding.\n for (var /** @type {?} */ i = 0; i < childCount; i++) {\n this._renderer.removeChild(layoutElement, layoutElement.childNodes[i]);\n }\n };\n /**\n * @return {?}\n */\n MatIcon.prototype._updateFontIconClasses = function () {\n if (!this._usingFontIcon()) {\n return;\n }\n var /** @type {?} */ elem = this._elementRef.nativeElement;\n var /** @type {?} */ fontSetClass = this.fontSet ?\n this._iconRegistry.classNameForFontAlias(this.fontSet) :\n this._iconRegistry.getDefaultFontSetClass();\n if (fontSetClass != this._previousFontSetClass) {\n if (this._previousFontSetClass) {\n this._renderer.removeClass(elem, this._previousFontSetClass);\n }\n if (fontSetClass) {\n this._renderer.addClass(elem, fontSetClass);\n }\n this._previousFontSetClass = fontSetClass;\n }\n if (this.fontIcon != this._previousFontIconClass) {\n if (this._previousFontIconClass) {\n this._renderer.removeClass(elem, this._previousFontIconClass);\n }\n if (this.fontIcon) {\n this._renderer.addClass(elem, this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n };\n MatIcon.decorators = [\n { type: Component, args: [{template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styles: [\".mat-icon{background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}\"],\n inputs: ['color'],\n host: {\n 'role': 'img',\n 'class': 'mat-icon',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatIcon.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: MatIconRegistry, },\n { type: undefined, decorators: [{ type: Attribute, args: ['aria-hidden',] },] },\n ]; };\n MatIcon.propDecorators = {\n 'svgIcon': [{ type: Input },],\n 'fontSet': [{ type: Input },],\n 'fontIcon': [{ type: Input },],\n };\n return MatIcon;\n}(_MatIconMixinBase));\n\nvar MatIconModule = (function () {\n function MatIconModule() {\n }\n MatIconModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [MatIcon, MatCommonModule],\n declarations: [MatIcon],\n providers: [ICON_REGISTRY_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatIconModule.ctorParameters = function () { return []; };\n return MatIconModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatIconModule, MatIconBase, _MatIconMixinBase, MatIcon, getMatIconNameNotFoundError, getMatIconNoHttpProviderError, getMatIconFailedToSanitizeError, MatIconRegistry, ICON_REGISTRY_PROVIDER_FACTORY, ICON_REGISTRY_PROVIDER };\n//# sourceMappingURL=icon.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, Input, NgModule, NgZone, Optional, Output, Renderer2, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { first } from 'rxjs/operator/first';\nimport { Subject } from 'rxjs/Subject';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { first as first$1 } from '@angular/cdk/rxjs';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { Subscription } from 'rxjs/Subscription';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Function that attempts to coerce a value to a date using a DateAdapter. Date instances, null,\n * and undefined will be passed through. Empty strings will be coerced to null. Valid ISO 8601\n * strings (https://www.ietf.org/rfc/rfc3339.txt) will be coerced to dates. All other values will\n * result in an error being thrown.\n * @throws Throws when the value cannot be coerced.\n * @template D\n * @param {?} adapter The date adapter to use for coercion\n * @param {?} value The value to coerce.\n * @return {?} A date object coerced from the value.\n */\nfunction coerceDateProperty(adapter, value) {\n if (typeof value === 'string') {\n if (value == '') {\n value = null;\n }\n else {\n value = adapter.fromIso8601(value) || value;\n }\n }\n if (value == null || adapter.isDateInstance(value)) {\n return value;\n }\n throw Error(\"Datepicker: Value must be either a date object recognized by the DateAdapter or \" +\n (\"an ISO 8601 string. Instead got: \" + value));\n}\n\n/**\n * \\@docs-private\n * @param {?} provider\n * @return {?}\n */\nfunction createMissingDateImplError(provider) {\n return Error(\"MatDatepicker: No provider found for \" + provider + \". You must import one of the following \" +\n \"modules at your application root: MatNativeDateModule, or provide a custom implementation.\");\n}\n\n/**\n * Datepicker data that requires internationalization.\n */\nvar MatDatepickerIntl = (function () {\n function MatDatepickerIntl() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /**\n * A label for the calendar popup (used by screen readers).\n */\n this.calendarLabel = 'Calendar';\n /**\n * A label for the button used to open the calendar popup (used by screen readers).\n */\n this.openCalendarLabel = 'Open calendar';\n /**\n * A label for the previous month button (used by screen readers).\n */\n this.prevMonthLabel = 'Previous month';\n /**\n * A label for the next month button (used by screen readers).\n */\n this.nextMonthLabel = 'Next month';\n /**\n * A label for the previous year button (used by screen readers).\n */\n this.prevYearLabel = 'Previous year';\n /**\n * A label for the next year button (used by screen readers).\n */\n this.nextYearLabel = 'Next year';\n /**\n * A label for the 'switch to month view' button (used by screen readers).\n */\n this.switchToMonthViewLabel = 'Change to month view';\n /**\n * A label for the 'switch to year view' button (used by screen readers).\n */\n this.switchToYearViewLabel = 'Change to year view';\n }\n MatDatepickerIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerIntl.ctorParameters = function () { return []; };\n return MatDatepickerIntl;\n}());\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * \\@docs-private\n */\nvar MatCalendarCell = (function () {\n /**\n * @param {?} value\n * @param {?} displayValue\n * @param {?} ariaLabel\n * @param {?} enabled\n */\n function MatCalendarCell(value, displayValue, ariaLabel, enabled) {\n this.value = value;\n this.displayValue = displayValue;\n this.ariaLabel = ariaLabel;\n this.enabled = enabled;\n }\n return MatCalendarCell;\n}());\n/**\n * An internal component used to display calendar data in a table.\n * \\@docs-private\n */\nvar MatCalendarBody = (function () {\n function MatCalendarBody() {\n /**\n * The number of columns in the table.\n */\n this.numCols = 7;\n /**\n * Whether to allow selection of disabled cells.\n */\n this.allowDisabledSelection = false;\n /**\n * The cell number of the active cell in the table.\n */\n this.activeCell = 0;\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n this.cellAspectRatio = 1;\n /**\n * Emits when a new value is selected.\n */\n this.selectedValueChange = new EventEmitter();\n }\n /**\n * @param {?} cell\n * @return {?}\n */\n MatCalendarBody.prototype._cellClicked = function (cell) {\n if (!this.allowDisabledSelection && !cell.enabled) {\n return;\n }\n this.selectedValueChange.emit(cell.value);\n };\n Object.defineProperty(MatCalendarBody.prototype, \"_firstRowOffset\", {\n /**\n * The number of blank cells to put at the beginning for the first row.\n * @return {?}\n */\n get: function () {\n return this.rows && this.rows.length && this.rows[0].length ?\n this.numCols - this.rows[0].length : 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} rowIndex\n * @param {?} colIndex\n * @return {?}\n */\n MatCalendarBody.prototype._isActiveCell = function (rowIndex, colIndex) {\n var /** @type {?} */ cellNumber = rowIndex * this.numCols + colIndex;\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n return cellNumber == this.activeCell;\n };\n MatCalendarBody.decorators = [\n { type: Component, args: [{selector: '[mat-calendar-body]',\n template: \"<tr *ngIf=\\\"_firstRowOffset < labelMinRequiredCells\\\" aria-hidden=\\\"true\\\"><td class=\\\"mat-calendar-body-label\\\" [attr.colspan]=\\\"numCols\\\" [style.paddingTop.%]=\\\"50 * cellAspectRatio / numCols\\\" [style.paddingBottom.%]=\\\"50 * cellAspectRatio / numCols\\\">{{label}}</td></tr><tr *ngFor=\\\"let row of rows; let rowIndex = index\\\" role=\\\"row\\\"><td *ngIf=\\\"rowIndex === 0 && _firstRowOffset\\\" aria-hidden=\\\"true\\\" class=\\\"mat-calendar-body-label\\\" [attr.colspan]=\\\"_firstRowOffset\\\" [style.paddingTop.%]=\\\"50 * cellAspectRatio / numCols\\\" [style.paddingBottom.%]=\\\"50 * cellAspectRatio / numCols\\\">{{_firstRowOffset >= labelMinRequiredCells ? label : ''}}</td><td *ngFor=\\\"let item of row; let colIndex = index\\\" role=\\\"gridcell\\\" class=\\\"mat-calendar-body-cell\\\" [tabindex]=\\\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\\\" [class.mat-calendar-body-disabled]=\\\"!item.enabled\\\" [class.mat-calendar-body-active]=\\\"_isActiveCell(rowIndex, colIndex)\\\" [attr.aria-label]=\\\"item.ariaLabel\\\" [attr.aria-disabled]=\\\"!item.enabled || null\\\" (click)=\\\"_cellClicked(item)\\\" [style.width.%]=\\\"100 / numCols\\\" [style.paddingTop.%]=\\\"50 * cellAspectRatio / numCols\\\" [style.paddingBottom.%]=\\\"50 * cellAspectRatio / numCols\\\"><div class=\\\"mat-calendar-body-cell-content\\\" [class.mat-calendar-body-selected]=\\\"selectedValue === item.value\\\" [class.mat-calendar-body-today]=\\\"todayValue === item.value\\\">{{item.displayValue}}</div></td></tr>\",\n styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.71429%;padding-right:4.71429%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:0;cursor:pointer}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}[dir=rtl] .mat-calendar-body-label{text-align:right}\"],\n host: {\n 'class': 'mat-calendar-body',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCalendarBody.ctorParameters = function () { return []; };\n MatCalendarBody.propDecorators = {\n 'label': [{ type: Input },],\n 'rows': [{ type: Input },],\n 'todayValue': [{ type: Input },],\n 'selectedValue': [{ type: Input },],\n 'labelMinRequiredCells': [{ type: Input },],\n 'numCols': [{ type: Input },],\n 'allowDisabledSelection': [{ type: Input },],\n 'activeCell': [{ type: Input },],\n 'cellAspectRatio': [{ type: Input },],\n 'selectedValueChange': [{ type: Output },],\n };\n return MatCalendarBody;\n}());\n\nvar DAYS_PER_WEEK = 7;\n/**\n * An internal component used to display a single month in the datepicker.\n * \\@docs-private\n */\nvar MatMonthView = (function () {\n /**\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _changeDetectorRef\n */\n function MatMonthView(_dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Emits when a new date is selected.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Emits when any date is selected.\n */\n this._userSelection = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n var firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n var narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n var longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n var weekdays = longWeekdays.map(function (long, i) {\n return { long: long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n this._activeDate = this._dateAdapter.today();\n }\n Object.defineProperty(MatMonthView.prototype, \"activeDate\", {\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n * @return {?}\n */\n get: function () { return this._activeDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ oldActiveDate = this._activeDate;\n this._activeDate = coerceDateProperty(this._dateAdapter, value) || this._dateAdapter.today();\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMonthView.prototype, \"selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceDateProperty(this._dateAdapter, value);\n this._selectedDate = this._getDateInCurrentMonth(this._selected);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatMonthView.prototype.ngAfterContentInit = function () {\n this._init();\n };\n /**\n * Handles when a new date is selected.\n * @param {?} date\n * @return {?}\n */\n MatMonthView.prototype._dateSelected = function (date) {\n if (this._selectedDate != date) {\n var /** @type {?} */ selectedYear = this._dateAdapter.getYear(this.activeDate);\n var /** @type {?} */ selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n var /** @type {?} */ selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit();\n };\n /**\n * Initializes this month view.\n * @return {?}\n */\n MatMonthView.prototype._init = function () {\n this._selectedDate = this._getDateInCurrentMonth(this.selected);\n this._todayDate = this._getDateInCurrentMonth(this._dateAdapter.today());\n this._monthLabel =\n this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]\n .toLocaleUpperCase();\n var /** @type {?} */ firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset =\n (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) -\n this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Creates MatCalendarCells for the dates in this month.\n * @return {?}\n */\n MatMonthView.prototype._createWeekCells = function () {\n var /** @type {?} */ daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n var /** @type {?} */ dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (var /** @type {?} */ i = 0, /** @type {?} */ cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n var /** @type {?} */ date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n var /** @type {?} */ enabled = !this.dateFilter ||\n this.dateFilter(date);\n var /** @type {?} */ ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n this._weeks[this._weeks.length - 1]\n .push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled));\n }\n };\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n * @param {?} date\n * @return {?}\n */\n MatMonthView.prototype._getDateInCurrentMonth = function (date) {\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\n this._dateAdapter.getDate(date) : null;\n };\n /**\n * Checks whether the 2 dates are non-null and fall within the same month of the same year.\n * @param {?} d1\n * @param {?} d2\n * @return {?}\n */\n MatMonthView.prototype._hasSameMonthAndYear = function (d1, d2) {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n };\n MatMonthView.decorators = [\n { type: Component, args: [{selector: 'mat-month-view',\n template: \"<table class=\\\"mat-calendar-table\\\"><thead class=\\\"mat-calendar-table-header\\\"><tr><th *ngFor=\\\"let day of _weekdays\\\" [attr.aria-label]=\\\"day.long\\\">{{day.narrow}}</th></tr><tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"7\\\" aria-hidden=\\\"true\\\"></th></tr></thead><tbody mat-calendar-body role=\\\"grid\\\" [label]=\\\"_monthLabel\\\" [rows]=\\\"_weeks\\\" [todayValue]=\\\"_todayDate\\\" [selectedValue]=\\\"_selectedDate\\\" [labelMinRequiredCells]=\\\"3\\\" [activeCell]=\\\"_dateAdapter.getDate(activeDate) - 1\\\" (selectedValueChange)=\\\"_dateSelected($event)\\\"></tbody></table>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMonthView.ctorParameters = function () { return [\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n ]; };\n MatMonthView.propDecorators = {\n 'activeDate': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n '_userSelection': [{ type: Output },],\n };\n return MatMonthView;\n}());\n\n/**\n * An internal component used to display a single year in the datepicker.\n * \\@docs-private\n */\nvar MatYearView = (function () {\n /**\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _changeDetectorRef\n */\n function MatYearView(_dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Emits when a new month is selected.\n */\n this.selectedChange = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n this._activeDate = this._dateAdapter.today();\n }\n Object.defineProperty(MatYearView.prototype, \"activeDate\", {\n /**\n * The date to display in this year view (everything other than the year is ignored).\n * @return {?}\n */\n get: function () { return this._activeDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ oldActiveDate = this._activeDate;\n this._activeDate = coerceDateProperty(this._dateAdapter, value) || this._dateAdapter.today();\n if (this._dateAdapter.getYear(oldActiveDate) != this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatYearView.prototype, \"selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceDateProperty(this._dateAdapter, value);\n this._selectedMonth = this._getMonthInCurrentYear(this._selected);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatYearView.prototype.ngAfterContentInit = function () {\n this._init();\n };\n /**\n * Handles when a new month is selected.\n * @param {?} month\n * @return {?}\n */\n MatYearView.prototype._monthSelected = function (month) {\n var /** @type {?} */ daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n };\n /**\n * Initializes this month view.\n * @return {?}\n */\n MatYearView.prototype._init = function () {\n var _this = this;\n this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n var /** @type {?} */ monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(function (row) { return row.map(function (month) { return _this._createCellForMonth(month, monthNames[month]); }); });\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n * @param {?} date\n * @return {?}\n */\n MatYearView.prototype._getMonthInCurrentYear = function (date) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\n this._dateAdapter.getMonth(date) : null;\n };\n /**\n * Creates an MatCalendarCell for the given month.\n * @param {?} month\n * @param {?} monthName\n * @return {?}\n */\n MatYearView.prototype._createCellForMonth = function (month, monthName) {\n var /** @type {?} */ ariaLabel = this._dateAdapter.format(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1), this._dateFormats.display.monthYearA11yLabel);\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));\n };\n /**\n * Whether the given month is enabled.\n * @param {?} month\n * @return {?}\n */\n MatYearView.prototype._isMonthEnabled = function (month) {\n if (!this.dateFilter) {\n return true;\n }\n var /** @type {?} */ firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (var /** @type {?} */ date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n };\n MatYearView.decorators = [\n { type: Component, args: [{selector: 'mat-year-view',\n template: \"<table class=\\\"mat-calendar-table\\\"><thead class=\\\"mat-calendar-table-header\\\"><tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"4\\\"></th></tr></thead><tbody mat-calendar-body role=\\\"grid\\\" allowDisabledSelection=\\\"true\\\" [label]=\\\"_yearLabel\\\" [rows]=\\\"_months\\\" [todayValue]=\\\"_todayMonth\\\" [selectedValue]=\\\"_selectedMonth\\\" [labelMinRequiredCells]=\\\"2\\\" [numCols]=\\\"4\\\" [cellAspectRatio]=\\\"4 / 7\\\" [activeCell]=\\\"_dateAdapter.getMonth(activeDate)\\\" (selectedValueChange)=\\\"_monthSelected($event)\\\"></tbody></table>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatYearView.ctorParameters = function () { return [\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n ]; };\n MatYearView.propDecorators = {\n 'activeDate': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n };\n return MatYearView;\n}());\n\n/**\n * A calendar that is used as part of the datepicker.\n * \\@docs-private\n */\nvar MatCalendar = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _intl\n * @param {?} _ngZone\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} changeDetectorRef\n */\n function MatCalendar(_elementRef, _intl, _ngZone, _dateAdapter, _dateFormats, changeDetectorRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._intl = _intl;\n this._ngZone = _ngZone;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n /**\n * Whether the calendar should be started in month or year view.\n */\n this.startView = 'month';\n /**\n * Emits when the currently selected date changes.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Emits when any date is selected.\n */\n this._userSelection = new EventEmitter();\n /**\n * Date filter for the month and year views.\n */\n this._dateFilterForViews = function (date) {\n return !!date &&\n (!_this.dateFilter || _this.dateFilter(date)) &&\n (!_this.minDate || _this._dateAdapter.compareDate(date, _this.minDate) >= 0) &&\n (!_this.maxDate || _this._dateAdapter.compareDate(date, _this.maxDate) <= 0);\n };\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n this._intlChanges = _intl.changes.subscribe(function () { return changeDetectorRef.markForCheck(); });\n }\n Object.defineProperty(MatCalendar.prototype, \"startAt\", {\n /**\n * A date representing the period (month or year) to start the calendar in.\n * @return {?}\n */\n get: function () { return this._startAt; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._startAt = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._selected = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"minDate\", {\n /**\n * The minimum selectable date.\n * @return {?}\n */\n get: function () { return this._minDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._minDate = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"maxDate\", {\n /**\n * The maximum selectable date.\n * @return {?}\n */\n get: function () { return this._maxDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._maxDate = coerceDateProperty(this._dateAdapter, value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_activeDate\", {\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n * @return {?}\n */\n get: function () { return this._clampedActiveDate; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_periodButtonText\", {\n /**\n * The label for the current calendar view.\n * @return {?}\n */\n get: function () {\n return this._monthView ?\n this._dateAdapter.format(this._activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase() :\n this._dateAdapter.getYearName(this._activeDate);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_periodButtonLabel\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._monthView ? this._intl.switchToYearViewLabel : this._intl.switchToMonthViewLabel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_prevButtonLabel\", {\n /**\n * The label for the the previous button.\n * @return {?}\n */\n get: function () {\n return this._monthView ? this._intl.prevMonthLabel : this._intl.prevYearLabel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatCalendar.prototype, \"_nextButtonLabel\", {\n /**\n * The label for the the next button.\n * @return {?}\n */\n get: function () {\n return this._monthView ? this._intl.nextMonthLabel : this._intl.nextYearLabel;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatCalendar.prototype.ngAfterContentInit = function () {\n this._activeDate = this.startAt || this._dateAdapter.today();\n this._focusActiveCell();\n this._monthView = this.startView != 'year';\n };\n /**\n * @return {?}\n */\n MatCalendar.prototype.ngOnDestroy = function () {\n this._intlChanges.unsubscribe();\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n MatCalendar.prototype.ngOnChanges = function (changes) {\n var /** @type {?} */ change = changes.minDate || changes.maxDate || changes.dateFilter;\n if (change && !change.firstChange) {\n var /** @type {?} */ view = this.monthView || this.yearView;\n if (view) {\n view._init();\n }\n }\n };\n /**\n * Handles date selection in the month view.\n * @param {?} date\n * @return {?}\n */\n MatCalendar.prototype._dateSelected = function (date) {\n if (!this._dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n };\n /**\n * @return {?}\n */\n MatCalendar.prototype._userSelected = function () {\n this._userSelection.emit();\n };\n /**\n * Handles month selection in the year view.\n * @param {?} month\n * @return {?}\n */\n MatCalendar.prototype._monthSelected = function (month) {\n this._activeDate = month;\n this._monthView = true;\n };\n /**\n * Handles user clicks on the period label.\n * @return {?}\n */\n MatCalendar.prototype._currentPeriodClicked = function () {\n this._monthView = !this._monthView;\n };\n /**\n * Handles user clicks on the previous button.\n * @return {?}\n */\n MatCalendar.prototype._previousClicked = function () {\n this._activeDate = this._monthView ?\n this._dateAdapter.addCalendarMonths(this._activeDate, -1) :\n this._dateAdapter.addCalendarYears(this._activeDate, -1);\n };\n /**\n * Handles user clicks on the next button.\n * @return {?}\n */\n MatCalendar.prototype._nextClicked = function () {\n this._activeDate = this._monthView ?\n this._dateAdapter.addCalendarMonths(this._activeDate, 1) :\n this._dateAdapter.addCalendarYears(this._activeDate, 1);\n };\n /**\n * Whether the previous period button is enabled.\n * @return {?}\n */\n MatCalendar.prototype._previousEnabled = function () {\n if (!this.minDate) {\n return true;\n }\n return !this.minDate || !this._isSameView(this._activeDate, this.minDate);\n };\n /**\n * Whether the next period button is enabled.\n * @return {?}\n */\n MatCalendar.prototype._nextEnabled = function () {\n return !this.maxDate || !this._isSameView(this._activeDate, this.maxDate);\n };\n /**\n * Handles keydown events on the calendar body.\n * @param {?} event\n * @return {?}\n */\n MatCalendar.prototype._handleCalendarBodyKeydown = function (event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n if (this._monthView) {\n this._handleCalendarBodyKeydownInMonthView(event);\n }\n else {\n this._handleCalendarBodyKeydownInYearView(event);\n }\n };\n /**\n * Focuses the active cell after the microtask queue is empty.\n * @return {?}\n */\n MatCalendar.prototype._focusActiveCell = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n first.call(_this._ngZone.onStable.asObservable()).subscribe(function () {\n _this._elementRef.nativeElement.querySelector('.mat-calendar-body-active').focus();\n });\n });\n };\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n * @param {?} date1\n * @param {?} date2\n * @return {?}\n */\n MatCalendar.prototype._isSameView = function (date1, date2) {\n return this._monthView ?\n this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2) :\n this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n };\n /**\n * Handles keydown events on the calendar body when calendar is in month view.\n * @param {?} event\n * @return {?}\n */\n MatCalendar.prototype._handleCalendarBodyKeydownInMonthView = function (event) {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1);\n break;\n case UP_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate)));\n break;\n case PAGE_UP:\n this._activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this._activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n if (this._dateFilterForViews(this._activeDate)) {\n this._dateSelected(this._activeDate);\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n };\n /**\n * Handles keydown events on the calendar body when calendar is in year view.\n * @param {?} event\n * @return {?}\n */\n MatCalendar.prototype._handleCalendarBodyKeydownInYearView = function (event) {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case UP_ARROW:\n this._activeDate = this._prevMonthInSameCol(this._activeDate);\n break;\n case DOWN_ARROW:\n this._activeDate = this._nextMonthInSameCol(this._activeDate);\n break;\n case HOME:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this._activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this._activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n this._monthSelected(this._activeDate);\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n };\n /**\n * Determine the date for the month that comes before the given month in the same column in the\n * calendar table.\n * @param {?} date\n * @return {?}\n */\n MatCalendar.prototype._prevMonthInSameCol = function (date) {\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n // of each year.\n var /** @type {?} */ increment = this._dateAdapter.getMonth(date) <= 4 ? -5 :\n (this._dateAdapter.getMonth(date) >= 7 ? -7 : -12);\n return this._dateAdapter.addCalendarMonths(date, increment);\n };\n /**\n * Determine the date for the month that comes after the given month in the same column in the\n * calendar table.\n * @param {?} date\n * @return {?}\n */\n MatCalendar.prototype._nextMonthInSameCol = function (date) {\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n // of each year.\n var /** @type {?} */ increment = this._dateAdapter.getMonth(date) <= 4 ? 7 :\n (this._dateAdapter.getMonth(date) >= 7 ? 5 : 12);\n return this._dateAdapter.addCalendarMonths(date, increment);\n };\n MatCalendar.decorators = [\n { type: Component, args: [{selector: 'mat-calendar',\n template: \"<div class=\\\"mat-calendar-header\\\"><div class=\\\"mat-calendar-controls\\\"><button mat-button class=\\\"mat-calendar-period-button\\\" (click)=\\\"_currentPeriodClicked()\\\" [attr.aria-label]=\\\"_periodButtonLabel\\\">{{_periodButtonText}}<div class=\\\"mat-calendar-arrow\\\" [class.mat-calendar-invert]=\\\"!_monthView\\\"></div></button><div class=\\\"mat-calendar-spacer\\\"></div><button mat-icon-button class=\\\"mat-calendar-previous-button\\\" [disabled]=\\\"!_previousEnabled()\\\" (click)=\\\"_previousClicked()\\\" [attr.aria-label]=\\\"_prevButtonLabel\\\"></button> <button mat-icon-button class=\\\"mat-calendar-next-button\\\" [disabled]=\\\"!_nextEnabled()\\\" (click)=\\\"_nextClicked()\\\" [attr.aria-label]=\\\"_nextButtonLabel\\\"></button></div></div><div class=\\\"mat-calendar-content\\\" (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\" [ngSwitch]=\\\"_monthView\\\" cdkMonitorSubtreeFocus><mat-month-view *ngSwitchCase=\\\"true\\\" [activeDate]=\\\"_activeDate\\\" [selected]=\\\"selected\\\" [dateFilter]=\\\"_dateFilterForViews\\\" (selectedChange)=\\\"_dateSelected($event)\\\" (_userSelection)=\\\"_userSelected()\\\"></mat-month-view><mat-year-view *ngSwitchDefault [activeDate]=\\\"_activeDate\\\" [selected]=\\\"selected\\\" [dateFilter]=\\\"_dateFilterForViews\\\" (selectedChange)=\\\"_monthSelected($event)\\\"></mat-year-view></div>\",\n styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:0}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button::after,.mat-calendar-previous-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:'';margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:'';position:absolute;top:0;left:-8px;right:-8px;height:1px}\"],\n host: {\n 'class': 'mat-calendar',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCalendar.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: MatDatepickerIntl, },\n { type: NgZone, },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n ]; };\n MatCalendar.propDecorators = {\n 'startAt': [{ type: Input },],\n 'startView': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n '_userSelection': [{ type: Output },],\n 'monthView': [{ type: ViewChild, args: [MatMonthView,] },],\n 'yearView': [{ type: ViewChild, args: [MatYearView,] },],\n };\n return MatCalendar;\n}());\n\n/**\n * Used to generate a unique ID for each datepicker instance.\n */\nvar datepickerUid = 0;\n/**\n * Injection token that determines the scroll handling while the calendar is open.\n */\nvar MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * \\@docs-private\n */\nvar MatDatepickerContent = (function () {\n function MatDatepickerContent() {\n }\n /**\n * @return {?}\n */\n MatDatepickerContent.prototype.ngAfterContentInit = function () {\n this._calendar._focusActiveCell();\n };\n /**\n * Handles keydown event on datepicker content.\n * @param {?} event The event.\n * @return {?}\n */\n MatDatepickerContent.prototype._handleKeydown = function (event) {\n if (event.keyCode === ESCAPE) {\n this.datepicker.close();\n event.preventDefault();\n event.stopPropagation();\n }\n };\n MatDatepickerContent.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker-content',\n template: \"<mat-calendar cdkTrapFocus [id]=\\\"datepicker.id\\\" [startAt]=\\\"datepicker.startAt\\\" [startView]=\\\"datepicker.startView\\\" [minDate]=\\\"datepicker._minDate\\\" [maxDate]=\\\"datepicker._maxDate\\\" [dateFilter]=\\\"datepicker._dateFilter\\\" [selected]=\\\"datepicker._selected\\\" (selectedChange)=\\\"datepicker._select($event)\\\" (_userSelection)=\\\"datepicker.close()\\\"></mat-calendar>\",\n styles: [\".mat-datepicker-content{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);display:block}.mat-calendar{width:296px;height:354px}.mat-datepicker-content-touch{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-calendar{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation:landscape){.mat-datepicker-content-touch .mat-calendar{width:64vh;height:80vh}}@media all and (orientation:portrait){.mat-datepicker-content-touch .mat-calendar{width:80vw;height:100vw}}\"],\n host: {\n 'class': 'mat-datepicker-content',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n '(keydown)': '_handleKeydown($event)',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerContent.ctorParameters = function () { return []; };\n MatDatepickerContent.propDecorators = {\n '_calendar': [{ type: ViewChild, args: [MatCalendar,] },],\n };\n return MatDatepickerContent;\n}());\n/**\n * Component responsible for managing the datepicker popup/dialog.\n */\nvar MatDatepicker = (function () {\n /**\n * @param {?} _dialog\n * @param {?} _overlay\n * @param {?} _ngZone\n * @param {?} _viewContainerRef\n * @param {?} _scrollStrategy\n * @param {?} _dateAdapter\n * @param {?} _dir\n * @param {?} _document\n */\n function MatDatepicker(_dialog, _overlay, _ngZone, _viewContainerRef, _scrollStrategy, _dateAdapter, _dir, _document) {\n this._dialog = _dialog;\n this._overlay = _overlay;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._scrollStrategy = _scrollStrategy;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._document = _document;\n /**\n * The view that the calendar should start in.\n */\n this.startView = 'month';\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a popup and elements have more padding to allow for bigger touch targets.\n */\n this.touchUi = false;\n /**\n * Emits new selected date when selected date changes.\n * @deprecated Switch to the `dateChange` and `dateInput` binding on the input element.\n */\n this.selectedChanged = new EventEmitter();\n /**\n * Whether the calendar is open.\n */\n this.opened = false;\n /**\n * The id for the datepicker calendar.\n */\n this.id = \"mat-datepicker-\" + datepickerUid++;\n this._validSelected = null;\n /**\n * The element that was focused before the datepicker was opened.\n */\n this._focusedElementBeforeOpen = null;\n this._inputSubscription = Subscription.EMPTY;\n /**\n * Emits when the datepicker is disabled.\n */\n this._disabledChange = new Subject();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n }\n Object.defineProperty(MatDatepicker.prototype, \"startAt\", {\n /**\n * The date to open the calendar to initially.\n * @return {?}\n */\n get: function () {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this._datepickerInput ? this._datepickerInput.value : null);\n },\n /**\n * @param {?} date\n * @return {?}\n */\n set: function (date) { this._startAt = coerceDateProperty(this._dateAdapter, date); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"disabled\", {\n /**\n * Whether the datepicker pop-up should be disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled === undefined && this._datepickerInput ?\n this._datepickerInput.disabled : this._disabled;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._disabledChange.next(newValue);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_selected\", {\n /**\n * The currently selected date.\n * @return {?}\n */\n get: function () { return this._validSelected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._validSelected = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_minDate\", {\n /**\n * The minimum selectable date.\n * @return {?}\n */\n get: function () {\n return this._datepickerInput && this._datepickerInput.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_maxDate\", {\n /**\n * The maximum selectable date.\n * @return {?}\n */\n get: function () {\n return this._datepickerInput && this._datepickerInput.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepicker.prototype, \"_dateFilter\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._datepickerInput && this._datepickerInput._dateFilter;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDatepicker.prototype.ngOnDestroy = function () {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n if (this._popupRef) {\n this._popupRef.dispose();\n }\n };\n /**\n * Selects the given date\n * @param {?} date\n * @return {?}\n */\n MatDatepicker.prototype._select = function (date) {\n var /** @type {?} */ oldValue = this._selected;\n this._selected = date;\n if (!this._dateAdapter.sameDate(oldValue, this._selected)) {\n this.selectedChanged.emit(date);\n }\n };\n /**\n * Register an input with this datepicker.\n * @param {?} input The datepicker input to register with this datepicker.\n * @return {?}\n */\n MatDatepicker.prototype._registerInput = function (input) {\n var _this = this;\n if (this._datepickerInput) {\n throw Error('An MatDatepicker can only be associated with a single input.');\n }\n this._datepickerInput = input;\n this._inputSubscription =\n this._datepickerInput._valueChange.subscribe(function (value) { return _this._selected = value; });\n };\n /**\n * Open the calendar.\n * @return {?}\n */\n MatDatepicker.prototype.open = function () {\n if (this.opened || this.disabled) {\n return;\n }\n if (!this._datepickerInput) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this.opened = true;\n };\n /**\n * Close the calendar.\n * @return {?}\n */\n MatDatepicker.prototype.close = function () {\n if (!this.opened) {\n return;\n }\n if (this._popupRef && this._popupRef.hasAttached()) {\n this._popupRef.detach();\n }\n if (this._dialogRef) {\n this._dialogRef.close();\n this._dialogRef = null;\n }\n if (this._calendarPortal && this._calendarPortal.isAttached) {\n this._calendarPortal.detach();\n }\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n this._focusedElementBeforeOpen.focus();\n this._focusedElementBeforeOpen = null;\n }\n this.opened = false;\n };\n /**\n * Open the calendar as a dialog.\n * @return {?}\n */\n MatDatepicker.prototype._openAsDialog = function () {\n var _this = this;\n this._dialogRef = this._dialog.open(MatDatepickerContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n });\n this._dialogRef.afterClosed().subscribe(function () { return _this.close(); });\n this._dialogRef.componentInstance.datepicker = this;\n };\n /**\n * Open the calendar as a popup.\n * @return {?}\n */\n MatDatepicker.prototype._openAsPopup = function () {\n var _this = this;\n if (!this._calendarPortal) {\n this._calendarPortal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n }\n if (!this._popupRef) {\n this._createPopup();\n }\n if (!this._popupRef.hasAttached()) {\n var /** @type {?} */ componentRef = this._popupRef.attach(this._calendarPortal);\n componentRef.instance.datepicker = this;\n // Update the position once the calendar has rendered.\n first$1.call(this._ngZone.onStable.asObservable()).subscribe(function () {\n _this._popupRef.updatePosition();\n });\n }\n this._popupRef.backdropClick().subscribe(function () { return _this.close(); });\n };\n /**\n * Create the popup.\n * @return {?}\n */\n MatDatepicker.prototype._createPopup = function () {\n var /** @type {?} */ overlayConfig = new OverlayConfig({\n positionStrategy: this._createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: 'mat-overlay-transparent-backdrop',\n direction: this._dir ? this._dir.value : 'ltr',\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup',\n });\n this._popupRef = this._overlay.create(overlayConfig);\n };\n /**\n * Create the popup PositionStrategy.\n * @return {?}\n */\n MatDatepicker.prototype._createPopupPositionStrategy = function () {\n return this._overlay.position()\n .connectedTo(this._datepickerInput.getPopupConnectionElementRef(), { originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' })\n .withFallbackPosition({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n .withFallbackPosition({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' })\n .withFallbackPosition({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' });\n };\n MatDatepicker.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepicker.ctorParameters = function () { return [\n { type: MatDialog, },\n { type: Overlay, },\n { type: NgZone, },\n { type: ViewContainerRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DATEPICKER_SCROLL_STRATEGY,] },] },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDatepicker.propDecorators = {\n 'startAt': [{ type: Input },],\n 'startView': [{ type: Input },],\n 'touchUi': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'selectedChanged': [{ type: Output },],\n };\n return MatDatepicker;\n}());\n\nvar MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatDatepickerInput; }),\n multi: true\n};\nvar MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(function () { return MatDatepickerInput; }),\n multi: true\n};\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nvar MatDatepickerInputEvent = (function () {\n /**\n * @param {?} target\n * @param {?} targetElement\n */\n function MatDatepickerInputEvent(target, targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n return MatDatepickerInputEvent;\n}());\n/**\n * Directive used to connect an input to a MatDatepicker.\n */\nvar MatDatepickerInput = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _formField\n */\n function MatDatepickerInput(_elementRef, _renderer, _dateAdapter, _dateFormats, _formField) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._formField = _formField;\n /**\n * Emits when a `change` event is fired on this `<input>`.\n */\n this.dateChange = new EventEmitter();\n /**\n * Emits when an `input` event is fired on this `<input>`.\n */\n this.dateInput = new EventEmitter();\n /**\n * Emits when the value changes (either due to user input or programmatic change).\n */\n this._valueChange = new EventEmitter();\n /**\n * Emits when the disabled state has changed\n */\n this._disabledChange = new EventEmitter();\n this._onTouched = function () { };\n this._cvaOnChange = function () { };\n this._validatorOnChange = function () { };\n this._datepickerSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /**\n * The form control validator for whether the input parses.\n */\n this._parseValidator = function () {\n return _this._lastValueValid ?\n null : { 'matDatepickerParse': { 'text': _this._elementRef.nativeElement.value } };\n };\n /**\n * The form control validator for the min date.\n */\n this._minValidator = function (control) {\n var controlValue = coerceDateProperty(_this._dateAdapter, control.value);\n return (!_this.min || !controlValue ||\n _this._dateAdapter.compareDate(_this.min, controlValue) <= 0) ?\n null : { 'matDatepickerMin': { 'min': _this.min, 'actual': controlValue } };\n };\n /**\n * The form control validator for the max date.\n */\n this._maxValidator = function (control) {\n var controlValue = coerceDateProperty(_this._dateAdapter, control.value);\n return (!_this.max || !controlValue ||\n _this._dateAdapter.compareDate(_this.max, controlValue) >= 0) ?\n null : { 'matDatepickerMax': { 'max': _this.max, 'actual': controlValue } };\n };\n /**\n * The form control validator for the date filter.\n */\n this._filterValidator = function (control) {\n var controlValue = coerceDateProperty(_this._dateAdapter, control.value);\n return !_this._dateFilter || !controlValue || _this._dateFilter(controlValue) ?\n null : { 'matDatepickerFilter': true };\n };\n /**\n * The combined form control validator for this input.\n */\n this._validator = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\n /**\n * Whether the last value set on the input was valid.\n */\n this._lastValueValid = false;\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(function () {\n _this.value = _this.value;\n });\n }\n Object.defineProperty(MatDatepickerInput.prototype, \"matDatepicker\", {\n /**\n * The datepicker that this input is associated with.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this.registerDatepicker(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} value\n * @return {?}\n */\n MatDatepickerInput.prototype.registerDatepicker = function (value) {\n if (value) {\n this._datepicker = value;\n this._datepicker._registerInput(this);\n }\n };\n Object.defineProperty(MatDatepickerInput.prototype, \"matDatepickerFilter\", {\n /**\n * @param {?} filter\n * @return {?}\n */\n set: function (filter) {\n this._dateFilter = filter;\n this._validatorOnChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"value\", {\n /**\n * The value of the input.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n value = coerceDateProperty(this._dateAdapter, value);\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\n value = this._getValidDateOrNull(value);\n var /** @type {?} */ oldDate = this.value;\n this._value = value;\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '');\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"min\", {\n /**\n * The minimum valid date.\n * @return {?}\n */\n get: function () { return this._min; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._min = coerceDateProperty(this._dateAdapter, value);\n this._validatorOnChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"max\", {\n /**\n * The maximum valid date.\n * @return {?}\n */\n get: function () { return this._max; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._max = coerceDateProperty(this._dateAdapter, value);\n this._validatorOnChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDatepickerInput.prototype, \"disabled\", {\n /**\n * Whether the datepicker-input is disabled.\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceBooleanProperty(value);\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDatepickerInput.prototype.ngAfterContentInit = function () {\n var _this = this;\n if (this._datepicker) {\n this._datepickerSubscription =\n this._datepicker.selectedChanged.subscribe(function (selected) {\n _this.value = selected;\n _this._cvaOnChange(selected);\n _this._onTouched();\n _this.dateInput.emit(new MatDatepickerInputEvent(_this, _this._elementRef.nativeElement));\n _this.dateChange.emit(new MatDatepickerInputEvent(_this, _this._elementRef.nativeElement));\n });\n }\n };\n /**\n * @return {?}\n */\n MatDatepickerInput.prototype.ngOnDestroy = function () {\n this._datepickerSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatDatepickerInput.prototype.registerOnValidatorChange = function (fn) {\n this._validatorOnChange = fn;\n };\n /**\n * @param {?} c\n * @return {?}\n */\n MatDatepickerInput.prototype.validate = function (c) {\n return this._validator ? this._validator(c) : null;\n };\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return {?} The element to connect the popup to.\n */\n MatDatepickerInput.prototype.getPopupConnectionElementRef = function () {\n return this._formField ? this._formField.underlineRef : this._elementRef;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n MatDatepickerInput.prototype.writeValue = function (value) {\n this.value = value;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatDatepickerInput.prototype.registerOnChange = function (fn) {\n this._cvaOnChange = fn;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n MatDatepickerInput.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * @param {?} disabled\n * @return {?}\n */\n MatDatepickerInput.prototype.setDisabledState = function (disabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDatepickerInput.prototype._onKeydown = function (event) {\n if (event.altKey && event.keyCode === DOWN_ARROW) {\n this._datepicker.open();\n event.preventDefault();\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n MatDatepickerInput.prototype._onInput = function (value) {\n var /** @type {?} */ date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\n date = this._getValidDateOrNull(date);\n this._value = date;\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n };\n /**\n * @return {?}\n */\n MatDatepickerInput.prototype._onChange = function () {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n };\n /**\n * @param {?} obj The object to check.\n * @return {?} The given object if it is both a date instance and valid, otherwise null.\n */\n MatDatepickerInput.prototype._getValidDateOrNull = function (obj) {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n };\n MatDatepickerInput.decorators = [\n { type: Directive, args: [{\n selector: 'input[matDatepicker]',\n providers: [MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS],\n host: {\n '[attr.aria-haspopup]': 'true',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onTouched()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerInput.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: MatFormField, decorators: [{ type: Optional },] },\n ]; };\n MatDatepickerInput.propDecorators = {\n 'matDatepicker': [{ type: Input },],\n 'matDatepickerFilter': [{ type: Input },],\n 'value': [{ type: Input },],\n 'min': [{ type: Input },],\n 'max': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'dateChange': [{ type: Output },],\n 'dateInput': [{ type: Output },],\n };\n return MatDatepickerInput;\n}());\n\nvar MatDatepickerToggle = (function () {\n /**\n * @param {?} _intl\n * @param {?} _changeDetectorRef\n */\n function MatDatepickerToggle(_intl, _changeDetectorRef) {\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._stateChanges = Subscription.EMPTY;\n }\n Object.defineProperty(MatDatepickerToggle.prototype, \"disabled\", {\n /**\n * Whether the toggle button is disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatDatepickerToggle.prototype.ngOnChanges = function (changes) {\n var _this = this;\n if (changes.datepicker) {\n var /** @type {?} */ datepicker = changes.datepicker.currentValue;\n var /** @type {?} */ datepickerDisabled = datepicker ? datepicker._disabledChange : of();\n var /** @type {?} */ inputDisabled = datepicker && datepicker._datepickerInput ?\n datepicker._datepickerInput._disabledChange :\n of();\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerDisabled, inputDisabled)\n .subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n }\n };\n /**\n * @return {?}\n */\n MatDatepickerToggle.prototype.ngOnDestroy = function () {\n this._stateChanges.unsubscribe();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDatepickerToggle.prototype._open = function (event) {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n };\n MatDatepickerToggle.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker-toggle',\n template: \"<button mat-icon-button type=\\\"button\\\" [attr.aria-label]=\\\"_intl.openCalendarLabel\\\" [disabled]=\\\"disabled\\\" (click)=\\\"_open($event)\\\"><mat-icon><svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"currentColor\\\" style=\\\"vertical-align: top\\\" focusable=\\\"false\\\"><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/><path d=\\\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\\\"/></svg></mat-icon></button>\",\n host: {\n 'class': 'mat-datepicker-toggle',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerToggle.ctorParameters = function () { return [\n { type: MatDatepickerIntl, },\n { type: ChangeDetectorRef, },\n ]; };\n MatDatepickerToggle.propDecorators = {\n 'datepicker': [{ type: Input, args: ['for',] },],\n 'disabled': [{ type: Input },],\n };\n return MatDatepickerToggle;\n}());\n\nvar MatDatepickerModule = (function () {\n function MatDatepickerModule() {\n }\n MatDatepickerModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n OverlayModule,\n A11yModule,\n ],\n exports: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatMonthView,\n MatYearView,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatMonthView,\n MatYearView,\n ],\n providers: [\n MatDatepickerIntl,\n MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [\n MatDatepickerContent,\n ]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDatepickerModule.ctorParameters = function () { return []; };\n return MatDatepickerModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDatepickerModule, MatCalendar, MatCalendarCell, MatCalendarBody, coerceDateProperty, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MatDatepickerContent, MatDatepicker, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, MatDatepickerInputEvent, MatDatepickerInput, MatDatepickerIntl, MatDatepickerToggle, MatMonthView, MatYearView };\n//# sourceMappingURL=datepicker.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Host, Injectable, Input, NgModule, Optional, Output, Renderer2, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER, UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { mixinDisabled } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { filter } from '@angular/cdk/rxjs';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subscription } from 'rxjs/Subscription';\n\n/**\n * Unique ID counter\n */\nvar nextId = 0;\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nvar CdkAccordion = (function () {\n function CdkAccordion() {\n /**\n * A readonly id value to use for unique selection coordination.\n */\n this.id = \"cdk-accordion-\" + nextId++;\n this._multi = false;\n this._hideToggle = false;\n /**\n * The display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the reset of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n this.displayMode = 'default';\n }\n Object.defineProperty(CdkAccordion.prototype, \"multi\", {\n /**\n * Whether the accordion should allow multiple expanded accordion items simulateously.\n * @return {?}\n */\n get: function () { return this._multi; },\n /**\n * @param {?} multi\n * @return {?}\n */\n set: function (multi) { this._multi = coerceBooleanProperty(multi); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CdkAccordion.prototype, \"hideToggle\", {\n /**\n * Whether the expansion indicator should be hidden.\n * @return {?}\n */\n get: function () { return this._hideToggle; },\n /**\n * @param {?} show\n * @return {?}\n */\n set: function (show) { this._hideToggle = coerceBooleanProperty(show); },\n enumerable: true,\n configurable: true\n });\n CdkAccordion.decorators = [\n { type: Directive, args: [{\n selector: 'cdk-accordion, [cdk-accordion]',\n exportAs: 'cdkAccordion',\n },] },\n ];\n /**\n * @nocollapse\n */\n CdkAccordion.ctorParameters = function () { return []; };\n CdkAccordion.propDecorators = {\n 'multi': [{ type: Input },],\n 'hideToggle': [{ type: Input },],\n 'displayMode': [{ type: Input },],\n };\n return CdkAccordion;\n}());\n/**\n * Directive for a Material Design Accordion.\n */\nvar MatAccordion = (function (_super) {\n __extends(MatAccordion, _super);\n function MatAccordion() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatAccordion.decorators = [\n { type: Directive, args: [{\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n host: {\n class: 'mat-accordion'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatAccordion.ctorParameters = function () { return []; };\n return MatAccordion;\n}(CdkAccordion));\n\n/**\n * Used to generate unique ID for each expansion panel.\n */\nvar nextId$1 = 0;\n/**\n * An abstract class to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nvar AccordionItem = (function () {\n /**\n * @param {?} accordion\n * @param {?} _changeDetectorRef\n * @param {?} _expansionDispatcher\n */\n function AccordionItem(accordion, _changeDetectorRef, _expansionDispatcher) {\n var _this = this;\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /**\n * Event emitted every time the AccordionItem is closed.\n */\n this.closed = new EventEmitter();\n /**\n * Event emitted every time the AccordionItem is opened.\n */\n this.opened = new EventEmitter();\n /**\n * Event emitted when the AccordionItem is destroyed.\n */\n this.destroyed = new EventEmitter();\n /**\n * The unique AccordionItem id.\n */\n this.id = \"cdk-accordion-child-\" + nextId$1++;\n /**\n * Unregister function for _expansionDispatcher *\n */\n this._removeUniqueSelectionListener = function () { };\n this._removeUniqueSelectionListener =\n _expansionDispatcher.listen(function (id, accordionId) {\n if (_this.accordion && !_this.accordion.multi &&\n _this.accordion.id === accordionId && _this.id !== id) {\n _this.expanded = false;\n }\n });\n }\n Object.defineProperty(AccordionItem.prototype, \"expanded\", {\n /**\n * Whether the AccordionItem is expanded.\n * @return {?}\n */\n get: function () { return this._expanded; },\n /**\n * @param {?} expanded\n * @return {?}\n */\n set: function (expanded) {\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n var accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Emits an event for the accordion item being destroyed.\n * @return {?}\n */\n AccordionItem.prototype.ngOnDestroy = function () {\n this.destroyed.emit();\n this._removeUniqueSelectionListener();\n };\n /**\n * Toggles the expanded state of the accordion item.\n * @return {?}\n */\n AccordionItem.prototype.toggle = function () {\n this.expanded = !this.expanded;\n };\n /**\n * Sets the expanded state of the accordion item to false.\n * @return {?}\n */\n AccordionItem.prototype.close = function () {\n this.expanded = false;\n };\n /**\n * Sets the expanded state of the accordion item to true.\n * @return {?}\n */\n AccordionItem.prototype.open = function () {\n this.expanded = true;\n };\n AccordionItem.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n AccordionItem.ctorParameters = function () { return [\n { type: CdkAccordion, decorators: [{ type: Optional },] },\n { type: ChangeDetectorRef, },\n { type: UniqueSelectionDispatcher, },\n ]; };\n AccordionItem.propDecorators = {\n 'closed': [{ type: Output },],\n 'opened': [{ type: Output },],\n 'destroyed': [{ type: Output },],\n 'expanded': [{ type: Input },],\n };\n return AccordionItem;\n}());\n\n/**\n * \\@docs-private\n */\nvar MatExpansionPanelBase = (function (_super) {\n __extends(MatExpansionPanelBase, _super);\n /**\n * @param {?} accordion\n * @param {?} _changeDetectorRef\n * @param {?} _uniqueSelectionDispatcher\n */\n function MatExpansionPanelBase(accordion, _changeDetectorRef, _uniqueSelectionDispatcher) {\n return _super.call(this, accordion, _changeDetectorRef, _uniqueSelectionDispatcher) || this;\n }\n return MatExpansionPanelBase;\n}(AccordionItem));\nvar _MatExpansionPanelMixinBase = mixinDisabled(MatExpansionPanelBase);\n/**\n * Time and timing curve for expansion panel animations.\n */\nvar EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n/**\n * <mat-expansion-panel> component.\n *\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the CdkAccordion directive attached.\n *\n * Please refer to README.md for examples on how to use it.\n */\nvar MatExpansionPanel = (function (_super) {\n __extends(MatExpansionPanel, _super);\n /**\n * @param {?} accordion\n * @param {?} _changeDetectorRef\n * @param {?} _uniqueSelectionDispatcher\n */\n function MatExpansionPanel(accordion, _changeDetectorRef, _uniqueSelectionDispatcher) {\n var _this = _super.call(this, accordion, _changeDetectorRef, _uniqueSelectionDispatcher) || this;\n /**\n * Whether the toggle indicator should be hidden.\n */\n _this.hideToggle = false;\n /**\n * Stream that emits for changes in `\\@Input` properties.\n */\n _this._inputChanges = new Subject();\n _this.accordion = accordion;\n return _this;\n }\n /**\n * Whether the expansion indicator should be hidden.\n * @return {?}\n */\n MatExpansionPanel.prototype._getHideToggle = function () {\n if (this.accordion) {\n return this.accordion.hideToggle;\n }\n return this.hideToggle;\n };\n /**\n * Determines whether the expansion panel should have spacing between it and its siblings.\n * @return {?}\n */\n MatExpansionPanel.prototype._hasSpacing = function () {\n if (this.accordion) {\n return (this.expanded ? this.accordion.displayMode : this._getExpandedState()) === 'default';\n }\n return false;\n };\n /**\n * Gets the expanded state string.\n * @return {?}\n */\n MatExpansionPanel.prototype._getExpandedState = function () {\n return this.expanded ? 'expanded' : 'collapsed';\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n MatExpansionPanel.prototype.ngOnChanges = function (changes) {\n this._inputChanges.next(changes);\n };\n /**\n * @return {?}\n */\n MatExpansionPanel.prototype.ngOnDestroy = function () {\n this._inputChanges.complete();\n };\n MatExpansionPanel.decorators = [\n { type: Component, args: [{styles: [\".mat-expansion-panel{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);box-sizing:content-box;display:block;margin:0;transition:margin 225ms cubic-bezier(.4,0,.2,1)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-expansion-panel-content{overflow:hidden}.mat-expansion-panel-body{margin:0 24px 16px;overflow:auto}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion .mat-expansion-panel-spacing:first-child{margin-top:0}.mat-accordion .mat-expansion-panel-spacing:last-child{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row button.mat-button{margin-left:8px}[dir=rtl] .mat-action-row button.mat-button{margin-left:0;margin-right:8px}\"],\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n template: \"<ng-content select=\\\"mat-expansion-panel-header\\\"></ng-content><div [class.mat-expanded]=\\\"expanded\\\" class=\\\"mat-expansion-panel-content\\\" [@bodyExpansion]=\\\"_getExpandedState()\\\" [id]=\\\"id\\\"><div class=\\\"mat-expansion-panel-body\\\"><ng-content></ng-content></div><ng-content select=\\\"mat-action-row\\\"></ng-content></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled', 'expanded'],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n },\n providers: [\n { provide: AccordionItem, useExisting: forwardRef(function () { return MatExpansionPanel; }) }\n ],\n animations: [\n trigger('bodyExpansion', [\n state('collapsed', style({ height: '0px', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanel.ctorParameters = function () { return [\n { type: MatAccordion, decorators: [{ type: Optional }, { type: Host },] },\n { type: ChangeDetectorRef, },\n { type: UniqueSelectionDispatcher, },\n ]; };\n MatExpansionPanel.propDecorators = {\n 'hideToggle': [{ type: Input },],\n };\n return MatExpansionPanel;\n}(_MatExpansionPanelMixinBase));\nvar MatExpansionPanelActionRow = (function () {\n function MatExpansionPanelActionRow() {\n }\n MatExpansionPanelActionRow.decorators = [\n { type: Directive, args: [{\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelActionRow.ctorParameters = function () { return []; };\n return MatExpansionPanelActionRow;\n}());\n\n/**\n * <mat-expansion-panel-header> component.\n *\n * This component corresponds to the header element of an <mat-expansion-panel>.\n *\n * Please refer to README.md for examples on how to use it.\n */\nvar MatExpansionPanelHeader = (function () {\n /**\n * @param {?} renderer\n * @param {?} panel\n * @param {?} _element\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n */\n function MatExpansionPanelHeader(renderer, panel, _element, _focusMonitor, _changeDetectorRef) {\n var _this = this;\n this.panel = panel;\n this._element = _element;\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this._parentChangeSubscription = Subscription.EMPTY;\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription = merge(panel.opened, panel.closed, filter.call(panel._inputChanges, function (changes) { return !!(changes.hideToggle || changes.disabled); }))\n .subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n _focusMonitor.monitor(_element.nativeElement, renderer, false);\n }\n /**\n * Toggles the expanded state of the panel.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._toggle = function () {\n if (!this.panel.disabled) {\n this.panel.toggle();\n }\n };\n /**\n * Gets whether the panel is expanded.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._isExpanded = function () {\n return this.panel.expanded;\n };\n /**\n * Gets the expanded state string of the panel.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._getExpandedState = function () {\n return this.panel._getExpandedState();\n };\n /**\n * Gets the panel id.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._getPanelId = function () {\n return this.panel.id;\n };\n /**\n * Gets whether the expand indicator should be shown.\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._showToggle = function () {\n return !this.panel.hideToggle && !this.panel.disabled;\n };\n /**\n * Handle keyup event calling to toggle() if appropriate.\n * @param {?} event\n * @return {?}\n */\n MatExpansionPanelHeader.prototype._keyup = function (event) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n event.preventDefault();\n this._toggle();\n break;\n default:\n return;\n }\n };\n /**\n * @return {?}\n */\n MatExpansionPanelHeader.prototype.ngOnDestroy = function () {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element.nativeElement);\n };\n MatExpansionPanelHeader.decorators = [\n { type: Component, args: [{selector: 'mat-expansion-panel-header',\n styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:0}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-description,.mat-expansion-panel-header-title{display:flex;flex-grow:1;margin-right:16px}[dir=rtl] .mat-expansion-panel-header-description,[dir=rtl] .mat-expansion-panel-header-title{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:'';display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}\"],\n template: \"<span class=\\\"mat-content\\\"><ng-content select=\\\"mat-panel-title\\\"></ng-content><ng-content select=\\\"mat-panel-description\\\"></ng-content><ng-content></ng-content></span><span [@indicatorRotate]=\\\"_getExpandedState()\\\" *ngIf=\\\"_showToggle()\\\" class=\\\"mat-expansion-indicator\\\"></span>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-expansion-panel-header',\n 'role': 'button',\n '[attr.tabindex]': 'panel.disabled ? -1 : 0',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '(click)': '_toggle()',\n '(keyup)': '_keyup($event)',\n '[@expansionHeight]': \"{\\n value: _getExpandedState(),\\n params: {\\n collapsedHeight: collapsedHeight,\\n expandedHeight: expandedHeight\\n }\\n }\",\n },\n animations: [\n trigger('indicatorRotate', [\n state('collapsed', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n trigger('expansionHeight', [\n state('collapsed', style({\n height: '{{collapsedHeight}}',\n }), {\n params: { collapsedHeight: '48px' },\n }),\n state('expanded', style({\n height: '{{expandedHeight}}'\n }), {\n params: { expandedHeight: '64px' }\n }),\n transition('expanded <=> collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelHeader.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: MatExpansionPanel, decorators: [{ type: Host },] },\n { type: ElementRef, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n ]; };\n MatExpansionPanelHeader.propDecorators = {\n 'expandedHeight': [{ type: Input },],\n 'collapsedHeight': [{ type: Input },],\n };\n return MatExpansionPanelHeader;\n}());\n/**\n * <mat-panel-description> directive.\n *\n * This direction is to be used inside of the MatExpansionPanelHeader component.\n */\nvar MatExpansionPanelDescription = (function () {\n function MatExpansionPanelDescription() {\n }\n MatExpansionPanelDescription.decorators = [\n { type: Directive, args: [{\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelDescription.ctorParameters = function () { return []; };\n return MatExpansionPanelDescription;\n}());\n/**\n * <mat-panel-title> directive.\n *\n * This direction is to be used inside of the MatExpansionPanelHeader component.\n */\nvar MatExpansionPanelTitle = (function () {\n function MatExpansionPanelTitle() {\n }\n MatExpansionPanelTitle.decorators = [\n { type: Directive, args: [{\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionPanelTitle.ctorParameters = function () { return []; };\n return MatExpansionPanelTitle;\n}());\n\nvar MatExpansionModule = (function () {\n function MatExpansionModule() {\n }\n MatExpansionModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, A11yModule],\n exports: [\n CdkAccordion,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription\n ],\n declarations: [\n CdkAccordion,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription\n ],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatExpansionModule.ctorParameters = function () { return []; };\n return MatExpansionModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkAccordion, MatAccordion, AccordionItem, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelDescription, MatExpansionPanelTitle, MatExpansionModule, EXPANSION_PANEL_ANIMATION_TIMING as ɵc15, MatExpansionPanelBase as ɵa15, _MatExpansionPanelMixinBase as ɵb15 };\n//# sourceMappingURL=expansion.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, ContentChildren, Directive, ElementRef, Input, NgModule, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule, MatLine, MatLineModule, MatLineSetter } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Directionality } from '@angular/cdk/bidi';\n\n/**\n * Converts values into strings. Falsy values become empty strings.\n * \\@docs-private\n * @param {?} value\n * @return {?}\n */\nfunction coerceToString(value) {\n return \"\" + (value || '');\n}\n/**\n * Converts a value that might be a string into a number.\n * \\@docs-private\n * @param {?} value\n * @return {?}\n */\nfunction coerceToNumber(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n\nvar MatGridTile = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatGridTile(_renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n this._rowspan = 1;\n this._colspan = 1;\n }\n Object.defineProperty(MatGridTile.prototype, \"rowspan\", {\n /**\n * Amount of rows that the grid tile takes up.\n * @return {?}\n */\n get: function () { return this._rowspan; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._rowspan = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridTile.prototype, \"colspan\", {\n /**\n * Amount of columns that the grid tile takes up.\n * @return {?}\n */\n get: function () { return this._colspan; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._colspan = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n MatGridTile.prototype._setStyle = function (property, value) {\n this._renderer.setStyle(this._element.nativeElement, property, value);\n };\n MatGridTile.decorators = [\n { type: Component, args: [{selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n },\n template: \"<figure class=\\\"mat-figure\\\"><ng-content></ng-content></figure>\",\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-footer,.mat-grid-tile .mat-grid-tile-header{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-footer>*,.mat-grid-tile .mat-grid-tile-header>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-tile-footer.mat-2-line,.mat-grid-tile .mat-grid-tile-header.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTile.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatGridTile.propDecorators = {\n 'rowspan': [{ type: Input },],\n 'colspan': [{ type: Input },],\n };\n return MatGridTile;\n}());\nvar MatGridTileText = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n */\n function MatGridTileText(_renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n }\n /**\n * @return {?}\n */\n MatGridTileText.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n };\n MatGridTileText.decorators = [\n { type: Component, args: [{selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n template: \"<ng-content select=\\\"[mat-grid-avatar], [matGridAvatar]\\\"></ng-content><div class=\\\"mat-grid-list-text\\\"><ng-content select=\\\"[mat-line], [matLine]\\\"></ng-content></div><ng-content></ng-content>\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileText.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n MatGridTileText.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n };\n return MatGridTileText;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridAvatarCssMatStyler = (function () {\n function MatGridAvatarCssMatStyler() {\n }\n MatGridAvatarCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: { 'class': 'mat-grid-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridAvatarCssMatStyler.ctorParameters = function () { return []; };\n return MatGridAvatarCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridTileHeaderCssMatStyler = (function () {\n function MatGridTileHeaderCssMatStyler() {\n }\n MatGridTileHeaderCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-grid-tile-header',\n host: { 'class': 'mat-grid-tile-header' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileHeaderCssMatStyler.ctorParameters = function () { return []; };\n return MatGridTileHeaderCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatGridTileFooterCssMatStyler = (function () {\n function MatGridTileFooterCssMatStyler() {\n }\n MatGridTileFooterCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-grid-tile-footer',\n host: { 'class': 'mat-grid-tile-footer' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridTileFooterCssMatStyler.ctorParameters = function () { return []; };\n return MatGridTileFooterCssMatStyler;\n}());\n\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * \\@docs-private\n */\nvar TileCoordinator = (function () {\n /**\n * @param {?} numColumns\n * @param {?} tiles\n */\n function TileCoordinator(numColumns, tiles) {\n var _this = this;\n /**\n * Index at which the search for the next gap will start.\n */\n this.columnIndex = 0;\n /**\n * The current row index.\n */\n this.rowIndex = 0;\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(function (tile) { return _this._trackTile(tile); });\n }\n Object.defineProperty(TileCoordinator.prototype, \"rowCount\", {\n /**\n * Gets the total number of rows occupied by tiles\n * @return {?}\n */\n get: function () { return this.rowIndex + 1; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TileCoordinator.prototype, \"rowspan\", {\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ lastRowMax = Math.max.apply(Math, this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Calculates the row and col position of a tile.\n * @param {?} tile\n * @return {?}\n */\n TileCoordinator.prototype._trackTile = function (tile) {\n // Find a gap large enough for this tile.\n var /** @type {?} */ gapStartIndex = this._findMatchingGap(tile.colspan);\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n return new TilePosition(this.rowIndex, gapStartIndex);\n };\n /**\n * Finds the next available space large enough to fit the tile.\n * @param {?} tileCols\n * @return {?}\n */\n TileCoordinator.prototype._findMatchingGap = function (tileCols) {\n if (tileCols > this.tracker.length) {\n throw Error(\"mat-grid-list: tile with colspan \" + tileCols + \" is wider than \" +\n (\"grid with cols=\\\"\" + this.tracker.length + \"\\\".\"));\n }\n // Start index is inclusive, end index is exclusive.\n var /** @type {?} */ gapStartIndex = -1;\n var /** @type {?} */ gapEndIndex = -1;\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n continue;\n }\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n continue;\n }\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n // Continue iterating until we find a gap wide enough for this tile.\n } while (gapEndIndex - gapStartIndex < tileCols);\n return gapStartIndex;\n };\n /**\n * Move \"down\" to the next row.\n * @return {?}\n */\n TileCoordinator.prototype._nextRow = function () {\n this.columnIndex = 0;\n this.rowIndex++;\n // Decrement all spaces by one to reflect moving down one row.\n for (var /** @type {?} */ i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n };\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n * @param {?} gapStartIndex\n * @return {?}\n */\n TileCoordinator.prototype._findGapEndIndex = function (gapStartIndex) {\n for (var /** @type {?} */ i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n // The gap ends with the end of the row.\n return this.tracker.length;\n };\n /**\n * Update the tile tracker to account for the given tile in the given space.\n * @param {?} start\n * @param {?} tile\n * @return {?}\n */\n TileCoordinator.prototype._markTilePosition = function (start, tile) {\n for (var /** @type {?} */ i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n };\n return TileCoordinator;\n}());\n/**\n * Simple data structure for tile position (row, col).\n * \\@docs-private\n */\nvar TilePosition = (function () {\n /**\n * @param {?} row\n * @param {?} col\n */\n function TilePosition(row, col) {\n this.row = row;\n this.col = col;\n }\n return TilePosition;\n}());\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * \\@docs-private\n * @abstract\n */\nvar TileStyler = (function () {\n function TileStyler() {\n this._rows = 0;\n this._rowspan = 0;\n }\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param {?} gutterSize Size of the grid's gutter.\n * @param {?} tracker Instance of the TileCoordinator.\n * @param {?} cols Amount of columns in the grid.\n * @param {?} direction Layout direction of the grid.\n * @return {?}\n */\n TileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n };\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param {?} sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param {?} gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return {?} The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n TileStyler.prototype.getBaseTileSize = function (sizePercent, gutterFraction) {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return \"(\" + sizePercent + \"% - (\" + this._gutterSize + \" * \" + gutterFraction + \"))\";\n };\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param {?} baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param {?} offset Number of tiles that have already been rendered in the row/column.\n * @return {?} Position of the tile as a CSS calc() expression.\n */\n TileStyler.prototype.getTilePosition = function (baseSize, offset) {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(\"(\" + baseSize + \" + \" + this._gutterSize + \") * \" + offset);\n };\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param {?} baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param {?} span The tile's rowspan or colspan.\n * @return {?} Size of the tile as a CSS calc() expression.\n */\n TileStyler.prototype.getTileSize = function (baseSize, span) {\n return \"(\" + baseSize + \" * \" + span + \") + (\" + (span - 1) + \" * \" + this._gutterSize + \")\";\n };\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param {?} tile Tile to which to apply the styling.\n * @param {?} rowIndex Index of the tile's row.\n * @param {?} colIndex Index of the tile's column.\n * @return {?}\n */\n TileStyler.prototype.setStyle = function (tile, rowIndex, colIndex) {\n // Percent of the available horizontal space that one column takes up.\n var /** @type {?} */ percentWidthPerTile = 100 / this._cols;\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n var /** @type {?} */ gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n };\n /**\n * Sets the horizontal placement of the tile in the list.\n * @param {?} tile\n * @param {?} colIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n TileStyler.prototype.setColStyles = function (tile, colIndex, percentWidth, gutterWidth) {\n // Base horizontal size of a column.\n var /** @type {?} */ baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n var /** @type {?} */ side = this._direction === 'ltr' ? 'left' : 'right';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n };\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n * @return {?}\n */\n TileStyler.prototype.getGutterSpan = function () {\n return this._gutterSize + \" * (\" + this._rowspan + \" - 1)\";\n };\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param {?} tileHeight Height of the tile.\n * @return {?}\n */\n TileStyler.prototype.getTileSpan = function (tileHeight) {\n return this._rowspan + \" * \" + this.getTileSize(tileHeight, 1);\n };\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * \\@docs-private\n * @abstract\n * @param {?} tile\n * @param {?} rowIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n TileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) { };\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * \\@docs-private\n * @return {?}\n */\n TileStyler.prototype.getComputedHeight = function () { return null; };\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * \\@docs-private\n * @abstract\n * @param {?} list Grid list that the styler was attached to.\n * @return {?}\n */\n TileStyler.prototype.reset = function (list) { };\n return TileStyler;\n}());\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example <mat-grid-list cols=\"3\" rowHeight=\"100px\">\n * \\@docs-private\n */\nvar FixedTileStyler = (function (_super) {\n __extends(FixedTileStyler, _super);\n /**\n * @param {?} fixedRowHeight\n */\n function FixedTileStyler(fixedRowHeight) {\n var _this = _super.call(this) || this;\n _this.fixedRowHeight = fixedRowHeight;\n return _this;\n }\n /**\n * @param {?} gutterSize\n * @param {?} tracker\n * @param {?} cols\n * @param {?} direction\n * @return {?}\n */\n FixedTileStyler.prototype.init = function (gutterSize, tracker, cols, direction) {\n _super.prototype.init.call(this, gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n };\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @return {?}\n */\n FixedTileStyler.prototype.setRowStyles = function (tile, rowIndex) {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n };\n /**\n * @return {?}\n */\n FixedTileStyler.prototype.getComputedHeight = function () {\n return [\n 'height', calc(this.getTileSpan(this.fixedRowHeight) + \" + \" + this.getGutterSpan())\n ];\n };\n /**\n * @param {?} list\n * @return {?}\n */\n FixedTileStyler.prototype.reset = function (list) {\n list._setListStyle(['height', null]);\n list._tiles.forEach(function (tile) {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n };\n return FixedTileStyler;\n}(TileStyler));\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example <mat-grid-list cols=\"3\" rowHeight=\"3:1\">\n * \\@docs-private\n */\nvar RatioTileStyler = (function (_super) {\n __extends(RatioTileStyler, _super);\n /**\n * @param {?} value\n */\n function RatioTileStyler(value) {\n var _this = _super.call(this) || this;\n _this._parseRatio(value);\n return _this;\n }\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @param {?} percentWidth\n * @param {?} gutterWidth\n * @return {?}\n */\n RatioTileStyler.prototype.setRowStyles = function (tile, rowIndex, percentWidth, gutterWidth) {\n var /** @type {?} */ percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('margin-top', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('padding-top', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n };\n /**\n * @return {?}\n */\n RatioTileStyler.prototype.getComputedHeight = function () {\n return [\n 'padding-bottom', calc(this.getTileSpan(this.baseTileHeight) + \" + \" + this.getGutterSpan())\n ];\n };\n /**\n * @param {?} list\n * @return {?}\n */\n RatioTileStyler.prototype.reset = function (list) {\n list._setListStyle(['padding-bottom', null]);\n list._tiles.forEach(function (tile) {\n tile._setStyle('margin-top', null);\n tile._setStyle('padding-top', null);\n });\n };\n /**\n * @param {?} value\n * @return {?}\n */\n RatioTileStyler.prototype._parseRatio = function (value) {\n var /** @type {?} */ ratioParts = value.split(':');\n if (ratioParts.length !== 2) {\n throw Error(\"mat-grid-list: invalid ratio given for row-height: \\\"\" + value + \"\\\"\");\n }\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n };\n return RatioTileStyler;\n}(TileStyler));\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example <mat-grid-list cols=\"3\" rowHeight=\"fit\">\n *\n * \\@docs-private\n */\nvar FitTileStyler = (function (_super) {\n __extends(FitTileStyler, _super);\n function FitTileStyler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} tile\n * @param {?} rowIndex\n * @return {?}\n */\n FitTileStyler.prototype.setRowStyles = function (tile, rowIndex) {\n // Percent of the available vertical space that one row takes up.\n var /** @type {?} */ percentHeightPerTile = 100 / this._rowspan;\n // Fraction of the horizontal gutter size that each column takes up.\n var /** @type {?} */ gutterHeightPerTile = (this._rows - 1) / this._rows;\n // Base vertical size of a column.\n var /** @type {?} */ baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n };\n /**\n * @param {?} list\n * @return {?}\n */\n FitTileStyler.prototype.reset = function (list) {\n list._tiles.forEach(function (tile) {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n };\n return FitTileStyler;\n}(TileStyler));\n/**\n * Wraps a CSS string in a calc function\n * @param {?} exp\n * @return {?}\n */\nfunction calc(exp) { return \"calc(\" + exp + \")\"; }\n/**\n * Appends pixels to a CSS string if no units are given.\n * @param {?} value\n * @return {?}\n */\nfunction normalizeUnits(value) {\n return (value.match(/px|em|rem/)) ? value : value + 'px';\n}\n\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\nvar MAT_FIT_MODE = 'fit';\nvar MatGridList = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _dir\n */\n function MatGridList(_renderer, _element, _dir) {\n this._renderer = _renderer;\n this._element = _element;\n this._dir = _dir;\n /**\n * The amount of space between tiles. This will be something like '5px' or '2em'.\n */\n this._gutter = '1px';\n }\n Object.defineProperty(MatGridList.prototype, \"cols\", {\n /**\n * Amount of columns in the grid list.\n * @return {?}\n */\n get: function () { return this._cols; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._cols = coerceToNumber(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridList.prototype, \"gutterSize\", {\n /**\n * Size of the grid list's gutter in pixels.\n * @return {?}\n */\n get: function () { return this._gutter; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._gutter = coerceToString(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatGridList.prototype, \"rowHeight\", {\n /**\n * Set internal representation of row height from the user-provided value.\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ newValue = coerceToString(value);\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatGridList.prototype.ngOnInit = function () {\n this._checkCols();\n this._checkRowHeight();\n };\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n * @return {?}\n */\n MatGridList.prototype.ngAfterContentChecked = function () {\n this._layoutTiles();\n };\n /**\n * Throw a friendly error if cols property is missing\n * @return {?}\n */\n MatGridList.prototype._checkCols = function () {\n if (!this.cols) {\n throw Error(\"mat-grid-list: must pass in number of columns. \" +\n \"Example: <mat-grid-list cols=\\\"3\\\">\");\n }\n };\n /**\n * Default to equal width:height if rowHeight property is missing\n * @return {?}\n */\n MatGridList.prototype._checkRowHeight = function () {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n };\n /**\n * Creates correct Tile Styler subtype based on rowHeight passed in by user\n * @param {?} rowHeight\n * @return {?}\n */\n MatGridList.prototype._setTileStyler = function (rowHeight) {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n }\n else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n }\n else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n };\n /**\n * Computes and applies the size and position for all children grid tiles.\n * @return {?}\n */\n MatGridList.prototype._layoutTiles = function () {\n var _this = this;\n var /** @type {?} */ tracker = new TileCoordinator(this.cols, this._tiles);\n var /** @type {?} */ direction = this._dir ? this._dir.value : 'ltr';\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n this._tiles.forEach(function (tile, index) {\n var /** @type {?} */ pos = tracker.positions[index];\n _this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n this._setListStyle(this._tileStyler.getComputedHeight());\n };\n /**\n * Sets style on the main grid-list element, given the style name and value.\n * @param {?} style\n * @return {?}\n */\n MatGridList.prototype._setListStyle = function (style) {\n if (style) {\n this._renderer.setStyle(this._element.nativeElement, style[0], style[1]);\n }\n };\n MatGridList.decorators = [\n { type: Component, args: [{selector: 'mat-grid-list',\n exportAs: 'matGridList',\n template: \"<div><ng-content></ng-content></div>\",\n styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-figure{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}.mat-grid-tile .mat-grid-tile-footer,.mat-grid-tile .mat-grid-tile-header{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-footer>*,.mat-grid-tile .mat-grid-tile-header>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-tile-footer.mat-2-line,.mat-grid-tile .mat-grid-tile-header.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}\"],\n host: {\n 'class': 'mat-grid-list',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridList.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatGridList.propDecorators = {\n '_tiles': [{ type: ContentChildren, args: [MatGridTile,] },],\n 'cols': [{ type: Input },],\n 'gutterSize': [{ type: Input },],\n 'rowHeight': [{ type: Input },],\n };\n return MatGridList;\n}());\n\nvar MatGridListModule = (function () {\n function MatGridListModule() {\n }\n MatGridListModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatGridListModule.ctorParameters = function () { return []; };\n return MatGridListModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatGridTile, MatGridListModule, MatGridList, MatGridAvatarCssMatStyler as ɵb13, MatGridTileFooterCssMatStyler as ɵd13, MatGridTileHeaderCssMatStyler as ɵc13, MatGridTileText as ɵa13 };\n//# sourceMappingURL=grid-list.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Platform, PlatformModule, getSupportedInputTypes } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { Directive, ElementRef, Input, NgModule, Optional, Renderer2, Self } from '@angular/core';\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n */\nvar MatTextareaAutosize = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _platform\n */\n function MatTextareaAutosize(_elementRef, _platform) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n }\n Object.defineProperty(MatTextareaAutosize.prototype, \"minRows\", {\n /**\n * @return {?}\n */\n get: function () { return this._minRows; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._minRows = value;\n this._setMinHeight();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTextareaAutosize.prototype, \"maxRows\", {\n /**\n * @return {?}\n */\n get: function () { return this._maxRows; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._maxRows = value;\n this._setMaxHeight();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the minimum height of the textarea as determined by minRows.\n * @return {?}\n */\n MatTextareaAutosize.prototype._setMinHeight = function () {\n var /** @type {?} */ minHeight = this.minRows && this._cachedLineHeight ?\n this.minRows * this._cachedLineHeight + \"px\" : null;\n if (minHeight) {\n this._setTextareaStyle('minHeight', minHeight);\n }\n };\n /**\n * Sets the maximum height of the textarea as determined by maxRows.\n * @return {?}\n */\n MatTextareaAutosize.prototype._setMaxHeight = function () {\n var /** @type {?} */ maxHeight = this.maxRows && this._cachedLineHeight ?\n this.maxRows * this._cachedLineHeight + \"px\" : null;\n if (maxHeight) {\n this._setTextareaStyle('maxHeight', maxHeight);\n }\n };\n /**\n * @return {?}\n */\n MatTextareaAutosize.prototype.ngAfterViewInit = function () {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n };\n /**\n * Sets a style property on the textarea element.\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n MatTextareaAutosize.prototype._setTextareaStyle = function (property, value) {\n var /** @type {?} */ textarea = (this._elementRef.nativeElement);\n textarea.style[property] = value;\n };\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n * @return {?}\n */\n MatTextareaAutosize.prototype._cacheTextareaLineHeight = function () {\n if (this._cachedLineHeight) {\n return;\n }\n var /** @type {?} */ textarea = (this._elementRef.nativeElement);\n // Use a clone element because we have to override some styles.\n var /** @type {?} */ textareaClone = (textarea.cloneNode(false));\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden'; /** @type {?} */\n ((textarea.parentNode)).appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight; /** @type {?} */\n ((textarea.parentNode)).removeChild(textareaClone);\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n };\n /**\n * @return {?}\n */\n MatTextareaAutosize.prototype.ngDoCheck = function () {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n };\n /**\n * Resize the textarea to fit its content.\n * @return {?}\n */\n MatTextareaAutosize.prototype.resizeToFitContent = function () {\n this._cacheTextareaLineHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n var /** @type {?} */ textarea = (this._elementRef.nativeElement);\n var /** @type {?} */ value = textarea.value;\n // Only resize of the value changed since these calculations can be expensive.\n if (value === this._previousValue) {\n return;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n textarea.style.height = 'auto';\n textarea.style.overflow = 'hidden';\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = textarea.scrollHeight + \"px\";\n textarea.style.overflow = '';\n this._previousValue = value;\n };\n MatTextareaAutosize.decorators = [\n { type: Directive, args: [{\n selector: \"textarea[mat-autosize], textarea[matTextareaAutosize]\",\n exportAs: 'matTextareaAutosize',\n host: {\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTextareaAutosize.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Platform, },\n ]; };\n MatTextareaAutosize.propDecorators = {\n 'minRows': [{ type: Input, args: ['matAutosizeMinRows',] },],\n 'maxRows': [{ type: Input, args: ['matAutosizeMaxRows',] },],\n };\n return MatTextareaAutosize;\n}());\n\n/**\n * \\@docs-private\n * @param {?} type\n * @return {?}\n */\nfunction getMatInputUnsupportedTypeError(type) {\n return Error(\"Input type \\\"\" + type + \"\\\" isn't supported by matInput.\");\n}\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nvar MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'color',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\nvar nextUniqueId = 0;\n/**\n * Directive that allows a native input to work inside a `MatFormField`.\n */\nvar MatInput = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _platform\n * @param {?} ngControl\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} _defaultErrorStateMatcher\n */\n function MatInput(_elementRef, _renderer, _platform, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._platform = _platform;\n this.ngControl = ngControl;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n /**\n * Variables used as cache for getters and setters.\n */\n this._type = 'text';\n this._disabled = false;\n this._required = false;\n this._uid = \"mat-input-\" + nextUniqueId++;\n this._previousNativeValue = this.value;\n this._readonly = false;\n /**\n * Whether the input is focused.\n */\n this.focused = false;\n /**\n * Whether the input is in an error state.\n */\n this.errorState = false;\n /**\n * Stream that emits whenever the state of the input changes such that the wrapping `MatFormField`\n * needs to run change detection.\n */\n this.stateChanges = new Subject();\n /**\n * A name for this control that can be used by `mat-form-field`.\n */\n this.controlType = 'mat-input';\n /**\n * Placeholder attribute of the element.\n */\n this.placeholder = '';\n this._neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(function (t) { return getSupportedInputTypes().has(t); });\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n _renderer.listen(_elementRef.nativeElement, 'keyup', function (event) {\n var el = event.target;\n if (!el.value && !el.selectionStart && !el.selectionEnd) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting `1, 1` fixes it for the first\n // time that you type text and then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n }\n }\n Object.defineProperty(MatInput.prototype, \"disabled\", {\n /**\n * Whether the element is disabled.\n * @return {?}\n */\n get: function () { return this.ngControl ? this.ngControl.disabled : this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"id\", {\n /**\n * Unique id of the element.\n * @return {?}\n */\n get: function () { return this._id; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._id = value || this._uid; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"required\", {\n /**\n * Whether the element is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"type\", {\n /**\n * Input type of the element.\n * @return {?}\n */\n get: function () { return this._type; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._type = value || 'text';\n this._validateType();\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea() && getSupportedInputTypes().has(this._type)) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'type', this._type);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"value\", {\n /**\n * The input element's value.\n * @return {?}\n */\n get: function () { return this._elementRef.nativeElement.value; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this.value) {\n this._elementRef.nativeElement.value = value;\n this.stateChanges.next();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"readonly\", {\n /**\n * Whether the element is readonly.\n * @return {?}\n */\n get: function () { return this._readonly; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._readonly = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatInput.prototype.ngOnChanges = function () {\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatInput.prototype.ngOnDestroy = function () {\n this.stateChanges.complete();\n };\n /**\n * @return {?}\n */\n MatInput.prototype.ngDoCheck = function () {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this._updateErrorState();\n }\n else {\n // When the input isn't used together with `@angular/forms`, we need to check manually for\n // changes to the native `value` property in order to update the floating label.\n this._dirtyCheckNativeValue();\n }\n };\n /**\n * @return {?}\n */\n MatInput.prototype.focus = function () { this._elementRef.nativeElement.focus(); };\n /**\n * Callback for the cases where the focused state of the input changes.\n * @param {?} isFocused\n * @return {?}\n */\n MatInput.prototype._focusChanged = function (isFocused) {\n if (isFocused !== this.focused && !this.readonly) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n };\n /**\n * @return {?}\n */\n MatInput.prototype._onInput = function () {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n };\n /**\n * Re-evaluates the error state. This is only relevant with \\@angular/forms.\n * @return {?}\n */\n MatInput.prototype._updateErrorState = function () {\n var /** @type {?} */ oldState = this.errorState;\n var /** @type {?} */ parent = this._parentFormGroup || this._parentForm;\n var /** @type {?} */ matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n var /** @type {?} */ control = this.ngControl ? (this.ngControl.control) : null;\n var /** @type {?} */ newState = matcher.isErrorState(control, parent);\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n };\n /**\n * Does some manual dirty checking on the native input `value` property.\n * @return {?}\n */\n MatInput.prototype._dirtyCheckNativeValue = function () {\n var /** @type {?} */ newValue = this.value;\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n };\n /**\n * Make sure the input is a supported type.\n * @return {?}\n */\n MatInput.prototype._validateType = function () {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n };\n /**\n * Checks whether the input type is one of the types that are never empty.\n * @return {?}\n */\n MatInput.prototype._isNeverEmpty = function () {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n };\n /**\n * Checks whether the input is invalid based on the native validation.\n * @return {?}\n */\n MatInput.prototype._isBadInput = function () {\n // The `validity` property won't be present on platform-server.\n var /** @type {?} */ validity = ((this._elementRef.nativeElement)).validity;\n return validity && validity.badInput;\n };\n /**\n * Determines if the component host is a textarea. If not recognizable it returns false.\n * @return {?}\n */\n MatInput.prototype._isTextarea = function () {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n // In Universal, we don't have access to `nodeName`, but the same can be achieved with `name`.\n // Note that this shouldn't be necessary once Angular switches to an API that resembles the\n // DOM closer.\n var /** @type {?} */ nodeName = this._platform.isBrowser ? nativeElement.nodeName : nativeElement.name;\n return nodeName ? nodeName.toLowerCase() === 'textarea' : false;\n };\n Object.defineProperty(MatInput.prototype, \"empty\", {\n /**\n * @return {?}\n */\n get: function () {\n return !this._isNeverEmpty() &&\n (this.value == null || this.value === '') &&\n // Check if the input contains bad input. If so, we know that it only appears empty because\n // the value failed to parse. From the user's perspective it is not empty.\n // TODO(mmalerba): Add e2e test for bad input case.\n !this._isBadInput();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatInput.prototype, \"shouldPlaceholderFloat\", {\n /**\n * @return {?}\n */\n get: function () { return this.focused || !this.empty; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} ids\n * @return {?}\n */\n MatInput.prototype.setDescribedByIds = function (ids) { this._ariaDescribedby = ids.join(' '); };\n /**\n * @return {?}\n */\n MatInput.prototype.onContainerClick = function () { this.focus(); };\n MatInput.decorators = [\n { type: Directive, args: [{\n selector: \"input[matInput], textarea[matInput]\",\n exportAs: 'matInput',\n host: {\n 'class': 'mat-input-element mat-form-field-autofill-control',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[readonly]': 'readonly',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-invalid]': 'errorState',\n '(blur)': '_focusChanged(false)',\n '(focus)': '_focusChanged(true)',\n '(input)': '_onInput()',\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatInput.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: Platform, },\n { type: NgControl, decorators: [{ type: Optional }, { type: Self },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: ErrorStateMatcher, },\n ]; };\n MatInput.propDecorators = {\n 'disabled': [{ type: Input },],\n 'id': [{ type: Input },],\n 'placeholder': [{ type: Input },],\n 'required': [{ type: Input },],\n 'type': [{ type: Input },],\n 'errorStateMatcher': [{ type: Input },],\n 'value': [{ type: Input },],\n 'readonly': [{ type: Input },],\n };\n return MatInput;\n}());\n\nvar MatInputModule = (function () {\n function MatInputModule() {\n }\n MatInputModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n MatInput,\n MatTextareaAutosize,\n ],\n imports: [\n CommonModule,\n MatFormFieldModule,\n PlatformModule,\n ],\n exports: [\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n MatTextareaAutosize,\n ],\n providers: [ErrorStateMatcher],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatInputModule.ctorParameters = function () { return []; };\n return MatInputModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatInputModule, MatTextareaAutosize, MatInput, getMatInputUnsupportedTypeError };\n//# sourceMappingURL=input.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CommonModule } from '@angular/common';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgModule, Optional, Output, Renderer2, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatCommonModule, MatLine, MatLineModule, MatLineSetter, MatPseudoCheckboxModule, MatRippleModule, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { SPACE } from '@angular/cdk/keycodes';\n\n/**\n * \\@docs-private\n */\nvar MatListBase = (function () {\n function MatListBase() {\n }\n return MatListBase;\n}());\nvar _MatListMixinBase = mixinDisableRipple(MatListBase);\n/**\n * \\@docs-private\n */\nvar MatListItemBase = (function () {\n function MatListItemBase() {\n }\n return MatListItemBase;\n}());\nvar _MatListItemMixinBase = mixinDisableRipple(MatListItemBase);\n/**\n * Divider between items within a list.\n */\nvar MatListDivider = (function () {\n function MatListDivider() {\n }\n MatListDivider.decorators = [\n { type: Directive, args: [{\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n 'aria-orientation': 'horizontal'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListDivider.ctorParameters = function () { return []; };\n return MatListDivider;\n}());\n/**\n * A Material Design list component.\n */\nvar MatList = (function (_super) {\n __extends(MatList, _super);\n function MatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatList.decorators = [\n { type: Component, args: [{selector: 'mat-list, mat-nav-list',\n exportAs: 'matList, matNavList',\n host: { 'role': 'list' },\n template: '<ng-content></ng-content>',\n styles: [\".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{margin:0}.mat-list,.mat-nav-list,.mat-selection-list{padding-top:8px;display:block}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{height:48px;line-height:16px}.mat-list .mat-subheader:first-child,.mat-nav-list .mat-subheader:first-child,.mat-selection-list .mat-subheader:first-child{margin-top:-8px}.mat-list .mat-list-item,.mat-nav-list .mat-list-item,.mat-selection-list .mat-list-item{display:block}.mat-list .mat-list-item .mat-list-item-content,.mat-nav-list .mat-list-item .mat-list-item-content,.mat-selection-list .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-item .mat-list-item-content-reverse,.mat-nav-list .mat-list-item .mat-list-item-content-reverse,.mat-selection-list .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-item .mat-list-item-ripple,.mat-nav-list .mat-list-item .mat-list-item-ripple,.mat-selection-list .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-item .mat-list-text,.mat-nav-list .mat-list-item .mat-list-text,.mat-selection-list .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-item .mat-list-text>*,.mat-nav-list .mat-list-item .mat-list-text>*,.mat-selection-list .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-item .mat-list-text:empty,.mat-nav-list .mat-list-item .mat-list-text:empty,.mat-selection-list .mat-list-item .mat-list-text:empty{display:none}.mat-list .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-item .mat-list-avatar,.mat-nav-list .mat-list-item .mat-list-avatar,.mat-selection-list .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-item .mat-list-icon,.mat-nav-list .mat-list-item .mat-list-icon,.mat-selection-list .mat-list-item .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list .mat-list-option,.mat-nav-list .mat-list-option,.mat-selection-list .mat-list-option{display:block}.mat-list .mat-list-option .mat-list-item-content,.mat-nav-list .mat-list-option .mat-list-item-content,.mat-selection-list .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-option .mat-list-item-content-reverse,.mat-nav-list .mat-list-option .mat-list-item-content-reverse,.mat-selection-list .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-option .mat-list-item-ripple,.mat-nav-list .mat-list-option .mat-list-item-ripple,.mat-selection-list .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-option .mat-list-text,.mat-nav-list .mat-list-option .mat-list-text,.mat-selection-list .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-option .mat-list-text>*,.mat-nav-list .mat-list-option .mat-list-text>*,.mat-selection-list .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-option .mat-list-text:empty,.mat-nav-list .mat-list-option .mat-list-text:empty,.mat-selection-list .mat-list-option .mat-list-text:empty{display:none}.mat-list .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-option .mat-list-avatar,.mat-nav-list .mat-list-option .mat-list-avatar,.mat-selection-list .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-option .mat-list-icon,.mat-nav-list .mat-list-option .mat-list-icon,.mat-selection-list .mat-list-option .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense],.mat-nav-list[dense],.mat-selection-list[dense]{padding-top:4px;display:block}.mat-list[dense] .mat-subheader,.mat-nav-list[dense] .mat-subheader,.mat-selection-list[dense] .mat-subheader{height:40px;line-height:8px}.mat-list[dense] .mat-subheader:first-child,.mat-nav-list[dense] .mat-subheader:first-child,.mat-selection-list[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list[dense] .mat-list-item,.mat-nav-list[dense] .mat-list-item,.mat-selection-list[dense] .mat-list-item{display:block}.mat-list[dense] .mat-list-item .mat-list-item-content,.mat-nav-list[dense] .mat-list-item .mat-list-item-content,.mat-selection-list[dense] .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-item .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-item .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-item .mat-list-text,.mat-nav-list[dense] .mat-list-item .mat-list-text,.mat-selection-list[dense] .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-item .mat-list-text>*,.mat-nav-list[dense] .mat-list-item .mat-list-text>*,.mat-selection-list[dense] .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-item .mat-list-text:empty,.mat-nav-list[dense] .mat-list-item .mat-list-text:empty,.mat-selection-list[dense] .mat-list-item .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-item .mat-list-avatar,.mat-nav-list[dense] .mat-list-item .mat-list-avatar,.mat-selection-list[dense] .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-item .mat-list-icon,.mat-nav-list[dense] .mat-list-item .mat-list-icon,.mat-selection-list[dense] .mat-list-item .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense] .mat-list-option,.mat-nav-list[dense] .mat-list-option,.mat-selection-list[dense] .mat-list-option{display:block}.mat-list[dense] .mat-list-option .mat-list-item-content,.mat-nav-list[dense] .mat-list-option .mat-list-item-content,.mat-selection-list[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-option .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-option .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-option .mat-list-text,.mat-nav-list[dense] .mat-list-option .mat-list-text,.mat-selection-list[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-option .mat-list-text>*,.mat-nav-list[dense] .mat-list-option .mat-list-text>*,.mat-selection-list[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-option .mat-list-text:empty,.mat-nav-list[dense] .mat-list-option .mat-list-text:empty,.mat-selection-list[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-option .mat-list-avatar,.mat-nav-list[dense] .mat-list-option .mat-list-avatar,.mat-selection-list[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-option .mat-list-icon,.mat-nav-list[dense] .mat-list-option .mat-list-icon,.mat-selection-list[dense] .mat-list-option .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-divider{display:block;border-top-style:solid;border-top-width:1px;margin:0}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item-content{cursor:pointer}.mat-nav-list .mat-list-item-content.mat-list-item-focus,.mat-nav-list .mat-list-item-content:hover{outline:0}.mat-list-option:not([disabled]){cursor:pointer}\"],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatList.ctorParameters = function () { return []; };\n return MatList;\n}(_MatListMixinBase));\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListCssMatStyler = (function () {\n function MatListCssMatStyler() {\n }\n MatListCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-list',\n host: { 'class': 'mat-list' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListCssMatStyler.ctorParameters = function () { return []; };\n return MatListCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatNavListCssMatStyler = (function () {\n function MatNavListCssMatStyler() {\n }\n MatNavListCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-nav-list',\n host: { 'class': 'mat-nav-list' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatNavListCssMatStyler.ctorParameters = function () { return []; };\n return MatNavListCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatDividerCssMatStyler = (function () {\n function MatDividerCssMatStyler() {\n }\n MatDividerCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: 'mat-divider',\n host: { 'class': 'mat-divider' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDividerCssMatStyler.ctorParameters = function () { return []; };\n return MatDividerCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListAvatarCssMatStyler = (function () {\n function MatListAvatarCssMatStyler() {\n }\n MatListAvatarCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-list-avatar], [matListAvatar]',\n host: { 'class': 'mat-list-avatar' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListAvatarCssMatStyler.ctorParameters = function () { return []; };\n return MatListAvatarCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListIconCssMatStyler = (function () {\n function MatListIconCssMatStyler() {\n }\n MatListIconCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-list-icon], [matListIcon]',\n host: { 'class': 'mat-list-icon' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListIconCssMatStyler.ctorParameters = function () { return []; };\n return MatListIconCssMatStyler;\n}());\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * \\@docs-private\n */\nvar MatListSubheaderCssMatStyler = (function () {\n function MatListSubheaderCssMatStyler() {\n }\n MatListSubheaderCssMatStyler.decorators = [\n { type: Directive, args: [{\n selector: '[mat-subheader], [matSubheader]',\n host: { 'class': 'mat-subheader' }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListSubheaderCssMatStyler.ctorParameters = function () { return []; };\n return MatListSubheaderCssMatStyler;\n}());\n/**\n * An item within a Material Design list.\n */\nvar MatListItem = (function (_super) {\n __extends(MatListItem, _super);\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _list\n * @param {?} navList\n */\n function MatListItem(_renderer, _element, _list, navList) {\n var _this = _super.call(this) || this;\n _this._renderer = _renderer;\n _this._element = _element;\n _this._list = _list;\n _this._isNavList = false;\n _this._isNavList = !!navList;\n return _this;\n }\n Object.defineProperty(MatListItem.prototype, \"_hasAvatar\", {\n /**\n * @param {?} avatar\n * @return {?}\n */\n set: function (avatar) {\n if (avatar != null) {\n this._renderer.addClass(this._element.nativeElement, 'mat-list-item-avatar');\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, 'mat-list-item-avatar');\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatListItem.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n };\n /**\n * Whether this list item should show a ripple effect when clicked.\n * @return {?}\n */\n MatListItem.prototype._isRippleDisabled = function () {\n return !this._isNavList || this.disableRipple || this._list.disableRipple;\n };\n /**\n * @return {?}\n */\n MatListItem.prototype._handleFocus = function () {\n this._renderer.addClass(this._element.nativeElement, 'mat-list-item-focus');\n };\n /**\n * @return {?}\n */\n MatListItem.prototype._handleBlur = function () {\n this._renderer.removeClass(this._element.nativeElement, 'mat-list-item-focus');\n };\n /**\n * Retrieves the DOM element of the component host.\n * @return {?}\n */\n MatListItem.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n MatListItem.decorators = [\n { type: Component, args: [{selector: 'mat-list-item, a[mat-list-item]',\n exportAs: 'matListItem',\n host: {\n 'role': 'listitem',\n 'class': 'mat-list-item',\n '(focus)': '_handleFocus()',\n '(blur)': '_handleBlur()',\n },\n inputs: ['disableRipple'],\n template: \"<div class=\\\"mat-list-item-content\\\"><div class=\\\"mat-list-item-ripple\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\"></div><ng-content select=\\\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\\\"></ng-content><div class=\\\"mat-list-text\\\"><ng-content select=\\\"[mat-line], [matLine]\\\"></ng-content></div><ng-content></ng-content></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListItem.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: MatList, decorators: [{ type: Optional },] },\n { type: MatNavListCssMatStyler, decorators: [{ type: Optional },] },\n ]; };\n MatListItem.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n '_hasAvatar': [{ type: ContentChild, args: [MatListAvatarCssMatStyler,] },],\n };\n return MatListItem;\n}(_MatListItemMixinBase));\n\n/**\n * \\@docs-private\n */\nvar MatSelectionListBase = (function () {\n function MatSelectionListBase() {\n }\n return MatSelectionListBase;\n}());\nvar _MatSelectionListMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatSelectionListBase)));\n/**\n * \\@docs-private\n */\nvar MatListOptionBase = (function () {\n function MatListOptionBase() {\n }\n return MatListOptionBase;\n}());\nvar _MatListOptionMixinBase = mixinDisableRipple(MatListOptionBase);\n/**\n * Component for list-options of selection-list. Each list-option can automatically\n * generate a checkbox and can put current item into the selectionModel of selection-list\n * if the current item is checked.\n */\nvar MatListOption = (function (_super) {\n __extends(MatListOption, _super);\n /**\n * @param {?} _renderer\n * @param {?} _element\n * @param {?} _changeDetector\n * @param {?} selectionList\n */\n function MatListOption(_renderer, _element, _changeDetector, selectionList) {\n var _this = _super.call(this) || this;\n _this._renderer = _renderer;\n _this._element = _element;\n _this._changeDetector = _changeDetector;\n _this.selectionList = selectionList;\n _this._selected = false;\n _this._disabled = false;\n /**\n * Whether the option has focus.\n */\n _this._hasFocus = false;\n /**\n * Whether the label should appear before or after the checkbox. Defaults to 'after'\n */\n _this.checkboxPosition = 'after';\n /**\n * Emitted when the option is selected.\n */\n _this.selectChange = new EventEmitter();\n /**\n * Emitted when the option is deselected.\n */\n _this.deselected = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatListOption.prototype, \"disabled\", {\n /**\n * Whether the option is disabled.\n * @return {?}\n */\n get: function () { return (this.selectionList && this.selectionList.disabled) || this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disabled = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatListOption.prototype, \"selected\", {\n /**\n * Whether the option is selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ isSelected = coerceBooleanProperty(value);\n if (isSelected !== this._selected) {\n var /** @type {?} */ selectionModel = this.selectionList.selectedOptions;\n this._selected = isSelected;\n isSelected ? selectionModel.select(this) : selectionModel.deselect(this);\n this._changeDetector.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatListOption.prototype.ngOnInit = function () {\n if (this.selected) {\n this.selectionList.selectedOptions.select(this);\n }\n };\n /**\n * @return {?}\n */\n MatListOption.prototype.ngAfterContentInit = function () {\n this._lineSetter = new MatLineSetter(this._lines, this._renderer, this._element);\n if (this.selectionList.disabled) {\n this.disabled = true;\n }\n };\n /**\n * @return {?}\n */\n MatListOption.prototype.ngOnDestroy = function () {\n this.selectionList._removeOptionFromList(this);\n };\n /**\n * Toggles the selection state of the option.\n * @return {?}\n */\n MatListOption.prototype.toggle = function () {\n this.selected = !this.selected;\n };\n /**\n * Allows for programmatic focusing of the option.\n * @return {?}\n */\n MatListOption.prototype.focus = function () {\n this._element.nativeElement.focus();\n };\n /**\n * Whether this list item should show a ripple effect when clicked.\n * @return {?}\n */\n MatListOption.prototype._isRippleDisabled = function () {\n return this.disabled || this.disableRipple || this.selectionList.disableRipple;\n };\n /**\n * @return {?}\n */\n MatListOption.prototype._handleClick = function () {\n if (!this.disabled) {\n this.toggle();\n }\n };\n /**\n * @return {?}\n */\n MatListOption.prototype._handleFocus = function () {\n this._hasFocus = true;\n this.selectionList._setFocusedOption(this);\n };\n /**\n * Retrieves the DOM element of the component host.\n * @return {?}\n */\n MatListOption.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n MatListOption.decorators = [\n { type: Component, args: [{selector: 'mat-list-option',\n exportAs: 'matListOption',\n inputs: ['disableRipple'],\n host: {\n 'role': 'option',\n 'class': 'mat-list-item mat-list-option',\n '(focus)': '_handleFocus()',\n '(blur)': '_hasFocus = false',\n '(click)': '_handleClick()',\n 'tabindex': '-1',\n '[class.mat-list-item-disabled]': 'disabled',\n '[class.mat-list-item-focus]': '_hasFocus',\n '[attr.aria-selected]': 'selected.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n },\n template: \"<div class=\\\"mat-list-item-content\\\" [class.mat-list-item-content-reverse]=\\\"checkboxPosition == 'after'\\\" [class.mat-list-item-disabled]=\\\"disabled\\\"><div mat-ripple class=\\\"mat-list-item-ripple\\\" [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\"></div><mat-pseudo-checkbox #autocheckbox [state]=\\\"selected ? 'checked' : 'unchecked'\\\" [disabled]=\\\"disabled\\\"></mat-pseudo-checkbox><div class=\\\"mat-list-text\\\"><ng-content></ng-content></div></div>\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListOption.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: MatSelectionList, decorators: [{ type: Optional }, { type: Inject, args: [forwardRef(function () { return MatSelectionList; }),] },] },\n ]; };\n MatListOption.propDecorators = {\n '_lines': [{ type: ContentChildren, args: [MatLine,] },],\n 'checkboxPosition': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'selectChange': [{ type: Output },],\n 'deselected': [{ type: Output },],\n };\n return MatListOption;\n}(_MatListOptionMixinBase));\n/**\n * Material Design list component where each item is a selectable option. Behaves as a listbox.\n */\nvar MatSelectionList = (function (_super) {\n __extends(MatSelectionList, _super);\n /**\n * @param {?} _element\n * @param {?} tabIndex\n */\n function MatSelectionList(_element, tabIndex) {\n var _this = _super.call(this) || this;\n _this._element = _element;\n /**\n * The currently selected options.\n */\n _this.selectedOptions = new SelectionModel(true);\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n /**\n * @return {?}\n */\n MatSelectionList.prototype.ngAfterContentInit = function () {\n this._keyManager = new FocusKeyManager(this.options).withWrap();\n };\n /**\n * Focus the selection-list.\n * @return {?}\n */\n MatSelectionList.prototype.focus = function () {\n this._element.nativeElement.focus();\n };\n /**\n * Selects all of the options.\n * @return {?}\n */\n MatSelectionList.prototype.selectAll = function () {\n this.options.forEach(function (option) {\n if (!option.selected) {\n option.toggle();\n }\n });\n };\n /**\n * Deselects all of the options.\n * @return {?}\n */\n MatSelectionList.prototype.deselectAll = function () {\n this.options.forEach(function (option) {\n if (option.selected) {\n option.toggle();\n }\n });\n };\n /**\n * Sets the focused option of the selection-list.\n * @param {?} option\n * @return {?}\n */\n MatSelectionList.prototype._setFocusedOption = function (option) {\n this._keyManager.updateActiveItemIndex(this._getOptionIndex(option));\n };\n /**\n * Removes an option from the selection list and updates the active item.\n * @param {?} option\n * @return {?}\n */\n MatSelectionList.prototype._removeOptionFromList = function (option) {\n if (option._hasFocus) {\n var /** @type {?} */ optionIndex = this._getOptionIndex(option);\n // Check whether the option is the last item\n if (optionIndex > 0) {\n this._keyManager.setPreviousItemActive();\n }\n else if (optionIndex === 0 && this.options.length > 1) {\n this._keyManager.setNextItemActive();\n }\n }\n };\n /**\n * Passes relevant key presses to our key manager.\n * @param {?} event\n * @return {?}\n */\n MatSelectionList.prototype._keydown = function (event) {\n switch (event.keyCode) {\n case SPACE:\n this._toggleSelectOnFocusedOption();\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n };\n /**\n * Toggles the selected state of the currently focused option.\n * @return {?}\n */\n MatSelectionList.prototype._toggleSelectOnFocusedOption = function () {\n var /** @type {?} */ focusedIndex = this._keyManager.activeItemIndex;\n if (focusedIndex != null && this._isValidIndex(focusedIndex)) {\n var /** @type {?} */ focusedOption = this.options.toArray()[focusedIndex];\n if (focusedOption) {\n focusedOption.toggle();\n }\n }\n };\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param {?} index The index to be checked.\n * @return {?} True if the index is valid for our list of options.\n */\n MatSelectionList.prototype._isValidIndex = function (index) {\n return index >= 0 && index < this.options.length;\n };\n /**\n * Returns the index of the specified list option.\n * @param {?} option\n * @return {?}\n */\n MatSelectionList.prototype._getOptionIndex = function (option) {\n return this.options.toArray().indexOf(option);\n };\n MatSelectionList.decorators = [\n { type: Component, args: [{selector: 'mat-selection-list',\n exportAs: 'matSelectionList',\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'role': 'listbox',\n '[tabIndex]': 'tabIndex',\n 'class': 'mat-selection-list',\n '(focus)': 'focus()',\n '(keydown)': '_keydown($event)',\n '[attr.aria-disabled]': 'disabled.toString()'\n },\n template: '<ng-content></ng-content>',\n styles: [\".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{margin:0}.mat-list,.mat-nav-list,.mat-selection-list{padding-top:8px;display:block}.mat-list .mat-subheader,.mat-nav-list .mat-subheader,.mat-selection-list .mat-subheader{height:48px;line-height:16px}.mat-list .mat-subheader:first-child,.mat-nav-list .mat-subheader:first-child,.mat-selection-list .mat-subheader:first-child{margin-top:-8px}.mat-list .mat-list-item,.mat-nav-list .mat-list-item,.mat-selection-list .mat-list-item{display:block}.mat-list .mat-list-item .mat-list-item-content,.mat-nav-list .mat-list-item .mat-list-item-content,.mat-selection-list .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-item .mat-list-item-content-reverse,.mat-nav-list .mat-list-item .mat-list-item-content-reverse,.mat-selection-list .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-item .mat-list-item-ripple,.mat-nav-list .mat-list-item .mat-list-item-ripple,.mat-selection-list .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-item .mat-list-text,.mat-nav-list .mat-list-item .mat-list-text,.mat-selection-list .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-item .mat-list-text>*,.mat-nav-list .mat-list-item .mat-list-text>*,.mat-selection-list .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-item .mat-list-text:empty,.mat-nav-list .mat-list-item .mat-list-text:empty,.mat-selection-list .mat-list-item .mat-list-text:empty{display:none}.mat-list .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-item .mat-list-avatar,.mat-nav-list .mat-list-item .mat-list-avatar,.mat-selection-list .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-item .mat-list-icon,.mat-nav-list .mat-list-item .mat-list-icon,.mat-selection-list .mat-list-item .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list .mat-list-option,.mat-nav-list .mat-list-option,.mat-selection-list .mat-list-option{display:block}.mat-list .mat-list-option .mat-list-item-content,.mat-nav-list .mat-list-option .mat-list-item-content,.mat-selection-list .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:48px;padding:0 16px;position:relative}.mat-list .mat-list-option .mat-list-item-content-reverse,.mat-nav-list .mat-list-option .mat-list-item-content-reverse,.mat-selection-list .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list .mat-list-option .mat-list-item-ripple,.mat-nav-list .mat-list-option .mat-list-item-ripple,.mat-selection-list .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:56px}.mat-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-2-line .mat-list-item-content{height:72px}.mat-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-3-line .mat-list-item-content{height:88px}.mat-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list .mat-list-option .mat-list-text,.mat-nav-list .mat-list-option .mat-list-text,.mat-selection-list .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list .mat-list-option .mat-list-text>*,.mat-nav-list .mat-list-option .mat-list-text>*,.mat-selection-list .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list .mat-list-option .mat-list-text:empty,.mat-nav-list .mat-list-option .mat-list-text:empty,.mat-selection-list .mat-list-option .mat-list-text:empty{display:none}.mat-list .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list .mat-list-option .mat-list-avatar,.mat-nav-list .mat-list-option .mat-list-avatar,.mat-selection-list .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list .mat-list-option .mat-list-icon,.mat-nav-list .mat-list-option .mat-list-icon,.mat-selection-list .mat-list-option .mat-list-icon{width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense],.mat-nav-list[dense],.mat-selection-list[dense]{padding-top:4px;display:block}.mat-list[dense] .mat-subheader,.mat-nav-list[dense] .mat-subheader,.mat-selection-list[dense] .mat-subheader{height:40px;line-height:8px}.mat-list[dense] .mat-subheader:first-child,.mat-nav-list[dense] .mat-subheader:first-child,.mat-selection-list[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list[dense] .mat-list-item,.mat-nav-list[dense] .mat-list-item,.mat-selection-list[dense] .mat-list-item{display:block}.mat-list[dense] .mat-list-item .mat-list-item-content,.mat-nav-list[dense] .mat-list-item .mat-list-item-content,.mat-selection-list[dense] .mat-list-item .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-item .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-item .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-item .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-item .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-item .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-item.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-item .mat-list-text,.mat-nav-list[dense] .mat-list-item .mat-list-text,.mat-selection-list[dense] .mat-list-item .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-item .mat-list-text>*,.mat-nav-list[dense] .mat-list-item .mat-list-text>*,.mat-selection-list[dense] .mat-list-item .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-item .mat-list-text:empty,.mat-nav-list[dense] .mat-list-item .mat-list-text:empty,.mat-selection-list[dense] .mat-list-item .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-item .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-item .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-item .mat-list-avatar,.mat-nav-list[dense] .mat-list-item .mat-list-avatar,.mat-selection-list[dense] .mat-list-item .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-item .mat-list-icon,.mat-nav-list[dense] .mat-list-item .mat-list-icon,.mat-selection-list[dense] .mat-list-item .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list[dense] .mat-list-option,.mat-nav-list[dense] .mat-list-option,.mat-selection-list[dense] .mat-list-option{display:block}.mat-list[dense] .mat-list-option .mat-list-item-content,.mat-nav-list[dense] .mat-list-option .mat-list-item-content,.mat-selection-list[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;height:40px;padding:0 16px;position:relative}.mat-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-nav-list[dense] .mat-list-option .mat-list-item-content-reverse,.mat-selection-list[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list[dense] .mat-list-option .mat-list-item-ripple,.mat-nav-list[dense] .mat-list-option .mat-list-item-ripple,.mat-selection-list[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-list-item-avatar .mat-list-item-content{height:48px}.mat-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-2-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-2-line .mat-list-item-content{height:60px}.mat-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-3-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-3-line .mat-list-item-content{height:76px}.mat-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-nav-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content,.mat-selection-list[dense] .mat-list-option.mat-multi-line .mat-list-item-content{height:100%;padding:8px 16px}.mat-list[dense] .mat-list-option .mat-list-text,.mat-nav-list[dense] .mat-list-option .mat-list-text,.mat-selection-list[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding:0 16px}.mat-list[dense] .mat-list-option .mat-list-text>*,.mat-nav-list[dense] .mat-list-option .mat-list-text>*,.mat-selection-list[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mat-list[dense] .mat-list-option .mat-list-text:empty,.mat-nav-list[dense] .mat-list-option .mat-list-text:empty,.mat-selection-list[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-nav-list[dense] .mat-list-option .mat-list-text:nth-child(2),.mat-selection-list[dense] .mat-list-option .mat-list-text:nth-child(2){padding:0}.mat-list[dense] .mat-list-option .mat-list-avatar,.mat-nav-list[dense] .mat-list-option .mat-list-avatar,.mat-selection-list[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%}.mat-list[dense] .mat-list-option .mat-list-icon,.mat-nav-list[dense] .mat-list-option .mat-list-icon,.mat-selection-list[dense] .mat-list-option .mat-list-icon{width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-divider{display:block;border-top-style:solid;border-top-width:1px;margin:0}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item-content{cursor:pointer}.mat-nav-list .mat-list-item-content.mat-list-item-focus,.mat-nav-list .mat-list-item-content:hover{outline:0}.mat-list-option:not([disabled]){cursor:pointer}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelectionList.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatSelectionList.propDecorators = {\n 'options': [{ type: ContentChildren, args: [MatListOption,] },],\n };\n return MatSelectionList;\n}(_MatSelectionListMixinBase));\n\nvar MatListModule = (function () {\n function MatListModule() {\n }\n MatListModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],\n exports: [\n MatList,\n MatListItem,\n MatListDivider,\n MatListAvatarCssMatStyler,\n MatLineModule,\n MatCommonModule,\n MatListIconCssMatStyler,\n MatListCssMatStyler,\n MatNavListCssMatStyler,\n MatDividerCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatPseudoCheckboxModule,\n MatSelectionList,\n MatListOption\n ],\n declarations: [\n MatList,\n MatListItem,\n MatListDivider,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListCssMatStyler,\n MatNavListCssMatStyler,\n MatDividerCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatSelectionList,\n MatListOption\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatListModule.ctorParameters = function () { return []; };\n return MatListModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatListModule, MatListBase, _MatListMixinBase, MatListItemBase, _MatListItemMixinBase, MatListDivider, MatList, MatListCssMatStyler, MatNavListCssMatStyler, MatDividerCssMatStyler, MatListAvatarCssMatStyler, MatListIconCssMatStyler, MatListSubheaderCssMatStyler, MatListItem, MatSelectionListBase, _MatSelectionListMixinBase, MatListOptionBase, _MatListOptionMixinBase, MatListOption, MatSelectionList };\n//# sourceMappingURL=list.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, ContentChildren, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule, MatRippleModule, mixinDisabled } from '@angular/material/core';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { FocusKeyManager, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { RxChain, filter, first, startWith, switchMap } from '@angular/cdk/rxjs';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subscription } from 'rxjs/Subscription';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Below are all the animations for the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n */\n/**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n// TODO(kara): switch to :enter and :leave once Mobile Safari is sorted out.\nvar transformMenu = trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n // This starts off from 0.01, instead of 0, because there's an issue in the Angular animations\n // as of 4.2, which causes the animation to be skipped if it starts from 0.\n transform: 'scale(0.01, 0.01)'\n })),\n state('enter-start', style({\n opacity: 1,\n transform: 'scale(1, 0.5)'\n })),\n state('enter', style({\n transform: 'scale(1, 1)'\n })),\n transition('void => enter-start', animate('100ms linear')),\n transition('enter-start => enter', animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)')),\n transition('* => void', animate('150ms 50ms linear', style({ opacity: 0 })))\n]);\n/**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\nvar fadeInItems = trigger('fadeInItems', [\n state('showing', style({ opacity: 1 })),\n transition('void => *', [\n style({ opacity: 0 }),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n]);\n\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * \\@docs-private\n * @return {?}\n */\nfunction throwMatMenuMissingError() {\n throw Error(\"mat-menu-trigger: must pass in an mat-menu instance.\\n\\n Example:\\n <mat-menu #menu=\\\"matMenu\\\"></mat-menu>\\n <button [matMenuTriggerFor]=\\\"menu\\\"></button>\");\n}\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * \\@docs-private\n * @return {?}\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(\"x-position value must be either 'before' or after'.\\n Example: <mat-menu x-position=\\\"before\\\" #menu=\\\"matMenu\\\"></mat-menu>\");\n}\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * \\@docs-private\n * @return {?}\n */\nfunction throwMatMenuInvalidPositionY() {\n throw Error(\"y-position value must be either 'above' or below'.\\n Example: <mat-menu y-position=\\\"above\\\" #menu=\\\"matMenu\\\"></mat-menu>\");\n}\n\n/**\n * \\@docs-private\n */\nvar MatMenuItemBase = (function () {\n function MatMenuItemBase() {\n }\n return MatMenuItemBase;\n}());\nvar _MatMenuItemMixinBase = mixinDisabled(MatMenuItemBase);\n/**\n * This directive is intended to be used inside an mat-menu tag.\n * It exists mostly to set the role attribute.\n */\nvar MatMenuItem = (function (_super) {\n __extends(MatMenuItem, _super);\n /**\n * @param {?} _elementRef\n */\n function MatMenuItem(_elementRef) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n /**\n * Stream that emits when the menu item is hovered.\n */\n _this.hover = new Subject();\n /**\n * Whether the menu item is highlighted.\n */\n _this._highlighted = false;\n /**\n * Whether the menu item acts as a trigger for a sub-menu.\n */\n _this._triggersSubmenu = false;\n return _this;\n }\n /**\n * Focuses the menu item.\n * @return {?}\n */\n MatMenuItem.prototype.focus = function () {\n this._getHostElement().focus();\n };\n /**\n * @return {?}\n */\n MatMenuItem.prototype.ngOnDestroy = function () {\n this.hover.complete();\n };\n /**\n * Used to set the `tabindex`.\n * @return {?}\n */\n MatMenuItem.prototype._getTabIndex = function () {\n return this.disabled ? '-1' : '0';\n };\n /**\n * Returns the host DOM element.\n * @return {?}\n */\n MatMenuItem.prototype._getHostElement = function () {\n return this._elementRef.nativeElement;\n };\n /**\n * Prevents the default element actions if it is disabled.\n * @param {?} event\n * @return {?}\n */\n MatMenuItem.prototype._checkDisabled = function (event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n /**\n * Emits to the hover stream.\n * @return {?}\n */\n MatMenuItem.prototype._emitHoverEvent = function () {\n if (!this.disabled) {\n this.hover.next(this);\n }\n };\n /**\n * Gets the label to be used when determining whether the option should be focused.\n * @return {?}\n */\n MatMenuItem.prototype.getLabel = function () {\n var /** @type {?} */ element = this._elementRef.nativeElement;\n var /** @type {?} */ output = '';\n if (element.childNodes) {\n var /** @type {?} */ length_1 = element.childNodes.length;\n // Go through all the top-level text nodes and extract their text.\n // We skip anything that's not a text node to prevent the text from\n // being thrown off by something like an icon.\n for (var /** @type {?} */ i = 0; i < length_1; i++) {\n if (element.childNodes[i].nodeType === Node.TEXT_NODE) {\n output += element.childNodes[i].textContent;\n }\n }\n }\n return output.trim();\n };\n MatMenuItem.decorators = [\n { type: Component, args: [{selector: '[mat-menu-item]',\n exportAs: 'matMenuItem',\n inputs: ['disabled'],\n host: {\n 'role': 'menuitem',\n 'class': 'mat-menu-item',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n '(click)': '_checkDisabled($event)',\n '(mouseenter)': '_emitHoverEvent()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n template: \"<ng-content></ng-content><div class=\\\"mat-menu-ripple\\\" *ngIf=\\\"!disabled\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\"></div>\",\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMenuItem.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return MatMenuItem;\n}(_MatMenuItemMixinBase));\n\n/**\n * Injection token to be used to override the default options for `mat-menu`.\n */\nvar MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options');\n/**\n * Start elevation for the menu panel.\n * \\@docs-private\n */\nvar MAT_MENU_BASE_ELEVATION = 2;\nvar MatMenu = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _ngZone\n * @param {?} _defaultOptions\n */\n function MatMenu(_elementRef, _ngZone, _defaultOptions) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /**\n * Subscription to tab events on the menu panel\n */\n this._tabSubscription = Subscription.EMPTY;\n /**\n * Config object to be passed into the menu's ngClass\n */\n this._classList = {};\n /**\n * Current state of the panel animation.\n */\n this._panelAnimationState = 'void';\n /**\n * Whether the menu should overlap its trigger.\n */\n this.overlapTrigger = this._defaultOptions.overlapTrigger;\n /**\n * Event emitted when the menu is closed.\n */\n this.close = new EventEmitter();\n }\n Object.defineProperty(MatMenu.prototype, \"xPosition\", {\n /**\n * Position of the menu in the X axis.\n * @return {?}\n */\n get: function () { return this._xPosition; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== 'before' && value !== 'after') {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMenu.prototype, \"yPosition\", {\n /**\n * Position of the menu in the Y axis.\n * @return {?}\n */\n get: function () { return this._yPosition; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== 'above' && value !== 'below') {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMenu.prototype, \"classList\", {\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param {?} classes list of class names\n * @return {?}\n */\n set: function (classes) {\n if (classes && classes.length) {\n this._classList = classes.split(' ').reduce(function (obj, className) {\n obj[className] = true;\n return obj;\n }, {});\n this._elementRef.nativeElement.className = '';\n this.setPositionClasses();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatMenu.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._keyManager = new FocusKeyManager(this.items).withWrap().withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(function () { return _this.close.emit('keydown'); });\n };\n /**\n * @return {?}\n */\n MatMenu.prototype.ngOnDestroy = function () {\n this._tabSubscription.unsubscribe();\n this.close.emit();\n this.close.complete();\n };\n /**\n * Stream that emits whenever the hovered menu item changes.\n * @return {?}\n */\n MatMenu.prototype.hover = function () {\n var _this = this;\n if (this.items) {\n return RxChain.from(this.items.changes)\n .call(startWith, this.items)\n .call(switchMap, function (items) { return merge.apply(void 0, items.map(function (item) { return item.hover; })); })\n .result();\n }\n return RxChain.from(this._ngZone.onStable.asObservable())\n .call(first)\n .call(switchMap, function () { return _this.hover(); })\n .result();\n };\n /**\n * Handle a keyboard event from the menu, delegating to the appropriate action.\n * @param {?} event\n * @return {?}\n */\n MatMenu.prototype._handleKeydown = function (event) {\n switch (event.keyCode) {\n case ESCAPE:\n this.close.emit('keydown');\n event.stopPropagation();\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.close.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.close.emit('keydown');\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n };\n /**\n * Focus the first item in the menu. This method is used by the menu trigger\n * to focus the first item when the menu is opened by the ENTER key.\n * @return {?}\n */\n MatMenu.prototype.focusFirstItem = function () {\n this._keyManager.setFirstItemActive();\n };\n /**\n * It's necessary to set position-based classes to ensure the menu panel animation\n * folds out from the correct direction.\n * @param {?=} posX\n * @param {?=} posY\n * @return {?}\n */\n MatMenu.prototype.setPositionClasses = function (posX, posY) {\n if (posX === void 0) { posX = this.xPosition; }\n if (posY === void 0) { posY = this.yPosition; }\n this._classList['mat-menu-before'] = posX === 'before';\n this._classList['mat-menu-after'] = posX === 'after';\n this._classList['mat-menu-above'] = posY === 'above';\n this._classList['mat-menu-below'] = posY === 'below';\n };\n /**\n * Sets the menu panel elevation.\n * @param {?} depth Number of parent menus that come before the menu.\n * @return {?}\n */\n MatMenu.prototype.setElevation = function (depth) {\n // The elevation starts at the base and increases by one for each level.\n var /** @type {?} */ newElevation = \"mat-elevation-z\" + (MAT_MENU_BASE_ELEVATION + depth);\n var /** @type {?} */ customElevation = Object.keys(this._classList).find(function (c) { return c.startsWith('mat-elevation-z'); });\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n };\n /**\n * Starts the enter animation.\n * @return {?}\n */\n MatMenu.prototype._startAnimation = function () {\n this._panelAnimationState = 'enter-start';\n };\n /**\n * Resets the panel animation to its initial state.\n * @return {?}\n */\n MatMenu.prototype._resetAnimation = function () {\n this._panelAnimationState = 'void';\n };\n /**\n * Callback that is invoked when the panel animation completes.\n * @param {?} event\n * @return {?}\n */\n MatMenu.prototype._onAnimationDone = function (event) {\n // After the initial expansion is done, trigger the second phase of the enter animation.\n if (event.toState === 'enter-start') {\n this._panelAnimationState = 'enter';\n }\n };\n MatMenu.decorators = [\n { type: Component, args: [{selector: 'mat-menu',\n template: \"<ng-template><div class=\\\"mat-menu-panel\\\" [ngClass]=\\\"_classList\\\" (keydown)=\\\"_handleKeydown($event)\\\" (click)=\\\"close.emit('click')\\\" [@transformMenu]=\\\"_panelAnimationState\\\" (@transformMenu.done)=\\\"_onAnimationDone($event)\\\" role=\\\"menu\\\"><div class=\\\"mat-menu-content\\\" [@fadeInItems]=\\\"'showing'\\\"><ng-content></ng-content></div></div></ng-template>\",\n styles: [\".mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:2px}.mat-menu-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-menu-panel.mat-menu-after.mat-menu-below{transform-origin:left top}.mat-menu-panel.mat-menu-after.mat-menu-above{transform-origin:left bottom}.mat-menu-panel.mat-menu-before.mat-menu-below{transform-origin:right top}.mat-menu-panel.mat-menu-before.mat-menu-above{transform-origin:right bottom}[dir=rtl] .mat-menu-panel.mat-menu-after.mat-menu-below{transform-origin:right top}[dir=rtl] .mat-menu-panel.mat-menu-after.mat-menu-above{transform-origin:right bottom}[dir=rtl] .mat-menu-panel.mat-menu-before.mat-menu-below{transform-origin:left top}[dir=rtl] .mat-menu-panel.mat-menu-before.mat-menu-above{transform-origin:left bottom}.mat-menu-panel.ng-animating{pointer-events:none}@media screen and (-ms-high-contrast:active){.mat-menu-panel{outline:solid 1px}}.mat-menu-content{padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;position:relative}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item .mat-icon{vertical-align:middle}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:'';display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:8px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n animations: [\n transformMenu,\n fadeInItems\n ],\n exportAs: 'matMenu'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMenu.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: NgZone, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_DEFAULT_OPTIONS,] },] },\n ]; };\n MatMenu.propDecorators = {\n 'xPosition': [{ type: Input },],\n 'yPosition': [{ type: Input },],\n 'templateRef': [{ type: ViewChild, args: [TemplateRef,] },],\n 'items': [{ type: ContentChildren, args: [MatMenuItem,] },],\n 'overlapTrigger': [{ type: Input },],\n 'classList': [{ type: Input, args: ['class',] },],\n 'close': [{ type: Output },],\n };\n return MatMenu;\n}());\n\n/**\n * Injection token that determines the scroll handling while the menu is open.\n */\nvar MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_MENU_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar MAT_MENU_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Default top padding of the menu panel.\n */\nvar MENU_PANEL_TOP_PADDING = 8;\n/**\n * This directive is intended to be used in conjunction with an mat-menu tag. It is\n * responsible for toggling the display of the provided menu instance.\n */\nvar MatMenuTrigger = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _element\n * @param {?} _viewContainerRef\n * @param {?} _scrollStrategy\n * @param {?} _parentMenu\n * @param {?} _menuItemInstance\n * @param {?} _dir\n */\n function MatMenuTrigger(_overlay, _element, _viewContainerRef, _scrollStrategy, _parentMenu, _menuItemInstance, _dir) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._scrollStrategy = _scrollStrategy;\n this._parentMenu = _parentMenu;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closeSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._openedByMouse = false;\n /**\n * Event emitted when the associated menu is opened.\n */\n this.onMenuOpen = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n */\n this.onMenuClose = new EventEmitter();\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n Object.defineProperty(MatMenuTrigger.prototype, \"_deprecatedMatMenuTriggerFor\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () {\n return this.menu;\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.menu = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatMenuTrigger.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._checkMenu();\n this.menu.close.subscribe(function (reason) {\n _this._destroyMenu();\n // If a click closed the menu, we should close the entire chain of nested menus.\n if (reason === 'click' && _this._parentMenu) {\n _this._parentMenu.close.emit(reason);\n }\n });\n if (this.triggersSubmenu()) {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n this._hoverSubscription = filter\n .call(this._parentMenu.hover(), function (active) { return active === _this._menuItemInstance; })\n .subscribe(function () {\n _this._openedByMouse = true;\n _this.openMenu();\n });\n }\n };\n /**\n * @return {?}\n */\n MatMenuTrigger.prototype.ngOnDestroy = function () {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._cleanUpSubscriptions();\n };\n Object.defineProperty(MatMenuTrigger.prototype, \"menuOpen\", {\n /**\n * Whether the menu is open.\n * @return {?}\n */\n get: function () {\n return this._menuOpen;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatMenuTrigger.prototype, \"dir\", {\n /**\n * The text direction of the containing app.\n * @return {?}\n */\n get: function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Whether the menu triggers a sub-menu or a top-level one.\n * @return {?}\n */\n MatMenuTrigger.prototype.triggersSubmenu = function () {\n return !!(this._menuItemInstance && this._parentMenu);\n };\n /**\n * Toggles the menu between the open and closed states.\n * @return {?}\n */\n MatMenuTrigger.prototype.toggleMenu = function () {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n };\n /**\n * Opens the menu.\n * @return {?}\n */\n MatMenuTrigger.prototype.openMenu = function () {\n var _this = this;\n if (!this._menuOpen) {\n this._createOverlay().attach(this._portal);\n this._closeSubscription = this._menuClosingActions().subscribe(function () {\n _this.menu.close.emit();\n });\n this._initMenu();\n if (this.menu instanceof MatMenu) {\n this.menu._startAnimation();\n }\n }\n };\n /**\n * Closes the menu.\n * @return {?}\n */\n MatMenuTrigger.prototype.closeMenu = function () {\n this.menu.close.emit();\n };\n /**\n * Focuses the menu trigger.\n * @return {?}\n */\n MatMenuTrigger.prototype.focus = function () {\n this._element.nativeElement.focus();\n };\n /**\n * Closes the menu and does the necessary cleanup.\n * @return {?}\n */\n MatMenuTrigger.prototype._destroyMenu = function () {\n if (this._overlayRef && this.menuOpen) {\n this._resetMenu();\n this._overlayRef.detach();\n this._closeSubscription.unsubscribe();\n if (this.menu instanceof MatMenu) {\n this.menu._resetAnimation();\n }\n }\n };\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n * @return {?}\n */\n MatMenuTrigger.prototype._initMenu = function () {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this._setIsMenuOpen(true);\n // Should only set focus if opened via the keyboard, so keyboard users can\n // can easily navigate menu items. According to spec, mouse users should not\n // see the focus style.\n if (!this._openedByMouse) {\n this.menu.focusFirstItem();\n }\n };\n /**\n * Updates the menu elevation based on the amount of parent menus that it has.\n * @return {?}\n */\n MatMenuTrigger.prototype._setMenuElevation = function () {\n if (this.menu.setElevation) {\n var /** @type {?} */ depth = 0;\n var /** @type {?} */ parentMenu = this.menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n this.menu.setElevation(depth);\n }\n };\n /**\n * This method resets the menu when it's closed, most importantly restoring\n * focus to the menu trigger if the menu was opened via the keyboard.\n * @return {?}\n */\n MatMenuTrigger.prototype._resetMenu = function () {\n this._setIsMenuOpen(false);\n // Focus only needs to be reset to the host element if the menu was opened\n // by the keyboard and manually shifted to the first menu item.\n if (!this._openedByMouse) {\n this.focus();\n }\n this._openedByMouse = false;\n };\n /**\n * @param {?} isOpen\n * @return {?}\n */\n MatMenuTrigger.prototype._setIsMenuOpen = function (isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.onMenuOpen.emit() : this.onMenuClose.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._highlighted = isOpen;\n }\n };\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n * @return {?}\n */\n MatMenuTrigger.prototype._checkMenu = function () {\n if (!this.menu) {\n throwMatMenuMissingError();\n }\n };\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n * @return {?}\n */\n MatMenuTrigger.prototype._createOverlay = function () {\n if (!this._overlayRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n var /** @type {?} */ config = this._getOverlayConfig();\n this._subscribeToPositions(/** @type {?} */ (config.positionStrategy));\n this._overlayRef = this._overlay.create(config);\n }\n return this._overlayRef;\n };\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @return {?} OverlayConfig\n */\n MatMenuTrigger.prototype._getOverlayConfig = function () {\n return new OverlayConfig({\n positionStrategy: this._getPosition(),\n hasBackdrop: !this.triggersSubmenu(),\n backdropClass: 'cdk-overlay-transparent-backdrop',\n direction: this.dir,\n scrollStrategy: this._scrollStrategy()\n });\n };\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n * @param {?} position\n * @return {?}\n */\n MatMenuTrigger.prototype._subscribeToPositions = function (position) {\n var _this = this;\n this._positionSubscription = position.onPositionChange.subscribe(function (change) {\n var /** @type {?} */ posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n var /** @type {?} */ posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n _this.menu.setPositionClasses(posX, posY);\n });\n };\n /**\n * This method builds the position strategy for the overlay, so the menu is properly connected\n * to the trigger.\n * @return {?} ConnectedPositionStrategy\n */\n MatMenuTrigger.prototype._getPosition = function () {\n var _a = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'], originX = _a[0], originFallbackX = _a[1];\n var _b = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'], overlayY = _b[0], overlayFallbackY = _b[1];\n var _c = [overlayY, overlayFallbackY], originY = _c[0], originFallbackY = _c[1];\n var _d = [originX, originFallbackX], overlayX = _d[0], overlayFallbackX = _d[1];\n var /** @type {?} */ offsetY = 0;\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n // TODO(crisbeto): this should be a function, once the overlay supports it.\n // Right now it will be wrong for the fallback positions.\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n }\n else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n return this._overlay.position()\n .connectedTo(this._element, { originX: originX, originY: originY }, { overlayX: overlayX, overlayY: overlayY })\n .withDirection(this.dir)\n .withOffsetY(offsetY)\n .withFallbackPosition({ originX: originFallbackX, originY: originY }, { overlayX: overlayFallbackX, overlayY: overlayY })\n .withFallbackPosition({ originX: originX, originY: originFallbackY }, { overlayX: overlayX, overlayY: overlayFallbackY })\n .withFallbackPosition({ originX: originFallbackX, originY: originFallbackY }, { overlayX: overlayFallbackX, overlayY: overlayFallbackY });\n };\n /**\n * Cleans up the active subscriptions.\n * @return {?}\n */\n MatMenuTrigger.prototype._cleanUpSubscriptions = function () {\n this._closeSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n };\n /**\n * Returns a stream that emits whenever an action that should close the menu occurs.\n * @return {?}\n */\n MatMenuTrigger.prototype._menuClosingActions = function () {\n var _this = this;\n var /** @type {?} */ backdrop = ((this._overlayRef)).backdropClick();\n var /** @type {?} */ parentClose = this._parentMenu ? this._parentMenu.close : of();\n var /** @type {?} */ hover = this._parentMenu ? RxChain.from(this._parentMenu.hover())\n .call(filter, function (active) { return active !== _this._menuItemInstance; })\n .call(filter, function () { return _this._menuOpen; })\n .result() : of();\n return merge(backdrop, parentClose, hover);\n };\n /**\n * Handles mouse presses on the trigger.\n * @param {?} event\n * @return {?}\n */\n MatMenuTrigger.prototype._handleMousedown = function (event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n this._openedByMouse = true;\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n };\n /**\n * Handles key presses on the trigger.\n * @param {?} event\n * @return {?}\n */\n MatMenuTrigger.prototype._handleKeydown = function (event) {\n var /** @type {?} */ keyCode = event.keyCode;\n if (this.triggersSubmenu() && ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this.openMenu();\n }\n };\n /**\n * Handles click events on the trigger.\n * @param {?} event\n * @return {?}\n */\n MatMenuTrigger.prototype._handleClick = function (event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n }\n else {\n this.toggleMenu();\n }\n };\n MatMenuTrigger.decorators = [\n { type: Directive, args: [{\n selector: \"[mat-menu-trigger-for], [matMenuTriggerFor]\",\n host: {\n 'aria-haspopup': 'true',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick($event)',\n },\n exportAs: 'matMenuTrigger'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMenuTrigger.ctorParameters = function () { return [\n { type: Overlay, },\n { type: ElementRef, },\n { type: ViewContainerRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_MENU_SCROLL_STRATEGY,] },] },\n { type: MatMenu, decorators: [{ type: Optional },] },\n { type: MatMenuItem, decorators: [{ type: Optional }, { type: Self },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatMenuTrigger.propDecorators = {\n '_deprecatedMatMenuTriggerFor': [{ type: Input, args: ['mat-menu-trigger-for',] },],\n 'menu': [{ type: Input, args: ['matMenuTriggerFor',] },],\n 'onMenuOpen': [{ type: Output },],\n 'onMenuClose': [{ type: Output },],\n };\n return MatMenuTrigger;\n}());\n\nvar MatMenuModule = (function () {\n function MatMenuModule() {\n }\n MatMenuModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n OverlayModule,\n CommonModule,\n MatRippleModule,\n MatCommonModule,\n ],\n exports: [MatMenu, MatMenuItem, MatMenuTrigger, MatCommonModule],\n declarations: [MatMenu, MatMenuItem, MatMenuTrigger],\n providers: [\n MAT_MENU_SCROLL_STRATEGY_PROVIDER,\n {\n provide: MAT_MENU_DEFAULT_OPTIONS,\n useValue: {\n overlapTrigger: true,\n xPosition: 'after',\n yPosition: 'below',\n },\n }\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatMenuModule.ctorParameters = function () { return []; };\n return MatMenuModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_SCROLL_STRATEGY, fadeInItems, transformMenu, MatMenuModule, MatMenu, MAT_MENU_DEFAULT_OPTIONS, MatMenuItem, MatMenuTrigger, MatMenuItemBase as ɵa22, _MatMenuItemMixinBase as ɵb22, MAT_MENU_SCROLL_STRATEGY_PROVIDER as ɵd22, MAT_MENU_SCROLL_STRATEGY_PROVIDER_FACTORY as ɵc22 };\n//# sourceMappingURL=menu.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Output, Renderer2, Self, ViewChild, ViewEncapsulation, isDevMode } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, END, ENTER, HOME, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ConnectedOverlayDirective, Overlay, OverlayModule, ViewportRuler } from '@angular/cdk/overlay';\nimport { filter, first, startWith } from '@angular/cdk/rxjs';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher, MatCommonModule, MatOptgroup, MatOption, MatOptionModule, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { MatFormField, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\nvar transformPanel = trigger('transformPanel', [\n state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })),\n state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)'\n })),\n transition('void => *', [\n style({\n opacity: 0,\n minWidth: '100%',\n transform: 'scaleY(0)'\n }),\n animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ]),\n transition('* => void', [\n animate('250ms 100ms linear', style({ opacity: 0 }))\n ])\n]);\n/**\n * This animation fades in the background color and text content of the\n * select's options. It is time delayed to occur 100ms after the overlay\n * panel has transformed in.\n */\nvar fadeInContent = trigger('fadeInContent', [\n state('showing', style({ opacity: 1 })),\n transition('void => showing', [\n style({ opacity: 0 }),\n animate('150ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n ])\n]);\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * \\@docs-private\n * @return {?}\n */\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * \\@docs-private\n * @return {?}\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Cannot assign truthy non-array value to select in `multiple` mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n * @return {?}\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('Cannot assign a non-function value to `compareWith`.');\n}\n\nvar nextUniqueId = 0;\n/**\n * The max height of the select's overlay panel\n */\nvar SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis\n */\nvar SELECT_PANEL_PADDING_X = 16;\n/**\n * The panel's x axis padding if it is indented (e.g. there is an option group).\n */\nvar SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n */\nvar SELECT_ITEM_HEIGHT_EM = 3;\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * (SELECT_PANEL_PADDING_X * 1.5) + 20 = 44\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 20px.\n */\nvar SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 20;\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nvar SELECT_PANEL_VIEWPORT_PADDING = 8;\n/**\n * Injection token that determines the scroll handling while a select is open.\n */\nvar MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Change event object that is emitted when the select value has changed.\n */\nvar MatSelectChange = (function () {\n /**\n * @param {?} source\n * @param {?} value\n */\n function MatSelectChange(source, value) {\n this.source = source;\n this.value = value;\n }\n return MatSelectChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatSelectBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSelectBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSelectBase;\n}());\nvar _MatSelectMixinBase = mixinTabIndex(mixinDisabled(MatSelectBase));\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nvar MatSelectTrigger = (function () {\n function MatSelectTrigger() {\n }\n MatSelectTrigger.decorators = [\n { type: Directive, args: [{\n selector: 'mat-select-trigger'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelectTrigger.ctorParameters = function () { return []; };\n return MatSelectTrigger;\n}());\nvar MatSelect = (function (_super) {\n __extends(MatSelect, _super);\n /**\n * @param {?} _viewportRuler\n * @param {?} _changeDetectorRef\n * @param {?} _ngZone\n * @param {?} _defaultErrorStateMatcher\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _dir\n * @param {?} _parentForm\n * @param {?} _parentFormGroup\n * @param {?} _parentFormField\n * @param {?} ngControl\n * @param {?} tabIndex\n * @param {?} _scrollStrategyFactory\n */\n function MatSelect(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, renderer, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, _scrollStrategyFactory) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._viewportRuler = _viewportRuler;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._ngZone = _ngZone;\n _this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n _this._dir = _dir;\n _this._parentForm = _parentForm;\n _this._parentFormGroup = _parentFormGroup;\n _this._parentFormField = _parentFormField;\n _this.ngControl = ngControl;\n _this._scrollStrategyFactory = _scrollStrategyFactory;\n /**\n * Whether or not the overlay panel is open.\n */\n _this._panelOpen = false;\n /**\n * Subscriptions to option events.\n */\n _this._optionSubscription = Subscription.EMPTY;\n /**\n * Subscription to changes in the option list.\n */\n _this._changeSubscription = Subscription.EMPTY;\n /**\n * Subscription to tab events while overlay is focused.\n */\n _this._tabSubscription = Subscription.EMPTY;\n /**\n * Whether filling out the select is required in the form.\n */\n _this._required = false;\n /**\n * The scroll position of the overlay panel, calculated to center the selected option.\n */\n _this._scrollTop = 0;\n /**\n * Whether the component is in multiple selection mode.\n */\n _this._multiple = false;\n /**\n * Comparison function to specify which option is displayed. Defaults to object equality.\n */\n _this._compareWith = function (o1, o2) { return o1 === o2; };\n /**\n * Unique id for this input.\n */\n _this._uid = \"mat-select-\" + nextUniqueId++;\n /**\n * The cached font-size of the trigger element.\n */\n _this._triggerFontSize = 0;\n /**\n * View -> model callback called when value changes\n */\n _this._onChange = function () { };\n /**\n * View -> model callback called when select has been touched\n */\n _this._onTouched = function () { };\n /**\n * The IDs of child options to be passed to the aria-owns attribute.\n */\n _this._optionIds = '';\n /**\n * The value of the select panel's transform-origin property.\n */\n _this._transformOrigin = 'top';\n /**\n * Whether the panel's animation is done.\n */\n _this._panelDoneAnimating = false;\n /**\n * Strategy that will be used to handle scrolling while the select panel is open.\n */\n _this._scrollStrategy = _this._scrollStrategyFactory();\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n _this._offsetY = 0;\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n _this._positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n /**\n * Stream that emits whenever the state of the select changes such that the wrapping\n * `MatFormField` needs to run change detection.\n */\n _this.stateChanges = new Subject();\n /**\n * Whether the select is focused.\n */\n _this.focused = false;\n /**\n * A name for this control that can be used by `mat-form-field`.\n */\n _this.controlType = 'mat-select';\n _this._disableRipple = false;\n /**\n * Aria label of the select. If not specified, the placeholder will be used as label.\n */\n _this.ariaLabel = '';\n /**\n * Event emitted when the select has been opened.\n */\n _this.onOpen = new EventEmitter();\n /**\n * Event emitted when the select has been closed.\n */\n _this.onClose = new EventEmitter();\n /**\n * Event emitted when the selected value has been changed by the user.\n */\n _this.change = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * \\@docs-private\n */\n _this.valueChange = new EventEmitter();\n if (_this.ngControl) {\n _this.ngControl.valueAccessor = _this;\n }\n _this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n _this.id = _this.id;\n return _this;\n }\n Object.defineProperty(MatSelect.prototype, \"placeholder\", {\n /**\n * Placeholder to be shown if no value has been selected.\n * @return {?}\n */\n get: function () { return this._placeholder; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._placeholder = value;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"required\", {\n /**\n * Whether the component is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"multiple\", {\n /**\n * Whether the user should be allowed to select multiple options.\n * @return {?}\n */\n get: function () { return this._multiple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (this._selectionModel) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"compareWith\", {\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n * @return {?}\n */\n get: function () { return this._compareWith; },\n /**\n * @param {?} fn\n * @return {?}\n */\n set: function (fn) {\n if (typeof fn !== 'function') {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"value\", {\n /**\n * Value of the select control.\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"disableRipple\", {\n /**\n * Whether ripples for all options in the select are disabled.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setOptionDisableRipple();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"id\", {\n /**\n * Unique id of the element.\n * @return {?}\n */\n get: function () { return this._id; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"optionSelectionChanges\", {\n /**\n * Combined stream of all of the child options' change events.\n * @return {?}\n */\n get: function () {\n return merge.apply(void 0, this.options.map(function (option) { return option.onSelectionChange; }));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSelect.prototype.ngOnInit = function () {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n this.stateChanges.next();\n };\n /**\n * @return {?}\n */\n MatSelect.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._initKeyManager();\n this._changeSubscription = startWith.call(this.options.changes, null).subscribe(function () {\n _this._resetOptions();\n _this._initializeSelection();\n });\n };\n /**\n * @return {?}\n */\n MatSelect.prototype.ngOnDestroy = function () {\n this._dropSubscriptions();\n this._changeSubscription.unsubscribe();\n this._tabSubscription.unsubscribe();\n };\n /**\n * Toggles the overlay panel open or closed.\n * @return {?}\n */\n MatSelect.prototype.toggle = function () {\n this.panelOpen ? this.close() : this.open();\n };\n /**\n * Opens the overlay panel.\n * @return {?}\n */\n MatSelect.prototype.open = function () {\n var _this = this;\n if (this.disabled || !this.options.length) {\n return;\n }\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this._triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n this._calculateOverlayPosition();\n this._highlightCorrectOption();\n this._panelOpen = true;\n this._changeDetectorRef.markForCheck();\n // Set the font size on the panel element once it exists.\n first.call(this._ngZone.onStable).subscribe(function () {\n if (_this._triggerFontSize && _this.overlayDir.overlayRef &&\n _this.overlayDir.overlayRef.overlayElement) {\n _this.overlayDir.overlayRef.overlayElement.style.fontSize = _this._triggerFontSize + \"px\";\n }\n });\n };\n /**\n * Closes the overlay panel and focuses the host element.\n * @return {?}\n */\n MatSelect.prototype.close = function () {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this.focus();\n }\n };\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param {?} value New value to be written to the model.\n * @return {?}\n */\n MatSelect.prototype.writeValue = function (value) {\n if (this.options) {\n this._setSelectionByValue(value);\n }\n };\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param {?} fn Callback to be triggered when the value changes.\n * @return {?}\n */\n MatSelect.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\n };\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param {?} fn Callback to be triggered when the component has been touched.\n * @return {?}\n */\n MatSelect.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param {?} isDisabled Sets whether the component is disabled.\n * @return {?}\n */\n MatSelect.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n };\n Object.defineProperty(MatSelect.prototype, \"panelOpen\", {\n /**\n * Whether or not the overlay panel is open.\n * @return {?}\n */\n get: function () {\n return this._panelOpen;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"selected\", {\n /**\n * The currently selected option.\n * @return {?}\n */\n get: function () {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"triggerValue\", {\n /**\n * The value displayed in the trigger.\n * @return {?}\n */\n get: function () {\n if (!this._selectionModel || this._selectionModel.isEmpty()) {\n return '';\n }\n if (this._multiple) {\n var /** @type {?} */ selectedOptions = this._selectionModel.selected.map(function (option) { return option.viewValue; });\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Whether the element is in RTL mode.\n * @return {?}\n */\n MatSelect.prototype._isRtl = function () {\n return this._dir ? this._dir.value === 'rtl' : false;\n };\n /**\n * Handles all keydown events on the select.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleKeydown = function (event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n };\n /**\n * Handles keyboard events while the select is closed.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleClosedKeydown = function (event) {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n else if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {\n this._handleClosedArrowKey(event);\n }\n };\n /**\n * Handles keyboard events when the selected is open.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleOpenKeydown = function (event) {\n var _this = this;\n var /** @type {?} */ keyCode = event.keyCode;\n if (keyCode === HOME || keyCode === END) {\n event.preventDefault();\n keyCode === HOME ? this._keyManager.setFirstItemActive() :\n this._keyManager.setLastItemActive();\n }\n else if ((keyCode === ENTER || keyCode === SPACE) && this._keyManager.activeItem) {\n event.preventDefault();\n this._keyManager.activeItem._selectViaInteraction();\n }\n else {\n this._keyManager.onKeydown(event);\n // TODO(crisbeto): get rid of the Promise.resolve when #6441 gets in.\n Promise.resolve().then(function () {\n if (_this.panelOpen) {\n _this._scrollActiveOptionIntoView();\n }\n });\n }\n };\n /**\n * When the panel element is finished transforming in (though not fading in), it\n * emits an event and focuses an option if the panel is open.\n * @return {?}\n */\n MatSelect.prototype._onPanelDone = function () {\n if (this.panelOpen) {\n this._scrollTop = 0;\n this.onOpen.emit();\n }\n else {\n this.onClose.emit();\n this._panelDoneAnimating = false;\n this.overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * When the panel content is done fading in, the _panelDoneAnimating property is\n * set so the proper class can be added to the panel.\n * @return {?}\n */\n MatSelect.prototype._onFadeInDone = function () {\n this._panelDoneAnimating = this.panelOpen;\n this.panel.nativeElement.focus();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * @return {?}\n */\n MatSelect.prototype._onFocus = function () {\n if (!this.disabled) {\n this.focused = true;\n this.stateChanges.next();\n }\n };\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n * @return {?}\n */\n MatSelect.prototype._onBlur = function () {\n if (!this.disabled && !this.panelOpen) {\n this.focused = false;\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n };\n /**\n * Callback that is invoked when the overlay panel has been attached.\n * @return {?}\n */\n MatSelect.prototype._onAttached = function () {\n this._changeDetectorRef.detectChanges();\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n };\n /**\n * Returns the theme to be used on the panel.\n * @return {?}\n */\n MatSelect.prototype._getPanelTheme = function () {\n return this._parentFormField ? \"mat-\" + this._parentFormField.color : '';\n };\n Object.defineProperty(MatSelect.prototype, \"empty\", {\n /**\n * Whether the select has a value.\n * @return {?}\n */\n get: function () {\n return !this._selectionModel || this._selectionModel.isEmpty();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"errorState\", {\n /**\n * Whether the select is in an error state.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentFormGroup || this._parentForm;\n var /** @type {?} */ matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n var /** @type {?} */ control = this.ngControl ? (this.ngControl.control) : null;\n return matcher.isErrorState(control, parent);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSelect.prototype._initializeSelection = function () {\n var _this = this;\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(function () {\n _this._setSelectionByValue(_this.ngControl ? _this.ngControl.value : _this._value);\n });\n };\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?}\n */\n MatSelect.prototype._setSelectionByValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = false; }\n var /** @type {?} */ isArray = Array.isArray(value);\n if (this.multiple && value && !isArray) {\n throw getMatSelectNonArrayValueError();\n }\n this._clearSelection();\n if (isArray) {\n value.forEach(function (currentValue) { return _this._selectValue(currentValue, isUserInput); });\n this._sortValues();\n }\n else {\n var /** @type {?} */ correspondingOption = this._selectValue(value, isUserInput);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.setActiveItem(this.options.toArray().indexOf(correspondingOption));\n }\n }\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Finds and selects and option based on its value.\n * @param {?} value\n * @param {?=} isUserInput\n * @return {?} Option that has the corresponding value.\n */\n MatSelect.prototype._selectValue = function (value, isUserInput) {\n var _this = this;\n if (isUserInput === void 0) { isUserInput = false; }\n var /** @type {?} */ correspondingOption = this.options.find(function (option) {\n try {\n // Treat null as a special reset value.\n return option.value != null && _this._compareWith(option.value, value);\n }\n catch (error) {\n if (isDevMode()) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n isUserInput ? correspondingOption._selectViaInteraction() : correspondingOption.select();\n this._selectionModel.select(correspondingOption);\n this.stateChanges.next();\n }\n return correspondingOption;\n };\n /**\n * Clears the select trigger and deselects every option in the list.\n * @param {?=} skip Option that should not be deselected.\n * @return {?}\n */\n MatSelect.prototype._clearSelection = function (skip) {\n this._selectionModel.clear();\n this.options.forEach(function (option) {\n if (option !== skip) {\n option.deselect();\n }\n });\n this.stateChanges.next();\n };\n /**\n * Sets up a key manager to listen to keyboard events on the overlay panel.\n * @return {?}\n */\n MatSelect.prototype._initKeyManager = function () {\n var _this = this;\n this._keyManager = new ActiveDescendantKeyManager(this.options).withTypeAhead();\n this._tabSubscription = this._keyManager.tabOut.subscribe(function () { return _this.close(); });\n };\n /**\n * Drops current option subscriptions and IDs and resets from scratch.\n * @return {?}\n */\n MatSelect.prototype._resetOptions = function () {\n this._dropSubscriptions();\n this._listenToOptions();\n this._setOptionIds();\n this._setOptionMultiple();\n this._setOptionDisableRipple();\n };\n /**\n * Listens to user-generated selection events on each option.\n * @return {?}\n */\n MatSelect.prototype._listenToOptions = function () {\n var _this = this;\n this._optionSubscription = filter.call(this.optionSelectionChanges, function (event) { return event.isUserInput; }).subscribe(function (event) {\n _this._onSelect(event.source);\n if (!_this.multiple) {\n _this.close();\n }\n });\n };\n /**\n * Invoked when an option is clicked.\n * @param {?} option\n * @return {?}\n */\n MatSelect.prototype._onSelect = function (option) {\n var /** @type {?} */ wasSelected = this._selectionModel.isSelected(option);\n // TODO(crisbeto): handle blank/null options inside multi-select.\n if (this.multiple) {\n this._selectionModel.toggle(option);\n this.stateChanges.next();\n wasSelected ? option.deselect() : option.select();\n this._sortValues();\n }\n else {\n this._clearSelection(option.value == null ? undefined : option);\n if (option.value == null) {\n this._propagateChanges(option.value);\n }\n else {\n this._selectionModel.select(option);\n this.stateChanges.next();\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n };\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n * @return {?}\n */\n MatSelect.prototype._sortValues = function () {\n var _this = this;\n if (this._multiple) {\n this._selectionModel.clear();\n this.options.forEach(function (option) {\n if (option.selected) {\n _this._selectionModel.select(option);\n }\n });\n this.stateChanges.next();\n }\n };\n /**\n * Unsubscribes from all option subscriptions.\n * @return {?}\n */\n MatSelect.prototype._dropSubscriptions = function () {\n this._optionSubscription.unsubscribe();\n };\n /**\n * Emits change event to set the model value.\n * @param {?=} fallbackValue\n * @return {?}\n */\n MatSelect.prototype._propagateChanges = function (fallbackValue) {\n var /** @type {?} */ valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(function (option) { return option.value; });\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this._onChange(valueToEmit);\n this.change.emit(new MatSelectChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Records option IDs to pass to the aria-owns property.\n * @return {?}\n */\n MatSelect.prototype._setOptionIds = function () {\n this._optionIds = this.options.map(function (option) { return option.id; }).join(' ');\n };\n /**\n * Sets the `multiple` property on each option. The promise is necessary\n * in order to avoid Angular errors when modifying the property after init.\n * @return {?}\n */\n MatSelect.prototype._setOptionMultiple = function () {\n var _this = this;\n if (this.multiple) {\n Promise.resolve(null).then(function () {\n _this.options.forEach(function (option) { return option.multiple = _this.multiple; });\n });\n }\n };\n /**\n * Sets the `disableRipple` property on each option.\n * @return {?}\n */\n MatSelect.prototype._setOptionDisableRipple = function () {\n var _this = this;\n if (this.options) {\n this.options.forEach(function (option) { return option.disableRipple = _this.disableRipple; });\n }\n };\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n * @return {?}\n */\n MatSelect.prototype._highlightCorrectOption = function () {\n if (this._selectionModel.isEmpty()) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(/** @type {?} */ ((this._getOptionIndex(this._selectionModel.selected[0]))));\n }\n };\n /**\n * Scrolls the active option into view.\n * @return {?}\n */\n MatSelect.prototype._scrollActiveOptionIntoView = function () {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ activeOptionIndex = this._keyManager.activeItemIndex || 0;\n var /** @type {?} */ labelCount = MatOption.countGroupLabelsBeforeOption(activeOptionIndex, this.options, this.optionGroups);\n var /** @type {?} */ scrollOffset = (activeOptionIndex + labelCount) * itemHeight;\n var /** @type {?} */ panelTop = this.panel.nativeElement.scrollTop;\n if (scrollOffset < panelTop) {\n this.panel.nativeElement.scrollTop = scrollOffset;\n }\n else if (scrollOffset + itemHeight > panelTop + SELECT_PANEL_MAX_HEIGHT) {\n this.panel.nativeElement.scrollTop =\n Math.max(0, scrollOffset - SELECT_PANEL_MAX_HEIGHT + itemHeight);\n }\n };\n /**\n * Focuses the select element.\n * @return {?}\n */\n MatSelect.prototype.focus = function () {\n this._elementRef.nativeElement.focus();\n };\n /**\n * Gets the index of the provided option in the option list.\n * @param {?} option\n * @return {?}\n */\n MatSelect.prototype._getOptionIndex = function (option) {\n return this.options.reduce(function (result, current, index) {\n return result === undefined ? (option === current ? index : undefined) : result;\n }, undefined);\n };\n /**\n * Calculates the scroll position and x- and y-offsets of the overlay panel.\n * @return {?}\n */\n MatSelect.prototype._calculateOverlayPosition = function () {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ items = this._getItemCount();\n var /** @type {?} */ panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var /** @type {?} */ scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n var /** @type {?} */ maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n var /** @type {?} */ selectedOptionOffset = this.empty ? 0 : ((this._getOptionIndex(this._selectionModel.selected[0])));\n selectedOptionOffset += MatOption.countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\n // We must maintain a scroll buffer so the selected option will be scrolled to the\n // center of the overlay panel rather than the top.\n var /** @type {?} */ scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n this._checkOverlayWithinViewport(maxScroll);\n };\n /**\n * Calculates the scroll position of the select's overlay panel.\n *\n * Attempts to center the selected option in the panel. If the option is\n * too high or too low in the panel to be scrolled to the center, it clamps the\n * scroll position to the min or max scroll positions respectively.\n * @param {?} selectedIndex\n * @param {?} scrollBuffer\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._calculateOverlayScroll = function (selectedIndex, scrollBuffer, maxScroll) {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ optionOffsetFromScrollTop = itemHeight * selectedIndex;\n var /** @type {?} */ halfOptionHeight = itemHeight / 2;\n // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n // scroll container, then subtracts the scroll buffer to scroll the option down to\n // the center of the overlay panel. Half the option height must be re-added to the\n // scrollTop so the option is centered based on its middle, not its top edge.\n var /** @type {?} */ optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n };\n Object.defineProperty(MatSelect.prototype, \"_ariaLabel\", {\n /**\n * Returns the aria-label of the select component.\n * @return {?}\n */\n get: function () {\n // If an ariaLabelledby value has been set, the select should not overwrite the\n // `aria-labelledby` value by setting the ariaLabel to the placeholder.\n return this.ariaLabelledby ? null : this.ariaLabel || this.placeholder;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Determines the `aria-activedescendant` to be set on the host.\n * @return {?}\n */\n MatSelect.prototype._getAriaActiveDescendant = function () {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\n };\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n * @return {?}\n */\n MatSelect.prototype._calculateOverlayOffsetX = function () {\n var /** @type {?} */ overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n var /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n var /** @type {?} */ isRtl = this._isRtl();\n var /** @type {?} */ paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n var /** @type {?} */ offsetX;\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n }\n else {\n var /** @type {?} */ selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n // Determine how much the select overflows on each side.\n var /** @type {?} */ leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n var /** @type {?} */ rightOverflow = overlayRect.right + offsetX - viewportRect.width\n + (isRtl ? 0 : paddingWidth);\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors.\n this.overlayDir.offsetX = offsetX;\n this.overlayDir.overlayRef.updatePosition();\n };\n /**\n * Calculates the y-offset of the select's overlay panel in relation to the\n * top start corner of the trigger. It has to be adjusted in order for the\n * selected option to be aligned over the trigger when the panel opens.\n * @param {?} selectedIndex\n * @param {?} scrollBuffer\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._calculateOverlayOffsetY = function (selectedIndex, scrollBuffer, maxScroll) {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var /** @type {?} */ maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n var /** @type {?} */ optionOffsetFromPanelTop;\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n var /** @type {?} */ firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n var /** @type {?} */ selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n // The first item is partially out of the viewport. Therefore we need to calculate what\n // portion of it is shown in the viewport and account for it in our offset.\n var /** @type {?} */ partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\n // Because the panel height is longer than the height of the options alone,\n // there is always extra padding at the top or bottom of the panel. When\n // scrolled to the very bottom, this padding is at the top of the panel and\n // must be added to the offset.\n optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n }\n else {\n // If the option was scrolled to the middle of the panel using a scroll buffer,\n // its offset will be the scroll buffer minus the half height that was added to\n // center it.\n optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n }\n // The final offset is the option's offset from the top, adjusted for the height\n // difference, multiplied by -1 to ensure that the overlay moves in the correct\n // direction up the page.\n return optionOffsetFromPanelTop * -1 - optionHeightAdjustment;\n };\n /**\n * Checks that the attempted overlay position will fit within the viewport.\n * If it will not fit, tries to adjust the scroll position and the associated\n * y-offset so the panel can open fully on-screen. If it still won't fit,\n * sets the offset back to 0 to allow the fallback position to take over.\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._checkOverlayWithinViewport = function (maxScroll) {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ viewportRect = this._viewportRuler.getViewportRect();\n var /** @type {?} */ topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n var /** @type {?} */ bottomSpaceAvailable = viewportRect.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n var /** @type {?} */ panelHeightTop = Math.abs(this._offsetY);\n var /** @type {?} */ totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var /** @type {?} */ panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n }\n else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n }\n else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n };\n /**\n * Adjusts the overlay panel up to fit in the viewport.\n * @param {?} panelHeightBottom\n * @param {?} bottomSpaceAvailable\n * @return {?}\n */\n MatSelect.prototype._adjustPanelUp = function (panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var /** @type {?} */ distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n // Scrolls the panel up by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel up into the viewport.\n this._scrollTop -= distanceBelowViewport;\n this._offsetY -= distanceBelowViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very top, it won't be able to fit the panel\n // by scrolling, so set the offset to 0 to allow the fallback position to take\n // effect.\n if (this._scrollTop <= 0) {\n this._scrollTop = 0;\n this._offsetY = 0;\n this._transformOrigin = \"50% bottom 0px\";\n }\n };\n /**\n * Adjusts the overlay panel down to fit in the viewport.\n * @param {?} panelHeightTop\n * @param {?} topSpaceAvailable\n * @param {?} maxScroll\n * @return {?}\n */\n MatSelect.prototype._adjustPanelDown = function (panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var /** @type {?} */ distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n // Scrolls the panel down by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel down into the viewport.\n this._scrollTop += distanceAboveViewport;\n this._offsetY += distanceAboveViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very bottom, it won't be able to fit the\n // panel by scrolling, so set the offset to 0 to allow the fallback position\n // to take effect.\n if (this._scrollTop >= maxScroll) {\n this._scrollTop = maxScroll;\n this._offsetY = 0;\n this._transformOrigin = \"50% top 0px\";\n return;\n }\n };\n /**\n * Sets the transform origin point based on the selected option.\n * @return {?}\n */\n MatSelect.prototype._getOriginBasedOnOption = function () {\n var /** @type {?} */ itemHeight = this._getItemHeight();\n var /** @type {?} */ optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var /** @type {?} */ originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return \"50% \" + originY + \"px 0px\";\n };\n /**\n * Handles the user pressing the arrow keys on a closed select.\n * @param {?} event\n * @return {?}\n */\n MatSelect.prototype._handleClosedArrowKey = function (event) {\n var _this = this;\n if (this._multiple) {\n event.preventDefault();\n this.open();\n }\n else {\n var /** @type {?} */ prevActiveItem_1 = this._keyManager.activeItem;\n // Cycle though the select options even when the select is closed,\n // matching the behavior of the native select element.\n // TODO(crisbeto): native selects also cycle through the options with left/right arrows,\n // however the key manager only supports up/down at the moment.\n this._keyManager.onKeydown(event);\n // TODO(crisbeto): get rid of the Promise.resolve when #6441 gets in.\n Promise.resolve().then(function () {\n var /** @type {?} */ currentActiveItem = _this._keyManager.activeItem;\n if (currentActiveItem && currentActiveItem !== prevActiveItem_1) {\n _this._clearSelection();\n _this._setSelectionByValue(currentActiveItem.value, true);\n }\n });\n }\n };\n /**\n * Calculates the amount of items in the select. This includes options and group labels.\n * @return {?}\n */\n MatSelect.prototype._getItemCount = function () {\n return this.options.length + this.optionGroups.length;\n };\n /**\n * Calculates the height of the select's options.\n * @return {?}\n */\n MatSelect.prototype._getItemHeight = function () {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n };\n /**\n * @param {?} ids\n * @return {?}\n */\n MatSelect.prototype.setDescribedByIds = function (ids) {\n this._ariaDescribedby = ids.join(' ');\n };\n /**\n * @return {?}\n */\n MatSelect.prototype.onContainerClick = function () {\n this.focus();\n this.open();\n };\n Object.defineProperty(MatSelect.prototype, \"shouldPlaceholderFloat\", {\n /**\n * @return {?}\n */\n get: function () { return this._panelOpen || !this.empty; },\n enumerable: true,\n configurable: true\n });\n MatSelect.decorators = [\n { type: Component, args: [{selector: 'mat-select',\n exportAs: 'matSelect',\n template: \"<div cdk-overlay-origin class=\\\"mat-select-trigger\\\" aria-hidden=\\\"true\\\" (click)=\\\"toggle()\\\" #origin=\\\"cdkOverlayOrigin\\\" #trigger><div class=\\\"mat-select-value\\\"><ng-container *ngIf=\\\"empty\\\">&nbsp;</ng-container><span class=\\\"mat-select-value-text\\\" *ngIf=\\\"!empty\\\" [ngSwitch]=\\\"!!customTrigger\\\"><span *ngSwitchDefault>{{ triggerValue }}</span><ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content></span></div><div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div></div><ng-template cdk-connected-overlay hasBackdrop backdropClass=\\\"cdk-overlay-transparent-backdrop\\\" [scrollStrategy]=\\\"_scrollStrategy\\\" [origin]=\\\"origin\\\" [open]=\\\"panelOpen\\\" [positions]=\\\"_positions\\\" [minWidth]=\\\"_triggerRect?.width\\\" [offsetY]=\\\"_offsetY\\\" (backdropClick)=\\\"close()\\\" (attach)=\\\"_onAttached()\\\" (detach)=\\\"close()\\\"><div #panel class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\" [ngClass]=\\\"panelClass\\\" [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\" (@transformPanel.done)=\\\"_onPanelDone()\\\" [style.transformOrigin]=\\\"_transformOrigin\\\" [class.mat-select-panel-done-animating]=\\\"_panelDoneAnimating\\\" [style.font-size.px]=\\\"_triggerFontSize\\\"><div class=\\\"mat-select-content\\\" [@fadeInContent]=\\\"'showing'\\\" (@fadeInContent.done)=\\\"_onFadeInDone()\\\"><ng-content></ng-content></div></div></ng-template>\",\n styles: [\".mat-select{display:inline-block;width:100%;outline:0}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%}.mat-select-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-select-panel{outline:solid 1px}}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-placeholder{width:calc(100% - 18px)}\"],\n inputs: ['disabled', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-label]': '_ariaLabel',\n '[attr.aria-labelledby]': 'ariaLabelledby',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-owns]': '_optionIds',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-select-disabled]': 'disabled',\n '[class.mat-select-invalid]': 'errorState',\n '[class.mat-select-required]': 'required',\n 'class': 'mat-select',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n },\n animations: [\n transformPanel,\n fadeInContent\n ],\n providers: [{ provide: MatFormFieldControl, useExisting: MatSelect }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelect.ctorParameters = function () { return [\n { type: ViewportRuler, },\n { type: ChangeDetectorRef, },\n { type: NgZone, },\n { type: ErrorStateMatcher, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgForm, decorators: [{ type: Optional },] },\n { type: FormGroupDirective, decorators: [{ type: Optional },] },\n { type: MatFormField, decorators: [{ type: Optional },] },\n { type: NgControl, decorators: [{ type: Self }, { type: Optional },] },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] },] },\n ]; };\n MatSelect.propDecorators = {\n 'trigger': [{ type: ViewChild, args: ['trigger',] },],\n 'panel': [{ type: ViewChild, args: ['panel',] },],\n 'overlayDir': [{ type: ViewChild, args: [ConnectedOverlayDirective,] },],\n 'options': [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n 'optionGroups': [{ type: ContentChildren, args: [MatOptgroup,] },],\n 'panelClass': [{ type: Input },],\n 'customTrigger': [{ type: ContentChild, args: [MatSelectTrigger,] },],\n 'placeholder': [{ type: Input },],\n 'required': [{ type: Input },],\n 'multiple': [{ type: Input },],\n 'compareWith': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disableRipple': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'errorStateMatcher': [{ type: Input },],\n 'id': [{ type: Input },],\n 'onOpen': [{ type: Output },],\n 'onClose': [{ type: Output },],\n 'change': [{ type: Output },],\n 'valueChange': [{ type: Output },],\n };\n return MatSelect;\n}(_MatSelectMixinBase));\n\nvar MatSelectModule = (function () {\n function MatSelectModule() {\n }\n MatSelectModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n ],\n exports: [MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER, ErrorStateMatcher]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSelectModule.ctorParameters = function () { return []; };\n return MatSelectModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSelectModule, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelectChange, MatSelectBase, _MatSelectMixinBase, MatSelectTrigger, MatSelect, transformPanel, fadeInContent };\n//# sourceMappingURL=select.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule, ARIA_DESCRIBER_PROVIDER, AriaDescriber } from '@angular/cdk/a11y';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, InjectionToken, Input, NgModule, NgZone, Optional, Renderer2, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { first } from '@angular/cdk/rxjs';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { Subject } from 'rxjs/Subject';\n\n/**\n * Time in ms to delay before changing the tooltip visibility to hidden\n */\nvar TOUCHEND_HIDE_DELAY = 1500;\n/**\n * Time in ms to throttle repositioning after scroll events.\n */\nvar SCROLL_THROTTLE_MS = 20;\n/**\n * CSS class that will be attached to the overlay panel.\n */\nvar TOOLTIP_PANEL_CLASS = 'mat-tooltip-panel';\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @param {?} position\n * @return {?}\n */\nfunction getMatTooltipInvalidPositionError(position) {\n return Error(\"Tooltip position \\\"\" + position + \"\\\" is invalid.\");\n}\n/**\n * Injection token that determines the scroll handling while a tooltip is visible.\n */\nvar MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('mat-tooltip-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS }); };\n}\n/**\n * \\@docs-private\n */\nvar MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.google.com/components/tooltips.html\n */\nvar MatTooltip = (function () {\n /**\n * @param {?} renderer\n * @param {?} _overlay\n * @param {?} _elementRef\n * @param {?} _scrollDispatcher\n * @param {?} _viewContainerRef\n * @param {?} _ngZone\n * @param {?} _platform\n * @param {?} _ariaDescriber\n * @param {?} _scrollStrategy\n * @param {?} _dir\n */\n function MatTooltip(renderer, _overlay, _elementRef, _scrollDispatcher, _viewContainerRef, _ngZone, _platform, _ariaDescriber, _scrollStrategy, _dir) {\n var _this = this;\n this._overlay = _overlay;\n this._elementRef = _elementRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._viewContainerRef = _viewContainerRef;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._ariaDescriber = _ariaDescriber;\n this._scrollStrategy = _scrollStrategy;\n this._dir = _dir;\n this._position = 'below';\n this._disabled = false;\n /**\n * The default delay in ms before showing the tooltip after show is called\n */\n this.showDelay = 0;\n /**\n * The default delay in ms before hiding the tooltip after hide is called\n */\n this.hideDelay = 0;\n this._message = '';\n // The mouse events shouldn't be bound on iOS devices, because\n // they can prevent the first tap from firing its click event.\n if (!_platform.IOS) {\n this._enterListener =\n renderer.listen(_elementRef.nativeElement, 'mouseenter', function () { return _this.show(); });\n this._leaveListener =\n renderer.listen(_elementRef.nativeElement, 'mouseleave', function () { return _this.hide(); });\n }\n }\n Object.defineProperty(MatTooltip.prototype, \"position\", {\n /**\n * Allows the user to define the position of the tooltip relative to the parent element\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value !== this._position) {\n this._position = value;\n // TODO(andrewjs): When the overlay's position can be dynamically changed, do not destroy\n // the tooltip.\n if (this._tooltipInstance) {\n this._disposeTooltip();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"disabled\", {\n /**\n * Disables the display of the tooltip.\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n // If tooltip is disabled, hide immediately.\n if (this._disabled) {\n this.hide(0);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"_positionDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._position = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"message\", {\n /**\n * The message to be displayed in the tooltip\n * @return {?}\n */\n get: function () { return this._message; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message);\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n this._message = value != null ? (\"\" + value).trim() : '';\n this._updateTooltipMessage();\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTooltip.prototype, \"tooltipClass\", {\n /**\n * Classes to be passed to the tooltip. Supports the same syntax as `ngClass`.\n * @return {?}\n */\n get: function () { return this._tooltipClass; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Dispose the tooltip when destroyed.\n * @return {?}\n */\n MatTooltip.prototype.ngOnDestroy = function () {\n if (this._tooltipInstance) {\n this._disposeTooltip();\n }\n // Clean up the event listeners set in the constructor\n if (!this._platform.IOS) {\n this._enterListener();\n this._leaveListener();\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.message);\n };\n /**\n * Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input\n * @param {?=} delay\n * @return {?}\n */\n MatTooltip.prototype.show = function (delay) {\n if (delay === void 0) { delay = this.showDelay; }\n if (this.disabled || !this.message) {\n return;\n }\n if (!this._tooltipInstance) {\n this._createTooltip();\n }\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage(); /** @type {?} */\n ((this._tooltipInstance)).show(this._position, delay);\n };\n /**\n * Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input\n * @param {?=} delay\n * @return {?}\n */\n MatTooltip.prototype.hide = function (delay) {\n if (delay === void 0) { delay = this.hideDelay; }\n if (this._tooltipInstance) {\n this._tooltipInstance.hide(delay);\n }\n };\n /**\n * Shows/hides the tooltip\n * @return {?}\n */\n MatTooltip.prototype.toggle = function () {\n this._isTooltipVisible() ? this.hide() : this.show();\n };\n /**\n * Returns true if the tooltip is currently visible to the user\n * @return {?}\n */\n MatTooltip.prototype._isTooltipVisible = function () {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n };\n /**\n * Handles the keydown events on the host element.\n * @param {?} e\n * @return {?}\n */\n MatTooltip.prototype._handleKeydown = function (e) {\n if (this._isTooltipVisible() && e.keyCode === ESCAPE) {\n e.stopPropagation();\n this.hide(0);\n }\n };\n /**\n * Create the tooltip to display\n * @return {?}\n */\n MatTooltip.prototype._createTooltip = function () {\n var _this = this;\n var /** @type {?} */ overlayRef = this._createOverlay();\n var /** @type {?} */ portal = new ComponentPortal(TooltipComponent, this._viewContainerRef);\n this._tooltipInstance = overlayRef.attach(portal).instance; /** @type {?} */\n ((\n // Dispose the overlay when finished the shown tooltip.\n this._tooltipInstance)).afterHidden().subscribe(function () {\n // Check first if the tooltip has already been removed through this components destroy.\n if (_this._tooltipInstance) {\n _this._disposeTooltip();\n }\n });\n };\n /**\n * Create the overlay config and position strategy\n * @return {?}\n */\n MatTooltip.prototype._createOverlay = function () {\n var _this = this;\n var /** @type {?} */ origin = this._getOrigin();\n var /** @type {?} */ overlay = this._getOverlayPosition();\n // Create connected position strategy that listens for scroll events to reposition.\n var /** @type {?} */ strategy = this._overlay\n .position()\n .connectedTo(this._elementRef, origin.main, overlay.main)\n .withFallbackPosition(origin.fallback, overlay.fallback);\n strategy.withScrollableContainers(this._scrollDispatcher.getScrollContainers(this._elementRef));\n strategy.onPositionChange.subscribe(function (change) {\n if (_this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && _this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n _this.hide(0);\n }\n else {\n // Otherwise recalculate the origin based on the new position.\n _this._tooltipInstance._setTransformOrigin(change.connectionPair);\n }\n }\n });\n var /** @type {?} */ config = new OverlayConfig({\n direction: this._dir ? this._dir.value : 'ltr',\n positionStrategy: strategy,\n panelClass: TOOLTIP_PANEL_CLASS,\n scrollStrategy: this._scrollStrategy()\n });\n this._overlayRef = this._overlay.create(config);\n return this._overlayRef;\n };\n /**\n * Disposes the current tooltip and the overlay it is attached to\n * @return {?}\n */\n MatTooltip.prototype._disposeTooltip = function () {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._tooltipInstance = null;\n };\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. 'below' -> 'above').\n * @return {?}\n */\n MatTooltip.prototype._getOrigin = function () {\n var /** @type {?} */ isDirectionLtr = !this._dir || this._dir.value == 'ltr';\n var /** @type {?} */ position;\n if (this.position == 'above' || this.position == 'below') {\n position = { originX: 'center', originY: this.position == 'above' ? 'top' : 'bottom' };\n }\n else if (this.position == 'left' ||\n this.position == 'before' && isDirectionLtr ||\n this.position == 'after' && !isDirectionLtr) {\n position = { originX: 'start', originY: 'center' };\n }\n else if (this.position == 'right' ||\n this.position == 'after' && isDirectionLtr ||\n this.position == 'before' && !isDirectionLtr) {\n position = { originX: 'end', originY: 'center' };\n }\n else {\n throw getMatTooltipInvalidPositionError(this.position);\n }\n var _a = this._invertPosition(position.originX, position.originY), x = _a.x, y = _a.y;\n return {\n main: position,\n fallback: { originX: x, originY: y }\n };\n };\n /**\n * Returns the overlay position and a fallback position based on the user's preference\n * @return {?}\n */\n MatTooltip.prototype._getOverlayPosition = function () {\n var /** @type {?} */ isLtr = !this._dir || this._dir.value == 'ltr';\n var /** @type {?} */ position;\n if (this.position == 'above') {\n position = { overlayX: 'center', overlayY: 'bottom' };\n }\n else if (this.position == 'below') {\n position = { overlayX: 'center', overlayY: 'top' };\n }\n else if (this.position == 'left' ||\n this.position == 'before' && isLtr ||\n this.position == 'after' && !isLtr) {\n position = { overlayX: 'end', overlayY: 'center' };\n }\n else if (this.position == 'right' ||\n this.position == 'after' && isLtr ||\n this.position == 'before' && !isLtr) {\n position = { overlayX: 'start', overlayY: 'center' };\n }\n else {\n throw getMatTooltipInvalidPositionError(this.position);\n }\n var _a = this._invertPosition(position.overlayX, position.overlayY), x = _a.x, y = _a.y;\n return {\n main: position,\n fallback: { overlayX: x, overlayY: y }\n };\n };\n /**\n * Updates the tooltip message and repositions the overlay according to the new message length\n * @return {?}\n */\n MatTooltip.prototype._updateTooltipMessage = function () {\n var _this = this;\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n first.call(this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n if (_this._tooltipInstance) {\n ((_this._overlayRef)).updatePosition();\n }\n });\n }\n };\n /**\n * Updates the tooltip class\n * @param {?} tooltipClass\n * @return {?}\n */\n MatTooltip.prototype._setTooltipClass = function (tooltipClass) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass = tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n };\n /**\n * Inverts an overlay position.\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\n MatTooltip.prototype._invertPosition = function (x, y) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n }\n else if (y === 'bottom') {\n y = 'top';\n }\n }\n else {\n if (x === 'end') {\n x = 'start';\n }\n else if (x === 'start') {\n x = 'end';\n }\n }\n return { x: x, y: y };\n };\n MatTooltip.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tooltip], [matTooltip]',\n exportAs: 'matTooltip',\n host: {\n '(longpress)': 'show()',\n '(focus)': 'show()',\n '(blur)': 'hide(0)',\n '(keydown)': '_handleKeydown($event)',\n '(touchend)': 'hide(' + TOUCHEND_HIDE_DELAY + ')',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTooltip.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: Overlay, },\n { type: ElementRef, },\n { type: ScrollDispatcher, },\n { type: ViewContainerRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: AriaDescriber, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_TOOLTIP_SCROLL_STRATEGY,] },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTooltip.propDecorators = {\n 'position': [{ type: Input, args: ['matTooltipPosition',] },],\n 'disabled': [{ type: Input, args: ['matTooltipDisabled',] },],\n '_positionDeprecated': [{ type: Input, args: ['tooltip-position',] },],\n 'showDelay': [{ type: Input, args: ['matTooltipShowDelay',] },],\n 'hideDelay': [{ type: Input, args: ['matTooltipHideDelay',] },],\n 'message': [{ type: Input, args: ['matTooltip',] },],\n 'tooltipClass': [{ type: Input, args: ['matTooltipClass',] },],\n };\n return MatTooltip;\n}());\n/**\n * Internal component that wraps the tooltip's content.\n * \\@docs-private\n */\nvar TooltipComponent = (function () {\n /**\n * @param {?} _changeDetectorRef\n */\n function TooltipComponent(_changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Property watched by the animation framework to show or hide the tooltip\n */\n this._visibility = 'initial';\n /**\n * Whether interactions on the page should close the tooltip\n */\n this._closeOnInteraction = false;\n /**\n * The transform origin used in the animation for showing and hiding the tooltip\n */\n this._transformOrigin = 'bottom';\n /**\n * Subject for notifying that the tooltip has been hidden from the view\n */\n this._onHide = new Subject();\n }\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param {?} position Position of the tooltip.\n * @param {?} delay Amount of milliseconds to the delay showing the tooltip.\n * @return {?}\n */\n TooltipComponent.prototype.show = function (position, delay) {\n var _this = this;\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId);\n }\n // Body interactions should cancel the tooltip if there is a delay in showing.\n this._closeOnInteraction = true;\n this._position = position;\n this._showTimeoutId = setTimeout(function () {\n _this._visibility = 'visible';\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n _this._markForCheck();\n }, delay);\n };\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param {?} delay Amount of milliseconds to delay showing the tooltip.\n * @return {?}\n */\n TooltipComponent.prototype.hide = function (delay) {\n var _this = this;\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId);\n }\n this._hideTimeoutId = setTimeout(function () {\n _this._visibility = 'hidden';\n // Mark for check so if any parent component has set the\n // ChangeDetectionStrategy to OnPush it will be checked anyways\n _this._markForCheck();\n }, delay);\n };\n /**\n * Returns an observable that notifies when the tooltip has been hidden from view.\n * @return {?}\n */\n TooltipComponent.prototype.afterHidden = function () {\n return this._onHide.asObservable();\n };\n /**\n * Whether the tooltip is being displayed.\n * @return {?}\n */\n TooltipComponent.prototype.isVisible = function () {\n return this._visibility === 'visible';\n };\n /**\n * Sets the tooltip transform origin according to the position of the tooltip overlay.\n * @param {?} overlayPosition\n * @return {?}\n */\n TooltipComponent.prototype._setTransformOrigin = function (overlayPosition) {\n var /** @type {?} */ axis = (this._position === 'above' || this._position === 'below') ? 'Y' : 'X';\n var /** @type {?} */ position = axis == 'X' ? overlayPosition.overlayX : overlayPosition.overlayY;\n if (position === 'top' || position === 'bottom') {\n this._transformOrigin = position;\n }\n else if (position === 'start') {\n this._transformOrigin = 'left';\n }\n else if (position === 'end') {\n this._transformOrigin = 'right';\n }\n else {\n throw getMatTooltipInvalidPositionError(this._position);\n }\n };\n /**\n * @return {?}\n */\n TooltipComponent.prototype._animationStart = function () {\n this._closeOnInteraction = false;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n TooltipComponent.prototype._animationDone = function (event) {\n var _this = this;\n var /** @type {?} */ toState = (event.toState);\n if (toState === 'hidden' && !this.isVisible()) {\n this._onHide.next();\n }\n if (toState === 'visible' || toState === 'hidden') {\n // Note: as of Angular 4.3, the animations module seems to fire the `start` callback before\n // the end if animations are disabled. Make this call async to ensure that it still fires\n // at the appropriate time.\n Promise.resolve().then(function () { return _this._closeOnInteraction = true; });\n }\n };\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.google.com/components/tooltips.html#tooltips-interaction\n * @return {?}\n */\n TooltipComponent.prototype._handleBodyInteraction = function () {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n };\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n * @return {?}\n */\n TooltipComponent.prototype._markForCheck = function () {\n this._changeDetectorRef.markForCheck();\n };\n TooltipComponent.decorators = [\n { type: Component, args: [{selector: 'mat-tooltip-component',\n template: \"<div class=\\\"mat-tooltip\\\" [ngClass]=\\\"tooltipClass\\\" [style.transform-origin]=\\\"_transformOrigin\\\" [@state]=\\\"_visibility\\\" (@state.start)=\\\"_animationStart()\\\" (@state.done)=\\\"_animationDone($event)\\\">{{message}}</div>\",\n styles: [\".mat-tooltip-panel{pointer-events:none!important}.mat-tooltip{color:#fff;border-radius:2px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px}@media screen and (-ms-high-contrast:active){.mat-tooltip{outline:solid 1px}}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('state', [\n state('initial, void, hidden', style({ transform: 'scale(0)' })),\n state('visible', style({ transform: 'scale(1)' })),\n transition('* => visible', animate('150ms cubic-bezier(0.0, 0.0, 0.2, 1)')),\n transition('* => hidden', animate('150ms cubic-bezier(0.4, 0.0, 1, 1)')),\n ])\n ],\n host: {\n // Forces the element to have a layout in IE and Edge. This fixes issues where the element\n // won't be rendered if the animations are disabled or there is no web animations polyfill.\n '[style.zoom]': '_visibility === \"visible\" ? 1 : null',\n '(body:click)': 'this._handleBodyInteraction()',\n 'aria-hidden': 'true',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n TooltipComponent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n ]; };\n return TooltipComponent;\n}());\n\nvar MatTooltipModule = (function () {\n function MatTooltipModule() {\n }\n MatTooltipModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n OverlayModule,\n MatCommonModule,\n PlatformModule,\n A11yModule,\n ],\n exports: [MatTooltip, TooltipComponent, MatCommonModule],\n declarations: [MatTooltip, TooltipComponent],\n entryComponents: [TooltipComponent],\n providers: [MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, ARIA_DESCRIBER_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTooltipModule.ctorParameters = function () { return []; };\n return MatTooltipModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatTooltipModule, TOUCHEND_HIDE_DELAY, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, getMatTooltipInvalidPositionError, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MatTooltip, TooltipComponent };\n//# sourceMappingURL=tooltip.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Injectable, Input, NgModule, Output, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs/Subject';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\nvar MatPaginatorIntl = (function () {\n function MatPaginatorIntl() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /**\n * A label for the page size selector.\n */\n this.itemsPerPageLabel = 'Items per page:';\n /**\n * A label for the button that increments the current page.\n */\n this.nextPageLabel = 'Next page';\n /**\n * A label for the button that decrements the current page.\n */\n this.previousPageLabel = 'Previous page';\n /**\n * A label for the range of items within the current page and the length of the whole list.\n */\n this.getRangeLabel = function (page, pageSize, length) {\n if (length == 0 || pageSize == 0) {\n return \"0 of \" + length;\n }\n length = Math.max(length, 0);\n var startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n var endIndex = startIndex < length ?\n Math.min(startIndex + pageSize, length) :\n startIndex + pageSize;\n return startIndex + 1 + \" - \" + endIndex + \" of \" + length;\n };\n }\n MatPaginatorIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatPaginatorIntl.ctorParameters = function () { return []; };\n return MatPaginatorIntl;\n}());\n\n/**\n * The default page size if there is no page size and there are no provided page size options.\n */\nvar DEFAULT_PAGE_SIZE = 50;\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nvar PageEvent = (function () {\n function PageEvent() {\n }\n return PageEvent;\n}());\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\nvar MatPaginator = (function () {\n /**\n * @param {?} _intl\n * @param {?} _changeDetectorRef\n */\n function MatPaginator(_intl, _changeDetectorRef) {\n var _this = this;\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._pageIndex = 0;\n this._length = 0;\n this._pageSizeOptions = [];\n /**\n * Event emitted when the paginator changes the page size or page index.\n */\n this.page = new EventEmitter();\n this._intlChanges = _intl.changes.subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n }\n Object.defineProperty(MatPaginator.prototype, \"pageIndex\", {\n /**\n * The zero-based page index of the displayed list of items. Defaulted to 0.\n * @return {?}\n */\n get: function () { return this._pageIndex; },\n /**\n * @param {?} pageIndex\n * @return {?}\n */\n set: function (pageIndex) {\n this._pageIndex = pageIndex;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatPaginator.prototype, \"length\", {\n /**\n * The length of the total number of items that are being paginated. Defaulted to 0.\n * @return {?}\n */\n get: function () { return this._length; },\n /**\n * @param {?} length\n * @return {?}\n */\n set: function (length) {\n this._length = length;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatPaginator.prototype, \"pageSize\", {\n /**\n * Number of items to display on a page. By default set to 50.\n * @return {?}\n */\n get: function () { return this._pageSize; },\n /**\n * @param {?} pageSize\n * @return {?}\n */\n set: function (pageSize) {\n this._pageSize = pageSize;\n this._updateDisplayedPageSizeOptions();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatPaginator.prototype, \"pageSizeOptions\", {\n /**\n * The set of provided page size options to display to the user.\n * @return {?}\n */\n get: function () { return this._pageSizeOptions; },\n /**\n * @param {?} pageSizeOptions\n * @return {?}\n */\n set: function (pageSizeOptions) {\n this._pageSizeOptions = pageSizeOptions;\n this._updateDisplayedPageSizeOptions();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatPaginator.prototype.ngOnInit = function () {\n this._initialized = true;\n this._updateDisplayedPageSizeOptions();\n };\n /**\n * @return {?}\n */\n MatPaginator.prototype.ngOnDestroy = function () {\n this._intlChanges.unsubscribe();\n };\n /**\n * Advances to the next page if it exists.\n * @return {?}\n */\n MatPaginator.prototype.nextPage = function () {\n if (!this.hasNextPage()) {\n return;\n }\n this.pageIndex++;\n this._emitPageEvent();\n };\n /**\n * Move back to the previous page if it exists.\n * @return {?}\n */\n MatPaginator.prototype.previousPage = function () {\n if (!this.hasPreviousPage()) {\n return;\n }\n this.pageIndex--;\n this._emitPageEvent();\n };\n /**\n * Whether there is a previous page.\n * @return {?}\n */\n MatPaginator.prototype.hasPreviousPage = function () {\n return this.pageIndex >= 1 && this.pageSize != 0;\n };\n /**\n * Whether there is a next page.\n * @return {?}\n */\n MatPaginator.prototype.hasNextPage = function () {\n var /** @type {?} */ numberOfPages = Math.ceil(this.length / this.pageSize) - 1;\n return this.pageIndex < numberOfPages && this.pageSize != 0;\n };\n /**\n * Changes the page size so that the first item displayed on the page will still be\n * displayed using the new page size.\n *\n * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n * switching so that the page size is 5 will set the third page as the current page so\n * that the 10th item will still be displayed.\n * @param {?} pageSize\n * @return {?}\n */\n MatPaginator.prototype._changePageSize = function (pageSize) {\n // Current page needs to be updated to reflect the new page size. Navigate to the page\n // containing the previous page's first item.\n var /** @type {?} */ startIndex = this.pageIndex * this.pageSize;\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n this.pageSize = pageSize;\n this._emitPageEvent();\n };\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n * @return {?}\n */\n MatPaginator.prototype._updateDisplayedPageSizeOptions = function () {\n if (!this._initialized) {\n return;\n }\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.pageSize) {\n this._pageSize = this.pageSizeOptions.length != 0 ?\n this.pageSizeOptions[0] :\n DEFAULT_PAGE_SIZE;\n }\n this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) == -1) {\n this._displayedPageSizeOptions.push(this.pageSize);\n }\n // Sort the numbers using a number-specific sort function.\n this._displayedPageSizeOptions.sort(function (a, b) { return a - b; });\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Emits an event notifying that a change of the paginator's properties has been triggered.\n * @return {?}\n */\n MatPaginator.prototype._emitPageEvent = function () {\n this.page.next({\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length\n });\n };\n MatPaginator.decorators = [\n { type: Component, args: [{selector: 'mat-paginator',\n exportAs: 'matPaginator',\n template: \"<div class=\\\"mat-paginator-page-size\\\"><div class=\\\"mat-paginator-page-size-label\\\">{{_intl.itemsPerPageLabel}}</div><mat-form-field *ngIf=\\\"_displayedPageSizeOptions.length > 1\\\" class=\\\"mat-paginator-page-size-select\\\"><mat-select [value]=\\\"pageSize\\\" [aria-label]=\\\"_intl.itemsPerPageLabel\\\" (change)=\\\"_changePageSize($event.value)\\\"><mat-option *ngFor=\\\"let pageSizeOption of _displayedPageSizeOptions\\\" [value]=\\\"pageSizeOption\\\">{{pageSizeOption}}</mat-option></mat-select></mat-form-field><div *ngIf=\\\"_displayedPageSizeOptions.length <= 1\\\">{{pageSize}}</div></div><div class=\\\"mat-paginator-range-label\\\">{{_intl.getRangeLabel(pageIndex, pageSize, length)}}</div><button mat-icon-button type=\\\"button\\\" class=\\\"mat-paginator-navigation-previous\\\" (click)=\\\"previousPage()\\\" [attr.aria-label]=\\\"_intl.previousPageLabel\\\" [matTooltip]=\\\"_intl.previousPageLabel\\\" [matTooltipPosition]=\\\"'above'\\\" [disabled]=\\\"!hasPreviousPage()\\\"><div class=\\\"mat-paginator-increment\\\"></div></button> <button mat-icon-button type=\\\"button\\\" class=\\\"mat-paginator-navigation-next\\\" (click)=\\\"nextPage()\\\" [attr.aria-label]=\\\"_intl.nextPageLabel\\\" [matTooltip]=\\\"_intl.nextPageLabel\\\" [matTooltipPosition]=\\\"'above'\\\" [disabled]=\\\"!hasNextPage()\\\"><div class=\\\"mat-paginator-decrement\\\"></div></button>\",\n styles: [\".mat-paginator{display:flex;align-items:center;justify-content:flex-end;min-height:56px;padding:0 8px}.mat-paginator-page-size{display:flex;align-items:center}.mat-paginator-page-size-label{margin:0 4px}.mat-paginator-page-size-select{margin:0 4px;width:56px}.mat-paginator-range-label{margin:0 32px}.mat-paginator-increment-button+.mat-paginator-increment-button{margin:0 0 0 8px}[dir=rtl] .mat-paginator-increment-button+.mat-paginator-increment-button{margin:0 8px 0 0}.mat-paginator-decrement,.mat-paginator-increment{width:8px;height:8px}.mat-paginator-decrement,[dir=rtl] .mat-paginator-increment{transform:rotate(45deg)}.mat-paginator-increment,[dir=rtl] .mat-paginator-decrement{transform:rotate(225deg)}.mat-paginator-decrement{margin-left:12px}[dir=rtl] .mat-paginator-decrement{margin-right:12px}.mat-paginator-increment{margin-left:16px}[dir=rtl] .mat-paginator-increment{margin-right:16px}\"],\n host: {\n 'class': 'mat-paginator',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPaginator.ctorParameters = function () { return [\n { type: MatPaginatorIntl, },\n { type: ChangeDetectorRef, },\n ]; };\n MatPaginator.propDecorators = {\n 'pageIndex': [{ type: Input },],\n 'length': [{ type: Input },],\n 'pageSize': [{ type: Input },],\n 'pageSizeOptions': [{ type: Input },],\n 'page': [{ type: Output },],\n };\n return MatPaginator;\n}());\n\nvar MatPaginatorModule = (function () {\n function MatPaginatorModule() {\n }\n MatPaginatorModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatButtonModule,\n MatSelectModule,\n MatTooltipModule,\n ],\n exports: [MatPaginator],\n declarations: [MatPaginator],\n providers: [MatPaginatorIntl],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatPaginatorModule.ctorParameters = function () { return []; };\n return MatPaginatorModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatPaginatorModule, PageEvent, MatPaginator, MatPaginatorIntl };\n//# sourceMappingURL=paginator.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, Input, NgModule, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * <mat-progress-bar> component.\n */\nvar MatProgressBar = (function () {\n function MatProgressBar() {\n /**\n * Color of the progress bar.\n */\n this.color = 'primary';\n this._value = 0;\n this._bufferValue = 0;\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n this.mode = 'determinate';\n }\n Object.defineProperty(MatProgressBar.prototype, \"value\", {\n /**\n * Value of the progressbar. Defaults to zero. Mirrored to aria-valuenow.\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._value = clamp(v || 0); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressBar.prototype, \"bufferValue\", {\n /**\n * Buffer value of the progress bar. Defaults to zero.\n * @return {?}\n */\n get: function () { return this._bufferValue; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._bufferValue = clamp(v || 0); },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the current transform value for the progress bar's primary indicator.\n * @return {?}\n */\n MatProgressBar.prototype._primaryTransform = function () {\n var /** @type {?} */ scale = this.value / 100;\n return { transform: \"scaleX(\" + scale + \")\" };\n };\n /**\n * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n * @return {?}\n */\n MatProgressBar.prototype._bufferTransform = function () {\n if (this.mode == 'buffer') {\n var /** @type {?} */ scale = this.bufferValue / 100;\n return { transform: \"scaleX(\" + scale + \")\" };\n }\n };\n MatProgressBar.decorators = [\n { type: Component, args: [{selector: 'mat-progress-bar',\n exportAs: 'matProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'value',\n '[attr.mode]': 'mode',\n '[class.mat-primary]': 'color == \"primary\"',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n 'class': 'mat-progress-bar',\n },\n template: \"<div class=\\\"mat-progress-bar-background mat-progress-bar-element\\\"></div><div class=\\\"mat-progress-bar-buffer mat-progress-bar-element\\\" [ngStyle]=\\\"_bufferTransform()\\\"></div><div class=\\\"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\\\" [ngStyle]=\\\"_primaryTransform()\\\"></div><div class=\\\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\\\"></div>\",\n styles: [\".mat-progress-bar{display:block;height:5px;overflow:hidden;position:relative;transform:translateZ(0);transition:opacity 250ms linear;width:100%}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{background-repeat:repeat-x;background-size:10px 4px;display:none}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:'';display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{animation:mat-progress-bar-primary-indeterminate-translate 2s infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{animation:mat-progress-bar-primary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{animation:mat-progress-bar-secondary-indeterminate-translate 2s infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{animation:mat-progress-bar-secondary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(.5,0,.70173,.49582);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(.30244,.38135,.55,.95635);transform:translateX(83.67142%)}100%{transform:translateX(200.61106%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.33473,.12482,.78584,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.66148)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:translateX(37.65191%)}48.35%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:translateX(84.38617%)}100%{transform:translateX(160.27778%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:scaleX(.4571)}44.15%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:scaleX(.72796)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-10px)}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressBar.ctorParameters = function () { return []; };\n MatProgressBar.propDecorators = {\n 'color': [{ type: Input },],\n 'value': [{ type: Input },],\n 'bufferValue': [{ type: Input },],\n 'mode': [{ type: Input },],\n };\n return MatProgressBar;\n}());\n/**\n * Clamps a value to be between two numbers, by default 0 and 100.\n * @param {?} v\n * @param {?=} min\n * @param {?=} max\n * @return {?}\n */\nfunction clamp(v, min, max) {\n if (min === void 0) { min = 0; }\n if (max === void 0) { max = 100; }\n return Math.max(min, Math.min(max, v));\n}\n\nvar MatProgressBarModule = (function () {\n function MatProgressBarModule() {\n }\n MatProgressBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatProgressBar, MatCommonModule],\n declarations: [MatProgressBar],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressBarModule.ctorParameters = function () { return []; };\n return MatProgressBarModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatProgressBarModule, MatProgressBar };\n//# sourceMappingURL=progress-bar.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, NgModule, Optional, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { MatCommonModule, mixinColor } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * \\@docs-private\n */\nvar MatProgressSpinnerBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatProgressSpinnerBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatProgressSpinnerBase;\n}());\nvar _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\nvar INDETERMINATE_ANIMATION_TEMPLATE = \"\\n @keyframes mat-progress-spinner-stroke-rotate-DIAMETER {\\n 0% { stroke-dashoffset: START_VALUE; transform: rotate(0); }\\n 12.5% { stroke-dashoffset: END_VALUE; transform: rotate(0); }\\n 12.51% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\\n 25% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\\n\\n 25.1% { stroke-dashoffset: START_VALUE; transform: rotate(270deg); }\\n 37.5% { stroke-dashoffset: END_VALUE; transform: rotate(270deg); }\\n 37.51% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\\n 50% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\\n\\n 50.01% { stroke-dashoffset: START_VALUE; transform: rotate(180deg); }\\n 62.5% { stroke-dashoffset: END_VALUE; transform: rotate(180deg); }\\n 62.51% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\\n 75% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\\n\\n 75.01% { stroke-dashoffset: START_VALUE; transform: rotate(90deg); }\\n 87.5% { stroke-dashoffset: END_VALUE; transform: rotate(90deg); }\\n 87.51% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\\n 100% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\\n }\\n\";\n/**\n * <mat-progress-spinner> component.\n */\nvar MatProgressSpinner = (function (_super) {\n __extends(MatProgressSpinner, _super);\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} platform\n * @param {?} _document\n */\n function MatProgressSpinner(_renderer, _elementRef, platform, _document) {\n var _this = _super.call(this, _renderer, _elementRef) || this;\n _this._renderer = _renderer;\n _this._elementRef = _elementRef;\n _this._document = _document;\n _this._baseSize = 100;\n _this._baseStrokeWidth = 10;\n _this._fallbackAnimation = false;\n /**\n * The width and height of the host element. Will grow with stroke width. *\n */\n _this._elementSize = _this._baseSize;\n _this._diameter = _this._baseSize;\n /**\n * Stroke width of the progress spinner.\n */\n _this.strokeWidth = 10;\n /**\n * Mode of the progress circle\n */\n _this.mode = 'determinate';\n _this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\n // On IE and Edge, we can't animate the `stroke-dashoffset`\n // reliably so we fall back to a non-spec animation.\n var animationClass = _this._fallbackAnimation ?\n 'mat-progress-spinner-indeterminate-fallback-animation' :\n 'mat-progress-spinner-indeterminate-animation';\n _renderer.addClass(_elementRef.nativeElement, animationClass);\n return _this;\n }\n Object.defineProperty(MatProgressSpinner.prototype, \"diameter\", {\n /**\n * The diameter of the progress spinner (will set width and height of svg).\n * @return {?}\n */\n get: function () {\n return this._diameter;\n },\n /**\n * @param {?} size\n * @return {?}\n */\n set: function (size) {\n this._setDiameterAndInitStyles(size);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"value\", {\n /**\n * Value of the progress circle.\n * @return {?}\n */\n get: function () {\n return this.mode === 'determinate' ? this._value : 0;\n },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (newValue != null && this.mode === 'determinate') {\n this._value = Math.max(0, Math.min(100, newValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatProgressSpinner.prototype.ngOnChanges = function (changes) {\n if (changes.strokeWidth || changes.diameter) {\n this._elementSize =\n this._diameter + Math.max(this.strokeWidth - this._baseStrokeWidth, 0);\n }\n };\n Object.defineProperty(MatProgressSpinner.prototype, \"_circleRadius\", {\n /**\n * The radius of the spinner, adjusted for stroke width.\n * @return {?}\n */\n get: function () {\n return (this.diameter - this._baseStrokeWidth) / 2;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"_viewBox\", {\n /**\n * The view box of the spinner's svg element.\n * @return {?}\n */\n get: function () {\n return \"0 0 \" + this._elementSize + \" \" + this._elementSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"_strokeCircumference\", {\n /**\n * The stroke circumference of the svg circle.\n * @return {?}\n */\n get: function () {\n return 2 * Math.PI * this._circleRadius;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatProgressSpinner.prototype, \"_strokeDashOffset\", {\n /**\n * The dash offset of the svg circle.\n * @return {?}\n */\n get: function () {\n if (this.mode === 'determinate') {\n return this._strokeCircumference * (100 - this._value) / 100;\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the diameter and adds diameter-specific styles if necessary.\n * @param {?} size\n * @return {?}\n */\n MatProgressSpinner.prototype._setDiameterAndInitStyles = function (size) {\n this._diameter = size;\n if (!MatProgressSpinner.diameters.has(this.diameter) && !this._fallbackAnimation) {\n this._attachStyleNode();\n }\n };\n /**\n * Dynamically generates a style tag containing the correct animation for this diameter.\n * @return {?}\n */\n MatProgressSpinner.prototype._attachStyleNode = function () {\n var /** @type {?} */ styleTag = this._renderer.createElement('style');\n styleTag.textContent = this._getAnimationText();\n this._renderer.appendChild(this._document.head, styleTag);\n MatProgressSpinner.diameters.add(this.diameter);\n };\n /**\n * Generates animation styles adjusted for the spinner's diameter.\n * @return {?}\n */\n MatProgressSpinner.prototype._getAnimationText = function () {\n return INDETERMINATE_ANIMATION_TEMPLATE\n .replace(/START_VALUE/g, \"\" + 0.95 * this._strokeCircumference)\n .replace(/END_VALUE/g, \"\" + 0.2 * this._strokeCircumference)\n .replace(/DIAMETER/g, \"\" + this.diameter);\n };\n /**\n * Tracks diameters of existing instances to de-dupe generated styles (default d = 100)\n */\n MatProgressSpinner.diameters = new Set([100]);\n MatProgressSpinner.decorators = [\n { type: Component, args: [{selector: 'mat-progress-spinner',\n exportAs: 'matProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'mat-progress-spinner',\n '[style.width.px]': '_elementSize',\n '[style.height.px]': '_elementSize',\n '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n '[attr.aria-valuenow]': 'value',\n '[attr.mode]': 'mode',\n },\n inputs: ['color'],\n template: \"<svg [style.width.px]=\\\"_elementSize\\\" [style.height.px]=\\\"_elementSize\\\" [attr.viewBox]=\\\"_viewBox\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" focusable=\\\"false\\\"><circle cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.transform.rotate]=\\\"'360deg'\\\" [style.stroke-width.px]=\\\"strokeWidth\\\"></circle></svg>\",\n styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:translate(-50%,-50%) rotate(-90deg);top:50%;left:50%;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.1%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.01%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.01%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressSpinner.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatProgressSpinner.propDecorators = {\n 'diameter': [{ type: Input },],\n 'strokeWidth': [{ type: Input },],\n 'mode': [{ type: Input },],\n 'value': [{ type: Input },],\n };\n return MatProgressSpinner;\n}(_MatProgressSpinnerMixinBase));\n/**\n * <mat-spinner> component.\n *\n * This is a component definition to be used as a convenience reference to create an\n * indeterminate <mat-progress-spinner> instance.\n */\nvar MatSpinner = (function (_super) {\n __extends(MatSpinner, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} platform\n * @param {?} document\n */\n function MatSpinner(renderer, elementRef, platform, document) {\n var _this = _super.call(this, renderer, elementRef, platform, document) || this;\n _this.mode = 'indeterminate';\n return _this;\n }\n MatSpinner.decorators = [\n { type: Component, args: [{selector: 'mat-spinner',\n host: {\n 'role': 'progressbar',\n 'mode': 'indeterminate',\n 'class': 'mat-spinner mat-progress-spinner',\n '[style.width.px]': '_elementSize',\n '[style.height.px]': '_elementSize',\n },\n inputs: ['color'],\n template: \"<svg [style.width.px]=\\\"_elementSize\\\" [style.height.px]=\\\"_elementSize\\\" [attr.viewBox]=\\\"_viewBox\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" focusable=\\\"false\\\"><circle cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.transform.rotate]=\\\"'360deg'\\\" [style.stroke-width.px]=\\\"strokeWidth\\\"></circle></svg>\",\n styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:translate(-50%,-50%) rotate(-90deg);top:50%;left:50%;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.1%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.01%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.01%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.51%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSpinner.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n return MatSpinner;\n}(MatProgressSpinner));\n\nvar MatProgressSpinnerModule = (function () {\n function MatProgressSpinnerModule() {\n }\n MatProgressSpinnerModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule, PlatformModule],\n exports: [\n MatProgressSpinner,\n MatSpinner,\n MatCommonModule\n ],\n declarations: [\n MatProgressSpinner,\n MatSpinner\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatProgressSpinnerModule.ctorParameters = function () { return []; };\n return MatProgressSpinnerModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatProgressSpinnerModule, MatProgressSpinnerBase, _MatProgressSpinnerMixinBase, MatProgressSpinner, MatSpinner };\n//# sourceMappingURL=progress-spinner.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VIEWPORT_RULER_PROVIDER } from '@angular/cdk/overlay';\nimport { MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER, UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\n\n// Increasing integer for generating unique ids for radio components.\nvar nextUniqueId = 0;\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * \\@docs-private\n */\nvar MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatRadioGroup; }),\n multi: true\n};\n/**\n * Change event object emitted by MatRadio and MatRadioGroup.\n */\nvar MatRadioChange = (function () {\n function MatRadioChange() {\n }\n return MatRadioChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatRadioGroupBase = (function () {\n function MatRadioGroupBase() {\n }\n return MatRadioGroupBase;\n}());\nvar _MatRadioGroupMixinBase = mixinDisabled(MatRadioGroupBase);\n/**\n * A group of radio buttons. May contain one or more `<mat-radio-button>` elements.\n */\nvar MatRadioGroup = (function (_super) {\n __extends(MatRadioGroup, _super);\n /**\n * @param {?} _changeDetector\n */\n function MatRadioGroup(_changeDetector) {\n var _this = _super.call(this) || this;\n _this._changeDetector = _changeDetector;\n /**\n * Selected value for group. Should equal the value of the selected radio button if there *is*\n * a corresponding radio button with a matching value. If there is *not* such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n _this._value = null;\n /**\n * The HTML name attribute applied to radio buttons in this group.\n */\n _this._name = \"mat-radio-group-\" + nextUniqueId++;\n /**\n * The currently selected radio button. Should match value.\n */\n _this._selected = null;\n /**\n * Whether the `value` has been set to its initial value.\n */\n _this._isInitialized = false;\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n */\n _this._labelPosition = 'after';\n /**\n * Whether the radio group is disabled.\n */\n _this._disabled = false;\n /**\n * Whether the radio group is required.\n */\n _this._required = false;\n /**\n * The method to be called in order to update ngModel\n */\n _this._controlValueAccessorChangeFn = function () { };\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * \\@docs-private\n */\n _this.onTouched = function () { };\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type-\"radio\">`).\n */\n _this.change = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatRadioGroup.prototype, \"name\", {\n /**\n * Name of the radio button group. All radio buttons inside this group will use this name.\n * @return {?}\n */\n get: function () { return this._name; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._name = value;\n this._updateRadioButtonNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"align\", {\n /**\n * Alignment of the radio-buttons relative to their labels. Can be 'before' or 'after'.\n * @deprecated\n * @return {?}\n */\n get: function () {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"labelPosition\", {\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n * @return {?}\n */\n get: function () {\n return this._labelPosition;\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._labelPosition = (v == 'before') ? 'before' : 'after';\n this._markRadiosForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"value\", {\n /**\n * Value of the radio button.\n * @return {?}\n */\n get: function () { return this._value; },\n /**\n * @param {?} newValue\n * @return {?}\n */\n set: function (newValue) {\n if (this._value != newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatRadioGroup.prototype._checkSelectedRadioButton = function () {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n };\n Object.defineProperty(MatRadioGroup.prototype, \"selected\", {\n /**\n * Whether the radio button is selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} selected\n * @return {?}\n */\n set: function (selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"disabled\", {\n /**\n * Whether the radio group is disabled\n * @return {?}\n */\n get: function () { return this._disabled; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioGroup.prototype, \"required\", {\n /**\n * Whether the radio group is required\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n * @return {?}\n */\n MatRadioGroup.prototype.ngAfterContentInit = function () {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n };\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n * @return {?}\n */\n MatRadioGroup.prototype._touch = function () {\n if (this.onTouched) {\n this.onTouched();\n }\n };\n /**\n * @return {?}\n */\n MatRadioGroup.prototype._updateRadioButtonNames = function () {\n var _this = this;\n if (this._radios) {\n this._radios.forEach(function (radio) {\n radio.name = _this.name;\n });\n }\n };\n /**\n * Updates the `selected` radio button from the internal _value state.\n * @return {?}\n */\n MatRadioGroup.prototype._updateSelectedRadioFromValue = function () {\n var _this = this;\n // If the value already matches the selected radio, do nothing.\n var /** @type {?} */ isAlreadySelected = this._selected != null && this._selected.value == this._value;\n if (this._radios != null && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(function (radio) {\n radio.checked = _this.value == radio.value;\n if (radio.checked) {\n _this._selected = radio;\n }\n });\n }\n };\n /**\n * Dispatch change event with current selection and group value.\n * @return {?}\n */\n MatRadioGroup.prototype._emitChangeEvent = function () {\n if (this._isInitialized) {\n var /** @type {?} */ event_1 = new MatRadioChange();\n event_1.source = this._selected;\n event_1.value = this._value;\n this.change.emit(event_1);\n }\n };\n /**\n * @return {?}\n */\n MatRadioGroup.prototype._markRadiosForCheck = function () {\n if (this._radios) {\n this._radios.forEach(function (radio) { return radio._markForCheck(); });\n }\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value\n * @return {?}\n */\n MatRadioGroup.prototype.writeValue = function (value) {\n this.value = value;\n this._changeDetector.markForCheck();\n };\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be registered.\n * @return {?}\n */\n MatRadioGroup.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\n };\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be registered.\n * @return {?}\n */\n MatRadioGroup.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param {?} isDisabled Whether the control should be disabled.\n * @return {?}\n */\n MatRadioGroup.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n };\n MatRadioGroup.decorators = [\n { type: Directive, args: [{\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-radio-group',\n },\n inputs: ['disabled'],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRadioGroup.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n ]; };\n MatRadioGroup.propDecorators = {\n 'change': [{ type: Output },],\n '_radios': [{ type: ContentChildren, args: [forwardRef(function () { return MatRadioButton; }),] },],\n 'name': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'required': [{ type: Input },],\n };\n return MatRadioGroup;\n}(_MatRadioGroupMixinBase));\n/**\n * \\@docs-private\n */\nvar MatRadioButtonBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatRadioButtonBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatRadioButtonBase;\n}());\n// As per Material design specifications the selection control radio should use the accent color\n// palette by default. https://material.io/guidelines/components/selection-controls.html\nvar _MatRadioButtonMixinBase = mixinColor(mixinDisableRipple(MatRadioButtonBase), 'accent');\n/**\n * A radio-button. May be inside of\n */\nvar MatRadioButton = (function (_super) {\n __extends(MatRadioButton, _super);\n /**\n * @param {?} radioGroup\n * @param {?} elementRef\n * @param {?} renderer\n * @param {?} _changeDetector\n * @param {?} _focusMonitor\n * @param {?} _radioDispatcher\n */\n function MatRadioButton(radioGroup, elementRef, renderer, _changeDetector, _focusMonitor, _radioDispatcher) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._changeDetector = _changeDetector;\n _this._focusMonitor = _focusMonitor;\n _this._radioDispatcher = _radioDispatcher;\n _this._uniqueId = \"mat-radio-\" + ++nextUniqueId;\n /**\n * The unique ID for the radio button.\n */\n _this.id = _this._uniqueId;\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as `<input type-\"radio\">`).\n */\n _this.change = new EventEmitter();\n /**\n * Whether this radio is checked.\n */\n _this._checked = false;\n /**\n * Value assigned to this radio.\n */\n _this._value = null;\n /**\n * Unregister function for _radioDispatcher *\n */\n _this._removeUniqueSelectionListener = function () { };\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n _this.radioGroup = radioGroup;\n _this._removeUniqueSelectionListener =\n _radioDispatcher.listen(function (id, name) {\n if (id != _this.id && name == _this.name) {\n _this.checked = false;\n }\n });\n return _this;\n }\n Object.defineProperty(MatRadioButton.prototype, \"checked\", {\n /**\n * Whether this radio button is checked.\n * @return {?}\n */\n get: function () {\n return this._checked;\n },\n /**\n * @param {?} newCheckedState\n * @return {?}\n */\n set: function (newCheckedState) {\n if (this._checked != newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value != this.value) {\n this.radioGroup.selected = this;\n }\n else if (!newCheckedState && this.radioGroup && this.radioGroup.value == this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n if (newCheckedState) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"value\", {\n /**\n * The value of this radio button.\n * @return {?}\n */\n get: function () {\n return this._value;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (this._value != value) {\n this._value = value;\n if (this.radioGroup != null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value == value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"align\", {\n /**\n * Whether or not the radio-button should appear before or after the label.\n * @deprecated\n * @return {?}\n */\n get: function () {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"labelPosition\", {\n /**\n * Whether the label should appear after or before the radio button. Defaults to 'after'\n * @return {?}\n */\n get: function () {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._labelPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"disabled\", {\n /**\n * Whether the radio button is disabled.\n * @return {?}\n */\n get: function () {\n return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disabled = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"required\", {\n /**\n * Whether the radio button is required.\n * @return {?}\n */\n get: function () {\n return this._required || (this.radioGroup && this.radioGroup.required);\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._required = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatRadioButton.prototype, \"inputId\", {\n /**\n * ID of the native input element inside `<mat-radio-button>`\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n /**\n * Focuses the radio button.\n * @return {?}\n */\n MatRadioButton.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n };\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n * @return {?}\n */\n MatRadioButton.prototype._markForCheck = function () {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n };\n /**\n * @return {?}\n */\n MatRadioButton.prototype.ngOnInit = function () {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n };\n /**\n * @return {?}\n */\n MatRadioButton.prototype.ngAfterViewInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatRadioButton.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n this._removeUniqueSelectionListener();\n };\n /**\n * Dispatch change event with current value.\n * @return {?}\n */\n MatRadioButton.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatRadioChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\n };\n /**\n * @return {?}\n */\n MatRadioButton.prototype._isRippleDisabled = function () {\n return this.disableRipple || this.disabled;\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatRadioButton.prototype._onInputClick = function (event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n };\n /**\n * Triggered when the radio button received a click or the input recognized any change.\n * Clicking on a label element, will trigger a change event on the associated input.\n * @param {?} event\n * @return {?}\n */\n MatRadioButton.prototype._onInputChange = function (event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n var /** @type {?} */ groupValueChanged = this.radioGroup && this.value != this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n this.radioGroup._touch();\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n };\n /**\n * Function is called whenever the focus changes for the input element.\n * @param {?} focusOrigin\n * @return {?}\n */\n MatRadioButton.prototype._onInputFocusChange = function (focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n if (this.radioGroup) {\n this.radioGroup._touch();\n }\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n }\n };\n MatRadioButton.decorators = [\n { type: Component, args: [{selector: 'mat-radio-button',\n template: \"<label [attr.for]=\\\"inputId\\\" class=\\\"mat-radio-label\\\" #label><div class=\\\"mat-radio-container\\\"><div class=\\\"mat-radio-outer-circle\\\"></div><div class=\\\"mat-radio-inner-circle\\\"></div><div mat-ripple class=\\\"mat-radio-ripple\\\" [matRippleTrigger]=\\\"label\\\" [matRippleDisabled]=\\\"_isRippleDisabled()\\\" [matRippleCentered]=\\\"true\\\"></div></div><input #input class=\\\"mat-radio-input cdk-visually-hidden\\\" type=\\\"radio\\\" [id]=\\\"inputId\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [required]=\\\"required\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onInputChange($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-radio-label-content\\\" [class.mat-radio-label-before]=\\\"labelPosition == 'before'\\\"><span style=\\\"display:none\\\">&nbsp;</span><ng-content></ng-content></div></label>\",\n styles: [\".mat-radio-button{display:inline-block}.mat-radio-label{cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;height:20px;left:0;position:absolute;top:0;transition:transform ease 280ms,background-color ease 280ms;width:20px;transform:scale(.001)}.mat-radio-checked .mat-radio-inner-circle{transform:scale(.5)}.mat-radio-label-content{display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-ripple{position:absolute;left:-15px;top:-15px;right:-15px;bottom:-15px;border-radius:50%;z-index:1;pointer-events:none}\"],\n inputs: ['color', 'disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matRadioButton',\n host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[attr.id]': 'id',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRadioButton.ctorParameters = function () { return [\n { type: MatRadioGroup, decorators: [{ type: Optional },] },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: FocusMonitor, },\n { type: UniqueSelectionDispatcher, },\n ]; };\n MatRadioButton.propDecorators = {\n 'id': [{ type: Input },],\n 'name': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'checked': [{ type: Input },],\n 'value': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'required': [{ type: Input },],\n 'change': [{ type: Output },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n };\n return MatRadioButton;\n}(_MatRadioButtonMixinBase));\n\nvar MatRadioModule = (function () {\n function MatRadioModule() {\n }\n MatRadioModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatRippleModule, MatCommonModule, A11yModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER, VIEWPORT_RULER_PROVIDER],\n declarations: [MatRadioGroup, MatRadioButton],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRadioModule.ctorParameters = function () { return []; };\n return MatRadioModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatRadioModule, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioChange, MatRadioGroupBase, _MatRadioGroupMixinBase, MatRadioGroup, MatRadioButtonBase, _MatRadioButtonMixinBase, MatRadioButton };\n//# sourceMappingURL=radio.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, Inject, Input, NgModule, NgZone, Optional, Output, Renderer2, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { RxChain, filter, first, startWith, takeUntil } from '@angular/cdk/rxjs';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @param {?} position\n * @return {?}\n */\nfunction throwMatDuplicatedDrawerError(position) {\n throw Error(\"A drawer was already declared for 'position=\\\"\" + position + \"\\\"'\");\n}\n/**\n * Drawer toggle promise result.\n * @deprecated\n */\nvar MatDrawerToggleResult = (function () {\n /**\n * @param {?} type\n * @param {?} animationFinished\n */\n function MatDrawerToggleResult(type, animationFinished) {\n this.type = type;\n this.animationFinished = animationFinished;\n }\n return MatDrawerToggleResult;\n}());\nvar MatDrawerContent = (function () {\n /**\n * @param {?} _changeDetectorRef\n * @param {?} _container\n */\n function MatDrawerContent(_changeDetectorRef, _container) {\n this._changeDetectorRef = _changeDetectorRef;\n this._container = _container;\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n this._margins = { left: 0, right: 0 };\n }\n /**\n * @return {?}\n */\n MatDrawerContent.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._container._contentMargins.subscribe(function (margins) {\n _this._margins = margins;\n _this._changeDetectorRef.markForCheck();\n });\n };\n MatDrawerContent.decorators = [\n { type: Component, args: [{selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.marginLeft.px]': '_margins.left',\n '[style.marginRight.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawerContent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: MatDrawerContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatDrawerContainer; }),] },] },\n ]; };\n return MatDrawerContent;\n}());\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nvar MatDrawer = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _doc\n */\n function MatDrawer(_elementRef, _focusTrapFactory, _doc) {\n var _this = this;\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._doc = _doc;\n this._elementFocusedBeforeDrawerWasOpened = null;\n /**\n * Whether the drawer is initialized. Used for disabling the initial animation.\n */\n this._enableAnimations = false;\n this._position = 'start';\n this._mode = 'over';\n this._disableClose = false;\n /**\n * Whether the drawer is opened.\n */\n this._opened = false;\n /**\n * Emits whenever the drawer has started animating.\n */\n this._animationStarted = new EventEmitter();\n /**\n * Whether the drawer is animating. Used to prevent overlapping animations.\n */\n this._isAnimating = false;\n /**\n * Current state of the sidenav animation.\n */\n this._animationState = 'void';\n /**\n * Event emitted when the drawer is fully opened.\n */\n this.onOpen = new EventEmitter();\n /**\n * Event emitted when the drawer is fully closed.\n */\n this.onClose = new EventEmitter();\n /**\n * Event emitted when the drawer's position changes.\n */\n this.onPositionChanged = new EventEmitter();\n /**\n * @deprecated\n */\n this.onAlignChanged = new EventEmitter();\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n this._modeChanged = new Subject();\n this.onOpen.subscribe(function () {\n if (_this._doc) {\n _this._elementFocusedBeforeDrawerWasOpened = _this._doc.activeElement;\n }\n if (_this._isFocusTrapEnabled && _this._focusTrap) {\n _this._focusTrap.focusInitialElementWhenReady();\n }\n });\n this.onClose.subscribe(function () { return _this._restoreFocus(); });\n }\n Object.defineProperty(MatDrawer.prototype, \"position\", {\n /**\n * The side that the drawer is attached to.\n * @return {?}\n */\n get: function () { return this._position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onAlignChanged.emit();\n this.onPositionChanged.emit();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"align\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.position; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this.position = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"mode\", {\n /**\n * Mode of the drawer; one of 'over', 'push' or 'side'.\n * @return {?}\n */\n get: function () { return this._mode; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._mode = value;\n this._modeChanged.next();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"disableClose\", {\n /**\n * Whether the drawer can be closed with the escape key or by clicking on the backdrop.\n * @return {?}\n */\n get: function () { return this._disableClose; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._disableClose = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawer.prototype, \"_isFocusTrapEnabled\", {\n /**\n * @return {?}\n */\n get: function () {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n return this.opened && this.mode !== 'side';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n * @return {?}\n */\n MatDrawer.prototype._restoreFocus = function () {\n var /** @type {?} */ activeEl = this._doc && this._doc.activeElement;\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n this._elementFocusedBeforeDrawerWasOpened.focus();\n }\n else {\n this._elementRef.nativeElement.blur();\n }\n }\n this._elementFocusedBeforeDrawerWasOpened = null;\n };\n /**\n * @return {?}\n */\n MatDrawer.prototype.ngAfterContentInit = function () {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n this._enableAnimations = true;\n };\n /**\n * @return {?}\n */\n MatDrawer.prototype.ngOnDestroy = function () {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n };\n Object.defineProperty(MatDrawer.prototype, \"opened\", {\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n * @return {?}\n */\n get: function () { return this._opened; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this.toggle(coerceBooleanProperty(v));\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Open the drawer.\n * @return {?}\n */\n MatDrawer.prototype.open = function () {\n return this.toggle(true);\n };\n /**\n * Close the drawer.\n * @return {?}\n */\n MatDrawer.prototype.close = function () {\n return this.toggle(false);\n };\n /**\n * Toggle this drawer.\n * @param {?=} isOpen Whether the drawer should be open.\n * @return {?}\n */\n MatDrawer.prototype.toggle = function (isOpen) {\n var _this = this;\n if (isOpen === void 0) { isOpen = !this.opened; }\n if (!this._isAnimating) {\n this._opened = isOpen;\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n }\n else {\n this._animationState = 'void';\n }\n this._currentTogglePromise = new Promise(function (resolve) {\n first.call(isOpen ? _this.onOpen : _this.onClose).subscribe(resolve);\n });\n if (this._focusTrap) {\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n }\n // TODO(crisbeto): This promise is here for backwards-compatibility.\n // It should be removed next time we do breaking changes in the drawer.\n return ((this._currentTogglePromise));\n };\n /**\n * Handles the keyboard events.\n * \\@docs-private\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype.handleKeydown = function (event) {\n if (event.keyCode === ESCAPE && !this.disableClose) {\n this.close();\n event.stopPropagation();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype._onAnimationStart = function (event) {\n this._isAnimating = true;\n this._animationStarted.emit(event);\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatDrawer.prototype._onAnimationEnd = function (event) {\n var _this = this;\n var fromState = event.fromState, toState = event.toState;\n if (toState.indexOf('open') === 0 && fromState === 'void') {\n this.onOpen.emit(new MatDrawerToggleResult('open', true));\n }\n else if (toState === 'void' && fromState.indexOf('open') === 0) {\n this.onClose.emit(new MatDrawerToggleResult('close', true));\n }\n // Note: as of Angular 4.3, the animations module seems to fire the `start` callback before\n // the end if animations are disabled. Make this call async to ensure that it still fires\n // at the appropriate time.\n Promise.resolve().then(function () {\n _this._isAnimating = false;\n _this._currentTogglePromise = null;\n });\n };\n Object.defineProperty(MatDrawer.prototype, \"_width\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n },\n enumerable: true,\n configurable: true\n });\n MatDrawer.decorators = [\n { type: Component, args: [{selector: 'mat-drawer',\n exportAs: 'matDrawer',\n template: '<ng-content></ng-content>',\n animations: [\n trigger('transform', [\n state('open, open-instant', style({\n transform: 'translate3d(0, 0, 0)',\n visibility: 'visible',\n })),\n state('void', style({\n visibility: 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n ],\n host: {\n 'class': 'mat-drawer',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\n '(keydown)': 'handleKeydown($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawer.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDrawer.propDecorators = {\n 'position': [{ type: Input },],\n 'align': [{ type: Input },],\n 'mode': [{ type: Input },],\n 'disableClose': [{ type: Input },],\n 'onOpen': [{ type: Output, args: ['open',] },],\n 'onClose': [{ type: Output, args: ['close',] },],\n 'onPositionChanged': [{ type: Output, args: ['positionChanged',] },],\n 'onAlignChanged': [{ type: Output, args: ['align-changed',] },],\n 'opened': [{ type: Input },],\n };\n return MatDrawer;\n}());\n/**\n * <mat-drawer-container> component.\n *\n * This is the parent component to one or two <mat-drawer>s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\nvar MatDrawerContainer = (function () {\n /**\n * @param {?} _dir\n * @param {?} _element\n * @param {?} _renderer\n * @param {?} _ngZone\n * @param {?} _changeDetectorRef\n */\n function MatDrawerContainer(_dir, _element, _renderer, _ngZone, _changeDetectorRef) {\n var _this = this;\n this._dir = _dir;\n this._element = _element;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Event emitted when the drawer backdrop is clicked.\n */\n this.backdropClick = new EventEmitter();\n /**\n * Emits when the component is destroyed.\n */\n this._destroyed = new Subject();\n this._contentMargins = new Subject();\n // If a `Dir` directive exists up the tree, listen direction changes and update the left/right\n // properties to point to the proper start/end.\n if (_dir != null) {\n takeUntil.call(_dir.change, this._destroyed).subscribe(function () { return _this._validateDrawers(); });\n }\n }\n Object.defineProperty(MatDrawerContainer.prototype, \"start\", {\n /**\n * The drawer child with the `start` position.\n * @return {?}\n */\n get: function () { return this._start; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDrawerContainer.prototype, \"end\", {\n /**\n * The drawer child with the `end` position.\n * @return {?}\n */\n get: function () { return this._end; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype.ngAfterContentInit = function () {\n var _this = this;\n startWith.call(this._drawers.changes, null).subscribe(function () {\n _this._validateDrawers();\n _this._drawers.forEach(function (drawer) {\n _this._watchDrawerToggle(drawer);\n _this._watchDrawerPosition(drawer);\n _this._watchDrawerMode(drawer);\n });\n if (!_this._drawers.length ||\n _this._isDrawerOpen(_this._start) ||\n _this._isDrawerOpen(_this._end)) {\n _this._updateContentMargins();\n }\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype.ngOnDestroy = function () {\n this._destroyed.next();\n this._destroyed.complete();\n };\n /**\n * Calls `open` of both start and end drawers\n * @return {?}\n */\n MatDrawerContainer.prototype.open = function () {\n this._drawers.forEach(function (drawer) { return drawer.open(); });\n };\n /**\n * Calls `close` of both start and end drawers\n * @return {?}\n */\n MatDrawerContainer.prototype.close = function () {\n this._drawers.forEach(function (drawer) { return drawer.close(); });\n };\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerToggle = function (drawer) {\n var _this = this;\n RxChain.from(drawer._animationStarted)\n .call(takeUntil, this._drawers.changes)\n .call(filter, function (event) { return event.fromState !== event.toState; })\n .subscribe(function (event) {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant') {\n _this._renderer.addClass(_this._element.nativeElement, 'mat-drawer-transition');\n }\n _this._updateContentMargins();\n _this._changeDetectorRef.markForCheck();\n });\n if (drawer.mode !== 'side') {\n takeUntil.call(merge(drawer.onOpen, drawer.onClose), this._drawers.changes).subscribe(function () {\n return _this._setContainerClass(drawer.opened);\n });\n }\n };\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerPosition = function (drawer) {\n var _this = this;\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n takeUntil.call(drawer.onPositionChanged, this._drawers.changes).subscribe(function () {\n first.call(_this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n _this._validateDrawers();\n });\n });\n };\n /**\n * Subscribes to changes in drawer mode so we can run change detection.\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._watchDrawerMode = function (drawer) {\n var _this = this;\n if (drawer) {\n takeUntil.call(drawer._modeChanged, merge(this._drawers.changes, this._destroyed))\n .subscribe(function () {\n _this._updateContentMargins();\n _this._changeDetectorRef.markForCheck();\n });\n }\n };\n /**\n * Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element.\n * @param {?} isAdd\n * @return {?}\n */\n MatDrawerContainer.prototype._setContainerClass = function (isAdd) {\n if (isAdd) {\n this._renderer.addClass(this._element.nativeElement, 'mat-drawer-opened');\n }\n else {\n this._renderer.removeClass(this._element.nativeElement, 'mat-drawer-opened');\n }\n };\n /**\n * Validate the state of the drawer children components.\n * @return {?}\n */\n MatDrawerContainer.prototype._validateDrawers = function () {\n var _this = this;\n this._start = this._end = null;\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(function (drawer) {\n if (drawer.position == 'end') {\n if (_this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n _this._end = drawer;\n }\n else {\n if (_this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n _this._start = drawer;\n }\n });\n this._right = this._left = null;\n // Detect if we're LTR or RTL.\n if (this._dir == null || this._dir.value == 'ltr') {\n this._left = this._start;\n this._right = this._end;\n }\n else {\n this._left = this._end;\n this._right = this._start;\n }\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._onBackdropClicked = function () {\n this.backdropClick.emit();\n this._closeModalDrawer();\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._closeModalDrawer = function () {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(function (drawer) { return drawer && !drawer.disableClose && drawer.mode !== 'side'; })\n .forEach(function (drawer) { /** @type {?} */ return ((drawer)).close(); });\n };\n /**\n * @return {?}\n */\n MatDrawerContainer.prototype._isShowingBackdrop = function () {\n return (this._isDrawerOpen(this._start) && ((this._start)).mode != 'side')\n || (this._isDrawerOpen(this._end) && ((this._end)).mode != 'side');\n };\n /**\n * @param {?} drawer\n * @return {?}\n */\n MatDrawerContainer.prototype._isDrawerOpen = function (drawer) {\n return drawer != null && drawer.opened;\n };\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n * @return {?}\n */\n MatDrawerContainer.prototype._updateContentMargins = function () {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n var /** @type {?} */ left = 0;\n var /** @type {?} */ right = 0;\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n }\n else if (this._left.mode == 'push') {\n var /** @type {?} */ width = this._left._width;\n left += width;\n right -= width;\n }\n }\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n }\n else if (this._right.mode == 'push') {\n var /** @type {?} */ width = this._right._width;\n right += width;\n left -= width;\n }\n }\n this._contentMargins.next({ left: left, right: right });\n };\n MatDrawerContainer.decorators = [\n { type: Component, args: [{selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n template: \"<div class=\\\"mat-drawer-backdrop\\\" (click)=\\\"_onBackdropClicked()\\\" [class.mat-drawer-shown]=\\\"_isShowingBackdrop()\\\"></div><ng-content select=\\\"mat-drawer\\\"></ng-content><ng-content select=\\\"mat-drawer-content\\\"></ng-content><mat-drawer-content *ngIf=\\\"!_content\\\" cdkScrollable><ng-content></ng-content></mat-drawer-content>\",\n styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;min-width:5vw;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-opened:not(.mat-drawer-side),.mat-drawer.mat-drawer-opening:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n host: {\n 'class': 'mat-drawer-container',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatDrawerContainer.ctorParameters = function () { return [\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n ]; };\n MatDrawerContainer.propDecorators = {\n '_drawers': [{ type: ContentChildren, args: [MatDrawer,] },],\n '_content': [{ type: ContentChild, args: [MatDrawerContent,] },],\n 'backdropClick': [{ type: Output },],\n };\n return MatDrawerContainer;\n}());\n\nvar MatSidenavContent = (function (_super) {\n __extends(MatSidenavContent, _super);\n /**\n * @param {?} changeDetectorRef\n * @param {?} container\n */\n function MatSidenavContent(changeDetectorRef, container) {\n return _super.call(this, changeDetectorRef, container) || this;\n }\n MatSidenavContent.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.marginLeft.px]': '_margins.left',\n '[style.marginRight.px]': '_margins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavContent.ctorParameters = function () { return [\n { type: ChangeDetectorRef, },\n { type: MatSidenavContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatSidenavContainer; }),] },] },\n ]; };\n return MatSidenavContent;\n}(MatDrawerContent));\nvar MatSidenav = (function (_super) {\n __extends(MatSidenav, _super);\n function MatSidenav() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._fixedInViewport = false;\n _this._fixedTopGap = 0;\n _this._fixedBottomGap = 0;\n return _this;\n }\n Object.defineProperty(MatSidenav.prototype, \"fixedInViewport\", {\n /**\n * Whether the sidenav is fixed in the viewport.\n * @return {?}\n */\n get: function () { return this._fixedInViewport; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedInViewport = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSidenav.prototype, \"fixedTopGap\", {\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n * @return {?}\n */\n get: function () { return this._fixedTopGap; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedTopGap = coerceNumberProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSidenav.prototype, \"fixedBottomGap\", {\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n * @return {?}\n */\n get: function () { return this._fixedBottomGap; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._fixedBottomGap = coerceNumberProperty(value); },\n enumerable: true,\n configurable: true\n });\n MatSidenav.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n template: '<ng-content></ng-content>',\n animations: [\n trigger('transform', [\n state('open, open-instant', style({\n transform: 'translate3d(0, 0, 0)',\n visibility: 'visible',\n })),\n state('void', style({\n visibility: 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n ],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_onAnimationStart($event)',\n '(@transform.done)': '_onAnimationEnd($event)',\n '(keydown)': 'handleKeydown($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenav.ctorParameters = function () { return []; };\n MatSidenav.propDecorators = {\n 'fixedInViewport': [{ type: Input },],\n 'fixedTopGap': [{ type: Input },],\n 'fixedBottomGap': [{ type: Input },],\n };\n return MatSidenav;\n}(MatDrawer));\nvar MatSidenavContainer = (function (_super) {\n __extends(MatSidenavContainer, _super);\n function MatSidenavContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatSidenavContainer.decorators = [\n { type: Component, args: [{selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n template: \"<div class=\\\"mat-drawer-backdrop\\\" (click)=\\\"_onBackdropClicked()\\\" [class.mat-drawer-shown]=\\\"_isShowingBackdrop()\\\"></div><ng-content select=\\\"mat-sidenav\\\"></ng-content><ng-content select=\\\"mat-sidenav-content\\\"></ng-content><mat-sidenav-content *ngIf=\\\"!_content\\\" cdkScrollable><ng-content></ng-content></mat-sidenav-content>\",\n styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;min-width:5vw;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer.mat-drawer-opened:not(.mat-drawer-side),.mat-drawer.mat-drawer-opening:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavContainer.ctorParameters = function () { return []; };\n MatSidenavContainer.propDecorators = {\n '_drawers': [{ type: ContentChildren, args: [MatSidenav,] },],\n '_content': [{ type: ContentChild, args: [MatSidenavContent,] },],\n };\n return MatSidenavContainer;\n}(MatDrawerContainer));\n\nvar MatSidenavModule = (function () {\n function MatSidenavModule() {\n }\n MatSidenavModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n A11yModule,\n OverlayModule,\n ScrollDispatchModule,\n ],\n exports: [\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSidenavModule.ctorParameters = function () { return []; };\n return MatSidenavModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSidenavModule, throwMatDuplicatedDrawerError, MatDrawerToggleResult, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer };\n//# sourceMappingURL=sidenav.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgModule, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { GestureConfig, MatCommonModule, MatRipple, MatRippleModule, applyCssTransform, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nvar nextUniqueId = 0;\nvar MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatSlideToggle; }),\n multi: true\n};\n/**\n * Change event object emitted by a MatSlideToggle.\n */\nvar MatSlideToggleChange = (function () {\n function MatSlideToggleChange() {\n }\n return MatSlideToggleChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatSlideToggleBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSlideToggleBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSlideToggleBase;\n}());\nvar _MatSlideToggleMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase)), 'accent'));\n/**\n * Represents a slidable \"switch\" toggle that can be moved between on and off.\n */\nvar MatSlideToggle = (function (_super) {\n __extends(MatSlideToggle, _super);\n /**\n * @param {?} elementRef\n * @param {?} renderer\n * @param {?} _platform\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n * @param {?} tabIndex\n */\n function MatSlideToggle(elementRef, renderer, _platform, _focusMonitor, _changeDetectorRef, tabIndex) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._platform = _platform;\n _this._focusMonitor = _focusMonitor;\n _this._changeDetectorRef = _changeDetectorRef;\n _this.onChange = function (_) { };\n _this.onTouched = function () { };\n _this._uniqueId = \"mat-slide-toggle-\" + ++nextUniqueId;\n _this._required = false;\n _this._checked = false;\n /**\n * Name value will be applied to the input element if present\n */\n _this.name = null;\n /**\n * A unique id for the slide-toggle input. If none is supplied, it will be auto-generated.\n */\n _this.id = _this._uniqueId;\n /**\n * Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n */\n _this.labelPosition = 'after';\n /**\n * Used to set the aria-label attribute on the underlying input element.\n */\n _this.ariaLabel = null;\n /**\n * Used to set the aria-labelledby attribute on the underlying input element.\n */\n _this.ariaLabelledby = null;\n /**\n * An event will be dispatched each time the slide-toggle changes its value.\n */\n _this.change = new EventEmitter();\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n Object.defineProperty(MatSlideToggle.prototype, \"required\", {\n /**\n * Whether the slide-toggle is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlideToggle.prototype, \"checked\", {\n /**\n * Whether the slide-toggle element is checked or not\n * @return {?}\n */\n get: function () { return this._checked; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._checked = !!value;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlideToggle.prototype, \"inputId\", {\n /**\n * Returns the unique id for the visual hidden input.\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSlideToggle.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._slideRenderer = new SlideToggleRenderer(this._elementRef, this._platform);\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n };\n /**\n * This function will called if the underlying input changed its value through user interaction.\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onChangeEvent = function (event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the component's `change` output.\n event.stopPropagation();\n // Sync the value from the underlying input element with the slide-toggle component.\n this.checked = this._inputElement.nativeElement.checked;\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because we don't want\n // to trigger a change event, when the `checked` variable changes programmatically.\n this._emitChangeEvent();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onInputClick = function (event) {\n // In some situations the user will release the mouse on the label element. The label element\n // redirects the click to the underlying input element and will result in a value change.\n // Prevent the default behavior if dragging, because the value will be set after drag.\n if (this._slideRenderer.dragging) {\n event.preventDefault();\n }\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `slide-toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} value\n * @return {?}\n */\n MatSlideToggle.prototype.writeValue = function (value) {\n this.checked = !!value;\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn\n * @return {?}\n */\n MatSlideToggle.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn\n * @return {?}\n */\n MatSlideToggle.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Implemented as a part of ControlValueAccessor.\n * @param {?} isDisabled\n * @return {?}\n */\n MatSlideToggle.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Focuses the slide-toggle.\n * @return {?}\n */\n MatSlideToggle.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n };\n /**\n * Toggles the checked state of the slide-toggle.\n * @return {?}\n */\n MatSlideToggle.prototype.toggle = function () {\n this.checked = !this.checked;\n };\n /**\n * Function is called whenever the focus changes for the input element.\n * @param {?} focusOrigin\n * @return {?}\n */\n MatSlideToggle.prototype._onInputFocusChange = function (focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n // For keyboard focus show a persistent ripple as focus indicator.\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n this.onTouched();\n // Fade out and clear the focus ripple if one is currently present.\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n }\n };\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n * @return {?}\n */\n MatSlideToggle.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatSlideToggleChange();\n event.source = this;\n event.checked = this.checked;\n this.onChange(this.checked);\n this.change.emit(event);\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype._onDragStart = function () {\n if (!this.disabled) {\n this._slideRenderer.startThumbDrag(this.checked);\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onDrag = function (event) {\n if (this._slideRenderer.dragging) {\n this._slideRenderer.updateThumbPosition(event.deltaX);\n }\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype._onDragEnd = function () {\n var _this = this;\n if (this._slideRenderer.dragging) {\n var /** @type {?} */ _previousChecked = this.checked;\n this.checked = this._slideRenderer.dragPercentage > 50;\n if (_previousChecked !== this.checked) {\n this._emitChangeEvent();\n }\n // The drag should be stopped outside of the current event handler, because otherwise the\n // click event will be fired before and will revert the drag change.\n setTimeout(function () { return _this._slideRenderer.stopThumbDrag(); });\n }\n };\n /**\n * Method being called whenever the label text changes.\n * @return {?}\n */\n MatSlideToggle.prototype._onLabelTextChange = function () {\n // This method is getting called whenever the label of the slide-toggle changes.\n // Since the slide-toggle uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this._changeDetectorRef.markForCheck();\n };\n MatSlideToggle.decorators = [\n { type: Component, args: [{selector: 'mat-slide-toggle',\n host: {\n 'class': 'mat-slide-toggle',\n '[id]': 'id',\n '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n },\n template: \"<label class=\\\"mat-slide-toggle-label\\\" #label><div class=\\\"mat-slide-toggle-bar\\\" [class.mat-slide-toggle-bar-no-side-margin]=\\\"!labelContent.textContent || !labelContent.textContent.trim()\\\"><input #input class=\\\"mat-slide-toggle-input cdk-visually-hidden\\\" type=\\\"checkbox\\\" [id]=\\\"inputId\\\" [required]=\\\"required\\\" [tabIndex]=\\\"tabIndex\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onChangeEvent($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-slide-toggle-thumb-container\\\" (slidestart)=\\\"_onDragStart()\\\" (slide)=\\\"_onDrag($event)\\\" (slideend)=\\\"_onDragEnd()\\\"><div class=\\\"mat-slide-toggle-thumb\\\"></div><div class=\\\"mat-slide-toggle-ripple\\\" mat-ripple [matRippleTrigger]=\\\"label\\\" [matRippleCentered]=\\\"true\\\" [matRippleDisabled]=\\\"disableRipple || disabled\\\"></div></div></div><span class=\\\"mat-slide-toggle-content\\\" #labelContent (cdkObserveContent)=\\\"_onLabelTextChange()\\\"><ng-content></ng-content></span></label>\",\n styles: [\".mat-slide-toggle{display:inline-block;height:24px;line-height:24px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px,0,0)}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;cursor:pointer}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}.mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-right:8px;margin-left:0}.mat-slide-toggle-label-before .mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0,0,0);transition:all 80ms linear;transition-property:transform;cursor:-webkit-grab;cursor:grab}.mat-slide-toggle-thumb-container.mat-dragging,.mat-slide-toggle-thumb-container:active{cursor:-webkit-grabbing;cursor:grabbing;transition-duration:0s}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-thumb{background:#fff;border:solid 1px #000}}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;border-radius:8px}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-bar{background:#fff}}.mat-slide-toggle-input{bottom:0;left:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}.mat-slide-toggle-ripple{position:absolute;top:-13px;left:-13px;height:46px;width:46px;border-radius:50%;z-index:1;pointer-events:none}\"],\n providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlideToggle.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: Platform, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatSlideToggle.propDecorators = {\n 'name': [{ type: Input },],\n 'id': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'required': [{ type: Input },],\n 'checked': [{ type: Input },],\n 'change': [{ type: Output },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n };\n return MatSlideToggle;\n}(_MatSlideToggleMixinBase));\n/**\n * Renderer for the Slide Toggle component, which separates DOM modification in its own class\n */\nvar SlideToggleRenderer = (function () {\n /**\n * @param {?} elementRef\n * @param {?} platform\n */\n function SlideToggleRenderer(elementRef, platform) {\n /**\n * Whether the thumb is currently being dragged.\n */\n this.dragging = false;\n // We only need to interact with these elements when we're on the browser, so only grab\n // the reference in that case.\n if (platform.isBrowser) {\n this._thumbEl = elementRef.nativeElement.querySelector('.mat-slide-toggle-thumb-container');\n this._thumbBarEl = elementRef.nativeElement.querySelector('.mat-slide-toggle-bar');\n }\n }\n /**\n * Initializes the drag of the slide-toggle.\n * @param {?} checked\n * @return {?}\n */\n SlideToggleRenderer.prototype.startThumbDrag = function (checked) {\n if (this.dragging) {\n return;\n }\n this._thumbBarWidth = this._thumbBarEl.clientWidth - this._thumbEl.clientWidth;\n this._thumbEl.classList.add('mat-dragging');\n this._previousChecked = checked;\n this.dragging = true;\n };\n /**\n * Resets the current drag and returns the new checked value.\n * @return {?}\n */\n SlideToggleRenderer.prototype.stopThumbDrag = function () {\n if (!this.dragging) {\n return false;\n }\n this.dragging = false;\n this._thumbEl.classList.remove('mat-dragging');\n // Reset the transform because the component will take care of the thumb position after drag.\n applyCssTransform(this._thumbEl, '');\n return this.dragPercentage > 50;\n };\n /**\n * Updates the thumb containers position from the specified distance.\n * @param {?} distance\n * @return {?}\n */\n SlideToggleRenderer.prototype.updateThumbPosition = function (distance) {\n this.dragPercentage = this._getDragPercentage(distance);\n // Calculate the moved distance based on the thumb bar width.\n var /** @type {?} */ dragX = (this.dragPercentage / 100) * this._thumbBarWidth;\n applyCssTransform(this._thumbEl, \"translate3d(\" + dragX + \"px, 0, 0)\");\n };\n /**\n * Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100.\n * @param {?} distance\n * @return {?}\n */\n SlideToggleRenderer.prototype._getDragPercentage = function (distance) {\n var /** @type {?} */ percentage = (distance / this._thumbBarWidth) * 100;\n // When the toggle was initially checked, then we have to start the drag at the end.\n if (this._previousChecked) {\n percentage += 100;\n }\n return Math.max(0, Math.min(percentage, 100));\n };\n return SlideToggleRenderer;\n}());\n\nvar MatSlideToggleModule = (function () {\n function MatSlideToggleModule() {\n }\n MatSlideToggleModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatRippleModule, MatCommonModule, PlatformModule, ObserversModule, A11yModule],\n exports: [MatSlideToggle, MatCommonModule],\n declarations: [MatSlideToggle],\n providers: [\n { provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig }\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlideToggleModule.ctorParameters = function () { return []; };\n return MatSlideToggleModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSlideToggleModule, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggleChange, MatSlideToggleBase, _MatSlideToggleMixinBase, MatSlideToggle };\n//# sourceMappingURL=slide-toggle.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { BidiModule, Directionality } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgModule, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { GestureConfig, MatCommonModule, mixinColor, mixinDisabled } from '@angular/material/core';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW, END, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs/Subscription';\n\n/**\n * Visually, a 30px separation between tick marks looks best. This is very subjective but it is\n * the default separation we chose.\n */\nvar MIN_AUTO_TICK_SEPARATION = 30;\n/**\n * The thumb gap size for a disabled slider.\n */\nvar DISABLED_THUMB_GAP = 7;\n/**\n * The thumb gap size for a non-active slider at its minimum value.\n */\nvar MIN_VALUE_NONACTIVE_THUMB_GAP = 7;\n/**\n * The thumb gap size for an active slider at its minimum value.\n */\nvar MIN_VALUE_ACTIVE_THUMB_GAP = 10;\n/**\n * Provider Expression that allows mat-slider to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and [formControl].\n */\nvar MAT_SLIDER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatSlider; }),\n multi: true\n};\n/**\n * A simple change event emitted by the MatSlider component.\n */\nvar MatSliderChange = (function () {\n function MatSliderChange() {\n }\n return MatSliderChange;\n}());\n/**\n * \\@docs-private\n */\nvar MatSliderBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSliderBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSliderBase;\n}());\nvar _MatSliderMixinBase = mixinColor(mixinDisabled(MatSliderBase), 'accent');\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `<input type=\"range\">` element.\n */\nvar MatSlider = (function (_super) {\n __extends(MatSlider, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n * @param {?} _dir\n */\n function MatSlider(renderer, elementRef, _focusMonitor, _changeDetectorRef, _dir) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._focusMonitor = _focusMonitor;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._dir = _dir;\n _this._invert = false;\n _this._max = 100;\n _this._min = 0;\n _this._step = 1;\n _this._thumbLabel = false;\n _this._tickInterval = 0;\n _this._value = null;\n _this._vertical = false;\n /**\n * Event emitted when the slider value has changed.\n */\n _this.change = new EventEmitter();\n /**\n * Event emitted when the slider thumb moves.\n */\n _this.input = new EventEmitter();\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n */\n _this.onTouched = function () { };\n _this._percent = 0;\n /**\n * Whether or not the thumb is sliding.\n * Used to determine if there should be a transition for the thumb and fill track.\n */\n _this._isSliding = false;\n /**\n * Whether or not the slider is active (clicked or sliding).\n * Used to shrink and grow the thumb as according to the Material Design spec.\n */\n _this._isActive = false;\n /**\n * The size of a tick interval as a percentage of the size of the track.\n */\n _this._tickIntervalPercent = 0;\n /**\n * The dimensions of the slider.\n */\n _this._sliderDimensions = null;\n _this._controlValueAccessorChangeFn = function () { };\n /**\n * Subscription to the Directionality change EventEmitter.\n */\n _this._dirChangeSubscription = Subscription.EMPTY;\n return _this;\n }\n Object.defineProperty(MatSlider.prototype, \"invert\", {\n /**\n * Whether the slider is inverted.\n * @return {?}\n */\n get: function () { return this._invert; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._invert = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"max\", {\n /**\n * The maximum value that the slider can have.\n * @return {?}\n */\n get: function () { return this._max; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._max = coerceNumberProperty(v, this._max);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"min\", {\n /**\n * The minimum value that the slider can have.\n * @return {?}\n */\n get: function () { return this._min; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._min = coerceNumberProperty(v, this._min);\n // If the value wasn't explicitly set by the user, set it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"step\", {\n /**\n * The values at which the thumb will snap.\n * @return {?}\n */\n get: function () { return this._step; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._step = coerceNumberProperty(v, this._step);\n if (this._step % 1 !== 0) {\n this._roundLabelTo = ((this._step.toString().split('.').pop())).length;\n }\n // Since this could modify the label, we need to notify the change detection.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"thumbLabel\", {\n /**\n * Whether or not to show the thumb label.\n * @return {?}\n */\n get: function () { return this._thumbLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._thumbLabel = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbLabelDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._thumbLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._thumbLabel = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"tickInterval\", {\n /**\n * How often to show ticks. Relative to the step so that a tick always appears on a step.\n * Ex: Tick interval of 4 with a step of 3 will draw a tick every 4 steps (every 12 values).\n * @return {?}\n */\n get: function () { return this._tickInterval; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value === 'auto') {\n this._tickInterval = 'auto';\n }\n else if (typeof value === 'number' || typeof value === 'string') {\n this._tickInterval = coerceNumberProperty(value, /** @type {?} */ (this._tickInterval));\n }\n else {\n this._tickInterval = 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_tickIntervalDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.tickInterval; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this.tickInterval = v; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"value\", {\n /**\n * Value of the slider.\n * @return {?}\n */\n get: function () {\n // If the value needs to be read and it is still uninitialized, initialize it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n return this._value;\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n if (v !== this._value) {\n this._value = coerceNumberProperty(v, this._value || 0);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"vertical\", {\n /**\n * Whether the slider is vertical.\n * @return {?}\n */\n get: function () { return this._vertical; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"displayValue\", {\n /**\n * The value to be used for display purposes.\n * @return {?}\n */\n get: function () {\n // Note that this could be improved further by rounding something like 0.999 to 1 or\n // 0.899 to 0.9, however it is very performance sensitive, because it gets called on\n // every change detection cycle.\n if (this._roundLabelTo && this.value && this.value % 1 !== 0) {\n return this.value.toFixed(this._roundLabelTo);\n }\n return this.value || 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"percent\", {\n /**\n * The percentage of the slider that coincides with the value.\n * @return {?}\n */\n get: function () { return this._clamp(this._percent); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_invertAxis\", {\n /**\n * Whether the axis of the slider is inverted.\n * (i.e. whether moving the thumb in the positive x or y direction decreases the slider's value).\n * @return {?}\n */\n get: function () {\n // Standard non-inverted mode for a vertical slider should be dragging the thumb from bottom to\n // top. However from a y-axis standpoint this is inverted.\n return this.vertical ? !this.invert : this.invert;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_isMinValue\", {\n /**\n * Whether the slider is at its minimum value.\n * @return {?}\n */\n get: function () {\n return this.percent === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbGap\", {\n /**\n * The amount of space to leave between the slider thumb and the track fill & track background\n * elements.\n * @return {?}\n */\n get: function () {\n if (this.disabled) {\n return DISABLED_THUMB_GAP;\n }\n if (this._isMinValue && !this.thumbLabel) {\n return this._isActive ? MIN_VALUE_ACTIVE_THUMB_GAP : MIN_VALUE_NONACTIVE_THUMB_GAP;\n }\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_trackBackgroundStyles\", {\n /**\n * CSS styles for the track background element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n var /** @type {?} */ sign = this._invertMouseCoords ? '-' : '';\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + this._thumbGap + \"px) scale\" + axis + \"(\" + (1 - this.percent) + \")\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_trackFillStyles\", {\n /**\n * CSS styles for the track fill element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n var /** @type {?} */ sign = this._invertMouseCoords ? '' : '-';\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + this._thumbGap + \"px) scale\" + axis + \"(\" + this.percent + \")\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_ticksContainerStyles\", {\n /**\n * CSS styles for the ticks container element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the ticks container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n var /** @type {?} */ sign = !this.vertical && this._direction == 'rtl' ? '' : '-';\n var /** @type {?} */ offset = this._tickIntervalPercent / 2 * 100;\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + offset + \"%)\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_ticksStyles\", {\n /**\n * CSS styles for the ticks element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ tickSize = this._tickIntervalPercent * 100;\n var /** @type {?} */ backgroundSize = this.vertical ? \"2px \" + tickSize + \"%\" : tickSize + \"% 2px\";\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n // Depending on the direction we pushed the ticks container, push the ticks the opposite\n // direction to re-center them but clip off the end edge. In RTL languages we need to flip the\n // ticks 180 degrees so we're really cutting off the end edge abd not the start.\n var /** @type {?} */ sign = !this.vertical && this._direction == 'rtl' ? '-' : '';\n var /** @type {?} */ rotate = !this.vertical && this._direction == 'rtl' ? ' rotate(180deg)' : '';\n var /** @type {?} */ styles = {\n 'backgroundSize': backgroundSize,\n // Without translateZ ticks sometimes jitter as the slider moves on Chrome & Firefox.\n 'transform': \"translateZ(0) translate\" + axis + \"(\" + sign + tickSize / 2 + \"%)\" + rotate\n };\n if (this._isMinValue && this._thumbGap) {\n var /** @type {?} */ side = this.vertical ?\n (this._invertAxis ? 'Bottom' : 'Top') :\n (this._invertAxis ? 'Right' : 'Left');\n styles[\"padding\" + side] = this._thumbGap + \"px\";\n }\n return styles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbContainerStyles\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the thumb container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n var /** @type {?} */ invertOffset = (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n var /** @type {?} */ offset = (invertOffset ? this.percent : 1 - this.percent) * 100;\n return {\n 'transform': \"translate\" + axis + \"(-\" + offset + \"%)\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_invertMouseCoords\", {\n /**\n * Whether mouse events should be converted to a slider position by calculating their distance\n * from the right or bottom edge of the slider as opposed to the top or left.\n * @return {?}\n */\n get: function () {\n return (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_direction\", {\n /**\n * The language direction for this slider element.\n * @return {?}\n */\n get: function () {\n return (this._dir && this._dir.value == 'rtl') ? 'rtl' : 'ltr';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSlider.prototype.ngOnInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._elementRef.nativeElement, this._renderer, true)\n .subscribe(function (origin) {\n _this._isActive = !!origin && origin !== 'keyboard';\n _this._changeDetectorRef.detectChanges();\n });\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n }\n };\n /**\n * @return {?}\n */\n MatSlider.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n this._dirChangeSubscription.unsubscribe();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onMouseenter = function () {\n if (this.disabled) {\n return;\n }\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onClick = function (event) {\n if (this.disabled) {\n return;\n }\n var /** @type {?} */ oldValue = this.value;\n this._isSliding = false;\n this._focusHostElement();\n this._updateValueFromPosition({ x: event.clientX, y: event.clientY });\n /* Emit a change and input event if the value changed. */\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onSlide = function (event) {\n if (this.disabled) {\n return;\n }\n // The slide start event sometimes fails to fire on iOS, so if we're not already in the sliding\n // state, call the slide start handler manually.\n if (!this._isSliding) {\n this._onSlideStart(null);\n }\n // Prevent the slide from selecting anything else.\n event.preventDefault();\n var /** @type {?} */ oldValue = this.value;\n this._updateValueFromPosition({ x: event.center.x, y: event.center.y });\n // Native range elements always emit `input` events when the value changed while sliding.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onSlideStart = function (event) {\n if (this.disabled || this._isSliding) {\n return;\n }\n // Simulate mouseenter in case this is a mobile device.\n this._onMouseenter();\n this._isSliding = true;\n this._focusHostElement();\n this._valueOnSlideStart = this.value;\n if (event) {\n this._updateValueFromPosition({ x: event.center.x, y: event.center.y });\n event.preventDefault();\n }\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onSlideEnd = function () {\n this._isSliding = false;\n if (this._valueOnSlideStart != this.value) {\n this._emitChangeEvent();\n }\n this._valueOnSlideStart = null;\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onFocus = function () {\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onBlur = function () {\n this.onTouched();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onKeydown = function (event) {\n if (this.disabled) {\n return;\n }\n var /** @type {?} */ oldValue = this.value;\n switch (event.keyCode) {\n case PAGE_UP:\n this._increment(10);\n break;\n case PAGE_DOWN:\n this._increment(-10);\n break;\n case END:\n this.value = this.max;\n break;\n case HOME:\n this.value = this.min;\n break;\n case LEFT_ARROW:\n // NOTE: For a sighted user it would make more sense that when they press an arrow key on an\n // inverted slider the thumb moves in that direction. However for a blind user, nothing\n // about the slider indicates that it is inverted. They will expect left to be decrement,\n // regardless of how it appears on the screen. For speakers ofRTL languages, they probably\n // expect left to mean increment. Therefore we flip the meaning of the side arrow keys for\n // RTL. For inverted sliders we prefer a good a11y experience to having it \"look right\" for\n // sighted users, therefore we do not swap the meaning.\n this._increment(this._direction == 'rtl' ? 1 : -1);\n break;\n case UP_ARROW:\n this._increment(1);\n break;\n case RIGHT_ARROW:\n // See comment on LEFT_ARROW about the conditions under which we flip the meaning.\n this._increment(this._direction == 'rtl' ? -1 : 1);\n break;\n case DOWN_ARROW:\n this._increment(-1);\n break;\n default:\n // Return if the key is not one that we explicitly handle to avoid calling preventDefault on\n // it.\n return;\n }\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n this._isSliding = true;\n event.preventDefault();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onKeyup = function () {\n this._isSliding = false;\n };\n /**\n * Increments the slider by the given number of steps (negative number decrements).\n * @param {?} numSteps\n * @return {?}\n */\n MatSlider.prototype._increment = function (numSteps) {\n this.value = this._clamp((this.value || 0) + this.step * numSteps, this.min, this.max);\n };\n /**\n * Calculate the new value from the new physical location. The value will always be snapped.\n * @param {?} pos\n * @return {?}\n */\n MatSlider.prototype._updateValueFromPosition = function (pos) {\n if (!this._sliderDimensions) {\n return;\n }\n var /** @type {?} */ offset = this.vertical ? this._sliderDimensions.top : this._sliderDimensions.left;\n var /** @type {?} */ size = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n var /** @type {?} */ posComponent = this.vertical ? pos.y : pos.x;\n // The exact value is calculated from the event and used to find the closest snap value.\n var /** @type {?} */ percent = this._clamp((posComponent - offset) / size);\n if (this._invertMouseCoords) {\n percent = 1 - percent;\n }\n var /** @type {?} */ exactValue = this._calculateValue(percent);\n // This calculation finds the closest step by finding the closest whole number divisible by the\n // step relative to the min.\n var /** @type {?} */ closestValue = Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n // The value needs to snap to the min and max.\n this.value = this._clamp(closestValue, this.min, this.max);\n };\n /**\n * Emits a change event if the current value is different from the last emitted value.\n * @return {?}\n */\n MatSlider.prototype._emitChangeEvent = function () {\n this._controlValueAccessorChangeFn(this.value);\n this.change.emit(this._createChangeEvent());\n };\n /**\n * Emits an input event when the current value is different from the last emitted value.\n * @return {?}\n */\n MatSlider.prototype._emitInputEvent = function () {\n this.input.emit(this._createChangeEvent());\n };\n /**\n * Updates the amount of space between ticks as a percentage of the width of the slider.\n * @return {?}\n */\n MatSlider.prototype._updateTickIntervalPercent = function () {\n if (!this.tickInterval || !this._sliderDimensions) {\n return;\n }\n if (this.tickInterval == 'auto') {\n var /** @type {?} */ trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n var /** @type {?} */ pixelsPerStep = trackSize * this.step / (this.max - this.min);\n var /** @type {?} */ stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep);\n var /** @type {?} */ pixelsPerTick = stepsPerTick * this.step;\n this._tickIntervalPercent = pixelsPerTick / trackSize;\n }\n else {\n this._tickIntervalPercent = this.tickInterval * this.step / (this.max - this.min);\n }\n };\n /**\n * Creates a slider change object from the specified value.\n * @param {?=} value\n * @return {?}\n */\n MatSlider.prototype._createChangeEvent = function (value) {\n if (value === void 0) { value = this.value; }\n var /** @type {?} */ event = new MatSliderChange();\n event.source = this;\n event.value = value;\n return event;\n };\n /**\n * Calculates the percentage of the slider that a value is.\n * @param {?} value\n * @return {?}\n */\n MatSlider.prototype._calculatePercentage = function (value) {\n return ((value || 0) - this.min) / (this.max - this.min);\n };\n /**\n * Calculates the value a percentage of the slider corresponds to.\n * @param {?} percentage\n * @return {?}\n */\n MatSlider.prototype._calculateValue = function (percentage) {\n return this.min + percentage * (this.max - this.min);\n };\n /**\n * Return a number between two numbers.\n * @param {?} value\n * @param {?=} min\n * @param {?=} max\n * @return {?}\n */\n MatSlider.prototype._clamp = function (value, min, max) {\n if (min === void 0) { min = 0; }\n if (max === void 0) { max = 1; }\n return Math.max(min, Math.min(value, max));\n };\n /**\n * Get the bounding client rect of the slider track element.\n * The track is used rather than the native element to ignore the extra space that the thumb can\n * take up.\n * @return {?}\n */\n MatSlider.prototype._getSliderDimensions = function () {\n return this._sliderWrapper ? this._sliderWrapper.nativeElement.getBoundingClientRect() : null;\n };\n /**\n * Focuses the native element.\n * Currently only used to allow a blur event to fire but will be used with keyboard input later.\n * @return {?}\n */\n MatSlider.prototype._focusHostElement = function () {\n this._elementRef.nativeElement.focus();\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value\n * @return {?}\n */\n MatSlider.prototype.writeValue = function (value) {\n this.value = value;\n };\n /**\n * Registers a callback to eb triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be registered.\n * @return {?}\n */\n MatSlider.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\n };\n /**\n * Registers a callback to be triggered when the component is touched.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be registered.\n * @return {?}\n */\n MatSlider.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param {?} isDisabled\n * @return {?}\n */\n MatSlider.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n };\n MatSlider.decorators = [\n { type: Component, args: [{selector: 'mat-slider',\n exportAs: 'matSlider',\n providers: [MAT_SLIDER_VALUE_ACCESSOR],\n host: {\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n '(click)': '_onClick($event)',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n '(slide)': '_onSlide($event)',\n '(slideend)': '_onSlideEnd()',\n '(slidestart)': '_onSlideStart($event)',\n 'class': 'mat-slider',\n 'role': 'slider',\n 'tabindex': '0',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-slider-disabled]': 'disabled',\n '[class.mat-slider-has-ticks]': 'tickInterval',\n '[class.mat-slider-horizontal]': '!vertical',\n '[class.mat-slider-axis-inverted]': '_invertAxis',\n '[class.mat-slider-sliding]': '_isSliding',\n '[class.mat-slider-thumb-label-showing]': 'thumbLabel',\n '[class.mat-slider-vertical]': 'vertical',\n '[class.mat-slider-min-value]': '_isMinValue',\n '[class.mat-slider-hide-last-tick]': 'disabled || _isMinValue && _thumbGap && _invertAxis',\n },\n template: \"<div class=\\\"mat-slider-wrapper\\\" #sliderWrapper><div class=\\\"mat-slider-track-wrapper\\\"><div class=\\\"mat-slider-track-background\\\" [ngStyle]=\\\"_trackBackgroundStyles\\\"></div><div class=\\\"mat-slider-track-fill\\\" [ngStyle]=\\\"_trackFillStyles\\\"></div></div><div class=\\\"mat-slider-ticks-container\\\" [ngStyle]=\\\"_ticksContainerStyles\\\"><div class=\\\"mat-slider-ticks\\\" [ngStyle]=\\\"_ticksStyles\\\"></div></div><div class=\\\"mat-slider-thumb-container\\\" [ngStyle]=\\\"_thumbContainerStyles\\\"><div class=\\\"mat-slider-focus-ring\\\"></div><div class=\\\"mat-slider-thumb\\\"></div><div class=\\\"mat-slider-thumb-label\\\"><span class=\\\"mat-slider-thumb-label-text\\\">{{displayValue}}</span></div></div></div>\",\n styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:0;vertical-align:middle}.mat-slider-wrapper{position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{background-repeat:repeat;background-clip:content-box;box-sizing:border-box;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),opacity .4s cubic-bezier(.25,.8,.25,1)}.cdk-keyboard-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb-label{cursor:-webkit-grab;cursor:grab}.mat-slider-sliding:not(.mat-slider-disabled) .mat-slider-thumb,.mat-slider-sliding:not(.mat-slider-disabled) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb-label:active,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb:active{cursor:-webkit-grabbing;cursor:grabbing}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(.7);transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),border-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform .4s cubic-bezier(.25,.8,.25,1),border-radius .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-sliding .mat-slider-thumb-container,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-track-fill{transition-duration:0s}.mat-slider-has-ticks .mat-slider-wrapper::after{content:'';position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}\"],\n inputs: ['disabled', 'color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlider.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatSlider.propDecorators = {\n 'invert': [{ type: Input },],\n 'max': [{ type: Input },],\n 'min': [{ type: Input },],\n 'step': [{ type: Input },],\n 'thumbLabel': [{ type: Input },],\n '_thumbLabelDeprecated': [{ type: Input, args: ['thumb-label',] },],\n 'tickInterval': [{ type: Input },],\n '_tickIntervalDeprecated': [{ type: Input, args: ['tick-interval',] },],\n 'value': [{ type: Input },],\n 'vertical': [{ type: Input },],\n 'change': [{ type: Output },],\n 'input': [{ type: Output },],\n '_sliderWrapper': [{ type: ViewChild, args: ['sliderWrapper',] },],\n };\n return MatSlider;\n}(_MatSliderMixinBase));\n\nvar MatSliderModule = (function () {\n function MatSliderModule() {\n }\n MatSliderModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatCommonModule, BidiModule, A11yModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\n providers: [{ provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSliderModule.ctorParameters = function () { return []; };\n return MatSliderModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSliderModule, MAT_SLIDER_VALUE_ACCESSOR, MatSliderChange, MatSliderBase, _MatSliderMixinBase, MatSlider };\n//# sourceMappingURL=slider.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Injectable, InjectionToken, Injector, NgModule, NgZone, Optional, Renderer2, SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { BasePortalHost, ComponentPortal, PortalHostDirective, PortalInjector, PortalModule } from '@angular/cdk/portal';\nimport { LIVE_ANNOUNCER_PROVIDER, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { MatCommonModule, extendObject } from '@angular/material/core';\nimport { Subject } from 'rxjs/Subject';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { first } from '@angular/cdk/rxjs';\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nvar MatSnackBarRef = (function () {\n /**\n * @param {?} containerInstance\n * @param {?} _overlayRef\n */\n function MatSnackBarRef(containerInstance, _overlayRef) {\n var _this = this;\n this._overlayRef = _overlayRef;\n /**\n * Subject for notifying the user that the snack bar has closed.\n */\n this._afterClosed = new Subject();\n /**\n * Subject for notifying the user that the snack bar has opened and appeared.\n */\n this._afterOpened = new Subject();\n /**\n * Subject for notifying the user that the snack bar action was called.\n */\n this._onAction = new Subject();\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(function () { return _this.dismiss(); });\n containerInstance._onExit.subscribe(function () { return _this._finishDismiss(); });\n }\n /**\n * Dismisses the snack bar.\n * @return {?}\n */\n MatSnackBarRef.prototype.dismiss = function () {\n if (!this._afterClosed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n };\n /**\n * Marks the snackbar action clicked.\n * @return {?}\n */\n MatSnackBarRef.prototype.closeWithAction = function () {\n if (!this._onAction.closed) {\n this._onAction.next();\n this._onAction.complete();\n }\n };\n /**\n * Dismisses the snack bar after some duration\n * @param {?} duration\n * @return {?}\n */\n MatSnackBarRef.prototype._dismissAfter = function (duration) {\n var _this = this;\n this._durationTimeoutId = setTimeout(function () { return _this.dismiss(); }, duration);\n };\n /**\n * Marks the snackbar as opened\n * @return {?}\n */\n MatSnackBarRef.prototype._open = function () {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n };\n /**\n * Cleans up the DOM after closing.\n * @return {?}\n */\n MatSnackBarRef.prototype._finishDismiss = function () {\n this._overlayRef.dispose();\n this._afterClosed.next();\n this._afterClosed.complete();\n };\n /**\n * Gets an observable that is notified when the snack bar is finished closing.\n * @return {?}\n */\n MatSnackBarRef.prototype.afterDismissed = function () {\n return this._afterClosed.asObservable();\n };\n /**\n * Gets an observable that is notified when the snack bar has opened and appeared.\n * @return {?}\n */\n MatSnackBarRef.prototype.afterOpened = function () {\n return this.containerInstance._onEnter;\n };\n /**\n * Gets an observable that is notified when the snack bar action is called.\n * @return {?}\n */\n MatSnackBarRef.prototype.onAction = function () {\n return this._onAction.asObservable();\n };\n return MatSnackBarRef;\n}());\n\nvar MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nvar MatSnackBarConfig = (function () {\n function MatSnackBarConfig() {\n /**\n * The politeness level for the MatAriaLiveAnnouncer announcement.\n */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the MatAriaLiveAnnouncer\n */\n this.announcementMessage = '';\n /**\n * The length of time in milliseconds to wait before automatically dismissing the snack bar.\n */\n this.duration = 0;\n /**\n * Text layout direction for the snack bar.\n */\n this.direction = 'ltr';\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * The horizontal position to place the snack bar.\n */\n this.horizontalPosition = 'center';\n /**\n * The vertical position to place the snack bar.\n */\n this.verticalPosition = 'bottom';\n }\n return MatSnackBarConfig;\n}());\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\nvar SimpleSnackBar = (function () {\n /**\n * @param {?} snackBarRef\n * @param {?} data\n */\n function SimpleSnackBar(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /**\n * Performs the action on the snack bar.\n * @return {?}\n */\n SimpleSnackBar.prototype.action = function () {\n this.snackBarRef.closeWithAction();\n };\n Object.defineProperty(SimpleSnackBar.prototype, \"hasAction\", {\n /**\n * If the action button should be shown.\n * @return {?}\n */\n get: function () {\n return !!this.data.action;\n },\n enumerable: true,\n configurable: true\n });\n SimpleSnackBar.decorators = [\n { type: Component, args: [{selector: 'simple-snack-bar',\n template: \"{{data.message}} <button class=\\\"mat-simple-snackbar-action\\\" *ngIf=\\\"hasAction\\\" (click)=\\\"action()\\\">{{data.action}}</button>\",\n styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;line-height:20px}.mat-simple-snackbar-action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;background:0 0;flex-shrink:0;margin-left:48px}[dir=rtl] .mat-simple-snackbar-action{margin-right:48px;margin-left:0}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n SimpleSnackBar.ctorParameters = function () { return [\n { type: MatSnackBarRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DATA,] },] },\n ]; };\n return SimpleSnackBar;\n}());\n\n// TODO(jelbourn): we can't use constants from animation.ts here because you can't use\n// a text interpolation in anything that is analyzed statically with ngc (for AoT compile).\nvar SHOW_ANIMATION = '225ms cubic-bezier(0.4,0.0,1,1)';\nvar HIDE_ANIMATION = '195ms cubic-bezier(0.0,0.0,0.2,1)';\n/**\n * Internal component that wraps user-provided snack bar content.\n * \\@docs-private\n */\nvar MatSnackBarContainer = (function (_super) {\n __extends(MatSnackBarContainer, _super);\n /**\n * @param {?} _ngZone\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _changeDetectorRef\n */\n function MatSnackBarContainer(_ngZone, _renderer, _elementRef, _changeDetectorRef) {\n var _this = _super.call(this) || this;\n _this._ngZone = _ngZone;\n _this._renderer = _renderer;\n _this._elementRef = _elementRef;\n _this._changeDetectorRef = _changeDetectorRef;\n /**\n * Whether the component has been destroyed.\n */\n _this._destroyed = false;\n /**\n * Subject for notifying that the snack bar has exited from view.\n */\n _this._onExit = new Subject();\n /**\n * Subject for notifying that the snack bar has finished entering the view.\n */\n _this._onEnter = new Subject();\n /**\n * The state of the snack bar animations.\n */\n _this._animationState = 'void';\n return _this;\n }\n /**\n * Attach a component portal as content to this snack bar container.\n * @template T\n * @param {?} portal\n * @return {?}\n */\n MatSnackBarContainer.prototype.attachComponentPortal = function (portal) {\n if (this._portalHost.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n if (this.snackBarConfig.extraClasses) {\n // Not the most efficient way of adding classes, but the renderer doesn't allow us\n // to pass in an array or a space-separated list.\n for (var _i = 0, _a = this.snackBarConfig.extraClasses; _i < _a.length; _i++) {\n var cssClass = _a[_i];\n this._renderer.addClass(this._elementRef.nativeElement, cssClass);\n }\n }\n if (this.snackBarConfig.horizontalPosition === 'center') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-center');\n }\n if (this.snackBarConfig.verticalPosition === 'top') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-top');\n }\n return this._portalHost.attachComponentPortal(portal);\n };\n /**\n * Attach a template portal as content to this snack bar container.\n * @return {?}\n */\n MatSnackBarContainer.prototype.attachTemplatePortal = function () {\n throw Error('Not yet implemented');\n };\n /**\n * Handle end of animations, updating the state of the snackbar.\n * @param {?} event\n * @return {?}\n */\n MatSnackBarContainer.prototype.onAnimationEnd = function (event) {\n var fromState = event.fromState, toState = event.toState;\n if ((toState === 'void' && fromState !== 'void') || toState.startsWith('hidden')) {\n this._completeExit();\n }\n if (toState.startsWith('visible')) {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n var /** @type {?} */ onEnter_1 = this._onEnter;\n this._ngZone.run(function () {\n onEnter_1.next();\n onEnter_1.complete();\n });\n }\n };\n /**\n * Begin animation of snack bar entrance into view.\n * @return {?}\n */\n MatSnackBarContainer.prototype.enter = function () {\n if (!this._destroyed) {\n this._animationState = \"visible-\" + this.snackBarConfig.verticalPosition;\n this._changeDetectorRef.detectChanges();\n }\n };\n /**\n * Begin animation of the snack bar exiting from view.\n * @return {?}\n */\n MatSnackBarContainer.prototype.exit = function () {\n this._animationState = \"hidden-\" + this.snackBarConfig.verticalPosition;\n return this._onExit;\n };\n /**\n * Makes sure the exit callbacks have been invoked when the element is destroyed.\n * @return {?}\n */\n MatSnackBarContainer.prototype.ngOnDestroy = function () {\n this._destroyed = true;\n this._completeExit();\n };\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n * @return {?}\n */\n MatSnackBarContainer.prototype._completeExit = function () {\n var _this = this;\n first.call(this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(function () {\n _this._onExit.next();\n _this._onExit.complete();\n });\n };\n MatSnackBarContainer.decorators = [\n { type: Component, args: [{selector: 'snack-bar-container',\n template: \"<ng-template cdkPortalHost></ng-template>\",\n styles: [\".mat-snack-bar-container{border-radius:2px;box-sizing:content-box;display:block;margin:24px;max-width:568px;min-width:288px;padding:14px 24px;transform:translateY(100%) translateY(24px)}.mat-snack-bar-container.mat-snack-bar-center{margin:0;transform:translateY(100%)}.mat-snack-bar-container.mat-snack-bar-top{transform:translateY(-100%) translateY(-24px)}.mat-snack-bar-container.mat-snack-bar-top.mat-snack-bar-center{transform:translateY(-100%)}@media screen and (-ms-high-contrast:active){.mat-snack-bar-container{border:solid 1px}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'role': 'alert',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n animations: [\n trigger('state', [\n state('visible-top, visible-bottom', style({ transform: 'translateY(0%)' })),\n transition('visible-top => hidden-top, visible-bottom => hidden-bottom', animate(HIDE_ANIMATION)),\n transition('void => visible-top, void => visible-bottom', animate(SHOW_ANIMATION)),\n ])\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSnackBarContainer.ctorParameters = function () { return [\n { type: NgZone, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n ]; };\n MatSnackBarContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n };\n return MatSnackBarContainer;\n}(BasePortalHost));\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nvar MatSnackBar = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _live\n * @param {?} _injector\n * @param {?} _parentSnackBar\n */\n function MatSnackBar(_overlay, _live, _injector, _parentSnackBar) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._parentSnackBar = _parentSnackBar;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n this._snackBarRefAtThisLevel = null;\n }\n Object.defineProperty(MatSnackBar.prototype, \"_openedSnackBarRef\", {\n /**\n * Reference to the currently opened snackbar at *any* level.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n }\n else {\n this._snackBarRefAtThisLevel = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @template T\n * @param {?} component Component to be instantiated.\n * @param {?=} config Extra configuration for the snack bar.\n * @return {?}\n */\n MatSnackBar.prototype.openFromComponent = function (component, config) {\n var _this = this;\n var /** @type {?} */ _config = _applyConfigDefaults(config);\n var /** @type {?} */ snackBarRef = this._attach(component, _config);\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(function () {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (_this._openedSnackBarRef == snackBarRef) {\n _this._openedSnackBarRef = null;\n }\n });\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(function () {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n }\n else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (_config.duration && _config.duration > 0) {\n snackBarRef.afterOpened().subscribe(function () { return snackBarRef._dismissAfter(/** @type {?} */ ((((_config)).duration))); });\n }\n if (_config.announcementMessage) {\n this._live.announce(_config.announcementMessage, _config.politeness);\n }\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n };\n /**\n * Opens a snackbar with a message and an optional action.\n * @param {?} message The message to show in the snackbar.\n * @param {?=} action The label for the snackbar action.\n * @param {?=} config Additional configuration options for the snackbar.\n * @return {?}\n */\n MatSnackBar.prototype.open = function (message, action, config) {\n if (action === void 0) { action = ''; }\n var /** @type {?} */ _config = _applyConfigDefaults(config);\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = { message: message, action: action };\n _config.announcementMessage = message;\n return this.openFromComponent(SimpleSnackBar, _config);\n };\n /**\n * Dismisses the currently-visible snack bar.\n * @return {?}\n */\n MatSnackBar.prototype.dismiss = function () {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n };\n /**\n * Attaches the snack bar container component to the overlay.\n * @param {?} overlayRef\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._attachSnackBarContainer = function (overlayRef, config) {\n var /** @type {?} */ containerPortal = new ComponentPortal(MatSnackBarContainer, config.viewContainerRef);\n var /** @type {?} */ containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n };\n /**\n * Places a new component as the content of the snack bar container.\n * @template T\n * @param {?} component\n * @param {?} config\n * @return {?}\n */\n MatSnackBar.prototype._attach = function (component, config) {\n var /** @type {?} */ overlayRef = this._createOverlay(config);\n var /** @type {?} */ container = this._attachSnackBarContainer(overlayRef, config);\n var /** @type {?} */ snackBarRef = new MatSnackBarRef(container, overlayRef);\n var /** @type {?} */ injector = this._createInjector(config, snackBarRef);\n var /** @type {?} */ portal = new ComponentPortal(component, undefined, injector);\n var /** @type {?} */ contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n return snackBarRef;\n };\n /**\n * Creates a new overlay and places it in the correct location.\n * @param {?} config The user-specified snack bar config.\n * @return {?}\n */\n MatSnackBar.prototype._createOverlay = function (config) {\n var /** @type {?} */ overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n var /** @type {?} */ positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n var /** @type {?} */ isRtl = config.direction === 'rtl';\n var /** @type {?} */ isLeft = (config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n var /** @type {?} */ isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n }\n else if (isRight) {\n positionStrategy.right('0');\n }\n else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n }\n else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n };\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @template T\n * @param {?} config Config that was used to create the snack bar.\n * @param {?} snackBarRef Reference to the snack bar.\n * @return {?}\n */\n MatSnackBar.prototype._createInjector = function (config, snackBarRef) {\n var /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n var /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatSnackBarRef, snackBarRef);\n injectionTokens.set(MAT_SNACK_BAR_DATA, config.data);\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n };\n MatSnackBar.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatSnackBar.ctorParameters = function () { return [\n { type: Overlay, },\n { type: LiveAnnouncer, },\n { type: Injector, },\n { type: MatSnackBar, decorators: [{ type: Optional }, { type: SkipSelf },] },\n ]; };\n return MatSnackBar;\n}());\n/**\n * Applies default options to the snackbar config.\n * @param {?=} config The configuration to which the defaults will be applied.\n * @return {?} The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(config) {\n return extendObject(new MatSnackBarConfig(), config);\n}\n\nvar MatSnackBarModule = (function () {\n function MatSnackBarModule() {\n }\n MatSnackBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n providers: [MatSnackBar, LIVE_ANNOUNCER_PROVIDER]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSnackBarModule.ctorParameters = function () { return []; };\n return MatSnackBarModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSnackBarModule, MatSnackBar, SHOW_ANIMATION, HIDE_ANIMATION, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar };\n//# sourceMappingURL=snack-bar.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, EventEmitter, Injectable, Input, NgModule, Optional, Output, ViewEncapsulation, isDevMode } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { merge } from 'rxjs/observable/merge';\nimport { Subject } from 'rxjs/Subject';\nimport { AnimationCurves, AnimationDurations } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * \\@docs-private\n * @param {?} id\n * @return {?}\n */\nfunction getSortDuplicateSortableIdError(id) {\n return Error(\"Cannot have two MatSortables with the same id (\" + id + \").\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getSortHeaderNotContainedWithinSortError() {\n return Error(\"MatSortHeader must be placed within a parent element with the MatSort directive.\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getSortHeaderMissingIdError() {\n return Error(\"MatSortHeader must be provided with a unique id.\");\n}\n/**\n * \\@docs-private\n * @param {?} direction\n * @return {?}\n */\nfunction getSortInvalidDirectionError(direction) {\n return Error(direction + \" is not a valid sort direction ('asc' or 'desc').\");\n}\n\n/**\n * Container for MatSortables to manage the sort state and provide default sort parameters.\n */\nvar MatSort = (function () {\n function MatSort() {\n /**\n * Collection of all registered sortables that this directive manages.\n */\n this.sortables = new Map();\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overriden by the MatSortable's sort start.\n */\n this.start = 'asc';\n this._direction = '';\n /**\n * Event emitted when the user changes either the active sort or sort direction.\n */\n this.sortChange = new EventEmitter();\n }\n Object.defineProperty(MatSort.prototype, \"direction\", {\n /**\n * @return {?}\n */\n get: function () { return this._direction; },\n /**\n * The sort direction of the currently active MatSortable.\n * @param {?} direction\n * @return {?}\n */\n set: function (direction) {\n if (isDevMode() && direction && direction !== 'asc' && direction !== 'desc') {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSort.prototype, \"disableClear\", {\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overriden by the MatSortable's disable clear input.\n * @return {?}\n */\n get: function () { return this._disableClear; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._disableClear = coerceBooleanProperty(v); },\n enumerable: true,\n configurable: true\n });\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.register = function (sortable) {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n this.sortables.set(sortable.id, sortable);\n };\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.deregister = function (sortable) {\n this.sortables.delete(sortable.id);\n };\n /**\n * Sets the active sort id and determines the new sort direction.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.sort = function (sortable) {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n }\n else {\n this.direction = this.getNextSortDirection(sortable);\n }\n this.sortChange.next({ active: this.active, direction: this.direction });\n };\n /**\n * Returns the next sort direction of the active sortable, checking for potential overrides.\n * @param {?} sortable\n * @return {?}\n */\n MatSort.prototype.getNextSortDirection = function (sortable) {\n if (!sortable) {\n return '';\n }\n // Get the sort direction cycle with the potential sortable overrides.\n var /** @type {?} */ disableClear = sortable.disableClear != null ? sortable.disableClear : this.disableClear;\n var /** @type {?} */ sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n // Get and return the next direction in the cycle\n var /** @type {?} */ nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) {\n nextDirectionIndex = 0;\n }\n return sortDirectionCycle[nextDirectionIndex];\n };\n MatSort.decorators = [\n { type: Directive, args: [{\n selector: '[matSort]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSort.ctorParameters = function () { return []; };\n MatSort.propDecorators = {\n 'active': [{ type: Input, args: ['matSortActive',] },],\n 'start': [{ type: Input, args: ['matSortStart',] },],\n 'direction': [{ type: Input, args: ['matSortDirection',] },],\n 'disableClear': [{ type: Input, args: ['matSortDisableClear',] },],\n 'sortChange': [{ type: Output, args: ['matSortChange',] },],\n };\n return MatSort;\n}());\n/**\n * Returns the sort direction cycle to use given the provided parameters of order and clear.\n * @param {?} start\n * @param {?} disableClear\n * @return {?}\n */\nfunction getSortDirectionCycle(start, disableClear) {\n var /** @type {?} */ sortOrder = ['asc', 'desc'];\n if (start == 'desc') {\n sortOrder.reverse();\n }\n if (!disableClear) {\n sortOrder.push('');\n }\n return sortOrder;\n}\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\nvar MatSortHeaderIntl = (function () {\n function MatSortHeaderIntl() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /**\n * ARIA label for the sorting button.\n */\n this.sortButtonLabel = function (id) {\n return \"Change sorting for \" + id;\n };\n /**\n * A label to describe the current sort (visible only to screenreaders).\n */\n this.sortDescriptionLabel = function (id, direction) {\n return \"Sorted by \" + id + \" \" + (direction == 'asc' ? 'ascending' : 'descending');\n };\n }\n MatSortHeaderIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatSortHeaderIntl.ctorParameters = function () { return []; };\n return MatSortHeaderIntl;\n}());\n\nvar SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' + AnimationCurves.STANDARD_CURVE;\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\nvar MatSortHeader = (function () {\n /**\n * @param {?} _intl\n * @param {?} changeDetectorRef\n * @param {?} _sort\n * @param {?} _cdkColumnDef\n */\n function MatSortHeader(_intl, changeDetectorRef, _sort, _cdkColumnDef) {\n this._intl = _intl;\n this._sort = _sort;\n this._cdkColumnDef = _cdkColumnDef;\n /**\n * Sets the position of the arrow that displays when sorted.\n */\n this.arrowPosition = 'after';\n if (!_sort) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n this._rerenderSubscription = merge(_sort.sortChange, _intl.changes).subscribe(function () {\n changeDetectorRef.markForCheck();\n });\n }\n Object.defineProperty(MatSortHeader.prototype, \"disableClear\", {\n /**\n * Overrides the disable clear value of the containing MatSort for this MatSortable.\n * @return {?}\n */\n get: function () { return this._disableClear; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this._disableClear = coerceBooleanProperty(v); },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSortHeader.prototype.ngOnInit = function () {\n if (!this.id && this._cdkColumnDef) {\n this.id = this._cdkColumnDef.name;\n }\n this._sort.register(this);\n };\n /**\n * @return {?}\n */\n MatSortHeader.prototype.ngOnDestroy = function () {\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n };\n /**\n * Whether this MatSortHeader is currently sorted in either ascending or descending order.\n * @return {?}\n */\n MatSortHeader.prototype._isSorted = function () {\n return this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n };\n MatSortHeader.decorators = [\n { type: Component, args: [{selector: '[mat-sort-header]',\n template: \"<div class=\\\"mat-sort-header-container\\\" [class.mat-sort-header-position-before]=\\\"arrowPosition == 'before'\\\"><button class=\\\"mat-sort-header-button\\\" type=\\\"button\\\" [attr.aria-label]=\\\"_intl.sortButtonLabel(id)\\\"><ng-content></ng-content></button><div *ngIf=\\\"_isSorted()\\\" class=\\\"mat-sort-header-arrow\\\" [@indicatorToggle]=\\\"_sort.direction\\\"><div class=\\\"mat-sort-header-stem\\\"></div><div class=\\\"mat-sort-header-indicator\\\" [@indicator]=\\\"_sort.direction\\\"><div class=\\\"mat-sort-header-pointer-left\\\" [@leftPointer]=\\\"_sort.direction\\\"></div><div class=\\\"mat-sort-header-pointer-right\\\" [@rightPointer]=\\\"_sort.direction\\\"></div><div class=\\\"mat-sort-header-pointer-middle\\\"></div></div></div></div><span class=\\\"cdk-visually-hidden\\\" *ngIf=\\\"_isSorted()\\\">{{_intl.sortDescriptionLabel(id, _sort.direction)}}</span>\",\n styles: [\".mat-sort-header-container{display:flex;cursor:pointer}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-button{border:none;background:0 0;display:flex;align-items:center;padding:0;cursor:pointer;outline:0;font:inherit;color:currentColor}.mat-sort-header-arrow{height:12px;width:12px;margin:0 0 0 6px;position:relative;display:flex}.mat-sort-header-position-before .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0;transition:225ms cubic-bezier(.4,0,.2,1)}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;transition:225ms cubic-bezier(.4,0,.2,1);position:absolute;top:0}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\"],\n host: {\n '(click)': '_sort.sort(this)',\n '[class.mat-sort-header-sorted]': '_isSorted()',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('indicator', [\n state('asc', style({ transform: 'translateY(0px)' })),\n // 10px is the height of the sort indicator, minus the width of the pointers\n state('desc', style({ transform: 'translateY(10px)' })),\n transition('asc <=> desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n trigger('leftPointer', [\n state('asc', style({ transform: 'rotate(-45deg)' })),\n state('desc', style({ transform: 'rotate(45deg)' })),\n transition('asc <=> desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n trigger('rightPointer', [\n state('asc', style({ transform: 'rotate(45deg)' })),\n state('desc', style({ transform: 'rotate(-45deg)' })),\n transition('asc <=> desc', animate(SORT_ANIMATION_TRANSITION))\n ]),\n trigger('indicatorToggle', [\n transition('void => asc', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({ transform: 'translateY(25%)', opacity: 0 }),\n style({ transform: 'none', opacity: 1 })\n ]))),\n transition('asc => void', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({ transform: 'none', opacity: 1 }),\n style({ transform: 'translateY(-25%)', opacity: 0 })\n ]))),\n transition('void => desc', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({ transform: 'translateY(-25%)', opacity: 0 }),\n style({ transform: 'none', opacity: 1 })\n ]))),\n transition('desc => void', animate(SORT_ANIMATION_TRANSITION, keyframes([\n style({ transform: 'none', opacity: 1 }),\n style({ transform: 'translateY(25%)', opacity: 0 })\n ]))),\n ])\n ]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSortHeader.ctorParameters = function () { return [\n { type: MatSortHeaderIntl, },\n { type: ChangeDetectorRef, },\n { type: MatSort, decorators: [{ type: Optional },] },\n { type: CdkColumnDef, decorators: [{ type: Optional },] },\n ]; };\n MatSortHeader.propDecorators = {\n 'id': [{ type: Input, args: ['mat-sort-header',] },],\n 'arrowPosition': [{ type: Input },],\n 'start': [{ type: Input, args: ['start',] },],\n 'disableClear': [{ type: Input },],\n };\n return MatSortHeader;\n}());\n\nvar MatSortModule = (function () {\n function MatSortModule() {\n }\n MatSortModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n exports: [MatSort, MatSortHeader],\n declarations: [MatSort, MatSortHeader],\n providers: [MatSortHeaderIntl]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSortModule.ctorParameters = function () { return []; };\n return MatSortModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatSortModule, MatSortHeader, MatSortHeaderIntl, MatSort };\n//# sourceMappingURL=sort.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule, FocusMonitor } from '@angular/cdk/a11y';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CdkStep, CdkStepLabel, CdkStepper, CdkStepperModule, CdkStepperNext, CdkStepperPrevious } from '@angular/cdk/stepper';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, Inject, Injectable, Input, NgModule, Renderer2, SkipSelf, TemplateRef, ViewChildren, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ErrorStateMatcher, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatStepLabel = CdkStepLabel;\nvar MatStepLabel = (function (_super) {\n __extends(MatStepLabel, _super);\n /**\n * @param {?} template\n */\n function MatStepLabel(template) {\n return _super.call(this, template) || this;\n }\n MatStepLabel.decorators = [\n { type: Directive, args: [{\n selector: '[matStepLabel]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepLabel.ctorParameters = function () { return [\n { type: TemplateRef, },\n ]; };\n return MatStepLabel;\n}(_MatStepLabel));\n\n/**\n * Stepper data that is required for internationalization.\n */\nvar MatStepperIntl = (function () {\n function MatStepperIntl() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /**\n * Label that is rendered below optional steps.\n */\n this.optionalLabel = 'Optional';\n }\n MatStepperIntl.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatStepperIntl.ctorParameters = function () { return []; };\n return MatStepperIntl;\n}());\n\nvar MatStepHeader = (function () {\n /**\n * @param {?} _intl\n * @param {?} _focusMonitor\n * @param {?} _element\n * @param {?} renderer\n * @param {?} changeDetectorRef\n */\n function MatStepHeader(_intl, _focusMonitor, _element, renderer, changeDetectorRef) {\n this._intl = _intl;\n this._focusMonitor = _focusMonitor;\n this._element = _element;\n _focusMonitor.monitor(_element.nativeElement, renderer, true);\n this._intlSubscription = _intl.changes.subscribe(function () { return changeDetectorRef.markForCheck(); });\n }\n Object.defineProperty(MatStepHeader.prototype, \"index\", {\n /**\n * Index of the given step.\n * @return {?}\n */\n get: function () { return this._index; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._index = coerceNumberProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatStepHeader.prototype, \"selected\", {\n /**\n * Whether the given step is selected.\n * @return {?}\n */\n get: function () { return this._selected; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selected = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatStepHeader.prototype, \"active\", {\n /**\n * Whether the given step label is active.\n * @return {?}\n */\n get: function () { return this._active; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._active = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatStepHeader.prototype, \"optional\", {\n /**\n * Whether the given step is optional.\n * @return {?}\n */\n get: function () { return this._optional; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._optional = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatStepHeader.prototype.ngOnDestroy = function () {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element.nativeElement);\n };\n /**\n * Returns string label of given step if it is a text label.\n * @return {?}\n */\n MatStepHeader.prototype._stringLabel = function () {\n return this.label instanceof MatStepLabel ? null : this.label;\n };\n /**\n * Returns MatStepLabel if the label of given step is a template label.\n * @return {?}\n */\n MatStepHeader.prototype._templateLabel = function () {\n return this.label instanceof MatStepLabel ? this.label : null;\n };\n /**\n * Returns the host HTML element.\n * @return {?}\n */\n MatStepHeader.prototype._getHostElement = function () {\n return this._element.nativeElement;\n };\n MatStepHeader.decorators = [\n { type: Component, args: [{selector: 'mat-step-header',\n template: \"<div class=\\\"mat-step-header-ripple\\\" mat-ripple [matRippleTrigger]=\\\"_getHostElement()\\\"></div><div [class.mat-step-icon]=\\\"icon !== 'number' || selected\\\" [class.mat-step-icon-not-touched]=\\\"icon == 'number' && !selected\\\" [ngSwitch]=\\\"icon\\\"><span *ngSwitchCase=\\\"'number'\\\">{{index + 1}}</span><mat-icon *ngSwitchCase=\\\"'edit'\\\">create</mat-icon><mat-icon *ngSwitchCase=\\\"'done'\\\">done</mat-icon></div><div class=\\\"mat-step-label\\\" [class.mat-step-label-active]=\\\"active\\\" [class.mat-step-label-selected]=\\\"selected\\\"><ng-container *ngIf=\\\"_templateLabel()\\\" [ngTemplateOutlet]=\\\"label.template\\\"></ng-container><div class=\\\"mat-step-text-label\\\" *ngIf=\\\"_stringLabel()\\\">{{label}}</div><div class=\\\"mat-step-optional\\\" *ngIf=\\\"optional\\\">{{_intl.optionalLabel}}</div></div>\",\n styles: [\".mat-step-header{overflow:hidden;outline:0;cursor:pointer;position:relative}.mat-step-optional{font-size:12px}.mat-step-icon,.mat-step-icon-not-touched{border-radius:50%;height:24px;width:24px;align-items:center;justify-content:center;display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\"],\n host: {\n 'class': 'mat-step-header',\n 'role': 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepHeader.ctorParameters = function () { return [\n { type: MatStepperIntl, },\n { type: FocusMonitor, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n ]; };\n MatStepHeader.propDecorators = {\n 'icon': [{ type: Input },],\n 'label': [{ type: Input },],\n 'index': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'active': [{ type: Input },],\n 'optional': [{ type: Input },],\n };\n return MatStepHeader;\n}());\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatStep = CdkStep;\nvar _MatStepper = CdkStepper;\nvar MatStep = (function (_super) {\n __extends(MatStep, _super);\n /**\n * @param {?} stepper\n * @param {?} _errorStateMatcher\n */\n function MatStep(stepper, _errorStateMatcher) {\n var _this = _super.call(this, stepper) || this;\n _this._errorStateMatcher = _errorStateMatcher;\n return _this;\n }\n /**\n * Custom error state matcher that additionally checks for validity of interacted form.\n * @param {?} control\n * @param {?} form\n * @return {?}\n */\n MatStep.prototype.isErrorState = function (control, form) {\n var /** @type {?} */ originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n var /** @type {?} */ customErrorState = !!(control && control.invalid && this.interacted);\n return originalErrorState || customErrorState;\n };\n MatStep.decorators = [\n { type: Component, args: [{selector: 'mat-step',\n template: \"<ng-template><ng-content></ng-content></ng-template>\",\n providers: [{ provide: ErrorStateMatcher, useExisting: MatStep }],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStep.ctorParameters = function () { return [\n { type: MatStepper, decorators: [{ type: Inject, args: [forwardRef(function () { return MatStepper; }),] },] },\n { type: ErrorStateMatcher, decorators: [{ type: SkipSelf },] },\n ]; };\n MatStep.propDecorators = {\n 'stepLabel': [{ type: ContentChild, args: [MatStepLabel,] },],\n };\n return MatStep;\n}(_MatStep));\nvar MatStepper = (function (_super) {\n __extends(MatStepper, _super);\n function MatStepper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatStepper.decorators = [\n { type: Directive, args: [{\n selector: '[matStepper]'\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepper.ctorParameters = function () { return []; };\n MatStepper.propDecorators = {\n '_stepHeader': [{ type: ViewChildren, args: [MatStepHeader, { read: ElementRef },] },],\n '_steps': [{ type: ContentChildren, args: [MatStep,] },],\n };\n return MatStepper;\n}(_MatStepper));\nvar MatHorizontalStepper = (function (_super) {\n __extends(MatHorizontalStepper, _super);\n function MatHorizontalStepper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHorizontalStepper.decorators = [\n { type: Component, args: [{selector: 'mat-horizontal-stepper',\n exportAs: 'matHorizontalStepper',\n template: \"<div class=\\\"mat-horizontal-stepper-header-container\\\"><ng-container *ngFor=\\\"let step of _steps; let i = index; let isLast = last\\\"><mat-step-header class=\\\"mat-horizontal-stepper-header\\\" (click)=\\\"step.select()\\\" (keydown)=\\\"_onKeydown($event)\\\" [tabIndex]=\\\"_focusIndex === i ? 0 : -1\\\" [id]=\\\"_getStepLabelId(i)\\\" [attr.aria-controls]=\\\"_getStepContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex == i\\\" [index]=\\\"i\\\" [icon]=\\\"_getIndicatorType(i)\\\" [label]=\\\"step.stepLabel || step.label\\\" [selected]=\\\"selectedIndex === i\\\" [active]=\\\"step.completed || selectedIndex === i\\\" [optional]=\\\"step.optional\\\"></mat-step-header><div *ngIf=\\\"!isLast\\\" class=\\\"mat-stepper-horizontal-line\\\"></div></ng-container></div><div class=\\\"mat-horizontal-content-container\\\"><div *ngFor=\\\"let step of _steps; let i = index\\\" class=\\\"mat-horizontal-stepper-content\\\" role=\\\"tabpanel\\\" [@stepTransition]=\\\"_getAnimationDirection(i)\\\" [id]=\\\"_getStepContentId(i)\\\" [attr.aria-labelledby]=\\\"_getStepLabelId(i)\\\" [attr.aria-expanded]=\\\"selectedIndex === i\\\"><ng-container [ngTemplateOutlet]=\\\"step.content\\\"></ng-container></div></div>\",\n styles: [\".mat-stepper-horizontal,.mat-stepper-vertical{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon,.mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon,[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:8px}.mat-vertical-stepper-header{display:flex;align-items:center;padding:24px;max-height:24px}.mat-vertical-stepper-header .mat-step-icon,.mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon,[dir=rtl] .mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{overflow:hidden}.mat-horizontal-stepper-content[aria-expanded=false]{height:0}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:'';position:absolute;top:-16px;bottom:-16px;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\"],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-horizontal',\n 'role': 'tablist',\n },\n animations: [\n trigger('stepTransition', [\n state('previous', style({ transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden' })),\n state('current', style({ transform: 'none', visibility: 'visible' })),\n state('next', style({ transform: 'translate3d(100%, 0, 0)', visibility: 'hidden' })),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\n ])\n ],\n providers: [{ provide: MatStepper, useExisting: MatHorizontalStepper }],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHorizontalStepper.ctorParameters = function () { return []; };\n return MatHorizontalStepper;\n}(MatStepper));\nvar MatVerticalStepper = (function (_super) {\n __extends(MatVerticalStepper, _super);\n function MatVerticalStepper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatVerticalStepper.decorators = [\n { type: Component, args: [{selector: 'mat-vertical-stepper',\n exportAs: 'matVerticalStepper',\n template: \"<div class=\\\"mat-step\\\" *ngFor=\\\"let step of _steps; let i = index; let isLast = last\\\"><mat-step-header class=\\\"mat-vertical-stepper-header\\\" (click)=\\\"step.select()\\\" (keydown)=\\\"_onKeydown($event)\\\" [tabIndex]=\\\"_focusIndex == i ? 0 : -1\\\" [id]=\\\"_getStepLabelId(i)\\\" [attr.aria-controls]=\\\"_getStepContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex === i\\\" [index]=\\\"i\\\" [icon]=\\\"_getIndicatorType(i)\\\" [label]=\\\"step.stepLabel || step.label\\\" [selected]=\\\"selectedIndex === i\\\" [active]=\\\"step.completed || selectedIndex === i\\\" [optional]=\\\"step.optional\\\"></mat-step-header><div class=\\\"mat-vertical-content-container\\\" [class.mat-stepper-vertical-line]=\\\"!isLast\\\"><div class=\\\"mat-vertical-stepper-content\\\" role=\\\"tabpanel\\\" [@stepTransition]=\\\"_getAnimationDirection(i)\\\" [id]=\\\"_getStepContentId(i)\\\" [attr.aria-labelledby]=\\\"_getStepLabelId(i)\\\" [attr.aria-expanded]=\\\"selectedIndex === i\\\"><div class=\\\"mat-vertical-content\\\"><ng-container [ngTemplateOutlet]=\\\"step.content\\\"></ng-container></div></div></div></div>\",\n styles: [\".mat-stepper-horizontal,.mat-stepper-vertical{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon,.mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon,[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:8px}.mat-vertical-stepper-header{display:flex;align-items:center;padding:24px;max-height:24px}.mat-vertical-stepper-header .mat-step-icon,.mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon,[dir=rtl] .mat-vertical-stepper-header .mat-step-icon-not-touched{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{overflow:hidden}.mat-horizontal-stepper-content[aria-expanded=false]{height:0}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:'';position:absolute;top:-16px;bottom:-16px;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\"],\n inputs: ['selectedIndex'],\n host: {\n 'class': 'mat-stepper-vertical',\n 'role': 'tablist',\n },\n animations: [\n trigger('stepTransition', [\n state('previous', style({ height: '0px', visibility: 'hidden' })),\n state('next', style({ height: '0px', visibility: 'hidden' })),\n state('current', style({ height: '*', visibility: 'visible' })),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n ])\n ],\n providers: [{ provide: MatStepper, useExisting: MatVerticalStepper }],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatVerticalStepper.ctorParameters = function () { return []; };\n return MatVerticalStepper;\n}(MatStepper));\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatStepperNext = CdkStepperNext;\nvar _MatStepperPrevious = CdkStepperPrevious;\n/**\n * Button that moves to the next step in a stepper workflow.\n */\nvar MatStepperNext = (function (_super) {\n __extends(MatStepperNext, _super);\n function MatStepperNext() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatStepperNext.decorators = [\n { type: Directive, args: [{\n selector: 'button[matStepperNext]',\n host: { '(click)': '_stepper.next()' },\n providers: [{ provide: CdkStepper, useExisting: MatStepper }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepperNext.ctorParameters = function () { return []; };\n return MatStepperNext;\n}(_MatStepperNext));\n/**\n * Button that moves to the previous step in a stepper workflow.\n */\nvar MatStepperPrevious = (function (_super) {\n __extends(MatStepperPrevious, _super);\n function MatStepperPrevious() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatStepperPrevious.decorators = [\n { type: Directive, args: [{\n selector: 'button[matStepperPrevious]',\n host: { '(click)': '_stepper.previous()' },\n providers: [{ provide: CdkStepper, useExisting: MatStepper }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepperPrevious.ctorParameters = function () { return []; };\n return MatStepperPrevious;\n}(_MatStepperPrevious));\n\nvar MatStepperModule = (function () {\n function MatStepperModule() {\n }\n MatStepperModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n A11yModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader\n ],\n declarations: [MatHorizontalStepper, MatVerticalStepper, MatStep, MatStepLabel, MatStepper,\n MatStepperNext, MatStepperPrevious, MatStepHeader],\n providers: [MatStepperIntl, ErrorStateMatcher],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatStepperModule.ctorParameters = function () { return []; };\n return MatStepperModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatStepperModule, _MatStepLabel, MatStepLabel, _MatStep, _MatStepper, MatStep, MatStepper, MatHorizontalStepper, MatVerticalStepper, _MatStepperNext, _MatStepperPrevious, MatStepperNext, MatStepperPrevious, MatStepHeader, MatStepperIntl };\n//# sourceMappingURL=stepper.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, Directive, ElementRef, Input, NgModule, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { CDK_ROW_TEMPLATE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkColumnDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef, CdkTable, CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatTable = CdkTable;\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nvar MatTable = (function (_super) {\n __extends(MatTable, _super);\n function MatTable() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatTable.decorators = [\n { type: Component, args: [{selector: 'mat-table',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styles: [\".mat-table{display:block}.mat-header-row,.mat-row{display:flex;border-bottom-width:1px;border-bottom-style:solid;align-items:center;min-height:48px;padding:0 24px}.mat-cell,.mat-header-cell{flex:1}\"],\n host: {\n 'class': 'mat-table',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTable.ctorParameters = function () { return []; };\n return MatTable;\n}(_MatTable));\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatCellDef = CdkCellDef;\nvar _MatHeaderCellDef = CdkHeaderCellDef;\nvar _MatColumnDef = CdkColumnDef;\nvar _MatHeaderCell = CdkHeaderCell;\nvar _MatCell = CdkCell;\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nvar MatCellDef = (function (_super) {\n __extends(MatCellDef, _super);\n function MatCellDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatCellDef.decorators = [\n { type: Directive, args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCellDef.ctorParameters = function () { return []; };\n return MatCellDef;\n}(_MatCellDef));\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nvar MatHeaderCellDef = (function (_super) {\n __extends(MatHeaderCellDef, _super);\n function MatHeaderCellDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHeaderCellDef.decorators = [\n { type: Directive, args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderCellDef.ctorParameters = function () { return []; };\n return MatHeaderCellDef;\n}(_MatHeaderCellDef));\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nvar MatColumnDef = (function (_super) {\n __extends(MatColumnDef, _super);\n function MatColumnDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatColumnDef.decorators = [\n { type: Directive, args: [{\n selector: '[matColumnDef]',\n providers: [{ provide: CdkColumnDef, useExisting: MatColumnDef }],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatColumnDef.ctorParameters = function () { return []; };\n MatColumnDef.propDecorators = {\n 'name': [{ type: Input, args: ['matColumnDef',] },],\n };\n return MatColumnDef;\n}(_MatColumnDef));\n/**\n * Header cell template container that adds the right classes and role.\n */\nvar MatHeaderCell = (function (_super) {\n __extends(MatHeaderCell, _super);\n /**\n * @param {?} columnDef\n * @param {?} elementRef\n * @param {?} renderer\n */\n function MatHeaderCell(columnDef, elementRef, renderer) {\n var _this = _super.call(this, columnDef, elementRef, renderer) || this;\n renderer.addClass(elementRef.nativeElement, \"mat-column-\" + columnDef.cssClassFriendlyName);\n return _this;\n }\n MatHeaderCell.decorators = [\n { type: Directive, args: [{\n selector: 'mat-header-cell',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderCell.ctorParameters = function () { return [\n { type: CdkColumnDef, },\n { type: ElementRef, },\n { type: Renderer2, },\n ]; };\n return MatHeaderCell;\n}(_MatHeaderCell));\n/**\n * Cell template container that adds the right classes and role.\n */\nvar MatCell = (function (_super) {\n __extends(MatCell, _super);\n /**\n * @param {?} columnDef\n * @param {?} elementRef\n * @param {?} renderer\n */\n function MatCell(columnDef, elementRef, renderer) {\n var _this = _super.call(this, columnDef, elementRef, renderer) || this;\n renderer.addClass(elementRef.nativeElement, \"mat-column-\" + columnDef.cssClassFriendlyName);\n return _this;\n }\n MatCell.decorators = [\n { type: Directive, args: [{\n selector: 'mat-cell',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatCell.ctorParameters = function () { return [\n { type: CdkColumnDef, },\n { type: ElementRef, },\n { type: Renderer2, },\n ]; };\n return MatCell;\n}(_MatCell));\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatHeaderRowDef = CdkHeaderRowDef;\nvar _MatCdkRowDef = CdkRowDef;\nvar _MatHeaderRow = CdkHeaderRow;\nvar _MatRow = CdkRow;\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nvar MatHeaderRowDef = (function (_super) {\n __extends(MatHeaderRowDef, _super);\n function MatHeaderRowDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHeaderRowDef.decorators = [\n { type: Directive, args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: ['columns: matHeaderRowDef'],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderRowDef.ctorParameters = function () { return []; };\n return MatHeaderRowDef;\n}(_MatHeaderRowDef));\n/**\n * Data row definition for the mat-table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nvar MatRowDef = (function (_super) {\n __extends(MatRowDef, _super);\n function MatRowDef() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatRowDef.decorators = [\n { type: Directive, args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRowDef.ctorParameters = function () { return []; };\n return MatRowDef;\n}(_MatCdkRowDef));\n/**\n * Header template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatHeaderRow = (function (_super) {\n __extends(MatHeaderRow, _super);\n function MatHeaderRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatHeaderRow.decorators = [\n { type: Component, args: [{selector: 'mat-header-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatHeaderRow.ctorParameters = function () { return []; };\n return MatHeaderRow;\n}(_MatHeaderRow));\n/**\n * Data row template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatRow = (function (_super) {\n __extends(MatRow, _super);\n function MatRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MatRow.decorators = [\n { type: Component, args: [{selector: 'mat-row',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatRow.ctorParameters = function () { return []; };\n return MatRow;\n}(_MatRow));\n\nvar MatTableModule = (function () {\n function MatTableModule() {\n }\n MatTableModule.decorators = [\n { type: NgModule, args: [{\n imports: [CdkTableModule, CommonModule, MatCommonModule],\n exports: [MatTable, MatCellDef, MatHeaderCellDef, MatColumnDef,\n MatHeaderCell, MatCell, MatHeaderRow, MatRow,\n MatHeaderRowDef, MatRowDef],\n declarations: [MatTable, MatCellDef, MatHeaderCellDef, MatColumnDef,\n MatHeaderCell, MatCell, MatHeaderRow, MatRow,\n MatHeaderRowDef, MatRowDef],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTableModule.ctorParameters = function () { return []; };\n return MatTableModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatTableModule, _MatCellDef, _MatHeaderCellDef, _MatColumnDef, _MatHeaderCell, _MatCell, MatCellDef, MatHeaderCellDef, MatColumnDef, MatHeaderCell, MatCell, _MatTable, MatTable, _MatHeaderRowDef, _MatCdkRowDef, _MatHeaderRow, _MatRow, MatHeaderRowDef, MatRowDef, MatHeaderRow, MatRow };\n//# sourceMappingURL=table.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { PortalHostDirective, PortalModule, TemplatePortal, TemplatePortalDirective } from '@angular/cdk/portal';\nimport { ScrollDispatchModule, VIEWPORT_RULER_PROVIDER, ViewportRuler } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, Input, NgModule, NgZone, Optional, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatRipple, MatRippleModule, mixinColor, mixinDisableRipple, mixinDisabled } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\nimport { Subject } from 'rxjs/Subject';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs/Subscription';\nimport { merge } from 'rxjs/observable/merge';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { startWith, takeUntil } from '@angular/cdk/rxjs';\nimport { of } from 'rxjs/observable/of';\nimport { Platform } from '@angular/cdk/platform';\n\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * \\@docs-private\n */\nvar MatInkBar = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _ngZone\n */\n function MatInkBar(_renderer, _elementRef, _ngZone) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n }\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype.alignToElement = function (element) {\n var _this = this;\n this.show();\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(function () {\n requestAnimationFrame(function () { return _this._setStyles(element); });\n });\n }\n else {\n this._setStyles(element);\n }\n };\n /**\n * Shows the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.show = function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\n };\n /**\n * Hides the ink bar.\n * @return {?}\n */\n MatInkBar.prototype.hide = function () {\n this._renderer.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\n };\n /**\n * Sets the proper styles to the ink bar element.\n * @param {?} element\n * @return {?}\n */\n MatInkBar.prototype._setStyles = function (element) {\n var /** @type {?} */ left = element ? (element.offsetLeft || 0) + 'px' : '0';\n var /** @type {?} */ width = element ? (element.offsetWidth || 0) + 'px' : '0';\n this._renderer.setStyle(this._elementRef.nativeElement, 'left', left);\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', width);\n };\n MatInkBar.decorators = [\n { type: Directive, args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatInkBar.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: NgZone, },\n ]; };\n return MatInkBar;\n}());\n\n/**\n * Workaround for https://github.com/angular/angular/issues/17849\n */\nvar _MatTabLabelBaseClass = TemplatePortalDirective;\n/**\n * Used to flag tab labels for use with the portal directive\n */\nvar MatTabLabel = (function (_super) {\n __extends(MatTabLabel, _super);\n /**\n * @param {?} templateRef\n * @param {?} viewContainerRef\n */\n function MatTabLabel(templateRef, viewContainerRef) {\n return _super.call(this, templateRef, viewContainerRef) || this;\n }\n MatTabLabel.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLabel.ctorParameters = function () { return [\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n ]; };\n return MatTabLabel;\n}(_MatTabLabelBaseClass));\n\n/**\n * \\@docs-private\n */\nvar MatTabBase = (function () {\n function MatTabBase() {\n }\n return MatTabBase;\n}());\nvar _MatTabMixinBase = mixinDisabled(MatTabBase);\nvar MatTab = (function (_super) {\n __extends(MatTab, _super);\n /**\n * @param {?} _viewContainerRef\n */\n function MatTab(_viewContainerRef) {\n var _this = _super.call(this) || this;\n _this._viewContainerRef = _viewContainerRef;\n /**\n * The plain text label for the tab, used when there is no template label.\n */\n _this.textLabel = '';\n /**\n * The portal that will be the hosted content of the tab\n */\n _this._contentPortal = null;\n /**\n * Emits whenever the label changes.\n */\n _this._labelChange = new Subject();\n /**\n * Emits whenevfer the disable changes\n */\n _this._disableChange = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n _this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n _this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n _this.isActive = false;\n return _this;\n }\n Object.defineProperty(MatTab.prototype, \"content\", {\n /**\n * @return {?}\n */\n get: function () { return this._contentPortal; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n MatTab.prototype.ngOnChanges = function (changes) {\n if (changes.hasOwnProperty('textLabel')) {\n this._labelChange.next();\n }\n if (changes.hasOwnProperty('disabled')) {\n this._disableChange.next();\n }\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnDestroy = function () {\n this._disableChange.complete();\n this._labelChange.complete();\n };\n /**\n * @return {?}\n */\n MatTab.prototype.ngOnInit = function () {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n };\n MatTab.decorators = [\n { type: Component, args: [{selector: 'mat-tab',\n template: \"<ng-template><ng-content></ng-content></ng-template>\",\n inputs: ['disabled'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matTab',\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTab.ctorParameters = function () { return [\n { type: ViewContainerRef, },\n ]; };\n MatTab.propDecorators = {\n 'templateLabel': [{ type: ContentChild, args: [MatTabLabel,] },],\n '_content': [{ type: ViewChild, args: [TemplateRef,] },],\n 'textLabel': [{ type: Input, args: ['label',] },],\n };\n return MatTab;\n}(_MatTabMixinBase));\n\n/**\n * Wrapper for the contents of a tab.\n * \\@docs-private\n */\nvar MatTabBody = (function () {\n /**\n * @param {?} _elementRef\n * @param {?} _dir\n */\n function MatTabBody(_elementRef, _dir) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /**\n * Event emitted when the tab begins to animate towards the center as the active tab.\n */\n this._onCentering = new EventEmitter();\n /**\n * Event emitted when the tab completes its animation towards the center.\n */\n this._onCentered = new EventEmitter(true);\n }\n Object.defineProperty(MatTabBody.prototype, \"position\", {\n /**\n * @param {?} position\n * @return {?}\n */\n set: function (position) {\n if (position < 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'left' : 'right';\n }\n else if (position > 0) {\n this._position = this._getLayoutDirection() == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabBody.prototype, \"origin\", {\n /**\n * The origin position from which this tab should appear when it is centered into view.\n * @param {?} origin\n * @return {?}\n */\n set: function (origin) {\n if (origin == null) {\n return;\n }\n var /** @type {?} */ dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n this._origin = 'left';\n }\n else {\n this._origin = 'right';\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n * @return {?}\n */\n MatTabBody.prototype.ngOnInit = function () {\n if (this._position == 'center' && this._origin) {\n this._position = this._origin == 'left' ? 'left-origin-center' : 'right-origin-center';\n }\n };\n /**\n * After the view has been set, check if the tab content is set to the center and attach the\n * content if it is not already attached.\n * @return {?}\n */\n MatTabBody.prototype.ngAfterViewChecked = function () {\n if (this._isCenterPosition(this._position) && !this._portalHost.hasAttached()) {\n this._portalHost.attach(this._content);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabStarted = function (e) {\n if (this._isCenterPosition(e.toState)) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n };\n /**\n * @param {?} e\n * @return {?}\n */\n MatTabBody.prototype._onTranslateTabComplete = function (e) {\n // If the end state is that the tab is not centered, then detach the content.\n if (!this._isCenterPosition(e.toState) && !this._isCenterPosition(this._position)) {\n this._portalHost.detach();\n }\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(e.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n };\n /**\n * The text direction of the containing app.\n * @return {?}\n */\n MatTabBody.prototype._getLayoutDirection = function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n };\n /**\n * Whether the provided position state is considered center, regardless of origin.\n * @param {?} position\n * @return {?}\n */\n MatTabBody.prototype._isCenterPosition = function (position) {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n };\n MatTabBody.decorators = [\n { type: Component, args: [{selector: 'mat-tab-body',\n template: \"<div class=\\\"mat-tab-body-content\\\" #content [@translateTab]=\\\"_position\\\" (@translateTab.start)=\\\"_onTranslateTabStarted($event)\\\" (@translateTab.done)=\\\"_onTranslateTabComplete($event)\\\"><ng-template cdkPortalHost></ng-template></div>\",\n styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-body',\n },\n animations: [\n trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n state('left', style({ transform: 'translate3d(-100%, 0, 0)' })),\n state('right', style({ transform: 'translate3d(100%, 0, 0)' })),\n transition('* => left, * => right, left => center, right => center', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)' }),\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n ])\n ])\n ]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabBody.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabBody.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n '_onCentering': [{ type: Output },],\n '_onCentered': [{ type: Output },],\n '_content': [{ type: Input, args: ['content',] },],\n 'position': [{ type: Input, args: ['position',] },],\n 'origin': [{ type: Input, args: ['origin',] },],\n };\n return MatTabBody;\n}());\n\n/**\n * Used to generate unique ID's for each tab component\n */\nvar nextId = 0;\n/**\n * A simple change event emitted on focus or selection changes.\n */\nvar MatTabChangeEvent = (function () {\n function MatTabChangeEvent() {\n }\n return MatTabChangeEvent;\n}());\n/**\n * \\@docs-private\n */\nvar MatTabGroupBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatTabGroupBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabGroupBase;\n}());\nvar _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'primary');\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://www.google.com/design/spec/components/tabs.html\n */\nvar MatTabGroup = (function (_super) {\n __extends(MatTabGroup, _super);\n /**\n * @param {?} _renderer\n * @param {?} elementRef\n * @param {?} _changeDetectorRef\n */\n function MatTabGroup(_renderer, elementRef, _changeDetectorRef) {\n var _this = _super.call(this, _renderer, elementRef) || this;\n _this._changeDetectorRef = _changeDetectorRef;\n /**\n * Whether this component has been initialized.\n */\n _this._isInitialized = false;\n /**\n * The tab index that should be selected after the content has been checked.\n */\n _this._indexToSelect = 0;\n /**\n * Snapshot of the height of the tab body wrapper before another tab is activated.\n */\n _this._tabBodyWrapperHeight = 0;\n /**\n * Subscription to tabs being added/removed.\n */\n _this._tabsSubscription = Subscription.EMPTY;\n /**\n * Subscription to changes in the tab labels.\n */\n _this._tabLabelSubscription = Subscription.EMPTY;\n _this._dynamicHeight = false;\n _this._selectedIndex = null;\n /**\n * Position of the tab header.\n */\n _this.headerPosition = 'above';\n /**\n * Output to enable support for two-way binding on `[(selectedIndex)]`\n */\n _this.selectedIndexChange = new EventEmitter();\n /**\n * Event emitted when focus has changed within a tab group.\n */\n _this.focusChange = new EventEmitter();\n /**\n * Event emitted when the tab selection has changed.\n */\n _this.selectedTabChange = new EventEmitter(true);\n /**\n * Event emitted when the tab selection has changed.\n * @deprecated Use `selectedTabChange` instead.\n */\n _this.selectChange = _this.selectedTabChange;\n _this._groupId = nextId++;\n return _this;\n }\n Object.defineProperty(MatTabGroup.prototype, \"dynamicHeight\", {\n /**\n * Whether the tab group should grow to the size of the active tab.\n * @return {?}\n */\n get: function () { return this._dynamicHeight; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._dynamicHeight = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"_dynamicHeightDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._dynamicHeight; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._dynamicHeight = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"selectedIndex\", {\n /**\n * @return {?}\n */\n get: function () { return this._selectedIndex; },\n /**\n * The index of the active tab.\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._indexToSelect = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabGroup.prototype, \"backgroundColor\", {\n /**\n * Background color of the tab group.\n * @return {?}\n */\n get: function () { return this._backgroundColor; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentChecked = function () {\n var _this = this;\n // Clamp the next selected index to the boundsof 0 and the tabs length.\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n var /** @type {?} */ indexToSelect = this._indexToSelect =\n Math.min(this._tabs.length - 1, Math.max(this._indexToSelect || 0, 0));\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect && this._selectedIndex != null) {\n var /** @type {?} */ tabChangeEvent = this._createChangeEvent(indexToSelect);\n this.selectedTabChange.emit(tabChangeEvent);\n // Emitting this value after change detection has run\n // since the checked content may contain this variable'\n Promise.resolve().then(function () { return _this.selectedIndexChange.emit(indexToSelect); });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach(function (tab, index) {\n tab.position = index - indexToSelect;\n tab.isActive = index === indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (_this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - _this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(function () {\n _this._subscribeToTabLabels();\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * @return {?}\n */\n MatTabGroup.prototype.ngOnDestroy = function () {\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n };\n /**\n * Waits one frame for the view to update, then updates the ink bar\n * Note: This must be run outside of the zone or it will create an infinite change detection loop.\n * @return {?}\n */\n MatTabGroup.prototype.ngAfterViewChecked = function () {\n this._isInitialized = true;\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._focusChanged = function (index) {\n this.focusChange.emit(this._createChangeEvent(index));\n };\n /**\n * @param {?} index\n * @return {?}\n */\n MatTabGroup.prototype._createChangeEvent = function (index) {\n var /** @type {?} */ event = new MatTabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n };\n /**\n * Subscribes to changes in the tab labels. This is needed, because the \\@Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n * @return {?}\n */\n MatTabGroup.prototype._subscribeToTabLabels = function () {\n var _this = this;\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge.apply(void 0, this._tabs.map(function (tab) { return tab._disableChange; }).concat(this._tabs.map(function (tab) { return tab._labelChange; }))).subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n };\n /**\n * Returns a unique id for each tab label element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabLabelId = function (i) {\n return \"mat-tab-label-\" + this._groupId + \"-\" + i;\n };\n /**\n * Returns a unique id for each tab content element\n * @param {?} i\n * @return {?}\n */\n MatTabGroup.prototype._getTabContentId = function (i) {\n return \"mat-tab-content-\" + this._groupId + \"-\" + i;\n };\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n * @param {?} tabHeight\n * @return {?}\n */\n MatTabGroup.prototype._setTabBodyWrapperHeight = function (tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', this._tabBodyWrapperHeight + 'px');\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', tabHeight + 'px');\n }\n };\n /**\n * Removes the height of the tab body wrapper.\n * @return {?}\n */\n MatTabGroup.prototype._removeTabBodyWrapperHeight = function () {\n this._tabBodyWrapperHeight = this._tabBodyWrapper.nativeElement.clientHeight;\n this._renderer.setStyle(this._tabBodyWrapper.nativeElement, 'height', '');\n };\n MatTabGroup.decorators = [\n { type: Component, args: [{selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n template: \"<mat-tab-header #tabHeader [selectedIndex]=\\\"selectedIndex\\\" [disableRipple]=\\\"disableRipple\\\" (indexFocused)=\\\"_focusChanged($event)\\\" (selectFocusedIndex)=\\\"selectedIndex = $event\\\"><div class=\\\"mat-tab-label\\\" role=\\\"tab\\\" matTabLabelWrapper mat-ripple *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabLabelId(i)\\\" [tabIndex]=\\\"selectedIndex == i ? 0 : -1\\\" [attr.aria-controls]=\\\"_getTabContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex == i\\\" [class.mat-tab-label-active]=\\\"selectedIndex == i\\\" [disabled]=\\\"tab.disabled\\\" [matRippleDisabled]=\\\"disableRipple\\\" (click)=\\\"tabHeader.focusIndex = selectedIndex = i\\\"><ng-template [ngIf]=\\\"tab.templateLabel\\\"><ng-template [cdkPortalHost]=\\\"tab.templateLabel\\\"></ng-template></ng-template><ng-template [ngIf]=\\\"!tab.templateLabel\\\">{{tab.textLabel}}</ng-template></div></mat-tab-header><div class=\\\"mat-tab-body-wrapper\\\" #tabBodyWrapper><mat-tab-body role=\\\"tabpanel\\\" *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabContentId(i)\\\" [attr.aria-labelledby]=\\\"_getTabLabelId(i)\\\" [class.mat-tab-body-active]=\\\"selectedIndex == i\\\" [content]=\\\"tab.content\\\" [position]=\\\"tab.position\\\" [origin]=\\\"tab.origin\\\" (_onCentered)=\\\"_removeTabBodyWrapperHeight()\\\" (_onCentering)=\\\"_setTabBodyWrapperHeight($event)\\\"></mat-tab-body></div>\",\n styles: [\".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-label{padding:0 12px}}@media (max-width:960px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs] .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color', 'disableRipple'],\n host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabGroup.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n ]; };\n MatTabGroup.propDecorators = {\n '_tabs': [{ type: ContentChildren, args: [MatTab,] },],\n '_tabBodyWrapper': [{ type: ViewChild, args: ['tabBodyWrapper',] },],\n 'dynamicHeight': [{ type: Input },],\n '_dynamicHeightDeprecated': [{ type: Input, args: ['mat-dynamic-height',] },],\n 'selectedIndex': [{ type: Input },],\n 'headerPosition': [{ type: Input },],\n 'backgroundColor': [{ type: Input },],\n 'selectedIndexChange': [{ type: Output },],\n 'focusChange': [{ type: Output },],\n 'selectedTabChange': [{ type: Output },],\n 'selectChange': [{ type: Output },],\n };\n return MatTabGroup;\n}(_MatTabGroupMixinBase));\n\n/**\n * \\@docs-private\n */\nvar MatTabLabelWrapperBase = (function () {\n function MatTabLabelWrapperBase() {\n }\n return MatTabLabelWrapperBase;\n}());\nvar _MatTabLabelWrapperMixinBase = mixinDisabled(MatTabLabelWrapperBase);\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * \\@docs-private\n */\nvar MatTabLabelWrapper = (function (_super) {\n __extends(MatTabLabelWrapper, _super);\n /**\n * @param {?} elementRef\n */\n function MatTabLabelWrapper(elementRef) {\n var _this = _super.call(this) || this;\n _this.elementRef = elementRef;\n return _this;\n }\n /**\n * Sets focus on the wrapper element\n * @return {?}\n */\n MatTabLabelWrapper.prototype.focus = function () {\n this.elementRef.nativeElement.focus();\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetLeft = function () {\n return this.elementRef.nativeElement.offsetLeft;\n };\n /**\n * @return {?}\n */\n MatTabLabelWrapper.prototype.getOffsetWidth = function () {\n return this.elementRef.nativeElement.offsetWidth;\n };\n MatTabLabelWrapper.decorators = [\n { type: Directive, args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled'\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLabelWrapper.ctorParameters = function () { return [\n { type: ElementRef, },\n ]; };\n return MatTabLabelWrapper;\n}(_MatTabLabelWrapperMixinBase));\n\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nvar EXAGGERATED_OVERSCROLL = 60;\n/**\n * \\@docs-private\n */\nvar MatTabHeaderBase = (function () {\n function MatTabHeaderBase() {\n }\n return MatTabHeaderBase;\n}());\nvar _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * \\@docs-private\n */\nvar MatTabHeader = (function (_super) {\n __extends(MatTabHeader, _super);\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _changeDetectorRef\n * @param {?} _viewportRuler\n * @param {?} _dir\n */\n function MatTabHeader(_elementRef, _renderer, _changeDetectorRef, _viewportRuler, _dir) {\n var _this = _super.call(this) || this;\n _this._elementRef = _elementRef;\n _this._renderer = _renderer;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n _this._dir = _dir;\n /**\n * The tab index that is focused.\n */\n _this._focusIndex = 0;\n /**\n * The distance in pixels that the tab labels should be translated to the left.\n */\n _this._scrollDistance = 0;\n /**\n * Whether the header should scroll to the selected index after the view has been checked.\n */\n _this._selectedIndexChanged = false;\n /**\n * Combines listeners that will re-align the ink bar whenever they're invoked.\n */\n _this._realignInkBar = Subscription.EMPTY;\n /**\n * Whether the controls for pagination should be displayed\n */\n _this._showPaginationControls = false;\n /**\n * Whether the tab list can be scrolled more towards the end of the tab label list.\n */\n _this._disableScrollAfter = true;\n /**\n * Whether the tab list can be scrolled more towards the beginning of the tab label list.\n */\n _this._disableScrollBefore = true;\n _this._selectedIndex = 0;\n /**\n * Event emitted when the option is selected.\n */\n _this.selectFocusedIndex = new EventEmitter();\n /**\n * Event emitted when a label is focused.\n */\n _this.indexFocused = new EventEmitter();\n return _this;\n }\n Object.defineProperty(MatTabHeader.prototype, \"selectedIndex\", {\n /**\n * The index of the active tab.\n * @return {?}\n */\n get: function () { return this._selectedIndex; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._selectedIndexChanged = this._selectedIndex != value;\n this._selectedIndex = value;\n this._focusIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentChecked = function () {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._labelWrappers.length) {\n this._updatePagination();\n this._tabLabelCount = this._labelWrappers.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatTabHeader.prototype._handleKeydown = function (event) {\n switch (event.keyCode) {\n case RIGHT_ARROW:\n this._focusNextTab();\n break;\n case LEFT_ARROW:\n this._focusPreviousTab();\n break;\n case ENTER:\n case SPACE:\n this.selectFocusedIndex.emit(this.focusIndex);\n event.preventDefault();\n break;\n }\n };\n /**\n * Aligns the ink bar to the selected tab on load.\n * @return {?}\n */\n MatTabHeader.prototype.ngAfterContentInit = function () {\n var _this = this;\n var /** @type {?} */ dirChange = this._dir ? this._dir.change : of(null);\n var /** @type {?} */ resize = this._viewportRuler.change(150);\n this._realignInkBar = startWith.call(merge(dirChange, resize), null).subscribe(function () {\n _this._updatePagination();\n _this._alignInkBarToSelectedTab();\n });\n };\n /**\n * @return {?}\n */\n MatTabHeader.prototype.ngOnDestroy = function () {\n this._realignInkBar.unsubscribe();\n };\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n * @return {?}\n */\n MatTabHeader.prototype._onContentChanges = function () {\n this._updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Updating the view whether pagination should be enabled or not\n * @return {?}\n */\n MatTabHeader.prototype._updatePagination = function () {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n };\n Object.defineProperty(MatTabHeader.prototype, \"focusIndex\", {\n /**\n * Tracks which element has focus; used for keyboard navigation\n * @return {?}\n */\n get: function () { return this._focusIndex; },\n /**\n * When the focus index is set, we must manually send focus to the correct label\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (!this._isValidIndex(value) || this._focusIndex == value) {\n return;\n }\n this._focusIndex = value;\n this.indexFocused.emit(value);\n this._setTabFocus(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n * @param {?} index\n * @return {?}\n */\n MatTabHeader.prototype._isValidIndex = function (index) {\n if (!this._labelWrappers) {\n return true;\n }\n var /** @type {?} */ tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;\n return !!tab && !tab.disabled;\n };\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n * @param {?} tabIndex\n * @return {?}\n */\n MatTabHeader.prototype._setTabFocus = function (tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._labelWrappers && this._labelWrappers.length) {\n this._labelWrappers.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n var /** @type {?} */ containerEl = this._tabListContainer.nativeElement;\n var /** @type {?} */ dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n };\n /**\n * Moves the focus towards the beginning or the end of the list depending on the offset provided.\n * Valid offsets are 1 and -1.\n * @param {?} offset\n * @return {?}\n */\n MatTabHeader.prototype._moveFocus = function (offset) {\n if (this._labelWrappers) {\n var /** @type {?} */ tabs = this._labelWrappers.toArray();\n for (var /** @type {?} */ i = this.focusIndex + offset; i < tabs.length && i >= 0; i += offset) {\n if (this._isValidIndex(i)) {\n this.focusIndex = i;\n return;\n }\n }\n }\n };\n /**\n * Increment the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusNextTab = function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? 1 : -1);\n };\n /**\n * Decrement the focus index by 1 until a valid tab is found.\n * @return {?}\n */\n MatTabHeader.prototype._focusPreviousTab = function () {\n this._moveFocus(this._getLayoutDirection() == 'ltr' ? -1 : 1);\n };\n /**\n * The layout direction of the containing app.\n * @return {?}\n */\n MatTabHeader.prototype._getLayoutDirection = function () {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n };\n /**\n * Performs the CSS transformation on the tab list that will cause the list to scroll.\n * @return {?}\n */\n MatTabHeader.prototype._updateTabScrollPosition = function () {\n var /** @type {?} */ scrollDistance = this.scrollDistance;\n var /** @type {?} */ translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n this._renderer.setStyle(this._tabList.nativeElement, 'transform', \"translate3d(\" + translateX + \"px, 0, 0)\");\n };\n Object.defineProperty(MatTabHeader.prototype, \"scrollDistance\", {\n /**\n * @return {?}\n */\n get: function () { return this._scrollDistance; },\n /**\n * Sets the distance in pixels that the tab header should be transformed in the X-axis.\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} scrollDir\n * @return {?}\n */\n MatTabHeader.prototype._scrollHeader = function (scrollDir) {\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n this.scrollDistance += (scrollDir == 'before' ? -1 : 1) * viewLength / 3;\n };\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @param {?} labelIndex\n * @return {?}\n */\n MatTabHeader.prototype._scrollToLabel = function (labelIndex) {\n var /** @type {?} */ selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n var /** @type {?} */ labelBeforePos, /** @type {?} */ labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = selectedLabel.getOffsetLeft();\n labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n }\n else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\n labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\n }\n var /** @type {?} */ beforeVisiblePos = this.scrollDistance;\n var /** @type {?} */ afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\n else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n };\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._checkPaginationEnabled = function () {\n var /** @type {?} */ isEnabled = this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n };\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._checkScrollingControls = function () {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n * @return {?}\n */\n MatTabHeader.prototype._getMaxScrollDistance = function () {\n var /** @type {?} */ lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return (lengthOfTabList - viewLength) || 0;\n };\n /**\n * Tells the ink-bar to align itself to the current label wrapper\n * @return {?}\n */\n MatTabHeader.prototype._alignInkBarToSelectedTab = function () {\n var /** @type {?} */ selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n null;\n this._inkBar.alignToElement(selectedLabelWrapper);\n };\n MatTabHeader.decorators = [\n { type: Component, args: [{selector: 'mat-tab-header',\n template: \"<div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollBefore || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollBefore\\\" (click)=\\\"_scrollHeader('before')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div><div class=\\\"mat-tab-label-container\\\" #tabListContainer (keydown)=\\\"_handleKeydown($event)\\\"><div class=\\\"mat-tab-list\\\" #tabList role=\\\"tablist\\\" (cdkObserveContent)=\\\"_onContentChanges()\\\"><div class=\\\"mat-tab-labels\\\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollAfter || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollAfter\\\" (click)=\\\"_scrollHeader('after')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div>\",\n styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0;opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}\"],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabHeader.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatTabHeader.propDecorators = {\n '_labelWrappers': [{ type: ContentChildren, args: [MatTabLabelWrapper,] },],\n '_inkBar': [{ type: ViewChild, args: [MatInkBar,] },],\n '_tabListContainer': [{ type: ViewChild, args: ['tabListContainer',] },],\n '_tabList': [{ type: ViewChild, args: ['tabList',] },],\n 'selectedIndex': [{ type: Input },],\n 'selectFocusedIndex': [{ type: Output },],\n 'indexFocused': [{ type: Output },],\n };\n return MatTabHeader;\n}(_MatTabHeaderMixinBase));\n\n/**\n * \\@docs-private\n */\nvar MatTabNavBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatTabNavBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatTabNavBase;\n}());\nvar _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nvar MatTabNav = (function (_super) {\n __extends(MatTabNav, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _dir\n * @param {?} _ngZone\n * @param {?} _changeDetectorRef\n * @param {?} _viewportRuler\n */\n function MatTabNav(renderer, elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._dir = _dir;\n _this._ngZone = _ngZone;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._viewportRuler = _viewportRuler;\n /**\n * Subject that emits when the component has been destroyed.\n */\n _this._onDestroy = new Subject();\n _this._disableRipple = false;\n return _this;\n }\n Object.defineProperty(MatTabNav.prototype, \"backgroundColor\", {\n /**\n * Background color of the tab nav.\n * @return {?}\n */\n get: function () { return this._backgroundColor; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n this._renderer.removeClass(nativeElement, \"mat-background-\" + this.backgroundColor);\n if (value) {\n this._renderer.addClass(nativeElement, \"mat-background-\" + value);\n }\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabNav.prototype, \"disableRipple\", {\n /**\n * Whether ripples should be disabled for all links or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = coerceBooleanProperty(value);\n this._setLinkDisableRipple();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Notifies the component that the active link has been changed.\n * @param {?} element\n * @return {?}\n */\n MatTabNav.prototype.updateActiveLink = function (element) {\n this._activeLinkChanged = this._activeLinkElement != element;\n this._activeLinkElement = element;\n if (this._activeLinkChanged) {\n this._changeDetectorRef.markForCheck();\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n var /** @type {?} */ dirChange = _this._dir ? _this._dir.change : of(null);\n return takeUntil.call(merge(dirChange, _this._viewportRuler.change(10)), _this._onDestroy)\n .subscribe(function () { return _this._alignInkBar(); });\n });\n this._setLinkDisableRipple();\n };\n /**\n * Checks if the active link has been changed and, if so, will update the ink bar.\n * @return {?}\n */\n MatTabNav.prototype.ngAfterContentChecked = function () {\n if (this._activeLinkChanged) {\n this._alignInkBar();\n this._activeLinkChanged = false;\n }\n };\n /**\n * @return {?}\n */\n MatTabNav.prototype.ngOnDestroy = function () {\n this._onDestroy.next();\n this._onDestroy.complete();\n };\n /**\n * Aligns the ink bar to the active link.\n * @return {?}\n */\n MatTabNav.prototype._alignInkBar = function () {\n if (this._activeLinkElement) {\n this._inkBar.alignToElement(this._activeLinkElement.nativeElement);\n }\n };\n /**\n * Sets the `disableRipple` property on each link of the navigation bar.\n * @return {?}\n */\n MatTabNav.prototype._setLinkDisableRipple = function () {\n var _this = this;\n if (this._tabLinks) {\n this._tabLinks.forEach(function (link) { return link.disableRipple = _this.disableRipple; });\n }\n };\n MatTabNav.decorators = [\n { type: Component, args: [{selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color', 'disableRipple'],\n template: \"<div class=\\\"mat-tab-links\\\" (cdkObserveContent)=\\\"_alignInkBar()\\\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>\",\n styles: [\".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden}.mat-tab-link:focus{outline:0;opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default;pointer-events:none}@media (max-width:600px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}\"],\n host: { 'class': 'mat-tab-nav-bar' },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabNav.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: NgZone, },\n { type: ChangeDetectorRef, },\n { type: ViewportRuler, },\n ]; };\n MatTabNav.propDecorators = {\n '_inkBar': [{ type: ViewChild, args: [MatInkBar,] },],\n '_tabLinks': [{ type: ContentChildren, args: [forwardRef(function () { return MatTabLink; }), { descendants: true },] },],\n 'backgroundColor': [{ type: Input },],\n };\n return MatTabNav;\n}(_MatTabNavMixinBase));\nvar MatTabLinkBase = (function () {\n function MatTabLinkBase() {\n }\n return MatTabLinkBase;\n}());\nvar _MatTabLinkMixinBase = mixinDisabled(MatTabLinkBase);\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nvar MatTabLink = (function (_super) {\n __extends(MatTabLink, _super);\n /**\n * @param {?} _tabNavBar\n * @param {?} _elementRef\n * @param {?} ngZone\n * @param {?} platform\n * @param {?} globalOptions\n */\n function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalOptions) {\n var _this = _super.call(this) || this;\n _this._tabNavBar = _tabNavBar;\n _this._elementRef = _elementRef;\n /**\n * Whether the tab link is active or not.\n */\n _this._isActive = false;\n /**\n * Whether the ripples for this tab should be disabled or not.\n */\n _this._disableRipple = false;\n // Manually create a ripple instance that uses the tab link element as trigger element.\n // Notice that the lifecycle hooks for the ripple config won't be called anymore.\n _this._tabLinkRipple = new MatRipple(_elementRef, ngZone, platform, globalOptions);\n return _this;\n }\n Object.defineProperty(MatTabLink.prototype, \"active\", {\n /**\n * Whether the link is active.\n * @return {?}\n */\n get: function () { return this._isActive; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._isActive = value;\n if (value) {\n this._tabNavBar.updateActiveLink(this._elementRef);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"disableRipple\", {\n /**\n * Whether ripples should be disabled or not.\n * @return {?}\n */\n get: function () { return this._disableRipple; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._disableRipple = value;\n this._tabLinkRipple.disabled = this.disableRipple;\n this._tabLinkRipple._updateRippleRenderer();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatTabLink.prototype, \"tabIndex\", {\n /**\n * \\@docs-private\n * @return {?}\n */\n get: function () {\n return this.disabled ? -1 : 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatTabLink.prototype.ngOnDestroy = function () {\n // Manually call the ngOnDestroy lifecycle hook of the ripple instance because it won't be\n // called automatically since its instance is not created by Angular.\n this._tabLinkRipple.ngOnDestroy();\n };\n MatTabLink.decorators = [\n { type: Directive, args: [{\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled'],\n host: {\n 'class': 'mat-tab-link',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.tabindex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n }\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabLink.ctorParameters = function () { return [\n { type: MatTabNav, },\n { type: ElementRef, },\n { type: NgZone, },\n { type: Platform, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n ]; };\n MatTabLink.propDecorators = {\n 'active': [{ type: Input },],\n };\n return MatTabLink;\n}(_MatTabLinkMixinBase));\n\nvar MatTabsModule = (function () {\n function MatTabsModule() {\n }\n MatTabsModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n ScrollDispatchModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabHeader\n ],\n providers: [VIEWPORT_RULER_PROVIDER],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatTabsModule.ctorParameters = function () { return []; };\n return MatTabsModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatInkBar, MatTabBody, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, MatTabBase as ɵe23, _MatTabMixinBase as ɵf23, MatTabHeaderBase as ɵa23, _MatTabHeaderMixinBase as ɵb23, MatTabLabelWrapperBase as ɵc23, _MatTabLabelWrapperMixinBase as ɵd23, MatTabLinkBase as ɵi23, MatTabNavBase as ɵg23, _MatTabLinkMixinBase as ɵj23, _MatTabNavMixinBase as ɵh23 };\n//# sourceMappingURL=tabs.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, Directive, ElementRef, NgModule, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { MatCommonModule, mixinColor } from '@angular/material/core';\nimport { __extends } from 'tslib';\nimport * as tslib_1 from 'tslib';\n\nvar MatToolbarRow = (function () {\n function MatToolbarRow() {\n }\n MatToolbarRow.decorators = [\n { type: Directive, args: [{\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: { 'class': 'mat-toolbar-row' },\n },] },\n ];\n /**\n * @nocollapse\n */\n MatToolbarRow.ctorParameters = function () { return []; };\n return MatToolbarRow;\n}());\n/**\n * \\@docs-private\n */\nvar MatToolbarBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatToolbarBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatToolbarBase;\n}());\nvar _MatToolbarMixinBase = mixinColor(MatToolbarBase);\nvar MatToolbar = (function (_super) {\n __extends(MatToolbar, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n */\n function MatToolbar(renderer, elementRef) {\n return _super.call(this, renderer, elementRef) || this;\n }\n MatToolbar.decorators = [\n { type: Component, args: [{selector: 'mat-toolbar',\n exportAs: 'matToolbar',\n template: \"<div class=\\\"mat-toolbar-layout\\\"><mat-toolbar-row><ng-content></ng-content></mat-toolbar-row><ng-content select=\\\"mat-toolbar-row\\\"></ng-content></div>\",\n styles: [\".mat-toolbar{display:flex;box-sizing:border-box;width:100%;padding:0 16px;flex-direction:column}.mat-toolbar .mat-toolbar-row{display:flex;box-sizing:border-box;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar{min-height:64px}.mat-toolbar-row{height:64px}@media (max-width:600px){.mat-toolbar{min-height:56px}.mat-toolbar-row{height:56px}}\"],\n inputs: ['color'],\n host: {\n 'class': 'mat-toolbar',\n 'role': 'toolbar'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatToolbar.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n ]; };\n return MatToolbar;\n}(_MatToolbarMixinBase));\n\nvar MatToolbarModule = (function () {\n function MatToolbarModule() {\n }\n MatToolbarModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatCommonModule],\n exports: [MatToolbar, MatToolbarRow, MatCommonModule],\n declarations: [MatToolbar, MatToolbarRow],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatToolbarModule.ctorParameters = function () { return []; };\n return MatToolbarModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatToolbarModule, MatToolbarRow, MatToolbarBase, _MatToolbarMixinBase, MatToolbar };\n//# sourceMappingURL=toolbar.es5.js.map\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version } from '@angular/core';\nimport { AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, getMatAutocompleteMissingPanelError } from '@angular/material/autocomplete';\nimport { MatAnchor, MatButton, MatButtonBase, MatButtonCssMatStyler, MatButtonModule, MatFab, MatIconButtonCssMatStyler, MatMiniFab, MatRaisedButtonCssMatStyler, _MatButtonMixinBase } from '@angular/material/button';\nimport { MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggle, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleGroupBase, MatButtonToggleGroupMultiple, MatButtonToggleModule, _MatButtonToggleGroupMixinBase } from '@angular/material/button-toggle';\nimport { MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage } from '@angular/material/card';\nimport { MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckbox, MatCheckboxBase, MatCheckboxChange, MatCheckboxModule, MatCheckboxRequiredValidator, TransitionCheckState, _MatCheckboxMixinBase, _MatCheckboxRequiredValidator } from '@angular/material/checkbox';\nimport { MatBasicChip, MatChip, MatChipBase, MatChipInput, MatChipList, MatChipListChange, MatChipRemove, MatChipSelectionChange, MatChipsModule, _MatChipMixinBase } from '@angular/material/chips';\nimport { APR, AUG, AnimationCurves, AnimationDurations, CompatibilityModule, DEC, DateAdapter, ErrorStateMatcher, FEB, GestureConfig, JAN, JUL, JUN, MAR, MATERIAL_COMPATIBILITY_MODE, MATERIAL_SANITY_CHECKS, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_DATE_LOCALE_PROVIDER, MAT_ELEMENTS_SELECTOR, MAT_NATIVE_DATE_FORMATS, MAT_PLACEHOLDER_GLOBAL_OPTIONS, MAT_RIPPLE_GLOBAL_OPTIONS, MAY, MD_ELEMENTS_SELECTOR, MatCommonModule, MatLine, MatLineModule, MatLineSetter, MatNativeDateModule, MatOptgroup, MatOptgroupBase, MatOption, MatOptionModule, MatOptionSelectionChange, MatPrefixRejector, MatPseudoCheckbox, MatPseudoCheckboxModule, MatRipple, MatRippleModule, MdPrefixRejector, NOV, NativeDateAdapter, NativeDateModule, NoConflictStyleCompatibilityMode, OCT, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION, RippleRef, RippleState, SEP, ShowOnDirtyErrorStateMatcher, _MatOptgroupMixinBase, applyCssTransform, extendObject, mixinColor, mixinDisableRipple, mixinDisabled, mixinTabIndex } from '@angular/material/core';\nimport { MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MatCalendar, MatCalendarBody, MatCalendarCell, MatDatepicker, MatDatepickerContent, MatDatepickerInput, MatDatepickerInputEvent, MatDatepickerIntl, MatDatepickerModule, MatDatepickerToggle, MatMonthView, MatYearView, coerceDateProperty } from '@angular/material/datepicker';\nimport { MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, throwMatDialogContentAlreadyAttachedError } from '@angular/material/dialog';\nimport { AccordionItem, CdkAccordion, MatAccordion, MatExpansionModule, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle } from '@angular/material/expansion';\nimport { MatError, MatFormField, MatFormFieldControl, MatFormFieldModule, MatHint, MatPlaceholder, MatPrefix, MatSuffix, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError } from '@angular/material/form-field';\nimport { MatGridList, MatGridListModule, MatGridTile } from '@angular/material/grid-list';\nimport { ICON_REGISTRY_PROVIDER, ICON_REGISTRY_PROVIDER_FACTORY, MatIcon, MatIconBase, MatIconModule, MatIconRegistry, _MatIconMixinBase, getMatIconFailedToSanitizeError, getMatIconNameNotFoundError, getMatIconNoHttpProviderError } from '@angular/material/icon';\nimport { MatInput, MatInputModule, MatTextareaAutosize, getMatInputUnsupportedTypeError } from '@angular/material/input';\nimport { MatDividerCssMatStyler, MatList, MatListAvatarCssMatStyler, MatListBase, MatListCssMatStyler, MatListDivider, MatListIconCssMatStyler, MatListItem, MatListItemBase, MatListModule, MatListOption, MatListOptionBase, MatListSubheaderCssMatStyler, MatNavListCssMatStyler, MatSelectionList, MatSelectionListBase, _MatListItemMixinBase, _MatListMixinBase, _MatListOptionMixinBase, _MatSelectionListMixinBase } from '@angular/material/list';\nimport { MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger, fadeInItems, transformMenu } from '@angular/material/menu';\nimport { MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBar, MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinner, MatProgressSpinnerBase, MatProgressSpinnerModule, MatSpinner, _MatProgressSpinnerMixinBase } from '@angular/material/progress-spinner';\nimport { MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioButton, MatRadioButtonBase, MatRadioChange, MatRadioGroup, MatRadioGroupBase, MatRadioModule, _MatRadioButtonMixinBase, _MatRadioGroupMixinBase } from '@angular/material/radio';\nimport { MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MatSelect, MatSelectBase, MatSelectChange, MatSelectModule, MatSelectTrigger, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, _MatSelectMixinBase, fadeInContent, transformPanel } from '@angular/material/select';\nimport { MatDrawer, MatDrawerContainer, MatDrawerContent, MatDrawerToggleResult, MatSidenav, MatSidenavContainer, MatSidenavContent, MatSidenavModule, throwMatDuplicatedDrawerError } from '@angular/material/sidenav';\nimport { MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggle, MatSlideToggleBase, MatSlideToggleChange, MatSlideToggleModule, _MatSlideToggleMixinBase } from '@angular/material/slide-toggle';\nimport { MAT_SLIDER_VALUE_ACCESSOR, MatSlider, MatSliderBase, MatSliderChange, MatSliderModule, _MatSliderMixinBase } from '@angular/material/slider';\nimport { HIDE_ANIMATION, MAT_SNACK_BAR_DATA, MatSnackBar, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarModule, MatSnackBarRef, SHOW_ANIMATION, SimpleSnackBar } from '@angular/material/snack-bar';\nimport { MatSort, MatSortHeader, MatSortHeaderIntl, MatSortModule } from '@angular/material/sort';\nimport { MatHorizontalStepper, MatStep, MatStepHeader, MatStepLabel, MatStepper, MatStepperIntl, MatStepperModule, MatStepperNext, MatStepperPrevious, MatVerticalStepper, _MatStep, _MatStepLabel, _MatStepper, _MatStepperNext, _MatStepperPrevious } from '@angular/material/stepper';\nimport { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable, MatTableModule, _MatCdkRowDef, _MatCell, _MatCellDef, _MatColumnDef, _MatHeaderCell, _MatHeaderCellDef, _MatHeaderRow, _MatHeaderRowDef, _MatRow, _MatTable } from '@angular/material/table';\nimport { MatInkBar, MatTab, MatTabBody, MatTabChangeEvent, MatTabGroup, MatTabGroupBase, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabsModule, _MatTabGroupMixinBase } from '@angular/material/tabs';\nimport { MatToolbar, MatToolbarBase, MatToolbarModule, MatToolbarRow, _MatToolbarMixinBase } from '@angular/material/toolbar';\nimport { MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY, MatTooltip, MatTooltipModule, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, TOUCHEND_HIDE_DELAY, TooltipComponent, getMatTooltipInvalidPositionError } from '@angular/material/tooltip';\n\n/**\n * Current version of Angular Material.\n */\nvar VERSION = new Version('0.0.0-PLACEHOLDER');\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { VERSION, MatAutocompleteSelectedEvent, MatAutocomplete, MatAutocompleteModule, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, getMatAutocompleteMissingPanelError, MatAutocompleteTrigger, MatButtonModule, MatButtonCssMatStyler, MatRaisedButtonCssMatStyler, MatIconButtonCssMatStyler, MatFab, MatMiniFab, MatButtonBase, _MatButtonMixinBase, MatButton, MatAnchor, MatButtonToggleGroupBase, _MatButtonToggleGroupMixinBase, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleGroupMultiple, MatButtonToggle, MatButtonToggleModule, MatCardContent, MatCardTitle, MatCardSubtitle, MatCardActions, MatCardFooter, MatCardImage, MatCardSmImage, MatCardMdImage, MatCardLgImage, MatCardXlImage, MatCardAvatar, MatCard, MatCardHeader, MatCardTitleGroup, MatCardModule, MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, TransitionCheckState, MatCheckboxChange, MatCheckboxBase, _MatCheckboxMixinBase, MatCheckbox, MatCheckboxModule, _MatCheckboxRequiredValidator, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckboxRequiredValidator, MatChipsModule, MatChipListChange, MatChipList, MatChipSelectionChange, MatChipBase, _MatChipMixinBase, MatBasicChip, MatChip, MatChipRemove, MatChipInput, AnimationCurves, AnimationDurations, MatCommonModule, MATERIAL_SANITY_CHECKS, mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MATERIAL_COMPATIBILITY_MODE, MAT_ELEMENTS_SELECTOR, MD_ELEMENTS_SELECTOR, MatPrefixRejector, MdPrefixRejector, CompatibilityModule, NoConflictStyleCompatibilityMode, NativeDateModule, MatNativeDateModule, MAT_DATE_LOCALE, MAT_DATE_LOCALE_PROVIDER, DateAdapter, MAT_DATE_FORMATS, NativeDateAdapter, MAT_NATIVE_DATE_FORMATS, ShowOnDirtyErrorStateMatcher, ErrorStateMatcher, GestureConfig, MatLine, MatLineSetter, MatLineModule, MatOptionModule, MatOptionSelectionChange, MatOption, MatOptgroupBase, _MatOptgroupMixinBase, MatOptgroup, MAT_PLACEHOLDER_GLOBAL_OPTIONS, MatRipple, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRef, RippleState, RIPPLE_FADE_IN_DURATION, RIPPLE_FADE_OUT_DURATION, MatRippleModule, MatPseudoCheckboxModule, MatPseudoCheckbox, applyCssTransform, extendObject, JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, MatDatepickerModule, MatCalendar, MatCalendarCell, MatCalendarBody, coerceDateProperty, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MatDatepickerContent, MatDatepicker, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, MatDatepickerInputEvent, MatDatepickerInput, MatDatepickerIntl, MatDatepickerToggle, MatMonthView, MatYearView, MatDialogModule, MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog, throwMatDialogContentAlreadyAttachedError, MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogConfig, MatDialogRef, CdkAccordion, MatAccordion, AccordionItem, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelDescription, MatExpansionPanelTitle, MatExpansionModule, MatFormFieldModule, MatError, MatFormField, MatFormFieldControl, getMatFormFieldPlaceholderConflictError, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, MatHint, MatPlaceholder, MatPrefix, MatSuffix, MatGridTile, MatGridListModule, MatGridList, MatIconModule, MatIconBase, _MatIconMixinBase, MatIcon, getMatIconNameNotFoundError, getMatIconNoHttpProviderError, getMatIconFailedToSanitizeError, MatIconRegistry, ICON_REGISTRY_PROVIDER_FACTORY, ICON_REGISTRY_PROVIDER, MatInputModule, MatTextareaAutosize, MatInput, getMatInputUnsupportedTypeError, MatListModule, MatListBase, _MatListMixinBase, MatListItemBase, _MatListItemMixinBase, MatListDivider, MatList, MatListCssMatStyler, MatNavListCssMatStyler, MatDividerCssMatStyler, MatListAvatarCssMatStyler, MatListIconCssMatStyler, MatListSubheaderCssMatStyler, MatListItem, MatSelectionListBase, _MatSelectionListMixinBase, MatListOptionBase, _MatListOptionMixinBase, MatListOption, MatSelectionList, MAT_MENU_SCROLL_STRATEGY, fadeInItems, transformMenu, MatMenuModule, MatMenu, MAT_MENU_DEFAULT_OPTIONS, MatMenuItem, MatMenuTrigger, MatPaginatorModule, PageEvent, MatPaginator, MatPaginatorIntl, MatProgressBarModule, MatProgressBar, MatProgressSpinnerModule, MatProgressSpinnerBase, _MatProgressSpinnerMixinBase, MatProgressSpinner, MatSpinner, MatRadioModule, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioChange, MatRadioGroupBase, _MatRadioGroupMixinBase, MatRadioGroup, MatRadioButtonBase, _MatRadioButtonMixinBase, MatRadioButton, MatSelectModule, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelectChange, MatSelectBase, _MatSelectMixinBase, MatSelectTrigger, MatSelect, transformPanel, fadeInContent, MatSidenavModule, throwMatDuplicatedDrawerError, MatDrawerToggleResult, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer, MatSlideToggleModule, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggleChange, MatSlideToggleBase, _MatSlideToggleMixinBase, MatSlideToggle, MatSliderModule, MAT_SLIDER_VALUE_ACCESSOR, MatSliderChange, MatSliderBase, _MatSliderMixinBase, MatSlider, MatSnackBarModule, MatSnackBar, SHOW_ANIMATION, HIDE_ANIMATION, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar, MatSortModule, MatSortHeader, MatSortHeaderIntl, MatSort, MatStepperModule, _MatStepLabel, MatStepLabel, _MatStep, _MatStepper, MatStep, MatStepper, MatHorizontalStepper, MatVerticalStepper, _MatStepperNext, _MatStepperPrevious, MatStepperNext, MatStepperPrevious, MatStepHeader, MatStepperIntl, MatTableModule, _MatCellDef, _MatHeaderCellDef, _MatColumnDef, _MatHeaderCell, _MatCell, MatCellDef, MatHeaderCellDef, MatColumnDef, MatHeaderCell, MatCell, _MatTable, MatTable, _MatHeaderRowDef, _MatCdkRowDef, _MatHeaderRow, _MatRow, MatHeaderRowDef, MatRowDef, MatHeaderRow, MatRow, MatInkBar, MatTabBody, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, MatToolbarModule, MatToolbarRow, MatToolbarBase, _MatToolbarMixinBase, MatToolbar, MatTooltipModule, TOUCHEND_HIDE_DELAY, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, getMatTooltipInvalidPositionError, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_PROVIDER, MatTooltip, TooltipComponent };\n//# sourceMappingURL=material.es5.js.map\n"],"names":["InjectionToken","Directive","NgModule","isDevMode","BidiModule","Optional","Inject","coerceBooleanProperty","LOCALE_ID","Subject","style","first","Injectable","HammerGestureConfig","delay","ElementRef","NgZone","Platform","Input","PlatformModule","Component","ViewEncapsulation","ChangeDetectionStrategy","EventEmitter","ENTER","SPACE","ChangeDetectorRef","Output","CommonModule","startWith","fromEvent","trigger","state","transition","animate","Renderer2","ViewChild","ContentChild","ContentChildren","ActiveDescendantKeyManager","TemplateRef","Overlay","NG_VALUE_ACCESSOR","forwardRef","merge","of","RxChain","filter","ESCAPE","UP_ARROW","DOWN_ARROW","TAB","doOperator","switchMap","TemplatePortal","OverlayConfig","ViewContainerRef","Directionality","Host","DOCUMENT","OverlayModule","Self","FocusMonitor","A11yModule","_uniqueIdCounter","UniqueSelectionDispatcher","UNIQUE_SELECTION_DISPATCHER_PROVIDER","nextUniqueId","Attribute","CheckboxRequiredValidator","NG_VALIDATORS","ObserversModule","DELETE","BACKSPACE","Subscription","FocusKeyManager","SelectionModel","RIGHT_ARROW","LEFT_ARROW","NgForm","FormGroupDirective","NgControl","FocusTrapFactory","PortalHostDirective","BasePortalHost","defer","ComponentPortal","PortalInjector","Injector","Location","SkipSelf","PortalModule","SecurityContext","map","_throw","catchOperator","forkJoin","Observable","finallyOperator","share","Http","DomSanitizer","HOME","END","PAGE_UP","PAGE_DOWN","first$1","Validators","getSupportedInputTypes","isFakeMousedownFromScreenReader","ViewportRuler","ConnectedOverlayDirective","ScrollDispatcher","AriaDescriber","ARIA_DESCRIBER_PROVIDER","VIEWPORT_RULER_PROVIDER","takeUntil","coerceNumberProperty","ScrollDispatchModule","HAMMER_GESTURE_CONFIG","_applyConfigDefaults","LiveAnnouncer","LIVE_ANNOUNCER_PROVIDER","keyframes","CdkColumnDef","CdkStepLabel","CdkStep","CdkStepper","ViewChildren","CdkStepperNext","CdkStepperPrevious","CdkStepperModule","CdkTable","CDK_TABLE_TEMPLATE","CdkCellDef","CdkHeaderCellDef","CdkHeaderCell","CdkCell","CdkHeaderRowDef","CdkRowDef","CdkHeaderRow","CdkRow","CDK_ROW_TEMPLATE","CdkTableModule","TemplatePortalDirective","nextId","Version"],"mappings":"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"}