@angular/material 10.0.0-rc.3 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/_theming.scss +17 -17
  2. package/autocomplete/index.metadata.json +1 -1
  3. package/autocomplete/testing/autocomplete-harness.d.ts +2 -0
  4. package/bundles/material-autocomplete-testing.umd.js +11 -0
  5. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  6. package/bundles/material-autocomplete-testing.umd.min.js +2 -2
  7. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  8. package/bundles/material-autocomplete.umd.js +3 -1
  9. package/bundles/material-autocomplete.umd.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.min.js +5 -5
  11. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/material-badge-testing.umd.min.js +1 -1
  13. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  14. package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
  15. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  16. package/bundles/material-button-testing.umd.js +11 -0
  17. package/bundles/material-button-testing.umd.js.map +1 -1
  18. package/bundles/material-button-testing.umd.min.js +2 -2
  19. package/bundles/material-button-testing.umd.min.js.map +1 -1
  20. package/bundles/material-button-toggle-testing.umd.js +11 -0
  21. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  22. package/bundles/material-button-toggle-testing.umd.min.js +3 -3
  23. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  24. package/bundles/material-button-toggle.umd.js +12 -3
  25. package/bundles/material-button-toggle.umd.js.map +1 -1
  26. package/bundles/material-button-toggle.umd.min.js +2 -2
  27. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  28. package/bundles/material-button.umd.js +7 -2
  29. package/bundles/material-button.umd.js.map +1 -1
  30. package/bundles/material-button.umd.min.js +4 -4
  31. package/bundles/material-button.umd.min.js.map +1 -1
  32. package/bundles/material-card-testing.umd.js +335 -0
  33. package/bundles/material-card-testing.umd.js.map +1 -0
  34. package/bundles/material-card-testing.umd.min.js +44 -0
  35. package/bundles/material-card-testing.umd.min.js.map +1 -0
  36. package/bundles/material-checkbox-testing.umd.js +11 -0
  37. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  38. package/bundles/material-checkbox-testing.umd.min.js +3 -3
  39. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  40. package/bundles/material-checkbox.umd.js.map +1 -1
  41. package/bundles/material-chips.umd.js +36 -12
  42. package/bundles/material-chips.umd.js.map +1 -1
  43. package/bundles/material-chips.umd.min.js +4 -4
  44. package/bundles/material-chips.umd.min.js.map +1 -1
  45. package/bundles/material-core-testing.umd.min.js +1 -1
  46. package/bundles/material-core-testing.umd.min.js.map +1 -1
  47. package/bundles/material-core.umd.js +11 -3
  48. package/bundles/material-core.umd.js.map +1 -1
  49. package/bundles/material-core.umd.min.js +11 -11
  50. package/bundles/material-core.umd.min.js.map +1 -1
  51. package/bundles/material-datepicker.umd.js +20 -11
  52. package/bundles/material-datepicker.umd.js.map +1 -1
  53. package/bundles/material-datepicker.umd.min.js +5 -5
  54. package/bundles/material-datepicker.umd.min.js.map +1 -1
  55. package/bundles/material-dialog-testing.umd.min.js +1 -1
  56. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  57. package/bundles/material-dialog.umd.js +45 -8
  58. package/bundles/material-dialog.umd.js.map +1 -1
  59. package/bundles/material-dialog.umd.min.js +14 -7
  60. package/bundles/material-dialog.umd.min.js.map +1 -1
  61. package/bundles/material-divider-testing.umd.min.js +1 -1
  62. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  63. package/bundles/material-expansion-testing.umd.js +11 -0
  64. package/bundles/material-expansion-testing.umd.js.map +1 -1
  65. package/bundles/material-expansion-testing.umd.min.js +3 -3
  66. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  67. package/bundles/material-form-field-testing.umd.js +32 -0
  68. package/bundles/material-form-field-testing.umd.js.map +1 -1
  69. package/bundles/material-form-field-testing.umd.min.js +4 -4
  70. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  71. package/bundles/material-form-field.umd.js +47 -21
  72. package/bundles/material-form-field.umd.js.map +1 -1
  73. package/bundles/material-form-field.umd.min.js +5 -5
  74. package/bundles/material-form-field.umd.min.js.map +1 -1
  75. package/bundles/material-grid-list-testing.umd.min.js +1 -1
  76. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  77. package/bundles/material-grid-list.umd.js +2 -2
  78. package/bundles/material-grid-list.umd.js.map +1 -1
  79. package/bundles/material-grid-list.umd.min.js +2 -2
  80. package/bundles/material-grid-list.umd.min.js.map +1 -1
  81. package/bundles/material-input-testing.umd.js +23 -6
  82. package/bundles/material-input-testing.umd.js.map +1 -1
  83. package/bundles/material-input-testing.umd.min.js +3 -3
  84. package/bundles/material-input-testing.umd.min.js.map +1 -1
  85. package/bundles/material-input.umd.js +28 -3
  86. package/bundles/material-input.umd.js.map +1 -1
  87. package/bundles/material-input.umd.min.js +3 -3
  88. package/bundles/material-input.umd.min.js.map +1 -1
  89. package/bundles/material-list-testing.umd.js +33 -0
  90. package/bundles/material-list-testing.umd.js.map +1 -1
  91. package/bundles/material-list-testing.umd.min.js +2 -2
  92. package/bundles/material-list-testing.umd.min.js.map +1 -1
  93. package/bundles/material-list.umd.js +3 -3
  94. package/bundles/material-list.umd.min.js +1 -1
  95. package/bundles/material-list.umd.min.js.map +1 -1
  96. package/bundles/material-menu-testing.umd.js +22 -0
  97. package/bundles/material-menu-testing.umd.js.map +1 -1
  98. package/bundles/material-menu-testing.umd.min.js +2 -2
  99. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  100. package/bundles/material-menu.umd.js +13 -2
  101. package/bundles/material-menu.umd.js.map +1 -1
  102. package/bundles/material-menu.umd.min.js +4 -4
  103. package/bundles/material-menu.umd.min.js.map +1 -1
  104. package/bundles/material-paginator-testing.umd.min.js +1 -1
  105. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  106. package/bundles/material-progress-bar-testing.umd.min.js +1 -1
  107. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  108. package/bundles/material-progress-spinner-testing.umd.js +1 -1
  109. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  110. package/bundles/material-progress-spinner-testing.umd.min.js +2 -2
  111. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  112. package/bundles/material-progress-spinner.umd.js +2 -2
  113. package/bundles/material-progress-spinner.umd.min.js +3 -3
  114. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  115. package/bundles/material-radio-testing.umd.js +11 -0
  116. package/bundles/material-radio-testing.umd.js.map +1 -1
  117. package/bundles/material-radio-testing.umd.min.js +3 -3
  118. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  119. package/bundles/material-radio.umd.js +15 -5
  120. package/bundles/material-radio.umd.js.map +1 -1
  121. package/bundles/material-radio.umd.min.js +2 -2
  122. package/bundles/material-radio.umd.min.js.map +1 -1
  123. package/bundles/material-select-testing.umd.js +11 -0
  124. package/bundles/material-select-testing.umd.js.map +1 -1
  125. package/bundles/material-select-testing.umd.min.js +2 -2
  126. package/bundles/material-select-testing.umd.min.js.map +1 -1
  127. package/bundles/material-select.umd.js +11 -3
  128. package/bundles/material-select.umd.js.map +1 -1
  129. package/bundles/material-select.umd.min.js +4 -4
  130. package/bundles/material-select.umd.min.js.map +1 -1
  131. package/bundles/material-sidenav-testing.umd.min.js +1 -1
  132. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  133. package/bundles/material-sidenav.umd.js +41 -17
  134. package/bundles/material-sidenav.umd.js.map +1 -1
  135. package/bundles/material-sidenav.umd.min.js +2 -2
  136. package/bundles/material-sidenav.umd.min.js.map +1 -1
  137. package/bundles/material-slide-toggle-testing.umd.js +11 -0
  138. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  139. package/bundles/material-slide-toggle-testing.umd.min.js +2 -2
  140. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  141. package/bundles/material-slide-toggle.umd.js.map +1 -1
  142. package/bundles/material-slider-testing.umd.js +11 -0
  143. package/bundles/material-slider-testing.umd.js.map +1 -1
  144. package/bundles/material-slider-testing.umd.min.js +2 -2
  145. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  146. package/bundles/material-snack-bar-testing.umd.min.js +1 -1
  147. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  148. package/bundles/material-snack-bar.umd.js +47 -39
  149. package/bundles/material-snack-bar.umd.js.map +1 -1
  150. package/bundles/material-snack-bar.umd.min.js +2 -2
  151. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  152. package/bundles/material-sort-testing.umd.js +10 -10
  153. package/bundles/material-sort-testing.umd.js.map +1 -1
  154. package/bundles/material-sort-testing.umd.min.js +3 -3
  155. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  156. package/bundles/material-sort.umd.js +25 -12
  157. package/bundles/material-sort.umd.js.map +1 -1
  158. package/bundles/material-sort.umd.min.js +5 -5
  159. package/bundles/material-sort.umd.min.js.map +1 -1
  160. package/bundles/material-table-testing.umd.min.js +1 -1
  161. package/bundles/material-table-testing.umd.min.js.map +1 -1
  162. package/bundles/material-table.umd.min.js +2 -2
  163. package/bundles/material-table.umd.min.js.map +1 -1
  164. package/bundles/material-tabs-testing.umd.min.js +1 -1
  165. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  166. package/bundles/material-tabs.umd.js +23 -4
  167. package/bundles/material-tabs.umd.js.map +1 -1
  168. package/bundles/material-tabs.umd.min.js +5 -12
  169. package/bundles/material-tabs.umd.min.js.map +1 -1
  170. package/bundles/material-toolbar-testing.umd.js +330 -0
  171. package/bundles/material-toolbar-testing.umd.js.map +1 -0
  172. package/bundles/material-toolbar-testing.umd.min.js +44 -0
  173. package/bundles/material-toolbar-testing.umd.min.js.map +1 -0
  174. package/bundles/material-tooltip-testing.umd.min.js +1 -1
  175. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  176. package/bundles/material-tooltip.umd.js +14 -1
  177. package/bundles/material-tooltip.umd.js.map +1 -1
  178. package/bundles/material-tooltip.umd.min.js +3 -3
  179. package/bundles/material-tooltip.umd.min.js.map +1 -1
  180. package/bundles/material-tree.umd.js.map +1 -1
  181. package/button/_button-base.scss +1 -1
  182. package/button/_button-theme.scss +8 -8
  183. package/button/index.metadata.json +1 -1
  184. package/button/testing/button-harness.d.ts +2 -0
  185. package/button-toggle/button-toggle.d.ts +10 -3
  186. package/button-toggle/index.metadata.json +1 -1
  187. package/button-toggle/testing/button-toggle-harness.d.ts +2 -0
  188. package/card/testing/card-harness-filters.d.ts +17 -0
  189. package/card/testing/card-harness.d.ts +36 -0
  190. package/card/testing/index.d.ts +8 -0
  191. package/card/testing/package.json +9 -0
  192. package/card/testing/public-api.d.ts +9 -0
  193. package/checkbox/index.metadata.json +1 -1
  194. package/checkbox/testing/checkbox-harness.d.ts +2 -0
  195. package/chips/chip.d.ts +19 -1
  196. package/chips/index.metadata.json +1 -1
  197. package/core/focus-indicators/_focus-indicators.scss +6 -6
  198. package/core/index.metadata.json +1 -1
  199. package/core/option/optgroup.d.ts +7 -0
  200. package/core/ripple/ripple-ref.d.ts +21 -2
  201. package/core/ripple/ripple-renderer.d.ts +1 -19
  202. package/core/ripple/ripple.d.ts +2 -2
  203. package/core/style/_list-common.scss +1 -1
  204. package/datepicker/date-range-input-parts.d.ts +2 -4
  205. package/datepicker/date-range-input.d.ts +4 -4
  206. package/datepicker/date-range-picker.d.ts +10 -3
  207. package/datepicker/datepicker.d.ts +2 -3
  208. package/datepicker/index.metadata.json +1 -1
  209. package/datepicker/public-api.d.ts +1 -1
  210. package/dialog/dialog-container.d.ts +9 -2
  211. package/dialog/dialog-content-directives.d.ts +1 -0
  212. package/dialog/dialog-ref.d.ts +7 -0
  213. package/dialog/index.metadata.json +1 -1
  214. package/esm2015/autocomplete/autocomplete-module.js +18 -22
  215. package/esm2015/autocomplete/autocomplete-origin.js +16 -20
  216. package/esm2015/autocomplete/autocomplete-trigger.js +519 -521
  217. package/esm2015/autocomplete/autocomplete.js +126 -130
  218. package/esm2015/autocomplete/testing/autocomplete-harness.js +99 -97
  219. package/esm2015/badge/badge-module.js +13 -17
  220. package/esm2015/badge/badge.js +184 -188
  221. package/esm2015/badge/testing/badge-harness.js +74 -78
  222. package/esm2015/bottom-sheet/bottom-sheet-container.js +161 -165
  223. package/esm2015/bottom-sheet/bottom-sheet-module.js +15 -19
  224. package/esm2015/bottom-sheet/bottom-sheet.js +124 -128
  225. package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +29 -33
  226. package/esm2015/button/button-module.js +20 -24
  227. package/esm2015/button/button.js +111 -114
  228. package/esm2015/button/testing/button-harness.js +60 -58
  229. package/esm2015/button-toggle/button-toggle-module.js +10 -14
  230. package/esm2015/button-toggle/button-toggle.js +368 -368
  231. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +42 -46
  232. package/esm2015/button-toggle/testing/button-toggle-harness.js +113 -111
  233. package/esm2015/card/card-module.js +30 -34
  234. package/esm2015/card/card.js +147 -203
  235. package/esm2015/card/testing/card-harness-filters.js +8 -0
  236. package/esm2015/card/testing/card-harness.js +52 -0
  237. package/esm2015/card/testing/index.js +9 -0
  238. package/esm2015/card/testing/public-api.js +10 -0
  239. package/esm2015/card/testing/testing.externs.js +0 -0
  240. package/esm2015/checkbox/checkbox-module.js +21 -29
  241. package/esm2015/checkbox/checkbox-required-validator.js +9 -13
  242. package/esm2015/checkbox/checkbox.js +315 -319
  243. package/esm2015/checkbox/testing/checkbox-harness.js +150 -148
  244. package/esm2015/chips/chip-input.js +119 -123
  245. package/esm2015/chips/chip-list.js +572 -576
  246. package/esm2015/chips/chip.js +333 -328
  247. package/esm2015/chips/chips-module.js +16 -20
  248. package/esm2015/core/animation/animation.js +12 -20
  249. package/esm2015/core/common-behaviors/common-module.js +91 -95
  250. package/esm2015/core/datetime/index.js +19 -27
  251. package/esm2015/core/datetime/native-date-adapter.js +202 -206
  252. package/esm2015/core/error/error-options.js +16 -24
  253. package/esm2015/core/line/line.js +18 -26
  254. package/esm2015/core/option/index.js +10 -14
  255. package/esm2015/core/option/optgroup.js +36 -33
  256. package/esm2015/core/option/option.js +181 -185
  257. package/esm2015/core/ripple/index.js +10 -14
  258. package/esm2015/core/ripple/ripple-ref.js +1 -1
  259. package/esm2015/core/ripple/ripple-renderer.js +1 -1
  260. package/esm2015/core/ripple/ripple.js +102 -106
  261. package/esm2015/core/selection/index.js +9 -13
  262. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +32 -36
  263. package/esm2015/core/testing/optgroup-harness.js +39 -43
  264. package/esm2015/core/testing/option-harness.js +51 -55
  265. package/esm2015/core/version.js +1 -1
  266. package/esm2015/datepicker/calendar-body.js +214 -218
  267. package/esm2015/datepicker/calendar.js +295 -303
  268. package/esm2015/datepicker/date-range-input-parts.js +214 -229
  269. package/esm2015/datepicker/date-range-input.js +244 -242
  270. package/esm2015/datepicker/date-range-picker.js +19 -23
  271. package/esm2015/datepicker/date-range-selection-strategy.js +31 -35
  272. package/esm2015/datepicker/date-selection-model.js +110 -122
  273. package/esm2015/datepicker/datepicker-base.js +418 -426
  274. package/esm2015/datepicker/datepicker-input-base.js +227 -224
  275. package/esm2015/datepicker/datepicker-input.js +111 -115
  276. package/esm2015/datepicker/datepicker-intl.js +37 -41
  277. package/esm2015/datepicker/datepicker-module.js +62 -66
  278. package/esm2015/datepicker/datepicker-toggle.js +81 -89
  279. package/esm2015/datepicker/datepicker.js +13 -17
  280. package/esm2015/datepicker/month-view.js +283 -287
  281. package/esm2015/datepicker/multi-year-view.js +198 -202
  282. package/esm2015/datepicker/public-api.js +2 -2
  283. package/esm2015/datepicker/year-view.js +220 -224
  284. package/esm2015/dialog/dialog-container.js +175 -164
  285. package/esm2015/dialog/dialog-content-directives.js +105 -114
  286. package/esm2015/dialog/dialog-module.js +32 -36
  287. package/esm2015/dialog/dialog-ref.js +17 -3
  288. package/esm2015/dialog/dialog.js +236 -240
  289. package/esm2015/dialog/testing/dialog-harness.js +58 -62
  290. package/esm2015/divider/divider-module.js +10 -14
  291. package/esm2015/divider/divider.js +33 -37
  292. package/esm2015/divider/testing/divider-harness.js +16 -20
  293. package/esm2015/expansion/accordion.js +73 -77
  294. package/esm2015/expansion/expansion-module.js +26 -30
  295. package/esm2015/expansion/expansion-panel-content.js +13 -17
  296. package/esm2015/expansion/expansion-panel-header.js +168 -180
  297. package/esm2015/expansion/expansion-panel.js +144 -152
  298. package/esm2015/expansion/testing/accordion-harness.js +24 -28
  299. package/esm2015/expansion/testing/expansion-harness.js +136 -134
  300. package/esm2015/form-field/error.js +26 -23
  301. package/esm2015/form-field/form-field-control.js +6 -10
  302. package/esm2015/form-field/form-field-module.js +31 -35
  303. package/esm2015/form-field/form-field.js +407 -409
  304. package/esm2015/form-field/hint.js +35 -29
  305. package/esm2015/form-field/label.js +8 -12
  306. package/esm2015/form-field/placeholder.js +8 -12
  307. package/esm2015/form-field/prefix.js +16 -13
  308. package/esm2015/form-field/suffix.js +16 -13
  309. package/esm2015/form-field/testing/form-field-harness.js +220 -206
  310. package/esm2015/grid-list/grid-list-module.js +26 -30
  311. package/esm2015/grid-list/grid-list.js +108 -112
  312. package/esm2015/grid-list/grid-tile.js +91 -111
  313. package/esm2015/grid-list/testing/grid-list-harness.js +62 -66
  314. package/esm2015/grid-list/testing/grid-tile-harness.js +69 -73
  315. package/esm2015/grid-list/tile-styler.js +1 -1
  316. package/esm2015/icon/icon-module.js +10 -14
  317. package/esm2015/icon/icon-registry.js +406 -410
  318. package/esm2015/icon/icon.js +228 -232
  319. package/esm2015/icon/testing/fake-icon-registry.js +66 -74
  320. package/esm2015/input/autosize.js +30 -34
  321. package/esm2015/input/input-module.js +21 -25
  322. package/esm2015/input/input.js +305 -284
  323. package/esm2015/input/testing/input-harness.js +129 -123
  324. package/esm2015/list/list-module.js +32 -36
  325. package/esm2015/list/list.js +165 -189
  326. package/esm2015/list/selection-list.js +503 -511
  327. package/esm2015/list/testing/action-list-harness.js +55 -57
  328. package/esm2015/list/testing/list-harness.js +31 -39
  329. package/esm2015/list/testing/list-item-harness-base.js +13 -17
  330. package/esm2015/list/testing/nav-list-harness.js +62 -64
  331. package/esm2015/list/testing/selection-list-harness.js +136 -138
  332. package/esm2015/menu/menu-content.js +74 -71
  333. package/esm2015/menu/menu-item.js +119 -123
  334. package/esm2015/menu/menu-module.js +29 -37
  335. package/esm2015/menu/menu-panel.js +1 -1
  336. package/esm2015/menu/menu-trigger.js +402 -405
  337. package/esm2015/menu/menu.js +329 -339
  338. package/esm2015/menu/testing/menu-harness.js +193 -189
  339. package/esm2015/paginator/paginator-intl.js +36 -40
  340. package/esm2015/paginator/paginator-module.js +16 -20
  341. package/esm2015/paginator/paginator.js +205 -209
  342. package/esm2015/paginator/testing/paginator-harness.js +91 -95
  343. package/esm2015/progress-bar/progress-bar-module.js +10 -14
  344. package/esm2015/progress-bar/progress-bar.js +114 -118
  345. package/esm2015/progress-bar/testing/progress-bar-harness.js +27 -31
  346. package/esm2015/progress-spinner/progress-spinner-module.js +17 -21
  347. package/esm2015/progress-spinner/progress-spinner.js +181 -189
  348. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +28 -32
  349. package/esm2015/radio/radio-module.js +10 -14
  350. package/esm2015/radio/radio.js +437 -444
  351. package/esm2015/radio/testing/radio-harness.js +241 -243
  352. package/esm2015/select/select-module.js +23 -27
  353. package/esm2015/select/select.js +917 -918
  354. package/esm2015/select/testing/select-harness.js +138 -136
  355. package/esm2015/sidenav/drawer.js +632 -620
  356. package/esm2015/sidenav/sidenav-module.js +31 -35
  357. package/esm2015/sidenav/sidenav.js +104 -116
  358. package/esm2015/sidenav/testing/drawer-harness.js +40 -44
  359. package/esm2015/sidenav/testing/sidenav-harness.js +20 -24
  360. package/esm2015/slide-toggle/slide-toggle-module.js +27 -35
  361. package/esm2015/slide-toggle/slide-toggle-required-validator.js +9 -13
  362. package/esm2015/slide-toggle/slide-toggle.js +184 -188
  363. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +123 -121
  364. package/esm2015/slider/slider-module.js +10 -14
  365. package/esm2015/slider/slider.js +640 -644
  366. package/esm2015/slider/testing/slider-harness.js +129 -127
  367. package/esm2015/snack-bar/simple-snack-bar.js +32 -36
  368. package/esm2015/snack-bar/snack-bar-container.js +144 -148
  369. package/esm2015/snack-bar/snack-bar-module.js +17 -21
  370. package/esm2015/snack-bar/snack-bar-ref.js +1 -1
  371. package/esm2015/snack-bar/snack-bar.js +208 -205
  372. package/esm2015/snack-bar/testing/snack-bar-harness.js +112 -116
  373. package/esm2015/sort/sort-header-intl.js +21 -21
  374. package/esm2015/sort/sort-header.js +200 -194
  375. package/esm2015/sort/sort-module.js +11 -15
  376. package/esm2015/sort/sort.js +92 -96
  377. package/esm2015/sort/testing/sort-harness.js +28 -32
  378. package/esm2015/sort/testing/sort-header-harness.js +66 -67
  379. package/esm2015/stepper/step-header.js +78 -82
  380. package/esm2015/stepper/step-label.js +8 -12
  381. package/esm2015/stepper/stepper-button.js +23 -31
  382. package/esm2015/stepper/stepper-icon.js +16 -20
  383. package/esm2015/stepper/stepper-intl.js +15 -19
  384. package/esm2015/stepper/stepper-module.js +40 -44
  385. package/esm2015/stepper/stepper.js +139 -155
  386. package/esm2015/table/cell.js +94 -122
  387. package/esm2015/table/row.js +90 -118
  388. package/esm2015/table/table-module.js +13 -17
  389. package/esm2015/table/table.js +26 -30
  390. package/esm2015/table/testing/cell-harness.js +56 -68
  391. package/esm2015/table/testing/row-harness.js +90 -102
  392. package/esm2015/table/testing/table-harness.js +65 -69
  393. package/esm2015/table/text-column.js +17 -21
  394. package/esm2015/tabs/index.js +4 -2
  395. package/esm2015/tabs/ink-bar.js +55 -59
  396. package/esm2015/tabs/paginated-tab-header.js +415 -419
  397. package/esm2015/tabs/tab-body.js +179 -191
  398. package/esm2015/tabs/tab-content.js +21 -16
  399. package/esm2015/tabs/tab-group.js +263 -271
  400. package/esm2015/tabs/tab-header.js +69 -77
  401. package/esm2015/tabs/tab-label-wrapper.js +29 -33
  402. package/esm2015/tabs/tab-label.js +16 -13
  403. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +199 -215
  404. package/esm2015/tabs/tab.js +80 -83
  405. package/esm2015/tabs/tabs-module.js +38 -42
  406. package/esm2015/tabs/testing/tab-group-harness.js +52 -56
  407. package/esm2015/tabs/testing/tab-harness.js +78 -82
  408. package/esm2015/toolbar/testing/index.js +9 -0
  409. package/esm2015/toolbar/testing/public-api.js +10 -0
  410. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  411. package/esm2015/toolbar/testing/toolbar-harness-filters.js +8 -0
  412. package/esm2015/toolbar/testing/toolbar-harness.js +47 -0
  413. package/esm2015/toolbar/toolbar-module.js +10 -14
  414. package/esm2015/toolbar/toolbar.js +61 -69
  415. package/esm2015/tooltip/testing/tooltip-harness.js +43 -47
  416. package/esm2015/tooltip/tooltip-module.js +17 -21
  417. package/esm2015/tooltip/tooltip.js +502 -497
  418. package/esm2015/tree/data-source/flat-data-source.js +1 -1
  419. package/esm2015/tree/node.js +99 -111
  420. package/esm2015/tree/outlet.js +19 -23
  421. package/esm2015/tree/padding.js +13 -17
  422. package/esm2015/tree/toggle.js +15 -19
  423. package/esm2015/tree/tree-module.js +10 -14
  424. package/esm2015/tree/tree.js +23 -27
  425. package/expansion/testing/expansion-harness.d.ts +2 -0
  426. package/fesm2015/autocomplete/testing.js +98 -95
  427. package/fesm2015/autocomplete/testing.js.map +1 -1
  428. package/fesm2015/autocomplete.js +677 -687
  429. package/fesm2015/autocomplete.js.map +1 -1
  430. package/fesm2015/badge/testing.js +73 -76
  431. package/fesm2015/badge/testing.js.map +1 -1
  432. package/fesm2015/badge.js +195 -201
  433. package/fesm2015/badge.js.map +1 -1
  434. package/fesm2015/bottom-sheet/testing.js +28 -31
  435. package/fesm2015/bottom-sheet/testing.js.map +1 -1
  436. package/fesm2015/bottom-sheet.js +297 -306
  437. package/fesm2015/bottom-sheet.js.map +1 -1
  438. package/fesm2015/button/testing.js +59 -56
  439. package/fesm2015/button/testing.js.map +1 -1
  440. package/fesm2015/button-toggle/testing.js +155 -155
  441. package/fesm2015/button-toggle/testing.js.map +1 -1
  442. package/fesm2015/button-toggle.js +377 -378
  443. package/fesm2015/button-toggle.js.map +1 -1
  444. package/fesm2015/button.js +129 -133
  445. package/fesm2015/button.js.map +1 -1
  446. package/fesm2015/card/testing.js +79 -0
  447. package/fesm2015/card/testing.js.map +1 -0
  448. package/fesm2015/card.js +175 -220
  449. package/fesm2015/card.js.map +1 -1
  450. package/fesm2015/checkbox/testing.js +149 -146
  451. package/fesm2015/checkbox/testing.js.map +1 -1
  452. package/fesm2015/checkbox.js +342 -354
  453. package/fesm2015/checkbox.js.map +1 -1
  454. package/fesm2015/chips.js +1039 -1039
  455. package/fesm2015/chips.js.map +1 -1
  456. package/fesm2015/core/testing.js +88 -94
  457. package/fesm2015/core/testing.js.map +1 -1
  458. package/fesm2015/core.js +729 -773
  459. package/fesm2015/core.js.map +1 -1
  460. package/fesm2015/datepicker.js +2821 -2884
  461. package/fesm2015/datepicker.js.map +1 -1
  462. package/fesm2015/dialog/testing.js +57 -60
  463. package/fesm2015/dialog/testing.js.map +1 -1
  464. package/fesm2015/dialog.js +564 -549
  465. package/fesm2015/dialog.js.map +1 -1
  466. package/fesm2015/divider/testing.js +15 -18
  467. package/fesm2015/divider/testing.js.map +1 -1
  468. package/fesm2015/divider.js +41 -47
  469. package/fesm2015/divider.js.map +1 -1
  470. package/fesm2015/expansion/testing.js +159 -159
  471. package/fesm2015/expansion/testing.js.map +1 -1
  472. package/fesm2015/expansion.js +422 -446
  473. package/fesm2015/expansion.js.map +1 -1
  474. package/fesm2015/form-field/testing.js +219 -204
  475. package/fesm2015/form-field/testing.js.map +1 -1
  476. package/fesm2015/form-field.js +538 -532
  477. package/fesm2015/form-field.js.map +1 -1
  478. package/fesm2015/grid-list/testing.js +129 -135
  479. package/fesm2015/grid-list/testing.js.map +1 -1
  480. package/fesm2015/grid-list.js +221 -242
  481. package/fesm2015/grid-list.js.map +1 -1
  482. package/fesm2015/icon/testing.js +65 -71
  483. package/fesm2015/icon/testing.js.map +1 -1
  484. package/fesm2015/icon.js +660 -669
  485. package/fesm2015/icon.js.map +1 -1
  486. package/fesm2015/input/testing.js +128 -121
  487. package/fesm2015/input/testing.js.map +1 -1
  488. package/fesm2015/input.js +353 -337
  489. package/fesm2015/input.js.map +1 -1
  490. package/fesm2015/list/testing.js +298 -307
  491. package/fesm2015/list/testing.js.map +1 -1
  492. package/fesm2015/list.js +698 -725
  493. package/fesm2015/list.js.map +1 -1
  494. package/fesm2015/menu/testing.js +192 -186
  495. package/fesm2015/menu/testing.js.map +1 -1
  496. package/fesm2015/menu.js +948 -962
  497. package/fesm2015/menu.js.map +1 -1
  498. package/fesm2015/paginator/testing.js +90 -93
  499. package/fesm2015/paginator/testing.js.map +1 -1
  500. package/fesm2015/paginator.js +247 -256
  501. package/fesm2015/paginator.js.map +1 -1
  502. package/fesm2015/progress-bar/testing.js +26 -29
  503. package/fesm2015/progress-bar/testing.js.map +1 -1
  504. package/fesm2015/progress-bar.js +122 -128
  505. package/fesm2015/progress-bar.js.map +1 -1
  506. package/fesm2015/progress-spinner/testing.js +27 -30
  507. package/fesm2015/progress-spinner/testing.js.map +1 -1
  508. package/fesm2015/progress-spinner.js +196 -205
  509. package/fesm2015/progress-spinner.js.map +1 -1
  510. package/fesm2015/radio/testing.js +240 -240
  511. package/fesm2015/radio/testing.js.map +1 -1
  512. package/fesm2015/radio.js +447 -453
  513. package/fesm2015/radio.js.map +1 -1
  514. package/fesm2015/select/testing.js +137 -134
  515. package/fesm2015/select/testing.js.map +1 -1
  516. package/fesm2015/select.js +939 -941
  517. package/fesm2015/select.js.map +1 -1
  518. package/fesm2015/sidenav/testing.js +58 -64
  519. package/fesm2015/sidenav/testing.js.map +1 -1
  520. package/fesm2015/sidenav.js +765 -762
  521. package/fesm2015/sidenav.js.map +1 -1
  522. package/fesm2015/slide-toggle/testing.js +122 -119
  523. package/fesm2015/slide-toggle/testing.js.map +1 -1
  524. package/fesm2015/slide-toggle.js +217 -229
  525. package/fesm2015/slide-toggle.js.map +1 -1
  526. package/fesm2015/slider/testing.js +128 -125
  527. package/fesm2015/slider/testing.js.map +1 -1
  528. package/fesm2015/slider.js +648 -654
  529. package/fesm2015/slider.js.map +1 -1
  530. package/fesm2015/snack-bar/testing.js +111 -114
  531. package/fesm2015/snack-bar/testing.js.map +1 -1
  532. package/fesm2015/snack-bar.js +426 -431
  533. package/fesm2015/snack-bar.js.map +1 -1
  534. package/fesm2015/sort/testing.js +92 -95
  535. package/fesm2015/sort/testing.js.map +1 -1
  536. package/fesm2015/sort.js +320 -318
  537. package/fesm2015/sort.js.map +1 -1
  538. package/fesm2015/stepper.js +312 -345
  539. package/fesm2015/stepper.js.map +1 -1
  540. package/fesm2015/table/testing.js +208 -229
  541. package/fesm2015/table/testing.js.map +1 -1
  542. package/fesm2015/table.js +235 -286
  543. package/fesm2015/table.js.map +1 -1
  544. package/fesm2015/tabs/testing.js +128 -134
  545. package/fesm2015/tabs/testing.js.map +1 -1
  546. package/fesm2015/tabs.js +1362 -1399
  547. package/fesm2015/tabs.js.map +1 -1
  548. package/fesm2015/toolbar/testing.js +74 -0
  549. package/fesm2015/toolbar/testing.js.map +1 -0
  550. package/fesm2015/toolbar.js +69 -78
  551. package/fesm2015/toolbar.js.map +1 -1
  552. package/fesm2015/tooltip/testing.js +42 -45
  553. package/fesm2015/tooltip/testing.js.map +1 -1
  554. package/fesm2015/tooltip.js +517 -513
  555. package/fesm2015/tooltip.js.map +1 -1
  556. package/fesm2015/tree.js +173 -197
  557. package/fesm2015/tree.js.map +1 -1
  558. package/form-field/error.d.ts +7 -0
  559. package/form-field/hint.d.ts +10 -0
  560. package/form-field/index.metadata.json +1 -1
  561. package/form-field/prefix.d.ts +7 -0
  562. package/form-field/suffix.d.ts +7 -0
  563. package/form-field/testing/form-field-harness.d.ts +8 -0
  564. package/grid-list/grid-list.d.ts +2 -1
  565. package/grid-list/index.metadata.json +1 -1
  566. package/grid-list/tile-styler.d.ts +10 -5
  567. package/input/_input-theme.scss +2 -2
  568. package/input/index.metadata.json +1 -1
  569. package/input/input.d.ts +6 -2
  570. package/input/testing/input-harness.d.ts +2 -0
  571. package/list/index.metadata.json +1 -1
  572. package/list/testing/action-list-harness.d.ts +2 -0
  573. package/list/testing/nav-list-harness.d.ts +2 -0
  574. package/list/testing/selection-list-harness.d.ts +2 -0
  575. package/menu/index.metadata.json +1 -1
  576. package/menu/menu-content.d.ts +7 -1
  577. package/menu/menu-panel.d.ts +1 -0
  578. package/menu/menu.d.ts +4 -0
  579. package/menu/testing/menu-harness.d.ts +4 -0
  580. package/package.json +6 -6
  581. package/prebuilt-themes/deeppurple-amber.css +1 -1
  582. package/prebuilt-themes/indigo-pink.css +1 -1
  583. package/prebuilt-themes/pink-bluegrey.css +1 -1
  584. package/prebuilt-themes/purple-green.css +1 -1
  585. package/progress-spinner/index.metadata.json +1 -1
  586. package/radio/index.metadata.json +1 -1
  587. package/radio/radio.d.ts +6 -0
  588. package/radio/testing/radio-harness.d.ts +2 -0
  589. package/schematics/migration.json +5 -0
  590. package/schematics/ng-add/index.js +2 -2
  591. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +3 -3
  592. package/schematics/ng-generate/navigation/schema.json +5 -0
  593. package/schematics/ng-update/data/index.js +1 -1
  594. package/schematics/ng-update/index.d.ts +2 -0
  595. package/schematics/ng-update/index.js +7 -2
  596. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +639 -639
  597. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +1 -1
  598. package/select/index.metadata.json +1 -1
  599. package/select/select.d.ts +6 -0
  600. package/select/testing/select-harness.d.ts +2 -0
  601. package/sidenav/drawer.d.ts +15 -3
  602. package/sidenav/index.metadata.json +1 -1
  603. package/slide-toggle/index.metadata.json +1 -1
  604. package/slide-toggle/testing/slide-toggle-harness.d.ts +2 -0
  605. package/slider/testing/slider-harness.d.ts +2 -0
  606. package/snack-bar/index.metadata.json +1 -1
  607. package/snack-bar/simple-snack-bar.d.ts +13 -1
  608. package/snack-bar/snack-bar-container.d.ts +16 -3
  609. package/snack-bar/snack-bar-ref.d.ts +3 -3
  610. package/snack-bar/snack-bar.d.ts +10 -3
  611. package/sort/index.metadata.json +1 -1
  612. package/sort/sort-header-intl.d.ts +5 -1
  613. package/sort/sort-header.d.ts +3 -1
  614. package/sort/testing/sort-header-harness.d.ts +6 -2
  615. package/tabs/index.d.ts +3 -1
  616. package/tabs/index.metadata.json +1 -1
  617. package/tabs/tab-content.d.ts +7 -1
  618. package/tabs/tab-label.d.ts +7 -0
  619. package/toolbar/testing/index.d.ts +8 -0
  620. package/toolbar/testing/package.json +9 -0
  621. package/toolbar/testing/public-api.d.ts +9 -0
  622. package/toolbar/testing/toolbar-harness-filters.d.ts +13 -0
  623. package/toolbar/testing/toolbar-harness.d.ts +31 -0
  624. package/tooltip/index.metadata.json +1 -1
  625. package/tooltip/tooltip.d.ts +1 -0
  626. package/tree/data-source/flat-data-source.d.ts +4 -4
  627. package/tree/index.metadata.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["src/material/material-select.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ng","material","select","cdk","overlay","common","core","formField","scrolling","a11y","bidi","coercion","collections","keycodes","forms","rxjs","operators","animations","this","core$1","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","matSelectAnimations","transformPanelWrap","trigger","transition","query","animateChild","optional","transformPanel","state","style","transform","minWidth","opacity","animate","nextUniqueId","MAT_SELECT_SCROLL_STRATEGY","InjectionToken","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","scrollStrategies","reposition","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","provide","deps","Overlay","useFactory","MatSelectChange","source","_MatSelectMixinBase","mixinDisableRipple","mixinTabIndex","mixinDisabled","mixinErrorState","MatSelectBase","_elementRef","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","ngControl","MatSelectTrigger","decorators","type","Directive","args","selector","MatSelect","_super","_viewportRuler","_changeDetectorRef","_ngZone","elementRef","_dir","_parentFormField","tabIndex","scrollStrategyFactory","_liveAnnouncer","defaults","_this","_panelOpen","_required","_scrollTop","_multiple","_compareWith","o1","o2","_uid","_destroy","Subject","_triggerFontSize","_onChange","_onTouched","_optionIds","_transformOrigin","_panelDoneAnimatingStream","_offsetY","_positions","originX","originY","overlayX","overlayY","_disableOptionCentering","_focused","controlType","ariaLabel","optionSelectionChanges","defer","options","changes","pipe","startWith","switchMap","merge","apply","map","option","onSelectionChange","onStable","asObservable","take","openedChange","EventEmitter","_openedStream","filter","_closedStream","selectionChange","valueChange","valueAccessor","_scrollStrategyFactory","_scrollStrategy","parseInt","id","disableOptionCentering","typeaheadDebounceInterval","__extends","__","constructor","prototype","create","defineProperty","get","enumerable","configurable","_placeholder","set","stateChanges","coerceBooleanProperty","_selectionModel","getMatSelectDynamicMultipleError","Error","fn","getMatSelectNonFunctionValueError","_initializeSelection","_value","newValue","writeValue","_typeaheadDebounceInterval","coerceNumberProperty","_id","ngOnInit","SelectionModel","multiple","distinctUntilChanged","takeUntil","subscribe","panelOpen","emit","overlayDir","offsetX","markForCheck","change","_triggerRect","nativeElement","getBoundingClientRect","ngAfterContentInit","_initKeyManager","changed","event","added","forEach","removed","deselect","_resetOptions","ngDoCheck","updateErrorState","ngOnChanges","_keyManager","withTypeAhead","ngOnDestroy","complete","toggle","close","open","disabled","getComputedStyle","fontSize","withHorizontalOrientation","_calculateOverlayPosition","_highlightCorrectOption","overlayRef","overlayElement","_isRtl","_setSelectionByValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","selected","empty","selectedOptions","viewValue","reverse","join","_handleKeydown","_handleOpenKeydown","_handleClosedKeydown","keyCode","isArrowKey","DOWN_ARROW","UP_ARROW","LEFT_ARROW","RIGHT_ARROW","isOpenKey","ENTER","SPACE","manager","isTyping","hasModifierKey","altKey","preventDefault","previouslySelectedOption","HOME","END","setFirstItemActive","setLastItemActive","onKeydown","selectedOption","announce","activeItem","A","ctrlKey","hasDeselectedOptions_1","some","opt","previouslyFocusedIndex","activeItemIndex","shiftKey","_selectViaInteraction","_onFocus","_onBlur","_onAttached","positionChange","detectChanges","_calculateOverlayOffsetX","panel","scrollTop","_getPanelTheme","color","isEmpty","Promise","resolve","then","isArray","getMatSelectNonArrayValueError","clear","currentValue","_selectValue","_sortValues","correspondingOption","setActiveItem","find","isDevMode","console","warn","ActiveDescendantKeyManager","withVerticalOrientation","withAllowedModifierKeys","tabOut","focus","_scrollActiveOptionIntoView","changedOrDestroyed","_onSelect","isUserInput","_stateChanges","_setOptionIds","wasSelected","isSelected","_propagateChanges","options_1","toArray","sort","a","sortComparator","indexOf","fallbackValue","valueToEmit","activeOptionIndex","labelCount","_countGroupLabelsBeforeOption","optionGroups","_getOptionScrollPosition","_getItemHeight","_getOptionIndex","reduce","result","current","index","undefined","itemHeight","items","_getItemCount","panelHeight","Math","min","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","selectedIndex","max","_getAriaLabel","ariaLabelledby","placeholder","_getAriaLabelledby","_hasFloatingLabel","_labelId","_getAriaActiveDescendant","overlayRect","viewportSize","getViewportSize","isRtl","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","first","group","leftOverflow","left","rightOverflow","right","width","round","updatePosition","optionOffsetFromPanelTop","optionHeightAdjustment","height","maxOptionsDisplayed","floor","topSpaceAvailable","top","bottomSpaceAvailable","bottom","panelHeightTop","abs","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","setDescribedByIds","ids","_ariaDescribedby","onContainerClick","Component","exportAs","template","inputs","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","host","role","[attr.id]","[attr.tabindex]","[attr.aria-label]","[attr.aria-labelledby]","[attr.aria-required]","[attr.aria-disabled]","[attr.aria-invalid]","[attr.aria-owns]","[attr.aria-multiselectable]","[attr.aria-describedby]","[attr.aria-activedescendant]","[class.mat-select-disabled]","[class.mat-select-invalid]","[class.mat-select-required]","[class.mat-select-empty]","class","(keydown)","(focus)","(blur)","providers","MatFormFieldControl","useExisting","MAT_OPTION_PARENT_COMPONENT","styles","ctorParameters","ViewportRuler","ChangeDetectorRef","NgZone","ErrorStateMatcher","ElementRef","Directionality","Optional","NgForm","FormGroupDirective","MatFormField","Inject","MAT_FORM_FIELD","NgControl","Self","String","Attribute","LiveAnnouncer","propDecorators","ViewChild","CdkConnectedOverlay","ContentChildren","MatOption","descendants","MatOptgroup","panelClass","Input","customTrigger","ContentChild","required","compareWith","errorStateMatcher","Output","MatSelectModule","NgModule","imports","CommonModule","OverlayModule","MatOptionModule","MatCommonModule","CdkScrollableModule","MatFormFieldModule","declarations","SELECT_ITEM_HEIGHT_EM","SELECT_PANEL_INDENT_PADDING_X","SELECT_PANEL_MAX_HEIGHT","SELECT_PANEL_VIEWPORT_PADDING"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/overlay'), require('@angular/common'), require('@angular/core'), require('@angular/material/core'), require('@angular/material/form-field'), require('@angular/cdk/scrolling'), require('@angular/cdk/a11y'), require('@angular/cdk/bidi'), require('@angular/cdk/coercion'), require('@angular/cdk/collections'), require('@angular/cdk/keycodes'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations')) :\n typeof define === 'function' && define.amd ? define('@angular/material/select', ['exports', '@angular/cdk/overlay', '@angular/common', '@angular/core', '@angular/material/core', '@angular/material/form-field', '@angular/cdk/scrolling', '@angular/cdk/a11y', '@angular/cdk/bidi', '@angular/cdk/coercion', '@angular/cdk/collections', '@angular/cdk/keycodes', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations'], factory) :\n (global = global || self, factory((global.ng = global.ng || {}, global.ng.material = global.ng.material || {}, global.ng.material.select = {}), global.ng.cdk.overlay, global.ng.common, global.ng.core, global.ng.material.core, global.ng.material.formField, global.ng.cdk.scrolling, global.ng.cdk.a11y, global.ng.cdk.bidi, global.ng.cdk.coercion, global.ng.cdk.collections, global.ng.cdk.keycodes, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations));\n}(this, (function (exports, overlay, common, core, core$1, formField, scrolling, a11y, bidi, coercion, collections, keycodes, forms, rxjs, operators, animations) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n 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\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n 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++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n }\r\n\r\n 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\n function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n }\r\n\r\n function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n }\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n }\r\n\r\n function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n }\r\n\r\n 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\n 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\n function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n }\r\n\r\n 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\n function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n }\r\n\r\n function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n }\r\n\r\n function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n }\r\n\r\n function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n }\r\n\r\n function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n }\r\n\r\n function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n }\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\n var matSelectAnimations = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: animations.trigger('transformPanelWrap', [\n animations.transition('* => void', animations.query('@transformPanel', [animations.animateChild()], { optional: true }))\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 */\n transformPanel: animations.trigger('transformPanel', [\n animations.state('void', animations.style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0\n })),\n animations.state('showing', animations.style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })),\n animations.state('showing-multiple', animations.style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)'\n })),\n animations.transition('void => *', animations.animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n animations.transition('* => void', animations.animate('100ms 25ms linear', animations.style({ opacity: 0 })))\n ])\n };\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\n function 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 */\n function getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection 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 */\n function getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n }\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var nextUniqueId = 0;\n /**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n /** The max height of the select's overlay panel */\n var SELECT_PANEL_MAX_HEIGHT = 256;\n /** The panel's padding on the x-axis */\n var SELECT_PANEL_PADDING_X = 16;\n /** The panel's x axis padding if it is indented (e.g. there is an option group). */\n var SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n /** The height of the select items in `em` units. */\n var SELECT_ITEM_HEIGHT_EM = 3;\n // TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n /**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n */\n var SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\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 */\n var SELECT_PANEL_VIEWPORT_PADDING = 8;\n /** Injection token that determines the scroll handling while a select is open. */\n var MAT_SELECT_SCROLL_STRATEGY = new core.InjectionToken('mat-select-scroll-strategy');\n /** @docs-private */\n function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n }\n /** Injection token that can be used to provide the default options the select module. */\n var MAT_SELECT_CONFIG = new core.InjectionToken('MAT_SELECT_CONFIG');\n /** @docs-private */\n var MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [overlay.Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n };\n /** Change event object that is emitted when the select value has changed. */\n var MatSelectChange = /** @class */ (function () {\n function MatSelectChange(\n /** Reference to the select that emitted the change event. */\n source, \n /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n return MatSelectChange;\n }());\n // Boilerplate for applying mixins to MatSelect.\n /** @docs-private */\n var MatSelectBase = /** @class */ (function () {\n function MatSelectBase(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n this._elementRef = _elementRef;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n return MatSelectBase;\n }());\n var _MatSelectMixinBase = core$1.mixinDisableRipple(core$1.mixinTabIndex(core$1.mixinDisabled(core$1.mixinErrorState(MatSelectBase))));\n /**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\n var MatSelectTrigger = /** @class */ (function () {\n function MatSelectTrigger() {\n }\n MatSelectTrigger.decorators = [\n { type: core.Directive, args: [{\n selector: 'mat-select-trigger'\n },] }\n ];\n return MatSelectTrigger;\n }());\n var MatSelect = /** @class */ (function (_super) {\n __extends(MatSelect, _super);\n function MatSelect(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, defaults) {\n var _this = _super.call(this, elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) || this;\n _this._viewportRuler = _viewportRuler;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._ngZone = _ngZone;\n _this._dir = _dir;\n _this._parentFormField = _parentFormField;\n _this.ngControl = ngControl;\n _this._liveAnnouncer = _liveAnnouncer;\n /** Whether or not the overlay panel is open. */\n _this._panelOpen = false;\n /** Whether filling out the select is required in the form. */\n _this._required = false;\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n _this._scrollTop = 0;\n /** Whether the component is in multiple selection mode. */\n _this._multiple = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n _this._compareWith = function (o1, o2) { return o1 === o2; };\n /** Unique id for this input. */\n _this._uid = \"mat-select-\" + nextUniqueId++;\n /** Emits whenever the component is destroyed. */\n _this._destroy = new rxjs.Subject();\n /** The cached font-size of the trigger element. */\n _this._triggerFontSize = 0;\n /** `View -> model callback called when value changes` */\n _this._onChange = function () { };\n /** `View -> model callback called when select has been touched` */\n _this._onTouched = function () { };\n /** The IDs of child options to be passed to the aria-owns attribute. */\n _this._optionIds = '';\n /** The value of the select panel's transform-origin property. */\n _this._transformOrigin = 'top';\n /** Emits when the panel element is finished transforming in. */\n _this._panelDoneAnimatingStream = new rxjs.Subject();\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 /** Whether the component is disabling centering of the active option over the trigger. */\n _this._disableOptionCentering = false;\n _this._focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n _this.controlType = 'mat-select';\n /** Aria label of the select. If not specified, the placeholder will be used as label. */\n _this.ariaLabel = '';\n /** Combined stream of all of the child options' change events. */\n _this.optionSelectionChanges = rxjs.defer(function () {\n var options = _this.options;\n if (options) {\n return options.changes.pipe(operators.startWith(options), operators.switchMap(function () { return rxjs.merge.apply(void 0, __spread(options.map(function (option) { return option.onSelectionChange; }))); }));\n }\n return _this._ngZone.onStable\n .asObservable()\n .pipe(operators.take(1), operators.switchMap(function () { return _this.optionSelectionChanges; }));\n });\n /** Event emitted when the select panel has been toggled. */\n _this.openedChange = new core.EventEmitter();\n /** Event emitted when the select has been opened. */\n _this._openedStream = _this.openedChange.pipe(operators.filter(function (o) { return o; }), operators.map(function () { }));\n /** Event emitted when the select has been closed. */\n _this._closedStream = _this.openedChange.pipe(operators.filter(function (o) { return !o; }), operators.map(function () { }));\n /** Event emitted when the selected value has been changed by the user. */\n _this.selectionChange = new core.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 core.EventEmitter();\n if (_this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n _this.ngControl.valueAccessor = _this;\n }\n _this._scrollStrategyFactory = scrollStrategyFactory;\n _this._scrollStrategy = _this._scrollStrategyFactory();\n _this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n _this.id = _this.id;\n if (defaults) {\n if (defaults.disableOptionCentering != null) {\n _this.disableOptionCentering = defaults.disableOptionCentering;\n }\n if (defaults.typeaheadDebounceInterval != null) {\n _this.typeaheadDebounceInterval = defaults.typeaheadDebounceInterval;\n }\n }\n return _this;\n }\n Object.defineProperty(MatSelect.prototype, \"focused\", {\n /** Whether the select is focused. */\n get: function () {\n return this._focused || this._panelOpen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"placeholder\", {\n /** Placeholder to be shown if no value has been selected. */\n get: function () { return this._placeholder; },\n set: function (value) {\n this._placeholder = value;\n this.stateChanges.next();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"required\", {\n /** Whether the component is required. */\n get: function () { return this._required; },\n set: function (value) {\n this._required = coercion.coerceBooleanProperty(value);\n this.stateChanges.next();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"multiple\", {\n /** Whether the user should be allowed to select multiple options. */\n get: function () { return this._multiple; },\n set: function (value) {\n if (this._selectionModel) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coercion.coerceBooleanProperty(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"disableOptionCentering\", {\n /** Whether to center the active option over the trigger. */\n get: function () { return this._disableOptionCentering; },\n set: function (value) {\n this._disableOptionCentering = coercion.coerceBooleanProperty(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"compareWith\", {\n /**\n * 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 */\n get: function () { return this._compareWith; },\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: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"value\", {\n /** Value of the select control. */\n get: function () { return this._value; },\n set: function (newValue) {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"typeaheadDebounceInterval\", {\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n get: function () { return this._typeaheadDebounceInterval; },\n set: function (value) {\n this._typeaheadDebounceInterval = coercion.coerceNumberProperty(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"id\", {\n /** Unique id of the element. */\n get: function () { return this._id; },\n set: function (value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n },\n enumerable: false,\n configurable: true\n });\n MatSelect.prototype.ngOnInit = function () {\n var _this = this;\n this._selectionModel = new collections.SelectionModel(this.multiple);\n this.stateChanges.next();\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream\n .pipe(operators.distinctUntilChanged(), operators.takeUntil(this._destroy))\n .subscribe(function () {\n if (_this.panelOpen) {\n _this._scrollTop = 0;\n _this.openedChange.emit(true);\n }\n else {\n _this.openedChange.emit(false);\n _this.overlayDir.offsetX = 0;\n _this._changeDetectorRef.markForCheck();\n }\n });\n this._viewportRuler.change()\n .pipe(operators.takeUntil(this._destroy))\n .subscribe(function () {\n if (_this._panelOpen) {\n _this._triggerRect = _this.trigger.nativeElement.getBoundingClientRect();\n _this._changeDetectorRef.markForCheck();\n }\n });\n };\n MatSelect.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._initKeyManager();\n this._selectionModel.changed.pipe(operators.takeUntil(this._destroy)).subscribe(function (event) {\n event.added.forEach(function (option) { return option.select(); });\n event.removed.forEach(function (option) { return option.deselect(); });\n });\n this.options.changes.pipe(operators.startWith(null), operators.takeUntil(this._destroy)).subscribe(function () {\n _this._resetOptions();\n _this._initializeSelection();\n });\n };\n MatSelect.prototype.ngDoCheck = function () {\n if (this.ngControl) {\n this.updateErrorState();\n }\n };\n MatSelect.prototype.ngOnChanges = function (changes) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this._typeaheadDebounceInterval);\n }\n };\n MatSelect.prototype.ngOnDestroy = function () {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n };\n /** Toggles the overlay panel open or closed. */\n MatSelect.prototype.toggle = function () {\n this.panelOpen ? this.close() : this.open();\n };\n /** Opens the overlay panel. */\n MatSelect.prototype.open = function () {\n var _this = this;\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) {\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).fontSize || '0');\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._calculateOverlayPosition();\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.asObservable().pipe(operators.take(1)).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 /** Closes the overlay panel and focuses the host element. */\n MatSelect.prototype.close = function () {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\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 */\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 */\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 */\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 */\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 /** Whether or not the overlay panel is open. */\n get: function () {\n return this._panelOpen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"selected\", {\n /** The currently selected option. */\n get: function () {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"triggerValue\", {\n /** The value displayed in the trigger. */\n get: function () {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n var 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: false,\n configurable: true\n });\n /** Whether the element is in RTL mode. */\n MatSelect.prototype._isRtl = function () {\n return this._dir ? this._dir.value === 'rtl' : false;\n };\n /** Handles all keydown events on the select. */\n MatSelect.prototype._handleKeydown = function (event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n };\n /** Handles keyboard events while the select is closed. */\n MatSelect.prototype._handleClosedKeydown = function (event) {\n var keyCode = event.keyCode;\n var isArrowKey = keyCode === keycodes.DOWN_ARROW || keyCode === keycodes.UP_ARROW ||\n keyCode === keycodes.LEFT_ARROW || keyCode === keycodes.RIGHT_ARROW;\n var isOpenKey = keyCode === keycodes.ENTER || keyCode === keycodes.SPACE;\n var manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native <select>\n if (!manager.isTyping() && (isOpenKey && !keycodes.hasModifierKey(event)) ||\n ((this.multiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n else if (!this.multiple) {\n var previouslySelectedOption = this.selected;\n if (keyCode === keycodes.HOME || keyCode === keycodes.END) {\n keyCode === keycodes.HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n }\n else {\n manager.onKeydown(event);\n }\n var selectedOption = this.selected;\n // Since the value has changed, we need to announce it ourselves.\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce(selectedOption.viewValue, 10000);\n }\n }\n };\n /** Handles keyboard events when the selected is open. */\n MatSelect.prototype._handleOpenKeydown = function (event) {\n var manager = this._keyManager;\n var keyCode = event.keyCode;\n var isArrowKey = keyCode === keycodes.DOWN_ARROW || keyCode === keycodes.UP_ARROW;\n var isTyping = manager.isTyping();\n if (keyCode === keycodes.HOME || keyCode === keycodes.END) {\n event.preventDefault();\n keyCode === keycodes.HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n }\n else if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n }\n else if (!isTyping && (keyCode === keycodes.ENTER || keyCode === keycodes.SPACE) && manager.activeItem &&\n !keycodes.hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n }\n else if (!isTyping && this._multiple && keyCode === keycodes.A && event.ctrlKey) {\n event.preventDefault();\n var hasDeselectedOptions_1 = this.options.some(function (opt) { return !opt.disabled && !opt.selected; });\n this.options.forEach(function (option) {\n if (!option.disabled) {\n hasDeselectedOptions_1 ? option.select() : option.deselect();\n }\n });\n }\n else {\n var previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\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 */\n MatSelect.prototype._onBlur = function () {\n this._focused = false;\n if (!this.disabled && !this.panelOpen) {\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 */\n MatSelect.prototype._onAttached = function () {\n var _this = this;\n this.overlayDir.positionChange.pipe(operators.take(1)).subscribe(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 MatSelect.prototype._getPanelTheme = function () {\n return this._parentFormField ? \"mat-\" + this._parentFormField.color : '';\n };\n Object.defineProperty(MatSelect.prototype, \"empty\", {\n /** Whether the select has a value. */\n get: function () {\n return !this._selectionModel || this._selectionModel.isEmpty();\n },\n enumerable: false,\n configurable: true\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 _this.stateChanges.next();\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 */\n MatSelect.prototype._setSelectionByValue = function (value) {\n var _this = this;\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw getMatSelectNonArrayValueError();\n }\n this._selectionModel.clear();\n value.forEach(function (currentValue) { return _this._selectValue(currentValue); });\n this._sortValues();\n }\n else {\n this._selectionModel.clear();\n var correspondingOption = this._selectValue(value);\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(correspondingOption);\n }\n else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.setActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n MatSelect.prototype._selectValue = function (value) {\n var _this = this;\n var 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 (core.isDevMode()) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n };\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n MatSelect.prototype._initKeyManager = function () {\n var _this = this;\n this._keyManager = new a11y.ActiveDescendantKeyManager(this.options)\n .withTypeAhead(this._typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withAllowedModifierKeys(['shiftKey']);\n this._keyManager.tabOut.pipe(operators.takeUntil(this._destroy)).subscribe(function () {\n if (_this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!_this.multiple && _this._keyManager.activeItem) {\n _this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n _this.focus();\n _this.close();\n }\n });\n this._keyManager.change.pipe(operators.takeUntil(this._destroy)).subscribe(function () {\n if (_this._panelOpen && _this.panel) {\n _this._scrollActiveOptionIntoView();\n }\n else if (!_this._panelOpen && !_this.multiple && _this._keyManager.activeItem) {\n _this._keyManager.activeItem._selectViaInteraction();\n }\n });\n };\n /** Drops current option subscriptions and IDs and resets from scratch. */\n MatSelect.prototype._resetOptions = function () {\n var _this = this;\n var changedOrDestroyed = rxjs.merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(operators.takeUntil(changedOrDestroyed)).subscribe(function (event) {\n _this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !_this.multiple && _this._panelOpen) {\n _this.close();\n _this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n rxjs.merge.apply(void 0, __spread(this.options.map(function (option) { return option._stateChanges; }))).pipe(operators.takeUntil(changedOrDestroyed))\n .subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n _this.stateChanges.next();\n });\n this._setOptionIds();\n };\n /** Invoked when an option is clicked. */\n MatSelect.prototype._onSelect = function (option, isUserInput) {\n var wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n this._propagateChanges(option.value);\n }\n else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) :\n this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n };\n /** Sorts the selected values in the selected based on their order in the panel. */\n MatSelect.prototype._sortValues = function () {\n var _this = this;\n if (this.multiple) {\n var options_1 = this.options.toArray();\n this._selectionModel.sort(function (a, b) {\n return _this.sortComparator ? _this.sortComparator(a, b, options_1) :\n options_1.indexOf(a) - options_1.indexOf(b);\n });\n this.stateChanges.next();\n }\n };\n /** Emits change event to set the model value. */\n MatSelect.prototype._propagateChanges = function (fallbackValue) {\n var valueToEmit = null;\n if (this.multiple) {\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.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(new MatSelectChange(this, valueToEmit));\n this._changeDetectorRef.markForCheck();\n };\n /** Records option IDs to pass to the aria-owns property. */\n MatSelect.prototype._setOptionIds = function () {\n this._optionIds = this.options.map(function (option) { return option.id; }).join(' ');\n };\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n MatSelect.prototype._highlightCorrectOption = function () {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n };\n /** Scrolls the active option into view. */\n MatSelect.prototype._scrollActiveOptionIntoView = function () {\n var activeOptionIndex = this._keyManager.activeItemIndex || 0;\n var labelCount = core$1._countGroupLabelsBeforeOption(activeOptionIndex, this.options, this.optionGroups);\n this.panel.nativeElement.scrollTop = core$1._getOptionScrollPosition(activeOptionIndex + labelCount, this._getItemHeight(), this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n };\n /** Focuses the select element. */\n MatSelect.prototype.focus = function (options) {\n this._elementRef.nativeElement.focus(options);\n };\n /** Gets the index of the provided option in the option list. */\n MatSelect.prototype._getOptionIndex = function (option) {\n return this.options.reduce(function (result, current, index) {\n if (result !== undefined) {\n return result;\n }\n return option === current ? index : undefined;\n }, undefined);\n };\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n MatSelect.prototype._calculateOverlayPosition = function () {\n var itemHeight = this._getItemHeight();\n var items = this._getItemCount();\n var panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n var maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n var selectedOptionOffset = this.empty ? 0 : this._getOptionIndex(this._selectionModel.selected[0]);\n selectedOptionOffset += core$1._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 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 */\n MatSelect.prototype._calculateOverlayScroll = function (selectedIndex, scrollBuffer, maxScroll) {\n var itemHeight = this._getItemHeight();\n var optionOffsetFromScrollTop = itemHeight * selectedIndex;\n var 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 optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n };\n /** Returns the aria-label of the select component. */\n MatSelect.prototype._getAriaLabel = function () {\n // If an ariaLabelledby value has been set by the consumer, 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 /** Returns the aria-labelledby of the select component. */\n MatSelect.prototype._getAriaLabelledby = function () {\n if (this.ariaLabelledby) {\n return this.ariaLabelledby;\n }\n // Note: we use `_getAriaLabel` here, because we want to check whether there's a\n // computed label. `this.ariaLabel` is only the user-specified label.\n if (!this._parentFormField || !this._parentFormField._hasFloatingLabel() ||\n this._getAriaLabel()) {\n return null;\n }\n return this._parentFormField._labelId || null;\n };\n /** Determines the `aria-activedescendant` to be set on the host. */\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 */\n MatSelect.prototype._calculateOverlayOffsetX = function () {\n var overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n var viewportSize = this._viewportRuler.getViewportSize();\n var isRtl = this._isRtl();\n var paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n var 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 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 leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n var rightOverflow = overlayRect.right + offsetX - viewportSize.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. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(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 */\n MatSelect.prototype._calculateOverlayOffsetY = function (selectedIndex, scrollBuffer, maxScroll) {\n var itemHeight = this._getItemHeight();\n var optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n var optionOffsetFromPanelTop;\n // Disable offset if requested by user by returning 0 as value to offset\n if (this._disableOptionCentering) {\n return 0;\n }\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n var firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n var 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 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 difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(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 */\n MatSelect.prototype._checkOverlayWithinViewport = function (maxScroll) {\n var itemHeight = this._getItemHeight();\n var viewportSize = this._viewportRuler.getViewportSize();\n var topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n var bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n var panelHeightTop = Math.abs(this._offsetY);\n var totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var 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 /** Adjusts the overlay panel up to fit in the viewport. */\n MatSelect.prototype._adjustPanelUp = function (panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var 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 /** Adjusts the overlay panel down to fit in the viewport. */\n MatSelect.prototype._adjustPanelDown = function (panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var 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 /** Sets the transform origin point based on the selected option. */\n MatSelect.prototype._getOriginBasedOnOption = function () {\n var itemHeight = this._getItemHeight();\n var optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return \"50% \" + originY + \"px 0px\";\n };\n /** Calculates the amount of items in the select. This includes options and group labels. */\n MatSelect.prototype._getItemCount = function () {\n return this.options.length + this.optionGroups.length;\n };\n /** Calculates the height of the select's options. */\n MatSelect.prototype._getItemHeight = function () {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n };\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n MatSelect.prototype.setDescribedByIds = function (ids) {\n this._ariaDescribedby = ids.join(' ');\n };\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n MatSelect.prototype.onContainerClick = function () {\n this.focus();\n this.open();\n };\n Object.defineProperty(MatSelect.prototype, \"shouldLabelFloat\", {\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get: function () {\n return this._panelOpen || !this.empty;\n },\n enumerable: false,\n configurable: true\n });\n MatSelect.decorators = [\n { type: core.Component, args: [{\n selector: 'mat-select',\n exportAs: 'matSelect',\n template: \"<div cdk-overlay-origin\\n class=\\\"mat-select-trigger\\\"\\n aria-hidden=\\\"true\\\"\\n (click)=\\\"toggle()\\\"\\n #origin=\\\"cdkOverlayOrigin\\\"\\n #trigger>\\n <div class=\\\"mat-select-value\\\" [ngSwitch]=\\\"empty\\\">\\n <span class=\\\"mat-select-placeholder\\\" *ngSwitchCase=\\\"true\\\">{{placeholder || '\\\\u00A0'}}</span>\\n <span class=\\\"mat-select-value-text\\\" *ngSwitchCase=\\\"false\\\" [ngSwitch]=\\\"!!customTrigger\\\">\\n <span *ngSwitchDefault>{{triggerValue || '\\\\u00A0'}}</span>\\n <ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content>\\n </span>\\n </div>\\n\\n <div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div>\\n</div>\\n\\n<ng-template\\n cdk-connected-overlay\\n cdkConnectedOverlayLockPosition\\n cdkConnectedOverlayHasBackdrop\\n cdkConnectedOverlayBackdropClass=\\\"cdk-overlay-transparent-backdrop\\\"\\n [cdkConnectedOverlayScrollStrategy]=\\\"_scrollStrategy\\\"\\n [cdkConnectedOverlayOrigin]=\\\"origin\\\"\\n [cdkConnectedOverlayOpen]=\\\"panelOpen\\\"\\n [cdkConnectedOverlayPositions]=\\\"_positions\\\"\\n [cdkConnectedOverlayMinWidth]=\\\"_triggerRect?.width\\\"\\n [cdkConnectedOverlayOffsetY]=\\\"_offsetY\\\"\\n (backdropClick)=\\\"close()\\\"\\n (attach)=\\\"_onAttached()\\\"\\n (detach)=\\\"close()\\\">\\n <div class=\\\"mat-select-panel-wrap\\\" [@transformPanelWrap]>\\n <div\\n #panel\\n [attr.id]=\\\"id + '-panel'\\\"\\n class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\"\\n [ngClass]=\\\"panelClass\\\"\\n [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\"\\n (@transformPanel.done)=\\\"_panelDoneAnimatingStream.next($event.toState)\\\"\\n [style.transformOrigin]=\\\"_transformOrigin\\\"\\n [style.font-size.px]=\\\"_triggerFontSize\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\",\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n encapsulation: core.ViewEncapsulation.None,\n changeDetection: core.ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-label]': '_getAriaLabel()',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-owns]': 'panelOpen ? _optionIds : null',\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-empty]': 'empty',\n 'class': 'mat-select',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n },\n animations: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ],\n providers: [\n { provide: formField.MatFormFieldControl, useExisting: MatSelect },\n { provide: core$1.MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n ],\n styles: [\".mat-select{display:inline-block;width:100%;outline:none}.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;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.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-wrap{flex-basis:100%}.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%;border-radius:4px}.cdk-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:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}\\n\"]\n },] }\n ];\n MatSelect.ctorParameters = function () { return [\n { type: scrolling.ViewportRuler },\n { type: core.ChangeDetectorRef },\n { type: core.NgZone },\n { type: core$1.ErrorStateMatcher },\n { type: core.ElementRef },\n { type: bidi.Directionality, decorators: [{ type: core.Optional }] },\n { type: forms.NgForm, decorators: [{ type: core.Optional }] },\n { type: forms.FormGroupDirective, decorators: [{ type: core.Optional }] },\n { type: formField.MatFormField, decorators: [{ type: core.Optional }, { type: core.Inject, args: [formField.MAT_FORM_FIELD,] }] },\n { type: forms.NgControl, decorators: [{ type: core.Self }, { type: core.Optional }] },\n { type: String, decorators: [{ type: core.Attribute, args: ['tabindex',] }] },\n { type: undefined, decorators: [{ type: core.Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] },\n { type: a11y.LiveAnnouncer },\n { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_SELECT_CONFIG,] }] }\n ]; };\n MatSelect.propDecorators = {\n trigger: [{ type: core.ViewChild, args: ['trigger',] }],\n panel: [{ type: core.ViewChild, args: ['panel',] }],\n overlayDir: [{ type: core.ViewChild, args: [overlay.CdkConnectedOverlay,] }],\n options: [{ type: core.ContentChildren, args: [core$1.MatOption, { descendants: true },] }],\n optionGroups: [{ type: core.ContentChildren, args: [core$1.MatOptgroup, { descendants: true },] }],\n panelClass: [{ type: core.Input }],\n customTrigger: [{ type: core.ContentChild, args: [MatSelectTrigger,] }],\n placeholder: [{ type: core.Input }],\n required: [{ type: core.Input }],\n multiple: [{ type: core.Input }],\n disableOptionCentering: [{ type: core.Input }],\n compareWith: [{ type: core.Input }],\n value: [{ type: core.Input }],\n ariaLabel: [{ type: core.Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: core.Input, args: ['aria-labelledby',] }],\n errorStateMatcher: [{ type: core.Input }],\n typeaheadDebounceInterval: [{ type: core.Input }],\n sortComparator: [{ type: core.Input }],\n id: [{ type: core.Input }],\n openedChange: [{ type: core.Output }],\n _openedStream: [{ type: core.Output, args: ['opened',] }],\n _closedStream: [{ type: core.Output, args: ['closed',] }],\n selectionChange: [{ type: core.Output }],\n valueChange: [{ type: core.Output }]\n };\n return MatSelect;\n }(_MatSelectMixinBase));\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var MatSelectModule = /** @class */ (function () {\n function MatSelectModule() {\n }\n MatSelectModule.decorators = [\n { type: core.NgModule, args: [{\n imports: [\n common.CommonModule,\n overlay.OverlayModule,\n core$1.MatOptionModule,\n core$1.MatCommonModule,\n ],\n exports: [\n scrolling.CdkScrollableModule,\n formField.MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n core$1.MatOptionModule,\n core$1.MatCommonModule\n ],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n },] }\n ];\n return MatSelectModule;\n }());\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.MAT_SELECT_CONFIG = MAT_SELECT_CONFIG;\n exports.MAT_SELECT_SCROLL_STRATEGY = MAT_SELECT_SCROLL_STRATEGY;\n exports.MAT_SELECT_SCROLL_STRATEGY_PROVIDER = MAT_SELECT_SCROLL_STRATEGY_PROVIDER;\n exports.MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY = MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY;\n exports.MatSelect = MatSelect;\n exports.MatSelectChange = MatSelectChange;\n exports.MatSelectModule = MatSelectModule;\n exports.MatSelectTrigger = MatSelectTrigger;\n exports.SELECT_ITEM_HEIGHT_EM = SELECT_ITEM_HEIGHT_EM;\n exports.SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_MULTIPLE_PANEL_PADDING_X;\n exports.SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_INDENT_PADDING_X;\n exports.SELECT_PANEL_MAX_HEIGHT = SELECT_PANEL_MAX_HEIGHT;\n exports.SELECT_PANEL_PADDING_X = SELECT_PANEL_PADDING_X;\n exports.SELECT_PANEL_VIEWPORT_PADDING = SELECT_PANEL_VIEWPORT_PADDING;\n exports.matSelectAnimations = matSelectAnimations;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=material-select.umd.js.map\n"]}
1
+ {"version":3,"sources":["src/material/material-select.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ng","material","select","cdk","overlay","common","core","formField","scrolling","a11y","bidi","coercion","collections","keycodes","forms","rxjs","operators","animations","this","core$1","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","matSelectAnimations","transformPanelWrap","trigger","transition","query","animateChild","optional","transformPanel","state","style","transform","minWidth","opacity","animate","nextUniqueId","MAT_SELECT_SCROLL_STRATEGY","InjectionToken","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","scrollStrategies","reposition","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","provide","deps","Overlay","useFactory","MatSelectChange","source","_MatSelectMixinBase","mixinDisableRipple","mixinTabIndex","mixinDisabled","mixinErrorState","MatSelectBase","_elementRef","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","ngControl","MAT_SELECT_TRIGGER","MatSelectTrigger","decorators","type","Directive","args","selector","providers","useExisting","MatSelect","_super","_viewportRuler","_changeDetectorRef","_ngZone","elementRef","_dir","_parentFormField","tabIndex","scrollStrategyFactory","_liveAnnouncer","defaults","_this","_panelOpen","_required","_scrollTop","_multiple","_compareWith","o1","o2","_uid","_destroy","Subject","_triggerFontSize","_onChange","_onTouched","_optionIds","_transformOrigin","_panelDoneAnimatingStream","_offsetY","_positions","originX","originY","overlayX","overlayY","_disableOptionCentering","_focused","controlType","ariaLabel","optionSelectionChanges","defer","options","changes","pipe","startWith","switchMap","merge","apply","map","option","onSelectionChange","onStable","asObservable","take","openedChange","EventEmitter","_openedStream","filter","_closedStream","selectionChange","valueChange","valueAccessor","_scrollStrategyFactory","_scrollStrategy","parseInt","id","disableOptionCentering","typeaheadDebounceInterval","__extends","__","constructor","prototype","create","defineProperty","get","enumerable","configurable","_placeholder","set","stateChanges","coerceBooleanProperty","_selectionModel","getMatSelectDynamicMultipleError","Error","fn","getMatSelectNonFunctionValueError","_initializeSelection","_value","newValue","writeValue","_typeaheadDebounceInterval","coerceNumberProperty","_id","ngOnInit","SelectionModel","multiple","distinctUntilChanged","takeUntil","subscribe","panelOpen","emit","overlayDir","offsetX","markForCheck","change","_triggerRect","nativeElement","getBoundingClientRect","ngAfterContentInit","_initKeyManager","changed","event","added","forEach","removed","deselect","_resetOptions","ngDoCheck","updateErrorState","ngOnChanges","_keyManager","withTypeAhead","ngOnDestroy","complete","toggle","close","open","disabled","getComputedStyle","fontSize","withHorizontalOrientation","_calculateOverlayPosition","_highlightCorrectOption","overlayRef","overlayElement","_isRtl","_setSelectionByValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","selected","empty","selectedOptions","viewValue","reverse","join","_handleKeydown","_handleOpenKeydown","_handleClosedKeydown","keyCode","isArrowKey","DOWN_ARROW","UP_ARROW","LEFT_ARROW","RIGHT_ARROW","isOpenKey","ENTER","SPACE","manager","isTyping","hasModifierKey","altKey","preventDefault","previouslySelectedOption","HOME","END","setFirstItemActive","setLastItemActive","onKeydown","selectedOption","announce","activeItem","A","ctrlKey","hasDeselectedOptions_1","some","opt","previouslyFocusedIndex","activeItemIndex","shiftKey","_selectViaInteraction","_onFocus","_onBlur","_onAttached","positionChange","detectChanges","_calculateOverlayOffsetX","panel","scrollTop","_getPanelTheme","color","isEmpty","Promise","resolve","then","isArray","getMatSelectNonArrayValueError","clear","currentValue","_selectValue","_sortValues","correspondingOption","setActiveItem","find","isDevMode","console","warn","ActiveDescendantKeyManager","withVerticalOrientation","withAllowedModifierKeys","tabOut","focus","_scrollActiveOptionIntoView","changedOrDestroyed","_onSelect","isUserInput","_stateChanges","_setOptionIds","wasSelected","isSelected","_propagateChanges","options_1","toArray","sort","a","sortComparator","indexOf","fallbackValue","valueToEmit","activeOptionIndex","labelCount","_countGroupLabelsBeforeOption","optionGroups","_getOptionScrollPosition","_getItemHeight","_getOptionIndex","reduce","result","current","index","undefined","itemHeight","items","_getItemCount","panelHeight","Math","min","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","selectedIndex","max","_getAriaLabel","ariaLabelledby","placeholder","_getAriaLabelledby","_hasFloatingLabel","_labelId","_getAriaActiveDescendant","overlayRect","viewportSize","getViewportSize","isRtl","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","first","group","leftOverflow","left","rightOverflow","right","width","round","updatePosition","optionOffsetFromPanelTop","optionHeightAdjustment","height","maxOptionsDisplayed","floor","topSpaceAvailable","top","bottomSpaceAvailable","bottom","panelHeightTop","abs","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","setDescribedByIds","ids","_ariaDescribedby","onContainerClick","Component","exportAs","template","inputs","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","host","role","[attr.id]","[attr.tabindex]","[attr.aria-label]","[attr.aria-labelledby]","[attr.aria-required]","[attr.aria-disabled]","[attr.aria-invalid]","[attr.aria-owns]","[attr.aria-multiselectable]","[attr.aria-describedby]","[attr.aria-activedescendant]","[class.mat-select-disabled]","[class.mat-select-invalid]","[class.mat-select-required]","[class.mat-select-empty]","class","(keydown)","(focus)","(blur)","MatFormFieldControl","MAT_OPTION_PARENT_COMPONENT","styles","ctorParameters","ViewportRuler","ChangeDetectorRef","NgZone","ErrorStateMatcher","ElementRef","Directionality","Optional","NgForm","FormGroupDirective","MatFormField","Inject","MAT_FORM_FIELD","NgControl","Self","String","Attribute","LiveAnnouncer","propDecorators","ViewChild","CdkConnectedOverlay","ContentChildren","MatOption","descendants","MAT_OPTGROUP","panelClass","Input","customTrigger","ContentChild","required","compareWith","errorStateMatcher","Output","MatSelectModule","NgModule","imports","CommonModule","OverlayModule","MatOptionModule","MatCommonModule","CdkScrollableModule","MatFormFieldModule","declarations","SELECT_ITEM_HEIGHT_EM","SELECT_PANEL_INDENT_PADDING_X","SELECT_PANEL_MAX_HEIGHT","SELECT_PANEL_VIEWPORT_PADDING"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/overlay'), require('@angular/common'), require('@angular/core'), require('@angular/material/core'), require('@angular/material/form-field'), require('@angular/cdk/scrolling'), require('@angular/cdk/a11y'), require('@angular/cdk/bidi'), require('@angular/cdk/coercion'), require('@angular/cdk/collections'), require('@angular/cdk/keycodes'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations')) :\n typeof define === 'function' && define.amd ? define('@angular/material/select', ['exports', '@angular/cdk/overlay', '@angular/common', '@angular/core', '@angular/material/core', '@angular/material/form-field', '@angular/cdk/scrolling', '@angular/cdk/a11y', '@angular/cdk/bidi', '@angular/cdk/coercion', '@angular/cdk/collections', '@angular/cdk/keycodes', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations'], factory) :\n (global = global || self, factory((global.ng = global.ng || {}, global.ng.material = global.ng.material || {}, global.ng.material.select = {}), global.ng.cdk.overlay, global.ng.common, global.ng.core, global.ng.material.core, global.ng.material.formField, global.ng.cdk.scrolling, global.ng.cdk.a11y, global.ng.cdk.bidi, global.ng.cdk.coercion, global.ng.cdk.collections, global.ng.cdk.keycodes, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations));\n}(this, (function (exports, overlay, common, core, core$1, formField, scrolling, a11y, bidi, coercion, collections, keycodes, forms, rxjs, operators, animations) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n 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\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n 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++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n }\r\n\r\n 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\n function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n }\r\n\r\n function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n }\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n }\r\n\r\n function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n }\r\n\r\n 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\n 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\n function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n }\r\n\r\n 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\n function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n }\r\n\r\n function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n }\r\n\r\n function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n }\r\n\r\n function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n }\r\n\r\n function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n }\r\n\r\n function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n }\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\n var matSelectAnimations = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: animations.trigger('transformPanelWrap', [\n animations.transition('* => void', animations.query('@transformPanel', [animations.animateChild()], { optional: true }))\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 */\n transformPanel: animations.trigger('transformPanel', [\n animations.state('void', animations.style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0\n })),\n animations.state('showing', animations.style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)'\n })),\n animations.state('showing-multiple', animations.style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)'\n })),\n animations.transition('void => *', animations.animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n animations.transition('* => void', animations.animate('100ms 25ms linear', animations.style({ opacity: 0 })))\n ])\n };\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\n function 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 */\n function getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection 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 */\n function getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n }\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var nextUniqueId = 0;\n /**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n /** The max height of the select's overlay panel */\n var SELECT_PANEL_MAX_HEIGHT = 256;\n /** The panel's padding on the x-axis */\n var SELECT_PANEL_PADDING_X = 16;\n /** The panel's x axis padding if it is indented (e.g. there is an option group). */\n var SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n /** The height of the select items in `em` units. */\n var SELECT_ITEM_HEIGHT_EM = 3;\n // TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n /**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n */\n var SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\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 */\n var SELECT_PANEL_VIEWPORT_PADDING = 8;\n /** Injection token that determines the scroll handling while a select is open. */\n var MAT_SELECT_SCROLL_STRATEGY = new core.InjectionToken('mat-select-scroll-strategy');\n /** @docs-private */\n function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return function () { return overlay.scrollStrategies.reposition(); };\n }\n /** Injection token that can be used to provide the default options the select module. */\n var MAT_SELECT_CONFIG = new core.InjectionToken('MAT_SELECT_CONFIG');\n /** @docs-private */\n var MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [overlay.Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n };\n /** Change event object that is emitted when the select value has changed. */\n var MatSelectChange = /** @class */ (function () {\n function MatSelectChange(\n /** Reference to the select that emitted the change event. */\n source, \n /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n return MatSelectChange;\n }());\n // Boilerplate for applying mixins to MatSelect.\n /** @docs-private */\n var MatSelectBase = /** @class */ (function () {\n function MatSelectBase(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n this._elementRef = _elementRef;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n return MatSelectBase;\n }());\n var _MatSelectMixinBase = core$1.mixinDisableRipple(core$1.mixinTabIndex(core$1.mixinDisabled(core$1.mixinErrorState(MatSelectBase))));\n /**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\n var MAT_SELECT_TRIGGER = new core.InjectionToken('MatSelectTrigger');\n /**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\n var MatSelectTrigger = /** @class */ (function () {\n function MatSelectTrigger() {\n }\n MatSelectTrigger.decorators = [\n { type: core.Directive, args: [{\n selector: 'mat-select-trigger',\n providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }],\n },] }\n ];\n return MatSelectTrigger;\n }());\n var MatSelect = /** @class */ (function (_super) {\n __extends(MatSelect, _super);\n function MatSelect(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, defaults) {\n var _this = _super.call(this, elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) || this;\n _this._viewportRuler = _viewportRuler;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._ngZone = _ngZone;\n _this._dir = _dir;\n _this._parentFormField = _parentFormField;\n _this.ngControl = ngControl;\n _this._liveAnnouncer = _liveAnnouncer;\n /** Whether or not the overlay panel is open. */\n _this._panelOpen = false;\n /** Whether filling out the select is required in the form. */\n _this._required = false;\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n _this._scrollTop = 0;\n /** Whether the component is in multiple selection mode. */\n _this._multiple = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n _this._compareWith = function (o1, o2) { return o1 === o2; };\n /** Unique id for this input. */\n _this._uid = \"mat-select-\" + nextUniqueId++;\n /** Emits whenever the component is destroyed. */\n _this._destroy = new rxjs.Subject();\n /** The cached font-size of the trigger element. */\n _this._triggerFontSize = 0;\n /** `View -> model callback called when value changes` */\n _this._onChange = function () { };\n /** `View -> model callback called when select has been touched` */\n _this._onTouched = function () { };\n /** The IDs of child options to be passed to the aria-owns attribute. */\n _this._optionIds = '';\n /** The value of the select panel's transform-origin property. */\n _this._transformOrigin = 'top';\n /** Emits when the panel element is finished transforming in. */\n _this._panelDoneAnimatingStream = new rxjs.Subject();\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 /** Whether the component is disabling centering of the active option over the trigger. */\n _this._disableOptionCentering = false;\n _this._focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n _this.controlType = 'mat-select';\n /** Aria label of the select. If not specified, the placeholder will be used as label. */\n _this.ariaLabel = '';\n /** Combined stream of all of the child options' change events. */\n _this.optionSelectionChanges = rxjs.defer(function () {\n var options = _this.options;\n if (options) {\n return options.changes.pipe(operators.startWith(options), operators.switchMap(function () { return rxjs.merge.apply(void 0, __spread(options.map(function (option) { return option.onSelectionChange; }))); }));\n }\n return _this._ngZone.onStable\n .asObservable()\n .pipe(operators.take(1), operators.switchMap(function () { return _this.optionSelectionChanges; }));\n });\n /** Event emitted when the select panel has been toggled. */\n _this.openedChange = new core.EventEmitter();\n /** Event emitted when the select has been opened. */\n _this._openedStream = _this.openedChange.pipe(operators.filter(function (o) { return o; }), operators.map(function () { }));\n /** Event emitted when the select has been closed. */\n _this._closedStream = _this.openedChange.pipe(operators.filter(function (o) { return !o; }), operators.map(function () { }));\n /** Event emitted when the selected value has been changed by the user. */\n _this.selectionChange = new core.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 core.EventEmitter();\n if (_this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n _this.ngControl.valueAccessor = _this;\n }\n _this._scrollStrategyFactory = scrollStrategyFactory;\n _this._scrollStrategy = _this._scrollStrategyFactory();\n _this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n _this.id = _this.id;\n if (defaults) {\n if (defaults.disableOptionCentering != null) {\n _this.disableOptionCentering = defaults.disableOptionCentering;\n }\n if (defaults.typeaheadDebounceInterval != null) {\n _this.typeaheadDebounceInterval = defaults.typeaheadDebounceInterval;\n }\n }\n return _this;\n }\n Object.defineProperty(MatSelect.prototype, \"focused\", {\n /** Whether the select is focused. */\n get: function () {\n return this._focused || this._panelOpen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"placeholder\", {\n /** Placeholder to be shown if no value has been selected. */\n get: function () { return this._placeholder; },\n set: function (value) {\n this._placeholder = value;\n this.stateChanges.next();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"required\", {\n /** Whether the component is required. */\n get: function () { return this._required; },\n set: function (value) {\n this._required = coercion.coerceBooleanProperty(value);\n this.stateChanges.next();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"multiple\", {\n /** Whether the user should be allowed to select multiple options. */\n get: function () { return this._multiple; },\n set: function (value) {\n if (this._selectionModel) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coercion.coerceBooleanProperty(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"disableOptionCentering\", {\n /** Whether to center the active option over the trigger. */\n get: function () { return this._disableOptionCentering; },\n set: function (value) {\n this._disableOptionCentering = coercion.coerceBooleanProperty(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"compareWith\", {\n /**\n * 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 */\n get: function () { return this._compareWith; },\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: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"value\", {\n /** Value of the select control. */\n get: function () { return this._value; },\n set: function (newValue) {\n if (newValue !== this._value) {\n this.writeValue(newValue);\n this._value = newValue;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"typeaheadDebounceInterval\", {\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n get: function () { return this._typeaheadDebounceInterval; },\n set: function (value) {\n this._typeaheadDebounceInterval = coercion.coerceNumberProperty(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"id\", {\n /** Unique id of the element. */\n get: function () { return this._id; },\n set: function (value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n },\n enumerable: false,\n configurable: true\n });\n MatSelect.prototype.ngOnInit = function () {\n var _this = this;\n this._selectionModel = new collections.SelectionModel(this.multiple);\n this.stateChanges.next();\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream\n .pipe(operators.distinctUntilChanged(), operators.takeUntil(this._destroy))\n .subscribe(function () {\n if (_this.panelOpen) {\n _this._scrollTop = 0;\n _this.openedChange.emit(true);\n }\n else {\n _this.openedChange.emit(false);\n _this.overlayDir.offsetX = 0;\n _this._changeDetectorRef.markForCheck();\n }\n });\n this._viewportRuler.change()\n .pipe(operators.takeUntil(this._destroy))\n .subscribe(function () {\n if (_this._panelOpen) {\n _this._triggerRect = _this.trigger.nativeElement.getBoundingClientRect();\n _this._changeDetectorRef.markForCheck();\n }\n });\n };\n MatSelect.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._initKeyManager();\n this._selectionModel.changed.pipe(operators.takeUntil(this._destroy)).subscribe(function (event) {\n event.added.forEach(function (option) { return option.select(); });\n event.removed.forEach(function (option) { return option.deselect(); });\n });\n this.options.changes.pipe(operators.startWith(null), operators.takeUntil(this._destroy)).subscribe(function () {\n _this._resetOptions();\n _this._initializeSelection();\n });\n };\n MatSelect.prototype.ngDoCheck = function () {\n if (this.ngControl) {\n this.updateErrorState();\n }\n };\n MatSelect.prototype.ngOnChanges = function (changes) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this._typeaheadDebounceInterval);\n }\n };\n MatSelect.prototype.ngOnDestroy = function () {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n };\n /** Toggles the overlay panel open or closed. */\n MatSelect.prototype.toggle = function () {\n this.panelOpen ? this.close() : this.open();\n };\n /** Opens the overlay panel. */\n MatSelect.prototype.open = function () {\n var _this = this;\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) {\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).fontSize || '0');\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._calculateOverlayPosition();\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.asObservable().pipe(operators.take(1)).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 /** Closes the overlay panel and focuses the host element. */\n MatSelect.prototype.close = function () {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\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 */\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 */\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 */\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 */\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 /** Whether or not the overlay panel is open. */\n get: function () {\n return this._panelOpen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"selected\", {\n /** The currently selected option. */\n get: function () {\n return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MatSelect.prototype, \"triggerValue\", {\n /** The value displayed in the trigger. */\n get: function () {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n var 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: false,\n configurable: true\n });\n /** Whether the element is in RTL mode. */\n MatSelect.prototype._isRtl = function () {\n return this._dir ? this._dir.value === 'rtl' : false;\n };\n /** Handles all keydown events on the select. */\n MatSelect.prototype._handleKeydown = function (event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n };\n /** Handles keyboard events while the select is closed. */\n MatSelect.prototype._handleClosedKeydown = function (event) {\n var keyCode = event.keyCode;\n var isArrowKey = keyCode === keycodes.DOWN_ARROW || keyCode === keycodes.UP_ARROW ||\n keyCode === keycodes.LEFT_ARROW || keyCode === keycodes.RIGHT_ARROW;\n var isOpenKey = keyCode === keycodes.ENTER || keyCode === keycodes.SPACE;\n var manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native <select>\n if (!manager.isTyping() && (isOpenKey && !keycodes.hasModifierKey(event)) ||\n ((this.multiple || event.altKey) && isArrowKey)) {\n event.preventDefault(); // prevents the page from scrolling down when pressing space\n this.open();\n }\n else if (!this.multiple) {\n var previouslySelectedOption = this.selected;\n if (keyCode === keycodes.HOME || keyCode === keycodes.END) {\n keyCode === keycodes.HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n }\n else {\n manager.onKeydown(event);\n }\n var selectedOption = this.selected;\n // Since the value has changed, we need to announce it ourselves.\n if (selectedOption && previouslySelectedOption !== selectedOption) {\n // We set a duration on the live announcement, because we want the live element to be\n // cleared after a while so that users can't navigate to it using the arrow keys.\n this._liveAnnouncer.announce(selectedOption.viewValue, 10000);\n }\n }\n };\n /** Handles keyboard events when the selected is open. */\n MatSelect.prototype._handleOpenKeydown = function (event) {\n var manager = this._keyManager;\n var keyCode = event.keyCode;\n var isArrowKey = keyCode === keycodes.DOWN_ARROW || keyCode === keycodes.UP_ARROW;\n var isTyping = manager.isTyping();\n if (keyCode === keycodes.HOME || keyCode === keycodes.END) {\n event.preventDefault();\n keyCode === keycodes.HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n }\n else if (isArrowKey && event.altKey) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n }\n else if (!isTyping && (keyCode === keycodes.ENTER || keyCode === keycodes.SPACE) && manager.activeItem &&\n !keycodes.hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n }\n else if (!isTyping && this._multiple && keyCode === keycodes.A && event.ctrlKey) {\n event.preventDefault();\n var hasDeselectedOptions_1 = this.options.some(function (opt) { return !opt.disabled && !opt.selected; });\n this.options.forEach(function (option) {\n if (!option.disabled) {\n hasDeselectedOptions_1 ? option.select() : option.deselect();\n }\n });\n }\n else {\n var previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\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 */\n MatSelect.prototype._onBlur = function () {\n this._focused = false;\n if (!this.disabled && !this.panelOpen) {\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 */\n MatSelect.prototype._onAttached = function () {\n var _this = this;\n this.overlayDir.positionChange.pipe(operators.take(1)).subscribe(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 MatSelect.prototype._getPanelTheme = function () {\n return this._parentFormField ? \"mat-\" + this._parentFormField.color : '';\n };\n Object.defineProperty(MatSelect.prototype, \"empty\", {\n /** Whether the select has a value. */\n get: function () {\n return !this._selectionModel || this._selectionModel.isEmpty();\n },\n enumerable: false,\n configurable: true\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 _this.stateChanges.next();\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 */\n MatSelect.prototype._setSelectionByValue = function (value) {\n var _this = this;\n if (this.multiple && value) {\n if (!Array.isArray(value)) {\n throw getMatSelectNonArrayValueError();\n }\n this._selectionModel.clear();\n value.forEach(function (currentValue) { return _this._selectValue(currentValue); });\n this._sortValues();\n }\n else {\n this._selectionModel.clear();\n var correspondingOption = this._selectValue(value);\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(correspondingOption);\n }\n else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.setActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n MatSelect.prototype._selectValue = function (value) {\n var _this = this;\n var 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 (core.isDevMode()) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n };\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n MatSelect.prototype._initKeyManager = function () {\n var _this = this;\n this._keyManager = new a11y.ActiveDescendantKeyManager(this.options)\n .withTypeAhead(this._typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withAllowedModifierKeys(['shiftKey']);\n this._keyManager.tabOut.pipe(operators.takeUntil(this._destroy)).subscribe(function () {\n if (_this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!_this.multiple && _this._keyManager.activeItem) {\n _this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n _this.focus();\n _this.close();\n }\n });\n this._keyManager.change.pipe(operators.takeUntil(this._destroy)).subscribe(function () {\n if (_this._panelOpen && _this.panel) {\n _this._scrollActiveOptionIntoView();\n }\n else if (!_this._panelOpen && !_this.multiple && _this._keyManager.activeItem) {\n _this._keyManager.activeItem._selectViaInteraction();\n }\n });\n };\n /** Drops current option subscriptions and IDs and resets from scratch. */\n MatSelect.prototype._resetOptions = function () {\n var _this = this;\n var changedOrDestroyed = rxjs.merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(operators.takeUntil(changedOrDestroyed)).subscribe(function (event) {\n _this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !_this.multiple && _this._panelOpen) {\n _this.close();\n _this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n rxjs.merge.apply(void 0, __spread(this.options.map(function (option) { return option._stateChanges; }))).pipe(operators.takeUntil(changedOrDestroyed))\n .subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n _this.stateChanges.next();\n });\n this._setOptionIds();\n };\n /** Invoked when an option is clicked. */\n MatSelect.prototype._onSelect = function (option, isUserInput) {\n var wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n this._propagateChanges(option.value);\n }\n else {\n if (wasSelected !== option.selected) {\n option.selected ? this._selectionModel.select(option) :\n this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n };\n /** Sorts the selected values in the selected based on their order in the panel. */\n MatSelect.prototype._sortValues = function () {\n var _this = this;\n if (this.multiple) {\n var options_1 = this.options.toArray();\n this._selectionModel.sort(function (a, b) {\n return _this.sortComparator ? _this.sortComparator(a, b, options_1) :\n options_1.indexOf(a) - options_1.indexOf(b);\n });\n this.stateChanges.next();\n }\n };\n /** Emits change event to set the model value. */\n MatSelect.prototype._propagateChanges = function (fallbackValue) {\n var valueToEmit = null;\n if (this.multiple) {\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.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(new MatSelectChange(this, valueToEmit));\n this._changeDetectorRef.markForCheck();\n };\n /** Records option IDs to pass to the aria-owns property. */\n MatSelect.prototype._setOptionIds = function () {\n this._optionIds = this.options.map(function (option) { return option.id; }).join(' ');\n };\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n MatSelect.prototype._highlightCorrectOption = function () {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n };\n /** Scrolls the active option into view. */\n MatSelect.prototype._scrollActiveOptionIntoView = function () {\n var activeOptionIndex = this._keyManager.activeItemIndex || 0;\n var labelCount = core$1._countGroupLabelsBeforeOption(activeOptionIndex, this.options, this.optionGroups);\n this.panel.nativeElement.scrollTop = core$1._getOptionScrollPosition(activeOptionIndex + labelCount, this._getItemHeight(), this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n };\n /** Focuses the select element. */\n MatSelect.prototype.focus = function (options) {\n this._elementRef.nativeElement.focus(options);\n };\n /** Gets the index of the provided option in the option list. */\n MatSelect.prototype._getOptionIndex = function (option) {\n return this.options.reduce(function (result, current, index) {\n if (result !== undefined) {\n return result;\n }\n return option === current ? index : undefined;\n }, undefined);\n };\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n MatSelect.prototype._calculateOverlayPosition = function () {\n var itemHeight = this._getItemHeight();\n var items = this._getItemCount();\n var panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n var maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n var selectedOptionOffset = this.empty ? 0 : this._getOptionIndex(this._selectionModel.selected[0]);\n selectedOptionOffset += core$1._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 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 */\n MatSelect.prototype._calculateOverlayScroll = function (selectedIndex, scrollBuffer, maxScroll) {\n var itemHeight = this._getItemHeight();\n var optionOffsetFromScrollTop = itemHeight * selectedIndex;\n var 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 optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n };\n /** Returns the aria-label of the select component. */\n MatSelect.prototype._getAriaLabel = function () {\n // If an ariaLabelledby value has been set by the consumer, 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 /** Returns the aria-labelledby of the select component. */\n MatSelect.prototype._getAriaLabelledby = function () {\n if (this.ariaLabelledby) {\n return this.ariaLabelledby;\n }\n // Note: we use `_getAriaLabel` here, because we want to check whether there's a\n // computed label. `this.ariaLabel` is only the user-specified label.\n if (!this._parentFormField || !this._parentFormField._hasFloatingLabel() ||\n this._getAriaLabel()) {\n return null;\n }\n return this._parentFormField._labelId || null;\n };\n /** Determines the `aria-activedescendant` to be set on the host. */\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 */\n MatSelect.prototype._calculateOverlayOffsetX = function () {\n var overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n var viewportSize = this._viewportRuler.getViewportSize();\n var isRtl = this._isRtl();\n var paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n SELECT_PANEL_PADDING_X * 2;\n var 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 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 leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n var rightOverflow = overlayRect.right + offsetX - viewportSize.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. Round the value to avoid\n // blurry content in some browsers.\n this.overlayDir.offsetX = Math.round(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 */\n MatSelect.prototype._calculateOverlayOffsetY = function (selectedIndex, scrollBuffer, maxScroll) {\n var itemHeight = this._getItemHeight();\n var optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n var optionOffsetFromPanelTop;\n // Disable offset if requested by user by returning 0 as value to offset\n if (this._disableOptionCentering) {\n return 0;\n }\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n var firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n var 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 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 difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(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 */\n MatSelect.prototype._checkOverlayWithinViewport = function (maxScroll) {\n var itemHeight = this._getItemHeight();\n var viewportSize = this._viewportRuler.getViewportSize();\n var topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n var bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n var panelHeightTop = Math.abs(this._offsetY);\n var totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n var 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 /** Adjusts the overlay panel up to fit in the viewport. */\n MatSelect.prototype._adjustPanelUp = function (panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var 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 /** Adjusts the overlay panel down to fit in the viewport. */\n MatSelect.prototype._adjustPanelDown = function (panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n var 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 /** Sets the transform origin point based on the selected option. */\n MatSelect.prototype._getOriginBasedOnOption = function () {\n var itemHeight = this._getItemHeight();\n var optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n var originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return \"50% \" + originY + \"px 0px\";\n };\n /** Calculates the amount of items in the select. This includes options and group labels. */\n MatSelect.prototype._getItemCount = function () {\n return this.options.length + this.optionGroups.length;\n };\n /** Calculates the height of the select's options. */\n MatSelect.prototype._getItemHeight = function () {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n };\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n MatSelect.prototype.setDescribedByIds = function (ids) {\n this._ariaDescribedby = ids.join(' ');\n };\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n MatSelect.prototype.onContainerClick = function () {\n this.focus();\n this.open();\n };\n Object.defineProperty(MatSelect.prototype, \"shouldLabelFloat\", {\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get: function () {\n return this._panelOpen || !this.empty;\n },\n enumerable: false,\n configurable: true\n });\n MatSelect.decorators = [\n { type: core.Component, args: [{\n selector: 'mat-select',\n exportAs: 'matSelect',\n template: \"<div cdk-overlay-origin\\n class=\\\"mat-select-trigger\\\"\\n aria-hidden=\\\"true\\\"\\n (click)=\\\"toggle()\\\"\\n #origin=\\\"cdkOverlayOrigin\\\"\\n #trigger>\\n <div class=\\\"mat-select-value\\\" [ngSwitch]=\\\"empty\\\">\\n <span class=\\\"mat-select-placeholder\\\" *ngSwitchCase=\\\"true\\\">{{placeholder || '\\\\u00A0'}}</span>\\n <span class=\\\"mat-select-value-text\\\" *ngSwitchCase=\\\"false\\\" [ngSwitch]=\\\"!!customTrigger\\\">\\n <span *ngSwitchDefault>{{triggerValue || '\\\\u00A0'}}</span>\\n <ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content>\\n </span>\\n </div>\\n\\n <div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div>\\n</div>\\n\\n<ng-template\\n cdk-connected-overlay\\n cdkConnectedOverlayLockPosition\\n cdkConnectedOverlayHasBackdrop\\n cdkConnectedOverlayBackdropClass=\\\"cdk-overlay-transparent-backdrop\\\"\\n [cdkConnectedOverlayScrollStrategy]=\\\"_scrollStrategy\\\"\\n [cdkConnectedOverlayOrigin]=\\\"origin\\\"\\n [cdkConnectedOverlayOpen]=\\\"panelOpen\\\"\\n [cdkConnectedOverlayPositions]=\\\"_positions\\\"\\n [cdkConnectedOverlayMinWidth]=\\\"_triggerRect?.width\\\"\\n [cdkConnectedOverlayOffsetY]=\\\"_offsetY\\\"\\n (backdropClick)=\\\"close()\\\"\\n (attach)=\\\"_onAttached()\\\"\\n (detach)=\\\"close()\\\">\\n <div class=\\\"mat-select-panel-wrap\\\" [@transformPanelWrap]>\\n <div\\n #panel\\n [attr.id]=\\\"id + '-panel'\\\"\\n class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\"\\n [ngClass]=\\\"panelClass\\\"\\n [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\"\\n (@transformPanel.done)=\\\"_panelDoneAnimatingStream.next($event.toState)\\\"\\n [style.transformOrigin]=\\\"_transformOrigin\\\"\\n [style.font-size.px]=\\\"_triggerFontSize\\\"\\n (keydown)=\\\"_handleKeydown($event)\\\">\\n <ng-content></ng-content>\\n </div>\\n </div>\\n</ng-template>\\n\",\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n encapsulation: core.ViewEncapsulation.None,\n changeDetection: core.ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-label]': '_getAriaLabel()',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-owns]': 'panelOpen ? _optionIds : null',\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-empty]': 'empty',\n 'class': 'mat-select',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n },\n animations: [\n matSelectAnimations.transformPanelWrap,\n matSelectAnimations.transformPanel\n ],\n providers: [\n { provide: formField.MatFormFieldControl, useExisting: MatSelect },\n { provide: core$1.MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n ],\n styles: [\".mat-select{display:inline-block;width:100%;outline:none}.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;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.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-wrap{flex-basis:100%}.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%;border-radius:4px}.cdk-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:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}\\n\"]\n },] }\n ];\n MatSelect.ctorParameters = function () { return [\n { type: scrolling.ViewportRuler },\n { type: core.ChangeDetectorRef },\n { type: core.NgZone },\n { type: core$1.ErrorStateMatcher },\n { type: core.ElementRef },\n { type: bidi.Directionality, decorators: [{ type: core.Optional }] },\n { type: forms.NgForm, decorators: [{ type: core.Optional }] },\n { type: forms.FormGroupDirective, decorators: [{ type: core.Optional }] },\n { type: formField.MatFormField, decorators: [{ type: core.Optional }, { type: core.Inject, args: [formField.MAT_FORM_FIELD,] }] },\n { type: forms.NgControl, decorators: [{ type: core.Self }, { type: core.Optional }] },\n { type: String, decorators: [{ type: core.Attribute, args: ['tabindex',] }] },\n { type: undefined, decorators: [{ type: core.Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] },\n { type: a11y.LiveAnnouncer },\n { type: undefined, decorators: [{ type: core.Optional }, { type: core.Inject, args: [MAT_SELECT_CONFIG,] }] }\n ]; };\n MatSelect.propDecorators = {\n trigger: [{ type: core.ViewChild, args: ['trigger',] }],\n panel: [{ type: core.ViewChild, args: ['panel',] }],\n overlayDir: [{ type: core.ViewChild, args: [overlay.CdkConnectedOverlay,] }],\n options: [{ type: core.ContentChildren, args: [core$1.MatOption, { descendants: true },] }],\n optionGroups: [{ type: core.ContentChildren, args: [core$1.MAT_OPTGROUP, { descendants: true },] }],\n panelClass: [{ type: core.Input }],\n customTrigger: [{ type: core.ContentChild, args: [MAT_SELECT_TRIGGER,] }],\n placeholder: [{ type: core.Input }],\n required: [{ type: core.Input }],\n multiple: [{ type: core.Input }],\n disableOptionCentering: [{ type: core.Input }],\n compareWith: [{ type: core.Input }],\n value: [{ type: core.Input }],\n ariaLabel: [{ type: core.Input, args: ['aria-label',] }],\n ariaLabelledby: [{ type: core.Input, args: ['aria-labelledby',] }],\n errorStateMatcher: [{ type: core.Input }],\n typeaheadDebounceInterval: [{ type: core.Input }],\n sortComparator: [{ type: core.Input }],\n id: [{ type: core.Input }],\n openedChange: [{ type: core.Output }],\n _openedStream: [{ type: core.Output, args: ['opened',] }],\n _closedStream: [{ type: core.Output, args: ['closed',] }],\n selectionChange: [{ type: core.Output }],\n valueChange: [{ type: core.Output }]\n };\n return MatSelect;\n }(_MatSelectMixinBase));\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var MatSelectModule = /** @class */ (function () {\n function MatSelectModule() {\n }\n MatSelectModule.decorators = [\n { type: core.NgModule, args: [{\n imports: [\n common.CommonModule,\n overlay.OverlayModule,\n core$1.MatOptionModule,\n core$1.MatCommonModule,\n ],\n exports: [\n scrolling.CdkScrollableModule,\n formField.MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n core$1.MatOptionModule,\n core$1.MatCommonModule\n ],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n },] }\n ];\n return MatSelectModule;\n }());\n\n /**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.MAT_SELECT_CONFIG = MAT_SELECT_CONFIG;\n exports.MAT_SELECT_SCROLL_STRATEGY = MAT_SELECT_SCROLL_STRATEGY;\n exports.MAT_SELECT_SCROLL_STRATEGY_PROVIDER = MAT_SELECT_SCROLL_STRATEGY_PROVIDER;\n exports.MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY = MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY;\n exports.MAT_SELECT_TRIGGER = MAT_SELECT_TRIGGER;\n exports.MatSelect = MatSelect;\n exports.MatSelectChange = MatSelectChange;\n exports.MatSelectModule = MatSelectModule;\n exports.MatSelectTrigger = MatSelectTrigger;\n exports.SELECT_ITEM_HEIGHT_EM = SELECT_ITEM_HEIGHT_EM;\n exports.SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_MULTIPLE_PANEL_PADDING_X;\n exports.SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_INDENT_PADDING_X;\n exports.SELECT_PANEL_MAX_HEIGHT = SELECT_PANEL_MAX_HEIGHT;\n exports.SELECT_PANEL_PADDING_X = SELECT_PANEL_PADDING_X;\n exports.SELECT_PANEL_VIEWPORT_PADDING = SELECT_PANEL_VIEWPORT_PADDING;\n exports.matSelectAnimations = matSelectAnimations;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=material-select.umd.js.map\n"]}
@@ -12,7 +12,7 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var e in n)n.hasOwnProperty(e)&&(t[e]=n[e])})(t,n)};function r(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}function i(t,n,e,r){return new(e||(e=Promise))((function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):function n(t){return t instanceof e?t:new e((function(n){n(t)}))}(t.value).then(s,a)}u((r=r.apply(t,n||[])).next())}))}function o(t,n){var e,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function u(o){if(e)throw new TypeError("Generator is already executing.");for(;s;)try{if(e=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=n.call(t,s)}catch(t){o=[6,t],r=0}finally{e=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}}
15
+ ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var e in n)n.hasOwnProperty(e)&&(t[e]=n[e])})(t,n)};function r(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}function i(t,n,e,r){return new(e||(e=Promise))((function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):function n(t){return t instanceof e?t:new e((function(n){n(t)}))}(t.value).then(s,a)}u((r=r.apply(t,n||[])).next())}))}function o(t,n){var e,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function u(o){if(e)throw new TypeError("Generator is already executing.");for(;s;)try{if(e=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=n.call(t,s)}catch(t){o=[6,t],r=0}finally{e=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}}
16
16
  /**
17
17
  * @license
18
18
  * Copyright Google LLC All Rights Reserved.