@angular/material 19.0.0-next.0 → 19.0.0-next.2

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 (646) hide show
  1. package/_index.scss +4 -5
  2. package/button/_button-base.scss +2 -4
  3. package/button/index.d.ts +2 -10
  4. package/checkbox/_checkbox-common.scss +7 -7
  5. package/checkbox/index.d.ts +0 -7
  6. package/chips/index.d.ts +1 -10
  7. package/core/_core.scss +9 -7
  8. package/core/focus-indicators/_private.scss +20 -81
  9. package/core/index.d.ts +8 -10
  10. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +5 -4
  11. package/core/style/_elevation.scss +1 -1
  12. package/core/style/_list-common.scss +2 -2
  13. package/core/style/_menu-common.scss +1 -0
  14. package/core/theming/_palettes.scss +132 -45
  15. package/core/tokens/_m3-system.scss +228 -0
  16. package/core/tokens/_m3-tokens.scss +8 -149
  17. package/core/tokens/_token-utils.scss +13 -12
  18. package/core/tokens/m2/mat/_datepicker.scss +1 -1
  19. package/core/tokens/m3/mat/_datepicker.scss +2 -2
  20. package/core/tokens/m3/mat/_sidenav.scss +0 -1
  21. package/dialog/index.d.ts +2 -2
  22. package/fesm2022/autocomplete.mjs +2 -2
  23. package/fesm2022/autocomplete.mjs.map +1 -1
  24. package/fesm2022/badge.mjs +7 -20
  25. package/fesm2022/badge.mjs.map +1 -1
  26. package/fesm2022/bottom-sheet.mjs +2 -2
  27. package/fesm2022/bottom-sheet.mjs.map +1 -1
  28. package/fesm2022/button-toggle.mjs +2 -2
  29. package/fesm2022/button-toggle.mjs.map +1 -1
  30. package/fesm2022/button.mjs +16 -27
  31. package/fesm2022/button.mjs.map +1 -1
  32. package/fesm2022/card.mjs +2 -2
  33. package/fesm2022/card.mjs.map +1 -1
  34. package/fesm2022/checkbox.mjs +2 -5
  35. package/fesm2022/checkbox.mjs.map +1 -1
  36. package/fesm2022/chips.mjs +8 -19
  37. package/fesm2022/chips.mjs.map +1 -1
  38. package/fesm2022/core.mjs +64 -40
  39. package/fesm2022/core.mjs.map +1 -1
  40. package/fesm2022/datepicker.mjs +8 -8
  41. package/fesm2022/datepicker.mjs.map +1 -1
  42. package/fesm2022/dialog.mjs +5 -5
  43. package/fesm2022/dialog.mjs.map +1 -1
  44. package/fesm2022/divider.mjs +2 -2
  45. package/fesm2022/divider.mjs.map +1 -1
  46. package/fesm2022/expansion.mjs +4 -4
  47. package/fesm2022/expansion.mjs.map +1 -1
  48. package/fesm2022/form-field.mjs +2 -2
  49. package/fesm2022/form-field.mjs.map +1 -1
  50. package/fesm2022/icon.mjs +4 -5
  51. package/fesm2022/icon.mjs.map +1 -1
  52. package/fesm2022/input/testing.mjs +7 -1
  53. package/fesm2022/input/testing.mjs.map +1 -1
  54. package/fesm2022/input.mjs +43 -9
  55. package/fesm2022/input.mjs.map +1 -1
  56. package/fesm2022/list.mjs +14 -14
  57. package/fesm2022/list.mjs.map +1 -1
  58. package/fesm2022/menu.mjs +4 -4
  59. package/fesm2022/menu.mjs.map +1 -1
  60. package/fesm2022/paginator.mjs +2 -2
  61. package/fesm2022/paginator.mjs.map +1 -1
  62. package/fesm2022/progress-bar.mjs +2 -2
  63. package/fesm2022/progress-bar.mjs.map +1 -1
  64. package/fesm2022/progress-spinner.mjs +2 -2
  65. package/fesm2022/progress-spinner.mjs.map +1 -1
  66. package/fesm2022/radio.mjs +2 -2
  67. package/fesm2022/radio.mjs.map +1 -1
  68. package/fesm2022/select.mjs +6 -6
  69. package/fesm2022/select.mjs.map +1 -1
  70. package/fesm2022/sidenav.mjs +4 -4
  71. package/fesm2022/sidenav.mjs.map +1 -1
  72. package/fesm2022/slide-toggle.mjs +2 -2
  73. package/fesm2022/slide-toggle.mjs.map +1 -1
  74. package/fesm2022/slider.mjs +4 -4
  75. package/fesm2022/slider.mjs.map +1 -1
  76. package/fesm2022/snack-bar.mjs +2 -2
  77. package/fesm2022/snack-bar.mjs.map +1 -1
  78. package/fesm2022/stepper.mjs +4 -4
  79. package/fesm2022/stepper.mjs.map +1 -1
  80. package/fesm2022/table.mjs +2 -2
  81. package/fesm2022/table.mjs.map +1 -1
  82. package/fesm2022/tabs.mjs +9 -9
  83. package/fesm2022/tabs.mjs.map +1 -1
  84. package/fesm2022/toolbar.mjs +2 -2
  85. package/fesm2022/toolbar.mjs.map +1 -1
  86. package/fesm2022/tooltip.mjs +16 -4
  87. package/fesm2022/tooltip.mjs.map +1 -1
  88. package/fesm2022/tree.mjs +2 -2
  89. package/fesm2022/tree.mjs.map +1 -1
  90. package/form-field/_mdc-text-field-structure.scss +6 -0
  91. package/input/index.d.ts +18 -1
  92. package/package.json +2 -146
  93. package/prebuilt-themes/azure-blue.css +1 -1
  94. package/prebuilt-themes/cyan-orange.css +1 -1
  95. package/prebuilt-themes/deeppurple-amber.css +1 -1
  96. package/prebuilt-themes/indigo-pink.css +1 -1
  97. package/prebuilt-themes/magenta-violet.css +1 -1
  98. package/prebuilt-themes/pink-bluegrey.css +1 -1
  99. package/prebuilt-themes/purple-green.css +1 -1
  100. package/prebuilt-themes/rose-red.css +1 -1
  101. package/schematics/ng-add/index.js +1 -1
  102. package/schematics/ng-add/index.mjs +1 -1
  103. package/select/index.d.ts +2 -2
  104. package/slide-toggle/_slide-toggle-theme.scss +8 -6
  105. package/tabs/_tabs-common.scss +12 -10
  106. package/core/focus-indicators/_focus-indicators-theme.scss +0 -11
  107. package/core/focus-indicators/_focus-indicators.scss +0 -6
  108. package/esm2022/autocomplete/animations.mjs +0 -24
  109. package/esm2022/autocomplete/autocomplete-origin.mjs +0 -31
  110. package/esm2022/autocomplete/autocomplete-trigger.mjs +0 -902
  111. package/esm2022/autocomplete/autocomplete.mjs +0 -238
  112. package/esm2022/autocomplete/autocomplete_public_index.mjs +0 -5
  113. package/esm2022/autocomplete/index.mjs +0 -9
  114. package/esm2022/autocomplete/module.mjs +0 -61
  115. package/esm2022/autocomplete/public-api.mjs +0 -14
  116. package/esm2022/autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
  117. package/esm2022/autocomplete/testing/autocomplete-harness.mjs +0 -105
  118. package/esm2022/autocomplete/testing/index.mjs +0 -9
  119. package/esm2022/autocomplete/testing/public-api.mjs +0 -10
  120. package/esm2022/badge/badge-module.mjs +0 -27
  121. package/esm2022/badge/badge.mjs +0 -301
  122. package/esm2022/badge/badge_public_index.mjs +0 -5
  123. package/esm2022/badge/index.mjs +0 -9
  124. package/esm2022/badge/public-api.mjs +0 -10
  125. package/esm2022/badge/testing/badge-harness-filters.mjs +0 -9
  126. package/esm2022/badge/testing/badge-harness.mjs +0 -71
  127. package/esm2022/badge/testing/index.mjs +0 -9
  128. package/esm2022/badge/testing/public-api.mjs +0 -10
  129. package/esm2022/bottom-sheet/bottom-sheet-animations.mjs +0 -26
  130. package/esm2022/bottom-sheet/bottom-sheet-config.mjs +0 -48
  131. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +0 -85
  132. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +0 -28
  133. package/esm2022/bottom-sheet/bottom-sheet-ref.mjs +0 -104
  134. package/esm2022/bottom-sheet/bottom-sheet.mjs +0 -115
  135. package/esm2022/bottom-sheet/bottom-sheet_public_index.mjs +0 -5
  136. package/esm2022/bottom-sheet/index.mjs +0 -9
  137. package/esm2022/bottom-sheet/public-api.mjs +0 -14
  138. package/esm2022/bottom-sheet/testing/bottom-sheet-harness-filters.mjs +0 -9
  139. package/esm2022/bottom-sheet/testing/bottom-sheet-harness.mjs +0 -35
  140. package/esm2022/bottom-sheet/testing/index.mjs +0 -9
  141. package/esm2022/bottom-sheet/testing/public-api.mjs +0 -10
  142. package/esm2022/button/button-base.mjs +0 -230
  143. package/esm2022/button/button.mjs +0 -67
  144. package/esm2022/button/button_public_index.mjs +0 -5
  145. package/esm2022/button/fab.mjs +0 -166
  146. package/esm2022/button/icon-button.mjs +0 -56
  147. package/esm2022/button/index.mjs +0 -9
  148. package/esm2022/button/module.mjs +0 -65
  149. package/esm2022/button/public-api.mjs +0 -13
  150. package/esm2022/button/testing/button-harness-filters.mjs +0 -9
  151. package/esm2022/button/testing/button-harness.mjs +0 -80
  152. package/esm2022/button/testing/index.mjs +0 -9
  153. package/esm2022/button/testing/public-api.mjs +0 -10
  154. package/esm2022/button-toggle/button-toggle-module.mjs +0 -24
  155. package/esm2022/button-toggle/button-toggle.mjs +0 -651
  156. package/esm2022/button-toggle/button-toggle_public_index.mjs +0 -5
  157. package/esm2022/button-toggle/index.mjs +0 -9
  158. package/esm2022/button-toggle/public-api.mjs +0 -10
  159. package/esm2022/button-toggle/testing/button-toggle-group-harness-filters.mjs +0 -9
  160. package/esm2022/button-toggle/testing/button-toggle-group-harness.mjs +0 -47
  161. package/esm2022/button-toggle/testing/button-toggle-harness-filters.mjs +0 -9
  162. package/esm2022/button-toggle/testing/button-toggle-harness.mjs +0 -105
  163. package/esm2022/button-toggle/testing/index.mjs +0 -9
  164. package/esm2022/button-toggle/testing/public-api.mjs +0 -12
  165. package/esm2022/card/card.mjs +0 -273
  166. package/esm2022/card/card_public_index.mjs +0 -5
  167. package/esm2022/card/index.mjs +0 -9
  168. package/esm2022/card/module.mjs +0 -67
  169. package/esm2022/card/public-api.mjs +0 -10
  170. package/esm2022/card/testing/card-harness-filters.mjs +0 -9
  171. package/esm2022/card/testing/card-harness.mjs +0 -50
  172. package/esm2022/card/testing/index.mjs +0 -9
  173. package/esm2022/card/testing/public-api.mjs +0 -10
  174. package/esm2022/checkbox/checkbox-config.mjs +0 -22
  175. package/esm2022/checkbox/checkbox-required-validator.mjs +0 -41
  176. package/esm2022/checkbox/checkbox.mjs +0 -443
  177. package/esm2022/checkbox/checkbox_public_index.mjs +0 -5
  178. package/esm2022/checkbox/index.mjs +0 -9
  179. package/esm2022/checkbox/module.mjs +0 -41
  180. package/esm2022/checkbox/public-api.mjs +0 -12
  181. package/esm2022/checkbox/testing/checkbox-harness-filters.mjs +0 -9
  182. package/esm2022/checkbox/testing/checkbox-harness.mjs +0 -138
  183. package/esm2022/checkbox/testing/index.mjs +0 -9
  184. package/esm2022/checkbox/testing/public-api.mjs +0 -9
  185. package/esm2022/chips/chip-action.mjs +0 -113
  186. package/esm2022/chips/chip-edit-input.mjs +0 -61
  187. package/esm2022/chips/chip-grid.mjs +0 -420
  188. package/esm2022/chips/chip-icons.mjs +0 -107
  189. package/esm2022/chips/chip-input.mjs +0 -192
  190. package/esm2022/chips/chip-listbox.mjs +0 -369
  191. package/esm2022/chips/chip-option.mjs +0 -190
  192. package/esm2022/chips/chip-row.mjs +0 -173
  193. package/esm2022/chips/chip-set.mjs +0 -283
  194. package/esm2022/chips/chip-text-control.mjs +0 -9
  195. package/esm2022/chips/chip.mjs +0 -322
  196. package/esm2022/chips/chips_public_index.mjs +0 -5
  197. package/esm2022/chips/index.mjs +0 -9
  198. package/esm2022/chips/module.mjs +0 -85
  199. package/esm2022/chips/public-api.mjs +0 -20
  200. package/esm2022/chips/testing/chip-avatar-harness.mjs +0 -22
  201. package/esm2022/chips/testing/chip-edit-input-harness.mjs +0 -33
  202. package/esm2022/chips/testing/chip-grid-harness.mjs +0 -45
  203. package/esm2022/chips/testing/chip-harness-filters.mjs +0 -9
  204. package/esm2022/chips/testing/chip-harness.mjs +0 -62
  205. package/esm2022/chips/testing/chip-input-harness.mjs +0 -85
  206. package/esm2022/chips/testing/chip-listbox-harness.mjs +0 -61
  207. package/esm2022/chips/testing/chip-option-harness.mjs +0 -45
  208. package/esm2022/chips/testing/chip-remove-harness.mjs +0 -26
  209. package/esm2022/chips/testing/chip-row-harness.mjs +0 -40
  210. package/esm2022/chips/testing/chip-set-harness.mjs +0 -26
  211. package/esm2022/chips/testing/index.mjs +0 -9
  212. package/esm2022/chips/testing/public-api.mjs +0 -19
  213. package/esm2022/chips/tokens.mjs +0 -39
  214. package/esm2022/core/animation/animation.mjs +0 -21
  215. package/esm2022/core/common-behaviors/color.mjs +0 -33
  216. package/esm2022/core/common-behaviors/common-module.mjs +0 -127
  217. package/esm2022/core/common-behaviors/constructor.mjs +0 -9
  218. package/esm2022/core/common-behaviors/disable-ripple.mjs +0 -24
  219. package/esm2022/core/common-behaviors/disabled.mjs +0 -23
  220. package/esm2022/core/common-behaviors/error-state.mjs +0 -66
  221. package/esm2022/core/common-behaviors/index.mjs +0 -15
  222. package/esm2022/core/common-behaviors/initialized.mjs +0 -62
  223. package/esm2022/core/common-behaviors/tabindex.mjs +0 -25
  224. package/esm2022/core/core_public_index.mjs +0 -5
  225. package/esm2022/core/datetime/date-adapter.mjs +0 -109
  226. package/esm2022/core/datetime/date-formats.mjs +0 -10
  227. package/esm2022/core/datetime/index.mjs +0 -46
  228. package/esm2022/core/datetime/native-date-adapter.mjs +0 -221
  229. package/esm2022/core/datetime/native-date-formats.mjs +0 -19
  230. package/esm2022/core/error/error-options.mjs +0 -33
  231. package/esm2022/core/index.mjs +0 -9
  232. package/esm2022/core/internal-form-field/internal-form-field.mjs +0 -29
  233. package/esm2022/core/line/line.mjs +0 -64
  234. package/esm2022/core/option/index.mjs +0 -30
  235. package/esm2022/core/option/optgroup.mjs +0 -71
  236. package/esm2022/core/option/option-parent.mjs +0 -13
  237. package/esm2022/core/option/option.mjs +0 -283
  238. package/esm2022/core/private/index.mjs +0 -9
  239. package/esm2022/core/private/ripple-loader.mjs +0 -160
  240. package/esm2022/core/public-api.mjs +0 -19
  241. package/esm2022/core/ripple/index.mjs +0 -27
  242. package/esm2022/core/ripple/ripple-event-manager.mjs +0 -69
  243. package/esm2022/core/ripple/ripple-ref.mjs +0 -39
  244. package/esm2022/core/ripple/ripple-renderer.mjs +0 -354
  245. package/esm2022/core/ripple/ripple.mjs +0 -156
  246. package/esm2022/core/selection/index.mjs +0 -10
  247. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +0 -24
  248. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -62
  249. package/esm2022/core/testing/index.mjs +0 -9
  250. package/esm2022/core/testing/optgroup-harness-filters.mjs +0 -9
  251. package/esm2022/core/testing/optgroup-harness.mjs +0 -43
  252. package/esm2022/core/testing/option-harness-filters.mjs +0 -9
  253. package/esm2022/core/testing/option-harness.mjs +0 -53
  254. package/esm2022/core/testing/public-api.mjs +0 -12
  255. package/esm2022/core/version.mjs +0 -11
  256. package/esm2022/datepicker/aria-accessible-name.mjs +0 -159
  257. package/esm2022/datepicker/calendar-body.mjs +0 -509
  258. package/esm2022/datepicker/calendar.mjs +0 -426
  259. package/esm2022/datepicker/date-range-input-parts.mjs +0 -372
  260. package/esm2022/datepicker/date-range-input.mjs +0 -369
  261. package/esm2022/datepicker/date-range-picker.mjs +0 -51
  262. package/esm2022/datepicker/date-range-selection-strategy.mjs +0 -97
  263. package/esm2022/datepicker/date-selection-model.mjs +0 -188
  264. package/esm2022/datepicker/datepicker-actions.mjs +0 -91
  265. package/esm2022/datepicker/datepicker-animations.mjs +0 -35
  266. package/esm2022/datepicker/datepicker-base.mjs +0 -609
  267. package/esm2022/datepicker/datepicker-errors.mjs +0 -14
  268. package/esm2022/datepicker/datepicker-input-base.mjs +0 -311
  269. package/esm2022/datepicker/datepicker-input.mjs +0 -200
  270. package/esm2022/datepicker/datepicker-intl.mjs +0 -69
  271. package/esm2022/datepicker/datepicker-module.mjs +0 -138
  272. package/esm2022/datepicker/datepicker-toggle.mjs +0 -113
  273. package/esm2022/datepicker/datepicker.mjs +0 -38
  274. package/esm2022/datepicker/datepicker_public_index.mjs +0 -5
  275. package/esm2022/datepicker/index.mjs +0 -9
  276. package/esm2022/datepicker/month-view.mjs +0 -460
  277. package/esm2022/datepicker/multi-year-view.mjs +0 -330
  278. package/esm2022/datepicker/public-api.mjs +0 -27
  279. package/esm2022/datepicker/testing/calendar-cell-harness.mjs +0 -138
  280. package/esm2022/datepicker/testing/calendar-harness.mjs +0 -83
  281. package/esm2022/datepicker/testing/date-range-input-harness.mjs +0 -98
  282. package/esm2022/datepicker/testing/datepicker-harness-filters.mjs +0 -9
  283. package/esm2022/datepicker/testing/datepicker-input-harness-base.mjs +0 -81
  284. package/esm2022/datepicker/testing/datepicker-input-harness.mjs +0 -58
  285. package/esm2022/datepicker/testing/datepicker-toggle-harness.mjs +0 -41
  286. package/esm2022/datepicker/testing/datepicker-trigger-harness-base.mjs +0 -65
  287. package/esm2022/datepicker/testing/index.mjs +0 -9
  288. package/esm2022/datepicker/testing/public-api.mjs +0 -14
  289. package/esm2022/datepicker/year-view.mjs +0 -324
  290. package/esm2022/dialog/dialog-animations.mjs +0 -38
  291. package/esm2022/dialog/dialog-config.mjs +0 -59
  292. package/esm2022/dialog/dialog-container.mjs +0 -253
  293. package/esm2022/dialog/dialog-content-directives.mjs +0 -212
  294. package/esm2022/dialog/dialog-ref.mjs +0 -177
  295. package/esm2022/dialog/dialog.mjs +0 -212
  296. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  297. package/esm2022/dialog/index.mjs +0 -9
  298. package/esm2022/dialog/module.mjs +0 -45
  299. package/esm2022/dialog/public-api.mjs +0 -15
  300. package/esm2022/dialog/testing/dialog-harness-filters.mjs +0 -9
  301. package/esm2022/dialog/testing/dialog-harness.mjs +0 -84
  302. package/esm2022/dialog/testing/dialog-opener.mjs +0 -58
  303. package/esm2022/dialog/testing/index.mjs +0 -10
  304. package/esm2022/dialog/testing/public-api.mjs +0 -10
  305. package/esm2022/divider/divider-module.mjs +0 -24
  306. package/esm2022/divider/divider.mjs +0 -48
  307. package/esm2022/divider/divider_public_index.mjs +0 -5
  308. package/esm2022/divider/index.mjs +0 -9
  309. package/esm2022/divider/public-api.mjs +0 -10
  310. package/esm2022/divider/testing/divider-harness-filters.mjs +0 -9
  311. package/esm2022/divider/testing/divider-harness.mjs +0 -22
  312. package/esm2022/divider/testing/index.mjs +0 -9
  313. package/esm2022/divider/testing/public-api.mjs +0 -10
  314. package/esm2022/expansion/accordion-base.mjs +0 -14
  315. package/esm2022/expansion/accordion.mjs +0 -96
  316. package/esm2022/expansion/expansion-animations.mjs +0 -51
  317. package/esm2022/expansion/expansion-module.mjs +0 -65
  318. package/esm2022/expansion/expansion-panel-base.mjs +0 -14
  319. package/esm2022/expansion/expansion-panel-content.mjs +0 -35
  320. package/esm2022/expansion/expansion-panel-header.mjs +0 -218
  321. package/esm2022/expansion/expansion-panel.mjs +0 -211
  322. package/esm2022/expansion/expansion_public_index.mjs +0 -5
  323. package/esm2022/expansion/index.mjs +0 -9
  324. package/esm2022/expansion/public-api.mjs +0 -16
  325. package/esm2022/expansion/testing/accordion-harness.mjs +0 -31
  326. package/esm2022/expansion/testing/expansion-harness-filters.mjs +0 -9
  327. package/esm2022/expansion/testing/expansion-harness.mjs +0 -128
  328. package/esm2022/expansion/testing/index.mjs +0 -9
  329. package/esm2022/expansion/testing/public-api.mjs +0 -11
  330. package/esm2022/form-field/directives/error.mjs +0 -48
  331. package/esm2022/form-field/directives/floating-label.mjs +0 -135
  332. package/esm2022/form-field/directives/hint.mjs +0 -40
  333. package/esm2022/form-field/directives/label.mjs +0 -22
  334. package/esm2022/form-field/directives/line-ripple.mjs +0 -60
  335. package/esm2022/form-field/directives/notched-outline.mjs +0 -66
  336. package/esm2022/form-field/directives/prefix.mjs +0 -38
  337. package/esm2022/form-field/directives/suffix.mjs +0 -38
  338. package/esm2022/form-field/form-field-animations.mjs +0 -24
  339. package/esm2022/form-field/form-field-control.mjs +0 -11
  340. package/esm2022/form-field/form-field-errors.mjs +0 -20
  341. package/esm2022/form-field/form-field.mjs +0 -620
  342. package/esm2022/form-field/form-field_public_index.mjs +0 -5
  343. package/esm2022/form-field/index.mjs +0 -9
  344. package/esm2022/form-field/module.mjs +0 -51
  345. package/esm2022/form-field/public-api.mjs +0 -18
  346. package/esm2022/form-field/testing/control/form-field-control-harness.mjs +0 -15
  347. package/esm2022/form-field/testing/control/index.mjs +0 -9
  348. package/esm2022/form-field/testing/error-harness.mjs +0 -29
  349. package/esm2022/form-field/testing/form-field-harness-filters.mjs +0 -9
  350. package/esm2022/form-field/testing/form-field-harness.mjs +0 -179
  351. package/esm2022/form-field/testing/index.mjs +0 -9
  352. package/esm2022/form-field/testing/public-api.mjs +0 -15
  353. package/esm2022/grid-list/grid-list-base.mjs +0 -14
  354. package/esm2022/grid-list/grid-list-module.mjs +0 -59
  355. package/esm2022/grid-list/grid-list.mjs +0 -146
  356. package/esm2022/grid-list/grid-list_public_index.mjs +0 -5
  357. package/esm2022/grid-list/grid-tile.mjs +0 -128
  358. package/esm2022/grid-list/index.mjs +0 -9
  359. package/esm2022/grid-list/public-api.mjs +0 -14
  360. package/esm2022/grid-list/testing/grid-list-harness-filters.mjs +0 -9
  361. package/esm2022/grid-list/testing/grid-list-harness.mjs +0 -76
  362. package/esm2022/grid-list/testing/grid-tile-harness.mjs +0 -71
  363. package/esm2022/grid-list/testing/index.mjs +0 -9
  364. package/esm2022/grid-list/testing/public-api.mjs +0 -11
  365. package/esm2022/grid-list/tile-coordinator.mjs +0 -145
  366. package/esm2022/grid-list/tile-styler.mjs +0 -231
  367. package/esm2022/icon/fake-svgs.mjs +0 -62
  368. package/esm2022/icon/icon-module.mjs +0 -24
  369. package/esm2022/icon/icon-registry.mjs +0 -593
  370. package/esm2022/icon/icon.mjs +0 -379
  371. package/esm2022/icon/icon_public_index.mjs +0 -5
  372. package/esm2022/icon/index.mjs +0 -9
  373. package/esm2022/icon/public-api.mjs +0 -11
  374. package/esm2022/icon/testing/fake-icon-registry.mjs +0 -92
  375. package/esm2022/icon/testing/icon-harness-filters.mjs +0 -14
  376. package/esm2022/icon/testing/icon-harness.mjs +0 -60
  377. package/esm2022/icon/testing/index.mjs +0 -9
  378. package/esm2022/icon/testing/public-api.mjs +0 -11
  379. package/esm2022/icon/testing/testing_public_index.mjs +0 -5
  380. package/esm2022/icon/trusted-types.mjs +0 -43
  381. package/esm2022/index.mjs +0 -14
  382. package/esm2022/input/index.mjs +0 -9
  383. package/esm2022/input/input-errors.mjs +0 -12
  384. package/esm2022/input/input-value-accessor.mjs +0 -16
  385. package/esm2022/input/input.mjs +0 -490
  386. package/esm2022/input/input_public_index.mjs +0 -5
  387. package/esm2022/input/module.mjs +0 -26
  388. package/esm2022/input/public-api.mjs +0 -14
  389. package/esm2022/input/testing/index.mjs +0 -9
  390. package/esm2022/input/testing/input-harness-filters.mjs +0 -9
  391. package/esm2022/input/testing/input-harness.mjs +0 -113
  392. package/esm2022/input/testing/native-option-harness.mjs +0 -42
  393. package/esm2022/input/testing/native-select-harness-filters.mjs +0 -9
  394. package/esm2022/input/testing/native-select-harness.mjs +0 -79
  395. package/esm2022/input/testing/public-api.mjs +0 -13
  396. package/esm2022/list/action-list.mjs +0 -31
  397. package/esm2022/list/index.mjs +0 -9
  398. package/esm2022/list/list-base.mjs +0 -284
  399. package/esm2022/list/list-item-sections.mjs +0 -144
  400. package/esm2022/list/list-module.mjs +0 -97
  401. package/esm2022/list/list-option-types.mjs +0 -16
  402. package/esm2022/list/list-option.mjs +0 -295
  403. package/esm2022/list/list.mjs +0 -103
  404. package/esm2022/list/list_public_index.mjs +0 -5
  405. package/esm2022/list/nav-list.mjs +0 -37
  406. package/esm2022/list/public-api.mjs +0 -18
  407. package/esm2022/list/selection-list.mjs +0 -391
  408. package/esm2022/list/subheader.mjs +0 -28
  409. package/esm2022/list/testing/action-list-harness.mjs +0 -59
  410. package/esm2022/list/testing/index.mjs +0 -9
  411. package/esm2022/list/testing/list-harness-base.mjs +0 -95
  412. package/esm2022/list/testing/list-harness-filters.mjs +0 -9
  413. package/esm2022/list/testing/list-harness.mjs +0 -41
  414. package/esm2022/list/testing/list-item-harness-base.mjs +0 -162
  415. package/esm2022/list/testing/nav-list-harness.mjs +0 -69
  416. package/esm2022/list/testing/public-api.mjs +0 -14
  417. package/esm2022/list/testing/selection-list-harness.mjs +0 -122
  418. package/esm2022/list/tokens.mjs +0 -11
  419. package/esm2022/menu/index.mjs +0 -9
  420. package/esm2022/menu/menu-animations.mjs +0 -61
  421. package/esm2022/menu/menu-content.mjs +0 -87
  422. package/esm2022/menu/menu-errors.mjs +0 -35
  423. package/esm2022/menu/menu-item.mjs +0 -148
  424. package/esm2022/menu/menu-panel.mjs +0 -14
  425. package/esm2022/menu/menu-positions.mjs +0 -9
  426. package/esm2022/menu/menu-trigger.mjs +0 -542
  427. package/esm2022/menu/menu.mjs +0 -405
  428. package/esm2022/menu/menu_public_index.mjs +0 -5
  429. package/esm2022/menu/module.mjs +0 -63
  430. package/esm2022/menu/public-api.mjs +0 -16
  431. package/esm2022/menu/testing/index.mjs +0 -9
  432. package/esm2022/menu/testing/menu-harness-filters.mjs +0 -9
  433. package/esm2022/menu/testing/menu-harness.mjs +0 -166
  434. package/esm2022/menu/testing/public-api.mjs +0 -10
  435. package/esm2022/paginator/index.mjs +0 -9
  436. package/esm2022/paginator/module.mjs +0 -28
  437. package/esm2022/paginator/paginator-intl.mjs +0 -62
  438. package/esm2022/paginator/paginator.mjs +0 -266
  439. package/esm2022/paginator/paginator_public_index.mjs +0 -5
  440. package/esm2022/paginator/public-api.mjs +0 -11
  441. package/esm2022/paginator/testing/index.mjs +0 -9
  442. package/esm2022/paginator/testing/paginator-harness-filters.mjs +0 -9
  443. package/esm2022/paginator/testing/paginator-harness.mjs +0 -98
  444. package/esm2022/paginator/testing/public-api.mjs +0 -10
  445. package/esm2022/progress-bar/index.mjs +0 -9
  446. package/esm2022/progress-bar/module.mjs +0 -24
  447. package/esm2022/progress-bar/progress-bar.mjs +0 -181
  448. package/esm2022/progress-bar/progress-bar_public_index.mjs +0 -5
  449. package/esm2022/progress-bar/public-api.mjs +0 -10
  450. package/esm2022/progress-bar/testing/index.mjs +0 -9
  451. package/esm2022/progress-bar/testing/progress-bar-harness-filters.mjs +0 -9
  452. package/esm2022/progress-bar/testing/progress-bar-harness.mjs +0 -33
  453. package/esm2022/progress-bar/testing/public-api.mjs +0 -10
  454. package/esm2022/progress-bar/testing/testing_public_index.mjs +0 -5
  455. package/esm2022/progress-spinner/index.mjs +0 -9
  456. package/esm2022/progress-spinner/module.mjs +0 -25
  457. package/esm2022/progress-spinner/progress-spinner.mjs +0 -166
  458. package/esm2022/progress-spinner/progress-spinner_public_index.mjs +0 -5
  459. package/esm2022/progress-spinner/public-api.mjs +0 -10
  460. package/esm2022/progress-spinner/testing/index.mjs +0 -9
  461. package/esm2022/progress-spinner/testing/progress-spinner-harness-filters.mjs +0 -9
  462. package/esm2022/progress-spinner/testing/progress-spinner-harness.mjs +0 -35
  463. package/esm2022/progress-spinner/testing/public-api.mjs +0 -10
  464. package/esm2022/progress-spinner/testing/testing_public_index.mjs +0 -5
  465. package/esm2022/radio/index.mjs +0 -9
  466. package/esm2022/radio/module.mjs +0 -25
  467. package/esm2022/radio/public-api.mjs +0 -10
  468. package/esm2022/radio/radio.mjs +0 -680
  469. package/esm2022/radio/radio_public_index.mjs +0 -5
  470. package/esm2022/radio/testing/index.mjs +0 -9
  471. package/esm2022/radio/testing/public-api.mjs +0 -10
  472. package/esm2022/radio/testing/radio-harness-filters.mjs +0 -9
  473. package/esm2022/radio/testing/radio-harness.mjs +0 -228
  474. package/esm2022/select/index.mjs +0 -9
  475. package/esm2022/select/module.mjs +0 -59
  476. package/esm2022/select/public-api.mjs +0 -15
  477. package/esm2022/select/select-animations.mjs +0 -38
  478. package/esm2022/select/select-errors.mjs +0 -35
  479. package/esm2022/select/select.mjs +0 -1160
  480. package/esm2022/select/select_public_index.mjs +0 -5
  481. package/esm2022/select/testing/index.mjs +0 -9
  482. package/esm2022/select/testing/public-api.mjs +0 -10
  483. package/esm2022/select/testing/select-harness-filters.mjs +0 -9
  484. package/esm2022/select/testing/select-harness.mjs +0 -129
  485. package/esm2022/sidenav/drawer-animations.mjs +0 -33
  486. package/esm2022/sidenav/drawer.mjs +0 -863
  487. package/esm2022/sidenav/index.mjs +0 -9
  488. package/esm2022/sidenav/public-api.mjs +0 -12
  489. package/esm2022/sidenav/sidenav-module.mjs +0 -60
  490. package/esm2022/sidenav/sidenav.mjs +0 -148
  491. package/esm2022/sidenav/sidenav_public_index.mjs +0 -5
  492. package/esm2022/sidenav/testing/drawer-container-harness.mjs +0 -36
  493. package/esm2022/sidenav/testing/drawer-content-harness.mjs +0 -23
  494. package/esm2022/sidenav/testing/drawer-harness-filters.mjs +0 -9
  495. package/esm2022/sidenav/testing/drawer-harness.mjs +0 -49
  496. package/esm2022/sidenav/testing/index.mjs +0 -9
  497. package/esm2022/sidenav/testing/public-api.mjs +0 -15
  498. package/esm2022/sidenav/testing/sidenav-container-harness.mjs +0 -36
  499. package/esm2022/sidenav/testing/sidenav-content-harness.mjs +0 -23
  500. package/esm2022/sidenav/testing/sidenav-harness.mjs +0 -28
  501. package/esm2022/slide-toggle/index.mjs +0 -9
  502. package/esm2022/slide-toggle/module.mjs +0 -41
  503. package/esm2022/slide-toggle/public-api.mjs +0 -12
  504. package/esm2022/slide-toggle/slide-toggle-config.mjs +0 -14
  505. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +0 -44
  506. package/esm2022/slide-toggle/slide-toggle.mjs +0 -273
  507. package/esm2022/slide-toggle/slide-toggle_public_index.mjs +0 -5
  508. package/esm2022/slide-toggle/testing/index.mjs +0 -9
  509. package/esm2022/slide-toggle/testing/public-api.mjs +0 -10
  510. package/esm2022/slide-toggle/testing/slide-toggle-harness-filters.mjs +0 -9
  511. package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +0 -110
  512. package/esm2022/slider/index.mjs +0 -9
  513. package/esm2022/slider/module.mjs +0 -39
  514. package/esm2022/slider/public-api.mjs +0 -13
  515. package/esm2022/slider/slider-input.mjs +0 -701
  516. package/esm2022/slider/slider-interface.mjs +0 -56
  517. package/esm2022/slider/slider-thumb.mjs +0 -231
  518. package/esm2022/slider/slider.mjs +0 -746
  519. package/esm2022/slider/slider_public_index.mjs +0 -5
  520. package/esm2022/slider/testing/index.mjs +0 -9
  521. package/esm2022/slider/testing/public-api.mjs +0 -11
  522. package/esm2022/slider/testing/slider-harness-filters.mjs +0 -7
  523. package/esm2022/slider/testing/slider-harness.mjs +0 -67
  524. package/esm2022/slider/testing/slider-thumb-harness.mjs +0 -95
  525. package/esm2022/snack-bar/index.mjs +0 -9
  526. package/esm2022/snack-bar/module.mjs +0 -47
  527. package/esm2022/snack-bar/public-api.mjs +0 -16
  528. package/esm2022/snack-bar/simple-snack-bar.mjs +0 -40
  529. package/esm2022/snack-bar/snack-bar-animations.mjs +0 -30
  530. package/esm2022/snack-bar/snack-bar-config.mjs +0 -33
  531. package/esm2022/snack-bar/snack-bar-container.mjs +0 -277
  532. package/esm2022/snack-bar/snack-bar-content.mjs +0 -55
  533. package/esm2022/snack-bar/snack-bar-ref.mjs +0 -89
  534. package/esm2022/snack-bar/snack-bar.mjs +0 -267
  535. package/esm2022/snack-bar/snack-bar_public_index.mjs +0 -5
  536. package/esm2022/snack-bar/testing/index.mjs +0 -9
  537. package/esm2022/snack-bar/testing/public-api.mjs +0 -10
  538. package/esm2022/snack-bar/testing/snack-bar-harness-filters.mjs +0 -9
  539. package/esm2022/snack-bar/testing/snack-bar-harness.mjs +0 -101
  540. package/esm2022/sort/index.mjs +0 -9
  541. package/esm2022/sort/public-api.mjs +0 -14
  542. package/esm2022/sort/sort-animations.mjs +0 -69
  543. package/esm2022/sort/sort-direction.mjs +0 -9
  544. package/esm2022/sort/sort-errors.mjs +0 -24
  545. package/esm2022/sort/sort-header-intl.mjs +0 -41
  546. package/esm2022/sort/sort-header.mjs +0 -317
  547. package/esm2022/sort/sort-module.mjs +0 -27
  548. package/esm2022/sort/sort.mjs +0 -155
  549. package/esm2022/sort/sort_public_index.mjs +0 -5
  550. package/esm2022/sort/testing/index.mjs +0 -9
  551. package/esm2022/sort/testing/public-api.mjs +0 -11
  552. package/esm2022/sort/testing/sort-harness-filters.mjs +0 -2
  553. package/esm2022/sort/testing/sort-harness.mjs +0 -36
  554. package/esm2022/sort/testing/sort-header-harness.mjs +0 -56
  555. package/esm2022/stepper/index.mjs +0 -9
  556. package/esm2022/stepper/public-api.mjs +0 -17
  557. package/esm2022/stepper/step-content.mjs +0 -27
  558. package/esm2022/stepper/step-header.mjs +0 -105
  559. package/esm2022/stepper/step-label.mjs +0 -22
  560. package/esm2022/stepper/stepper-animations.mjs +0 -47
  561. package/esm2022/stepper/stepper-button.mjs +0 -43
  562. package/esm2022/stepper/stepper-icon.mjs +0 -30
  563. package/esm2022/stepper/stepper-intl.mjs +0 -43
  564. package/esm2022/stepper/stepper-module.mjs +0 -88
  565. package/esm2022/stepper/stepper.mjs +0 -205
  566. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  567. package/esm2022/stepper/testing/index.mjs +0 -9
  568. package/esm2022/stepper/testing/public-api.mjs +0 -12
  569. package/esm2022/stepper/testing/step-harness-filters.mjs +0 -7
  570. package/esm2022/stepper/testing/step-harness.mjs +0 -90
  571. package/esm2022/stepper/testing/stepper-button-harnesses.mjs +0 -48
  572. package/esm2022/stepper/testing/stepper-harness.mjs +0 -51
  573. package/esm2022/table/cell.mjs +0 -147
  574. package/esm2022/table/index.mjs +0 -9
  575. package/esm2022/table/module.mjs +0 -93
  576. package/esm2022/table/public-api.mjs +0 -14
  577. package/esm2022/table/row.mjs +0 -163
  578. package/esm2022/table/table-data-source.mjs +0 -317
  579. package/esm2022/table/table.mjs +0 -122
  580. package/esm2022/table/table_public_index.mjs +0 -5
  581. package/esm2022/table/testing/cell-harness.mjs +0 -77
  582. package/esm2022/table/testing/index.mjs +0 -9
  583. package/esm2022/table/testing/public-api.mjs +0 -12
  584. package/esm2022/table/testing/row-harness.mjs +0 -84
  585. package/esm2022/table/testing/table-harness-filters.mjs +0 -2
  586. package/esm2022/table/testing/table-harness.mjs +0 -86
  587. package/esm2022/table/text-column.mjs +0 -60
  588. package/esm2022/tabs/index.mjs +0 -9
  589. package/esm2022/tabs/ink-bar.mjs +0 -149
  590. package/esm2022/tabs/module.mjs +0 -60
  591. package/esm2022/tabs/paginated-tab-header.mjs +0 -539
  592. package/esm2022/tabs/public-api.mjs +0 -21
  593. package/esm2022/tabs/tab-body.mjs +0 -199
  594. package/esm2022/tabs/tab-config.mjs +0 -11
  595. package/esm2022/tabs/tab-content.mjs +0 -32
  596. package/esm2022/tabs/tab-group.mjs +0 -469
  597. package/esm2022/tabs/tab-header.mjs +0 -86
  598. package/esm2022/tabs/tab-label-wrapper.mjs +0 -49
  599. package/esm2022/tabs/tab-label.mjs +0 -44
  600. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -388
  601. package/esm2022/tabs/tab.mjs +0 -128
  602. package/esm2022/tabs/tabs-animations.mjs +0 -45
  603. package/esm2022/tabs/tabs_public_index.mjs +0 -5
  604. package/esm2022/tabs/testing/index.mjs +0 -9
  605. package/esm2022/tabs/testing/public-api.mjs +0 -13
  606. package/esm2022/tabs/testing/tab-group-harness.mjs +0 -56
  607. package/esm2022/tabs/testing/tab-harness-filters.mjs +0 -2
  608. package/esm2022/tabs/testing/tab-harness.mjs +0 -66
  609. package/esm2022/tabs/testing/tab-link-harness.mjs +0 -40
  610. package/esm2022/tabs/testing/tab-nav-bar-harness.mjs +0 -66
  611. package/esm2022/tabs/testing/tab-nav-panel-harness.mjs +0 -27
  612. package/esm2022/toolbar/index.mjs +0 -9
  613. package/esm2022/toolbar/public-api.mjs +0 -10
  614. package/esm2022/toolbar/testing/index.mjs +0 -9
  615. package/esm2022/toolbar/testing/public-api.mjs +0 -10
  616. package/esm2022/toolbar/testing/toolbar-harness-filters.mjs +0 -9
  617. package/esm2022/toolbar/testing/toolbar-harness.mjs +0 -44
  618. package/esm2022/toolbar/toolbar-module.mjs +0 -24
  619. package/esm2022/toolbar/toolbar.mjs +0 -84
  620. package/esm2022/toolbar/toolbar_public_index.mjs +0 -5
  621. package/esm2022/tooltip/index.mjs +0 -9
  622. package/esm2022/tooltip/module.mjs +0 -29
  623. package/esm2022/tooltip/public-api.mjs +0 -11
  624. package/esm2022/tooltip/testing/index.mjs +0 -9
  625. package/esm2022/tooltip/testing/public-api.mjs +0 -10
  626. package/esm2022/tooltip/testing/tooltip-harness-filters.mjs +0 -9
  627. package/esm2022/tooltip/testing/tooltip-harness.mjs +0 -66
  628. package/esm2022/tooltip/tooltip-animations.mjs +0 -24
  629. package/esm2022/tooltip/tooltip.mjs +0 -920
  630. package/esm2022/tooltip/tooltip_public_index.mjs +0 -5
  631. package/esm2022/tree/data-source/flat-data-source.mjs +0 -156
  632. package/esm2022/tree/data-source/nested-data-source.mjs +0 -38
  633. package/esm2022/tree/index.mjs +0 -9
  634. package/esm2022/tree/node.mjs +0 -220
  635. package/esm2022/tree/outlet.mjs +0 -46
  636. package/esm2022/tree/padding.mjs +0 -46
  637. package/esm2022/tree/public-api.mjs +0 -16
  638. package/esm2022/tree/testing/index.mjs +0 -9
  639. package/esm2022/tree/testing/node-harness.mjs +0 -73
  640. package/esm2022/tree/testing/public-api.mjs +0 -11
  641. package/esm2022/tree/testing/tree-harness-filters.mjs +0 -9
  642. package/esm2022/tree/testing/tree-harness.mjs +0 -123
  643. package/esm2022/tree/toggle.mjs +0 -27
  644. package/esm2022/tree/tree-module.mjs +0 -50
  645. package/esm2022/tree/tree.mjs +0 -34
  646. package/esm2022/tree/tree_public_index.mjs +0 -5
@@ -1,405 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgZone, Output, TemplateRef, QueryList, ViewChild, ViewEncapsulation, ChangeDetectorRef, booleanAttribute, afterNextRender, inject, Injector, } from '@angular/core';
9
- import { FocusKeyManager } from '@angular/cdk/a11y';
10
- import { ESCAPE, LEFT_ARROW, RIGHT_ARROW, DOWN_ARROW, UP_ARROW, hasModifierKey, } from '@angular/cdk/keycodes';
11
- import { merge, Subject } from 'rxjs';
12
- import { startWith, switchMap } from 'rxjs/operators';
13
- import { MatMenuItem } from './menu-item';
14
- import { MAT_MENU_PANEL } from './menu-panel';
15
- import { throwMatMenuInvalidPositionX, throwMatMenuInvalidPositionY } from './menu-errors';
16
- import { MatMenuContent, MAT_MENU_CONTENT } from './menu-content';
17
- import { matMenuAnimations } from './menu-animations';
18
- import * as i0 from "@angular/core";
19
- let menuPanelUid = 0;
20
- /** Injection token to be used to override the default options for `mat-menu`. */
21
- export const MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {
22
- providedIn: 'root',
23
- factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY,
24
- });
25
- /** @docs-private */
26
- export function MAT_MENU_DEFAULT_OPTIONS_FACTORY() {
27
- return {
28
- overlapTrigger: false,
29
- xPosition: 'after',
30
- yPosition: 'below',
31
- backdropClass: 'cdk-overlay-transparent-backdrop',
32
- };
33
- }
34
- export class MatMenu {
35
- /** Position of the menu in the X axis. */
36
- get xPosition() {
37
- return this._xPosition;
38
- }
39
- set xPosition(value) {
40
- if (value !== 'before' &&
41
- value !== 'after' &&
42
- (typeof ngDevMode === 'undefined' || ngDevMode)) {
43
- throwMatMenuInvalidPositionX();
44
- }
45
- this._xPosition = value;
46
- this.setPositionClasses();
47
- }
48
- /** Position of the menu in the Y axis. */
49
- get yPosition() {
50
- return this._yPosition;
51
- }
52
- set yPosition(value) {
53
- if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {
54
- throwMatMenuInvalidPositionY();
55
- }
56
- this._yPosition = value;
57
- this.setPositionClasses();
58
- }
59
- /**
60
- * This method takes classes set on the host mat-menu element and applies them on the
61
- * menu template that displays in the overlay container. Otherwise, it's difficult
62
- * to style the containing menu from outside the component.
63
- * @param classes list of class names
64
- */
65
- set panelClass(classes) {
66
- const previousPanelClass = this._previousPanelClass;
67
- const newClassList = { ...this._classList };
68
- if (previousPanelClass && previousPanelClass.length) {
69
- previousPanelClass.split(' ').forEach((className) => {
70
- newClassList[className] = false;
71
- });
72
- }
73
- this._previousPanelClass = classes;
74
- if (classes && classes.length) {
75
- classes.split(' ').forEach((className) => {
76
- newClassList[className] = true;
77
- });
78
- this._elementRef.nativeElement.className = '';
79
- }
80
- this._classList = newClassList;
81
- }
82
- /**
83
- * This method takes classes set on the host mat-menu element and applies them on the
84
- * menu template that displays in the overlay container. Otherwise, it's difficult
85
- * to style the containing menu from outside the component.
86
- * @deprecated Use `panelClass` instead.
87
- * @breaking-change 8.0.0
88
- */
89
- get classList() {
90
- return this.panelClass;
91
- }
92
- set classList(classes) {
93
- this.panelClass = classes;
94
- }
95
- constructor(_elementRef,
96
- /**
97
- * @deprecated Unused param, will be removed.
98
- * @breaking-change 19.0.0
99
- */
100
- _unusedNgZone, defaultOptions,
101
- // @breaking-change 15.0.0 `_changeDetectorRef` to become a required parameter.
102
- _changeDetectorRef) {
103
- this._elementRef = _elementRef;
104
- this._changeDetectorRef = _changeDetectorRef;
105
- this._elevationPrefix = 'mat-elevation-z';
106
- this._baseElevation = null;
107
- /** Only the direct descendant menu items. */
108
- this._directDescendantItems = new QueryList();
109
- /** Classes to be applied to the menu panel. */
110
- this._classList = {};
111
- /** Current state of the panel animation. */
112
- this._panelAnimationState = 'void';
113
- /** Emits whenever an animation on the menu completes. */
114
- this._animationDone = new Subject();
115
- /** Event emitted when the menu is closed. */
116
- this.closed = new EventEmitter();
117
- /**
118
- * Event emitted when the menu is closed.
119
- * @deprecated Switch to `closed` instead
120
- * @breaking-change 8.0.0
121
- */
122
- this.close = this.closed;
123
- this.panelId = `mat-menu-panel-${menuPanelUid++}`;
124
- this._injector = inject(Injector);
125
- this.overlayPanelClass = defaultOptions.overlayPanelClass || '';
126
- this._xPosition = defaultOptions.xPosition;
127
- this._yPosition = defaultOptions.yPosition;
128
- this.backdropClass = defaultOptions.backdropClass;
129
- this.overlapTrigger = defaultOptions.overlapTrigger;
130
- this.hasBackdrop = defaultOptions.hasBackdrop;
131
- }
132
- ngOnInit() {
133
- this.setPositionClasses();
134
- }
135
- ngAfterContentInit() {
136
- this._updateDirectDescendants();
137
- this._keyManager = new FocusKeyManager(this._directDescendantItems)
138
- .withWrap()
139
- .withTypeAhead()
140
- .withHomeAndEnd();
141
- this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));
142
- // If a user manually (programmatically) focuses a menu item, we need to reflect that focus
143
- // change back to the key manager. Note that we don't need to unsubscribe here because _focused
144
- // is internal and we know that it gets completed on destroy.
145
- this._directDescendantItems.changes
146
- .pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused))))
147
- .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));
148
- this._directDescendantItems.changes.subscribe((itemsList) => {
149
- // Move focus to another item, if the active item is removed from the list.
150
- // We need to debounce the callback, because multiple items might be removed
151
- // in quick succession.
152
- const manager = this._keyManager;
153
- if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {
154
- const items = itemsList.toArray();
155
- const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));
156
- if (items[index] && !items[index].disabled) {
157
- manager.setActiveItem(index);
158
- }
159
- else {
160
- manager.setNextItemActive();
161
- }
162
- }
163
- });
164
- }
165
- ngOnDestroy() {
166
- this._keyManager?.destroy();
167
- this._directDescendantItems.destroy();
168
- this.closed.complete();
169
- this._firstItemFocusRef?.destroy();
170
- }
171
- /** Stream that emits whenever the hovered menu item changes. */
172
- _hovered() {
173
- // Coerce the `changes` property because Angular types it as `Observable<any>`
174
- const itemChanges = this._directDescendantItems.changes;
175
- return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._hovered))));
176
- }
177
- /*
178
- * Registers a menu item with the menu.
179
- * @docs-private
180
- * @deprecated No longer being used. To be removed.
181
- * @breaking-change 9.0.0
182
- */
183
- addItem(_item) { }
184
- /**
185
- * Removes an item from the menu.
186
- * @docs-private
187
- * @deprecated No longer being used. To be removed.
188
- * @breaking-change 9.0.0
189
- */
190
- removeItem(_item) { }
191
- /** Handle a keyboard event from the menu, delegating to the appropriate action. */
192
- _handleKeydown(event) {
193
- const keyCode = event.keyCode;
194
- const manager = this._keyManager;
195
- switch (keyCode) {
196
- case ESCAPE:
197
- if (!hasModifierKey(event)) {
198
- event.preventDefault();
199
- this.closed.emit('keydown');
200
- }
201
- break;
202
- case LEFT_ARROW:
203
- if (this.parentMenu && this.direction === 'ltr') {
204
- this.closed.emit('keydown');
205
- }
206
- break;
207
- case RIGHT_ARROW:
208
- if (this.parentMenu && this.direction === 'rtl') {
209
- this.closed.emit('keydown');
210
- }
211
- break;
212
- default:
213
- if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {
214
- manager.setFocusOrigin('keyboard');
215
- }
216
- manager.onKeydown(event);
217
- return;
218
- }
219
- // Don't allow the event to propagate if we've already handled it, or it may
220
- // end up reaching other overlays that were opened earlier (see #22694).
221
- event.stopPropagation();
222
- }
223
- /**
224
- * Focus the first item in the menu.
225
- * @param origin Action from which the focus originated. Used to set the correct styling.
226
- */
227
- focusFirstItem(origin = 'program') {
228
- // Wait for `afterNextRender` to ensure iOS VoiceOver screen reader focuses the first item (#24735).
229
- this._firstItemFocusRef?.destroy();
230
- this._firstItemFocusRef = afterNextRender(() => {
231
- let menuPanel = null;
232
- if (this._directDescendantItems.length) {
233
- // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't
234
- // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either
235
- // because the panel is inside an `ng-template`. We work around it by starting from one of
236
- // the items and walking up the DOM.
237
- menuPanel = this._directDescendantItems.first._getHostElement().closest('[role="menu"]');
238
- }
239
- // If an item in the menuPanel is already focused, avoid overriding the focus.
240
- if (!menuPanel || !menuPanel.contains(document.activeElement)) {
241
- const manager = this._keyManager;
242
- manager.setFocusOrigin(origin).setFirstItemActive();
243
- // If there's no active item at this point, it means that all the items are disabled.
244
- // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will
245
- // give _some_ feedback to screen readers.
246
- if (!manager.activeItem && menuPanel) {
247
- menuPanel.focus();
248
- }
249
- }
250
- }, { injector: this._injector });
251
- }
252
- /**
253
- * Resets the active item in the menu. This is used when the menu is opened, allowing
254
- * the user to start from the first option when pressing the down arrow.
255
- */
256
- resetActiveItem() {
257
- this._keyManager.setActiveItem(-1);
258
- }
259
- /**
260
- * Sets the menu panel elevation.
261
- * @param depth Number of parent menus that come before the menu.
262
- */
263
- setElevation(depth) {
264
- // The base elevation depends on which version of the spec
265
- // we're running so we have to resolve it at runtime.
266
- if (this._baseElevation === null) {
267
- const styles = typeof getComputedStyle === 'function'
268
- ? getComputedStyle(this._elementRef.nativeElement)
269
- : null;
270
- const value = styles?.getPropertyValue('--mat-menu-base-elevation-level') || '8';
271
- this._baseElevation = parseInt(value);
272
- }
273
- // The elevation starts at the base and increases by one for each level.
274
- // Capped at 24 because that's the maximum elevation defined in the Material design spec.
275
- const elevation = Math.min(this._baseElevation + depth, 24);
276
- const newElevation = `${this._elevationPrefix}${elevation}`;
277
- const customElevation = Object.keys(this._classList).find(className => {
278
- return className.startsWith(this._elevationPrefix);
279
- });
280
- if (!customElevation || customElevation === this._previousElevation) {
281
- const newClassList = { ...this._classList };
282
- if (this._previousElevation) {
283
- newClassList[this._previousElevation] = false;
284
- }
285
- newClassList[newElevation] = true;
286
- this._previousElevation = newElevation;
287
- this._classList = newClassList;
288
- }
289
- }
290
- /**
291
- * Adds classes to the menu panel based on its position. Can be used by
292
- * consumers to add specific styling based on the position.
293
- * @param posX Position of the menu along the x axis.
294
- * @param posY Position of the menu along the y axis.
295
- * @docs-private
296
- */
297
- setPositionClasses(posX = this.xPosition, posY = this.yPosition) {
298
- this._classList = {
299
- ...this._classList,
300
- ['mat-menu-before']: posX === 'before',
301
- ['mat-menu-after']: posX === 'after',
302
- ['mat-menu-above']: posY === 'above',
303
- ['mat-menu-below']: posY === 'below',
304
- };
305
- // @breaking-change 15.0.0 Remove null check for `_changeDetectorRef`.
306
- this._changeDetectorRef?.markForCheck();
307
- }
308
- /** Starts the enter animation. */
309
- _startAnimation() {
310
- // @breaking-change 8.0.0 Combine with _resetAnimation.
311
- this._panelAnimationState = 'enter';
312
- }
313
- /** Resets the panel animation to its initial state. */
314
- _resetAnimation() {
315
- // @breaking-change 8.0.0 Combine with _startAnimation.
316
- this._panelAnimationState = 'void';
317
- }
318
- /** Callback that is invoked when the panel animation completes. */
319
- _onAnimationDone(event) {
320
- this._animationDone.next(event);
321
- this._isAnimating = false;
322
- }
323
- _onAnimationStart(event) {
324
- this._isAnimating = true;
325
- // Scroll the content element to the top as soon as the animation starts. This is necessary,
326
- // because we move focus to the first item while it's still being animated, which can throw
327
- // the browser off when it determines the scroll position. Alternatively we can move focus
328
- // when the animation is done, however moving focus asynchronously will interrupt screen
329
- // readers which are in the process of reading out the menu already. We take the `element`
330
- // from the `event` since we can't use a `ViewChild` to access the pane.
331
- if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {
332
- event.element.scrollTop = 0;
333
- }
334
- }
335
- /**
336
- * Sets up a stream that will keep track of any newly-added menu items and will update the list
337
- * of direct descendants. We collect the descendants this way, because `_allItems` can include
338
- * items that are part of child menus, and using a custom way of registering items is unreliable
339
- * when it comes to maintaining the item order.
340
- */
341
- _updateDirectDescendants() {
342
- this._allItems.changes
343
- .pipe(startWith(this._allItems))
344
- .subscribe((items) => {
345
- this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));
346
- this._directDescendantItems.notifyOnChanges();
347
- });
348
- }
349
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
350
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0-next.2", type: MatMenu, isStandalone: true, selector: "mat-menu", inputs: { backdropClass: "backdropClass", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], xPosition: "xPosition", yPosition: "yPosition", overlapTrigger: ["overlapTrigger", "overlapTrigger", booleanAttribute], hasBackdrop: ["hasBackdrop", "hasBackdrop", (value) => (value == null ? null : booleanAttribute(value))], panelClass: ["class", "panelClass"], classList: "classList" }, outputs: { closed: "closed", close: "close" }, host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], queries: [{ propertyName: "lazyContent", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: "_allItems", predicate: MatMenuItem, descendants: true }, { propertyName: "items", predicate: MatMenuItem }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["matMenu"], ngImport: i0, template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel mat-mdc-elevation-specific\"\n [id]=\"panelId\"\n [class]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-app-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-app-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape, var(--mat-app-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-app-surface-container));will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.mat-mdc-menu-panel.ng-animating:has(.mat-mdc-menu-content:empty){display:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-app-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}[dir=rtl] .mat-mdc-menu-item{padding-right:var(--mat-menu-item-leading-spacing);padding-left:var(--mat-menu-item-trailing-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-right:var(--mat-menu-item-with-icon-leading-spacing);padding-left:var(--mat-menu-item-with-icon-trailing-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}"], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
351
- }
352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatMenu, decorators: [{
353
- type: Component,
354
- args: [{ selector: 'mat-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {
355
- '[attr.aria-label]': 'null',
356
- '[attr.aria-labelledby]': 'null',
357
- '[attr.aria-describedby]': 'null',
358
- }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], standalone: true, template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel mat-mdc-elevation-specific\"\n [id]=\"panelId\"\n [class]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-app-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-app-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape, var(--mat-app-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-app-surface-container));will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.mat-mdc-menu-panel.ng-animating:has(.mat-mdc-menu-content:empty){display:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-app-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}[dir=rtl] .mat-mdc-menu-item{padding-right:var(--mat-menu-item-leading-spacing);padding-left:var(--mat-menu-item-trailing-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-right:var(--mat-menu-item-with-icon-leading-spacing);padding-left:var(--mat-menu-item-with-icon-trailing-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}"] }]
359
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
360
- type: Inject,
361
- args: [MAT_MENU_DEFAULT_OPTIONS]
362
- }] }, { type: i0.ChangeDetectorRef }], propDecorators: { _allItems: [{
363
- type: ContentChildren,
364
- args: [MatMenuItem, { descendants: true }]
365
- }], backdropClass: [{
366
- type: Input
367
- }], ariaLabel: [{
368
- type: Input,
369
- args: ['aria-label']
370
- }], ariaLabelledby: [{
371
- type: Input,
372
- args: ['aria-labelledby']
373
- }], ariaDescribedby: [{
374
- type: Input,
375
- args: ['aria-describedby']
376
- }], xPosition: [{
377
- type: Input
378
- }], yPosition: [{
379
- type: Input
380
- }], templateRef: [{
381
- type: ViewChild,
382
- args: [TemplateRef]
383
- }], items: [{
384
- type: ContentChildren,
385
- args: [MatMenuItem, { descendants: false }]
386
- }], lazyContent: [{
387
- type: ContentChild,
388
- args: [MAT_MENU_CONTENT]
389
- }], overlapTrigger: [{
390
- type: Input,
391
- args: [{ transform: booleanAttribute }]
392
- }], hasBackdrop: [{
393
- type: Input,
394
- args: [{ transform: (value) => (value == null ? null : booleanAttribute(value)) }]
395
- }], panelClass: [{
396
- type: Input,
397
- args: ['class']
398
- }], classList: [{
399
- type: Input
400
- }], closed: [{
401
- type: Output
402
- }], close: [{
403
- type: Output
404
- }] } });
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9tZW51L21lbnUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbWVudS9tZW51Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUVmLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBRS9ELE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBQyxLQUFLLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQWUsY0FBYyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTFELE9BQU8sRUFBQyw0QkFBNEIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJB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Q0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUM7Z0JBVWhGLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQWlDVixTQUFTO3NCQURaLEtBQUs7Z0JBU2EsTUFBTTtzQkFBeEIsTUFBTTtnQkFPWSxLQUFLO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBPbkluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIEFmdGVyUmVuZGVyUmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QW5pbWF0aW9uRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtGb2N1c0tleU1hbmFnZXIsIEZvY3VzT3JpZ2lufSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0RpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtcbiAgRVNDQVBFLFxuICBMRUZUX0FSUk9XLFxuICBSSUdIVF9BUlJPVyxcbiAgRE9XTl9BUlJPVyxcbiAgVVBfQVJST1csXG4gIGhhc01vZGlmaWVyS2V5LFxufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHttZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01hdE1lbnVJdGVtfSBmcm9tICcuL21lbnUtaXRlbSc7XG5pbXBvcnQge01hdE1lbnVQYW5lbCwgTUFUX01FTlVfUEFORUx9IGZyb20gJy4vbWVudS1wYW5lbCc7XG5pbXBvcnQge01lbnVQb3NpdGlvblgsIE1lbnVQb3NpdGlvbll9IGZyb20gJy4vbWVudS1wb3NpdGlvbnMnO1xuaW1wb3J0IHt0aHJvd01hdE1lbnVJbnZhbGlkUG9zaXRpb25YLCB0aHJvd01hdE1lbnVJbnZhbGlkUG9zaXRpb25ZfSBmcm9tICcuL21lbnUtZXJyb3JzJztcbmltcG9ydCB7TWF0TWVudUNvbnRlbnQsIE1BVF9NRU5VX0NPTlRFTlR9IGZyb20gJy4vbWVudS1jb250ZW50JztcbmltcG9ydCB7bWF0TWVudUFuaW1hdGlvbnN9IGZyb20gJy4vbWVudS1hbmltYXRpb25zJztcblxubGV0IG1lbnVQYW5lbFVpZCA9IDA7XG5cbi8qKiBSZWFzb24gd2h5IHRoZSBtZW51IHdhcyBjbG9zZWQuICovXG5leHBvcnQgdHlwZSBNZW51Q2xvc2VSZWFzb24gPSB2b2lkIHwgJ2NsaWNrJyB8ICdrZXlkb3duJyB8ICd0YWInO1xuXG4vKiogRGVmYXVsdCBgbWF0LW1lbnVgIG9wdGlvbnMgdGhhdCBjYW4gYmUgb3ZlcnJpZGRlbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0TWVudURlZmF1bHRPcHRpb25zIHtcbiAgLyoqIFRoZSB4LWF4aXMgcG9zaXRpb24gb2YgdGhlIG1lbnUuICovXG4gIHhQb3NpdGlvbjogTWVudVBvc2l0aW9uWDtcblxuICAvKiogVGhlIHktYXhpcyBwb3NpdGlvbiBvZiB0aGUgbWVudS4gKi9cbiAgeVBvc2l0aW9uOiBNZW51UG9zaXRpb25ZO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IHNob3VsZCBvdmVybGFwIHRoZSBtZW51IHRyaWdnZXIuICovXG4gIG92ZXJsYXBUcmlnZ2VyOiBib29sZWFuO1xuXG4gIC8qKiBDbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtZW51J3MgYmFja2Ryb3AuICovXG4gIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcblxuICAvKiogQ2xhc3Mgb3IgbGlzdCBvZiBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIG1lbnUncyBvdmVybGF5IHBhbmVsLiAqL1xuICBvdmVybGF5UGFuZWxDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGhhcyBhIGJhY2tkcm9wLiAqL1xuICBoYXNCYWNrZHJvcD86IGJvb2xlYW47XG59XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdG8gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciBgbWF0LW1lbnVgLiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9NRU5VX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYXRNZW51RGVmYXVsdE9wdGlvbnM+KFxuICAnbWF0LW1lbnUtZGVmYXVsdC1vcHRpb25zJyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiBNQVRfTUVOVV9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSxcbiAgfSxcbik7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gTUFUX01FTlVfREVGQVVMVF9PUFRJT05TX0ZBQ1RPUlkoKTogTWF0TWVudURlZmF1bHRPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICBvdmVybGFwVHJpZ2dlcjogZmFsc2UsXG4gICAgeFBvc2l0aW9uOiAnYWZ0ZXInLFxuICAgIHlQb3NpdGlvbjogJ2JlbG93JyxcbiAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnbWVudS5odG1sJyxcbiAgc3R5bGVVcmw6ICdtZW51LmNzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBleHBvcnRBczogJ21hdE1lbnUnLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ251bGwnLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsbGVkYnldJzogJ251bGwnLFxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdudWxsJyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW21hdE1lbnVBbmltYXRpb25zLnRyYW5zZm9ybU1lbnUsIG1hdE1lbnVBbmltYXRpb25zLmZhZGVJbkl0ZW1zXSxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE1BVF9NRU5VX1BBTkVMLCB1c2VFeGlzdGluZzogTWF0TWVudX1dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRNZW51IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgTWF0TWVudVBhbmVsPE1hdE1lbnVJdGVtPiwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8TWF0TWVudUl0ZW0+O1xuICBwcml2YXRlIF94UG9zaXRpb246IE1lbnVQb3NpdGlvblg7XG4gIHByaXZhdGUgX3lQb3NpdGlvbjogTWVudVBvc2l0aW9uWTtcbiAgcHJpdmF0ZSBfZmlyc3RJdGVtRm9jdXNSZWY/OiBBZnRlclJlbmRlclJlZjtcbiAgcHJpdmF0ZSBfcHJldmlvdXNFbGV2YXRpb246IHN0cmluZztcbiAgcHJpdmF0ZSBfZWxldmF0aW9uUHJlZml4ID0gJ21hdC1lbGV2YXRpb24teic7XG4gIHByaXZhdGUgX2Jhc2VFbGV2YXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBBbGwgaXRlbXMgaW5zaWRlIHRoZSBtZW51LiBJbmNsdWRlcyBpdGVtcyBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgbWVudS4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRNZW51SXRlbSwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX2FsbEl0ZW1zOiBRdWVyeUxpc3Q8TWF0TWVudUl0ZW0+O1xuXG4gIC8qKiBPbmx5IHRoZSBkaXJlY3QgZGVzY2VuZGFudCBtZW51IGl0ZW1zLiAqL1xuICBfZGlyZWN0RGVzY2VuZGFudEl0ZW1zID0gbmV3IFF1ZXJ5TGlzdDxNYXRNZW51SXRlbT4oKTtcblxuICAvKiogQ2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtZW51IHBhbmVsLiAqL1xuICBfY2xhc3NMaXN0OiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0gPSB7fTtcblxuICAvKiogQ3VycmVudCBzdGF0ZSBvZiB0aGUgcGFuZWwgYW5pbWF0aW9uLiAqL1xuICBfcGFuZWxBbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyA9ICd2b2lkJztcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgcmVhZG9ubHkgX2FuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDxBbmltYXRpb25FdmVudD4oKTtcblxuICAvKiogV2hldGhlciB0aGUgbWVudSBpcyBhbmltYXRpbmcuICovXG4gIF9pc0FuaW1hdGluZzogYm9vbGVhbjtcblxuICAvKiogUGFyZW50IG1lbnUgb2YgdGhlIGN1cnJlbnQgbWVudSBwYW5lbC4gKi9cbiAgcGFyZW50TWVudTogTWF0TWVudVBhbmVsIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBMYXlvdXQgZGlyZWN0aW9uIG9mIHRoZSBtZW51LiAqL1xuICBkaXJlY3Rpb246IERpcmVjdGlvbjtcblxuICAvKiogQ2xhc3Mgb3IgbGlzdCBvZiBjbGFzc2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBvdmVybGF5IHBhbmVsLiAqL1xuICBvdmVybGF5UGFuZWxDbGFzczogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqIENsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBiYWNrZHJvcCBlbGVtZW50LiAqL1xuICBASW5wdXQoKSBiYWNrZHJvcENsYXNzOiBzdHJpbmc7XG5cbiAgLyoqIGFyaWEtbGFiZWwgZm9yIHRoZSBtZW51IHBhbmVsLiAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKiogYXJpYS1sYWJlbGxlZGJ5IGZvciB0aGUgbWVudSBwYW5lbC4gKi9cbiAgQElucHV0KCdhcmlhLWxhYmVsbGVkYnknKSBhcmlhTGFiZWxsZWRieTogc3RyaW5nO1xuXG4gIC8qKiBhcmlhLWRlc2NyaWJlZGJ5IGZvciB0aGUgbWVudSBwYW5lbC4gKi9cbiAgQElucHV0KCdhcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmc7XG5cbiAgLyoqIFBvc2l0aW9uIG9mIHRoZSBtZW51IGluIHRoZSBYIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCB4UG9zaXRpb24oKTogTWVudVBvc2l0aW9uWCB7XG4gICAgcmV0dXJuIHRoaXMuX3hQb3NpdGlvbjtcbiAgfVxuICBzZXQgeFBvc2l0aW9uKHZhbHVlOiBNZW51UG9zaXRpb25YKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09ICdiZWZvcmUnICYmXG4gICAgICB2YWx1ZSAhPT0gJ2FmdGVyJyAmJlxuICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSlcbiAgICApIHtcbiAgICAgIHRocm93TWF0TWVudUludmFsaWRQb3NpdGlvblgoKTtcbiAgICB9XG4gICAgdGhpcy5feFBvc2l0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcbiAgfVxuXG4gIC8qKiBQb3NpdGlvbiBvZiB0aGUgbWVudSBpbiB0aGUgWSBheGlzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgeVBvc2l0aW9uKCk6IE1lbnVQb3NpdGlvblkge1xuICAgIHJldHVybiB0aGlzLl95UG9zaXRpb247XG4gIH1cbiAgc2V0IHlQb3NpdGlvbih2YWx1ZTogTWVudVBvc2l0aW9uWSkge1xuICAgIGlmICh2YWx1ZSAhPT0gJ2Fib3ZlJyAmJiB2YWx1ZSAhPT0gJ2JlbG93JyAmJiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgdGhyb3dNYXRNZW51SW52YWxpZFBvc2l0aW9uWSgpO1xuICAgIH1cbiAgICB0aGlzLl95UG9zaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xuICB9XG5cbiAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgdGhlIGl0ZW1zIGluc2lkZSBvZiBhIG1lbnUuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TWVudUl0ZW0sIHtkZXNjZW5kYW50czogZmFsc2V9KSBpdGVtczogUXVlcnlMaXN0PE1hdE1lbnVJdGVtPjtcblxuICAvKipcbiAgICogTWVudSBjb250ZW50IHRoYXQgd2lsbCBiZSByZW5kZXJlZCBsYXppbHkuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoTUFUX01FTlVfQ09OVEVOVCkgbGF6eUNvbnRlbnQ6IE1hdE1lbnVDb250ZW50O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IHNob3VsZCBvdmVybGFwIGl0cyB0cmlnZ2VyLiAqL1xuICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIG92ZXJsYXBUcmlnZ2VyOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGhhcyBhIGJhY2tkcm9wLiAqL1xuICBASW5wdXQoe3RyYW5zZm9ybTogKHZhbHVlOiBhbnkpID0+ICh2YWx1ZSA9PSBudWxsID8gbnVsbCA6IGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKX0pXG4gIGhhc0JhY2tkcm9wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWF0LW1lbnUgZWxlbWVudCBhbmQgYXBwbGllcyB0aGVtIG9uIHRoZVxuICAgKiBtZW51IHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiAgT3RoZXJ3aXNlLCBpdCdzIGRpZmZpY3VsdFxuICAgKiB0byBzdHlsZSB0aGUgY29udGFpbmluZyBtZW51IGZyb20gb3V0c2lkZSB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gY2xhc3NlcyBsaXN0IG9mIGNsYXNzIG5hbWVzXG4gICAqL1xuICBASW5wdXQoJ2NsYXNzJylcbiAgc2V0IHBhbmVsQ2xhc3MoY2xhc3Nlczogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJldmlvdXNQYW5lbENsYXNzID0gdGhpcy5fcHJldmlvdXNQYW5lbENsYXNzO1xuICAgIGNvbnN0IG5ld0NsYXNzTGlzdCA9IHsuLi50aGlzLl9jbGFzc0xpc3R9O1xuXG4gICAgaWYgKHByZXZpb3VzUGFuZWxDbGFzcyAmJiBwcmV2aW91c1BhbmVsQ2xhc3MubGVuZ3RoKSB7XG4gICAgICBwcmV2aW91c1BhbmVsQ2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBuZXdDbGFzc0xpc3RbY2xhc3NOYW1lXSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHJldmlvdXNQYW5lbENsYXNzID0gY2xhc3NlcztcblxuICAgIGlmIChjbGFzc2VzICYmIGNsYXNzZXMubGVuZ3RoKSB7XG4gICAgICBjbGFzc2VzLnNwbGl0KCcgJykuZm9yRWFjaCgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbmV3Q2xhc3NMaXN0W2NsYXNzTmFtZV0gPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jbGFzc0xpc3QgPSBuZXdDbGFzc0xpc3Q7XG4gIH1cbiAgcHJpdmF0ZSBfcHJldmlvdXNQYW5lbENsYXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHRha2VzIGNsYXNzZXMgc2V0IG9uIHRoZSBob3N0IG1hdC1tZW51IGVsZW1lbnQgYW5kIGFwcGxpZXMgdGhlbSBvbiB0aGVcbiAgICogbWVudSB0ZW1wbGF0ZSB0aGF0IGRpc3BsYXlzIGluIHRoZSBvdmVybGF5IGNvbnRhaW5lci4gIE90aGVyd2lzZSwgaXQncyBkaWZmaWN1bHRcbiAgICogdG8gc3R5bGUgdGhlIGNvbnRhaW5pbmcgbWVudSBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBwYW5lbENsYXNzYCBpbnN0ZWFkLlxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgY2xhc3NMaXN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFuZWxDbGFzcztcbiAgfVxuICBzZXQgY2xhc3NMaXN0KGNsYXNzZXM6IHN0cmluZykge1xuICAgIHRoaXMucGFuZWxDbGFzcyA9IGNsYXNzZXM7XG4gIH1cblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPE1lbnVDbG9zZVJlYXNvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVDbG9zZVJlYXNvbj4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZC5cbiAgICogQGRlcHJlY2F0ZWQgU3dpdGNoIHRvIGBjbG9zZWRgIGluc3RlYWRcbiAgICogQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlOiBFdmVudEVtaXR0ZXI8TWVudUNsb3NlUmVhc29uPiA9IHRoaXMuY2xvc2VkO1xuXG4gIHJlYWRvbmx5IHBhbmVsSWQgPSBgbWF0LW1lbnUtcGFuZWwtJHttZW51UGFuZWxVaWQrK31gO1xuXG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICBkZWZhdWx0T3B0aW9uczogTWF0TWVudURlZmF1bHRPcHRpb25zLFxuICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgYF9jaGFuZ2VEZXRlY3RvclJlZmAgdG8gYmVjb21lIGEgcmVxdWlyZWQgcGFyYW1ldGVyLlxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDE1LjAuMFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgZGVmYXVsdE9wdGlvbnM6IE1hdE1lbnVEZWZhdWx0T3B0aW9ucyxcbiAgICBjaGFuZ2VEZXRlY3RvclJlZj86IENoYW5nZURldGVjdG9yUmVmLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVudXNlZCBwYXJhbSwgd2lsbCBiZSByZW1vdmVkLlxuICAgICAqIEBicmVha2luZy1jaGFuZ2UgMTkuMC4wXG4gICAgICovXG4gICAgX3VudXNlZE5nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoTUFUX01FTlVfREVGQVVMVF9PUFRJT05TKSBkZWZhdWx0T3B0aW9uczogTWF0TWVudURlZmF1bHRPcHRpb25zLFxuICAgIC8vIEBicmVha2luZy1jaGFuZ2UgMTUuMC4wIGBfY2hhbmdlRGV0ZWN0b3JSZWZgIHRvIGJlY29tZSBhIHJlcXVpcmVkIHBhcmFtZXRlci5cbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZj86IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLm92ZXJsYXlQYW5lbENsYXNzID0gZGVmYXVsdE9wdGlvbnMub3ZlcmxheVBhbmVsQ2xhc3MgfHwgJyc7XG4gICAgdGhpcy5feFBvc2l0aW9uID0gZGVmYXVsdE9wdGlvbnMueFBvc2l0aW9uO1xuICAgIHRoaXMuX3lQb3NpdGlvbiA9IGRlZmF1bHRPcHRpb25zLnlQb3NpdGlvbjtcbiAgICB0aGlzLmJhY2tkcm9wQ2xhc3MgPSBkZWZhdWx0T3B0aW9ucy5iYWNrZHJvcENsYXNzO1xuICAgIHRoaXMub3ZlcmxhcFRyaWdnZXIgPSBkZWZhdWx0T3B0aW9ucy5vdmVybGFwVHJpZ2dlcjtcbiAgICB0aGlzLmhhc0JhY2tkcm9wID0gZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3A7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCk7XG4gICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKVxuICAgICAgLndpdGhXcmFwKClcbiAgICAgIC53aXRoVHlwZUFoZWFkKClcbiAgICAgIC53aXRoSG9tZUFuZEVuZCgpO1xuICAgIHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlZC5lbWl0KCd0YWInKSk7XG5cbiAgICAvLyBJZiBhIHVzZXIgbWFudWFsbHkgKHByb2dyYW1tYXRpY2FsbHkpIGZvY3VzZXMgYSBtZW51IGl0ZW0sIHdlIG5lZWQgdG8gcmVmbGVjdCB0aGF0IGZvY3VzXG4gICAgLy8gY2hhbmdlIGJhY2sgdG8gdGhlIGtleSBtYW5hZ2VyLiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB1bnN1YnNjcmliZSBoZXJlIGJlY2F1c2UgX2ZvY3VzZWRcbiAgICAvLyBpcyBpbnRlcm5hbCBhbmQgd2Uga25vdyB0aGF0IGl0IGdldHMgY29tcGxldGVkIG9uIGRlc3Ryb3kuXG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgc3dpdGNoTWFwKGl0ZW1zID0+IG1lcmdlKC4uLml0ZW1zLm1hcCgoaXRlbTogTWF0TWVudUl0ZW0pID0+IGl0ZW0uX2ZvY3VzZWQpKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGZvY3VzZWRJdGVtID0+IHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShmb2N1c2VkSXRlbSBhcyBNYXRNZW51SXRlbSkpO1xuXG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKChpdGVtc0xpc3Q6IFF1ZXJ5TGlzdDxNYXRNZW51SXRlbT4pID0+IHtcbiAgICAgIC8vIE1vdmUgZm9jdXMgdG8gYW5vdGhlciBpdGVtLCBpZiB0aGUgYWN0aXZlIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LlxuICAgICAgLy8gV2UgbmVlZCB0byBkZWJvdW5jZSB0aGUgY2FsbGJhY2ssIGJlY2F1c2UgbXVsdGlwbGUgaXRlbXMgbWlnaHQgYmUgcmVtb3ZlZFxuICAgICAgLy8gaW4gcXVpY2sgc3VjY2Vzc2lvbi5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSB0aGlzLl9rZXlNYW5hZ2VyO1xuXG4gICAgICBpZiAodGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9PT0gJ2VudGVyJyAmJiBtYW5hZ2VyLmFjdGl2ZUl0ZW0/Ll9oYXNGb2N1cygpKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gaXRlbXNMaXN0LnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpdGVtcy5sZW5ndGggLSAxLCBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCB8fCAwKSk7XG5cbiAgICAgICAgaWYgKGl0ZW1zW2luZGV4XSAmJiAhaXRlbXNbaW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgbWFuYWdlci5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYW5hZ2VyLnNldE5leHRJdGVtQWN0aXZlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2tleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuZGVzdHJveSgpO1xuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZmlyc3RJdGVtRm9jdXNSZWY/LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgaG92ZXJlZCBtZW51IGl0ZW0gY2hhbmdlcy4gKi9cbiAgX2hvdmVyZWQoKTogT2JzZXJ2YWJsZTxNYXRNZW51SXRlbT4ge1xuICAgIC8vIENvZXJjZSB0aGUgYGNoYW5nZXNgIHByb3BlcnR5IGJlY2F1c2UgQW5ndWxhciB0eXBlcyBpdCBhcyBgT2JzZXJ2YWJsZTxhbnk+YFxuICAgIGNvbnN0IGl0ZW1DaGFuZ2VzID0gdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxRdWVyeUxpc3Q8TWF0TWVudUl0ZW0+PjtcbiAgICByZXR1cm4gaXRlbUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMpLFxuICAgICAgc3dpdGNoTWFwKGl0ZW1zID0+IG1lcmdlKC4uLml0ZW1zLm1hcCgoaXRlbTogTWF0TWVudUl0ZW0pID0+IGl0ZW0uX2hvdmVyZWQpKSksXG4gICAgKSBhcyBPYnNlcnZhYmxlPE1hdE1lbnVJdGVtPjtcbiAgfVxuXG4gIC8qXG4gICAqIFJlZ2lzdGVycyBhIG1lbnUgaXRlbSB3aXRoIHRoZSBtZW51LlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBiZWluZyB1c2VkLiBUbyBiZSByZW1vdmVkLlxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDkuMC4wXG4gICAqL1xuICBhZGRJdGVtKF9pdGVtOiBNYXRNZW51SXRlbSkge31cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBpdGVtIGZyb20gdGhlIG1lbnUuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIGJlaW5nIHVzZWQuIFRvIGJlIHJlbW92ZWQuXG4gICAqIEBicmVha2luZy1jaGFuZ2UgOS4wLjBcbiAgICovXG4gIHJlbW92ZUl0ZW0oX2l0ZW06IE1hdE1lbnVJdGVtKSB7fVxuXG4gIC8qKiBIYW5kbGUgYSBrZXlib2FyZCBldmVudCBmcm9tIHRoZSBtZW51LCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgbWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXI7XG5cbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgIGNhc2UgRVNDQVBFOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICBpZiAodGhpcy5wYXJlbnRNZW51ICYmIHRoaXMuZGlyZWN0aW9uID09PSAnbHRyJykge1xuICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lbnUgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICBtYW5hZ2VyLnNldEZvY3VzT3JpZ2luKCdrZXlib2FyZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGV2ZW50IHRvIHByb3BhZ2F0ZSBpZiB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgaXQsIG9yIGl0IG1heVxuICAgIC8vIGVuZCB1cCByZWFjaGluZyBvdGhlciBvdmVybGF5cyB0aGF0IHdlcmUgb3BlbmVkIGVhcmxpZXIgKHNlZSAjMjI2OTQpLlxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBtZW51LlxuICAgKiBAcGFyYW0gb3JpZ2luIEFjdGlvbiBmcm9tIHdoaWNoIHRoZSBmb2N1cyBvcmlnaW5hdGVkLiBVc2VkIHRvIHNldCB0aGUgY29ycmVjdCBzdHlsaW5nLlxuICAgKi9cbiAgZm9jdXNGaXJzdEl0ZW0ob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIC8vIFdhaXQgZm9yIGBhZnRlck5leHRSZW5kZXJgIHRvIGVuc3VyZSBpT1MgVm9pY2VPdmVyIHNjcmVlbiByZWFkZXIgZm9jdXNlcyB0aGUgZmlyc3QgaXRlbSAoIzI0NzM1KS5cbiAgICB0aGlzLl9maXJzdEl0ZW1Gb2N1c1JlZj8uZGVzdHJveSgpO1xuICAgIHRoaXMuX2ZpcnN0SXRlbUZvY3VzUmVmID0gYWZ0ZXJOZXh0UmVuZGVyKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBsZXQgbWVudVBhbmVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYG1hdC1tZW51UGFuZWxgIGlzIGF0IHRoZSBET00gaW5zZXJ0aW9uIHBvaW50LCBub3QgaW5zaWRlIHRoZSBvdmVybGF5LCB3ZSBkb24ndFxuICAgICAgICAgIC8vIGhhdmUgYSBuaWNlIHdheSBvZiBnZXR0aW5nIGEgaG9sZCBvZiB0aGUgbWVudVBhbmVsIHBhbmVsLiBXZSBjYW4ndCB1c2UgYSBgVmlld0NoaWxkYCBlaXRoZXJcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoZSBwYW5lbCBpcyBpbnNpZGUgYW4gYG5nLXRlbXBsYXRlYC4gV2Ugd29yayBhcm91bmQgaXQgYnkgc3RhcnRpbmcgZnJvbSBvbmUgb2ZcbiAgICAgICAgICAvLyB0aGUgaXRlbXMgYW5kIHdhbGtpbmcgdXAgdGhlIERPTS5cbiAgICAgICAgICBtZW51UGFuZWwgPSB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuZmlyc3QhLl9nZXRIb3N0RWxlbWVudCgpLmNsb3Nlc3QoJ1tyb2xlPVwibWVudVwiXScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgYW4gaXRlbSBpbiB0aGUgbWVudVBhbmVsIGlzIGFscmVhZHkgZm9jdXNlZCwgYXZvaWQgb3ZlcnJpZGluZyB0aGUgZm9jdXMuXG4gICAgICAgIGlmICghbWVudVBhbmVsIHx8ICFtZW51UGFuZWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gdGhpcy5fa2V5TWFuYWdlcjtcbiAgICAgICAgICBtYW5hZ2VyLnNldEZvY3VzT3JpZ2luKG9yaWdpbikuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGFjdGl2ZSBpdGVtIGF0IHRoaXMgcG9pbnQsIGl0IG1lYW5zIHRoYXQgYWxsIHRoZSBpdGVtcyBhcmUgZGlzYWJsZWQuXG4gICAgICAgICAgLy8gTW92ZSBmb2N1cyB0byB0aGUgbWVudVBhbmVsIHBhbmVsIHNvIGtleWJvYXJkIGV2ZW50cyBsaWtlIEVzY2FwZSBzdGlsbCB3b3JrLiBBbHNvIHRoaXMgd2lsbFxuICAgICAgICAgIC8vIGdpdmUgX3NvbWVfIGZlZWRiYWNrIHRvIHNjcmVlbiByZWFkZXJzLlxuICAgICAgICAgIGlmICghbWFuYWdlci5hY3RpdmVJdGVtICYmIG1lbnVQYW5lbCkge1xuICAgICAgICAgICAgbWVudVBhbmVsLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge2luamVjdG9yOiB0aGlzLl9pbmplY3Rvcn0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGFjdGl2ZSBpdGVtIGluIHRoZSBtZW51LiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQsIGFsbG93aW5nXG4gICAqIHRoZSB1c2VyIHRvIHN0YXJ0IGZyb20gdGhlIGZpcnN0IG9wdGlvbiB3aGVuIHByZXNzaW5nIHRoZSBkb3duIGFycm93LlxuICAgKi9cbiAgcmVzZXRBY3RpdmVJdGVtKCkge1xuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbWVudSBwYW5lbCBlbGV2YXRpb24uXG4gICAqIEBwYXJhbSBkZXB0aCBOdW1iZXIgb2YgcGFyZW50IG1lbnVzIHRoYXQgY29tZSBiZWZvcmUgdGhlIG1lbnUuXG4gICAqL1xuICBzZXRFbGV2YXRpb24oZGVwdGg6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIFRoZSBiYXNlIGVsZXZhdGlvbiBkZXBlbmRzIG9uIHdoaWNoIHZlcnNpb24gb2YgdGhlIHNwZWNcbiAgICAvLyB3ZSdyZSBydW5uaW5nIHNvIHdlIGhhdmUgdG8gcmVzb2x2ZSBpdCBhdCBydW50aW1lLlxuICAgIGlmICh0aGlzLl9iYXNlRWxldmF0aW9uID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdHlsZXMgPVxuICAgICAgICB0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgdmFsdWUgPSBzdHlsZXM/LmdldFByb3BlcnR5VmFsdWUoJy0tbWF0LW1lbnUtYmFzZS1lbGV2YXRpb24tbGV2ZWwnKSB8fCAnOCc7XG4gICAgICB0aGlzLl9iYXNlRWxldmF0aW9uID0gcGFyc2VJbnQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFRoZSBlbGV2YXRpb24gc3RhcnRzIGF0IHRoZSBiYXNlIGFuZCBpbmNyZWFzZXMgYnkgb25lIGZvciBlYWNoIGxldmVsLlxuICAgIC8vIENhcHBlZCBhdCAyNCBiZWNhdXNlIHRoYXQncyB0aGUgbWF4aW11bSBlbGV2YXRpb24gZGVmaW5lZCBpbiB0aGUgTWF0ZXJpYWwgZGVzaWduIHNwZWMuXG4gICAgY29uc3QgZWxldmF0aW9uID0gTWF0aC5taW4odGhpcy5fYmFzZUVsZXZhdGlvbiArIGRlcHRoLCAyNCk7XG4gICAgY29uc3QgbmV3RWxldmF0aW9uID0gYCR7dGhpcy5fZWxldmF0aW9uUHJlZml4fSR7ZWxldmF0aW9ufWA7XG4gICAgY29uc3QgY3VzdG9tRWxldmF0aW9uID0gT2JqZWN0LmtleXModGhpcy5fY2xhc3NMaXN0KS5maW5kKGNsYXNzTmFtZSA9PiB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lLnN0YXJ0c1dpdGgodGhpcy5fZWxldmF0aW9uUHJlZml4KTtcbiAgICB9KTtcblxuICAgIGlmICghY3VzdG9tRWxldmF0aW9uIHx8IGN1c3RvbUVsZXZhdGlvbiA9PT0gdGhpcy5fcHJldmlvdXNFbGV2YXRpb24pIHtcbiAgICAgIGNvbnN0IG5ld0NsYXNzTGlzdCA9IHsuLi50aGlzLl9jbGFzc0xpc3R9O1xuXG4gICAgICBpZiAodGhpcy5fcHJldmlvdXNFbGV2YXRpb24pIHtcbiAgICAgICAgbmV3Q2xhc3NMaXN0W3RoaXMuX3ByZXZpb3VzRWxldmF0aW9uXSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBuZXdDbGFzc0xpc3RbbmV3RWxldmF0aW9uXSA9IHRydWU7XG4gICAgICB0aGlzLl9wcmV2aW91c0VsZXZhdGlvbiA9IG5ld0VsZXZhdGlvbjtcbiAgICAgIHRoaXMuX2NsYXNzTGlzdCA9IG5ld0NsYXNzTGlzdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBjbGFzc2VzIHRvIHRoZSBtZW51IHBhbmVsIGJhc2VkIG9uIGl0cyBwb3NpdGlvbi4gQ2FuIGJlIHVzZWQgYnlcbiAgICogY29uc3VtZXJzIHRvIGFkZCBzcGVjaWZpYyBzdHlsaW5nIGJhc2VkIG9uIHRoZSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHBvc1ggUG9zaXRpb24gb2YgdGhlIG1lbnUgYWxvbmcgdGhlIHggYXhpcy5cbiAgICogQHBhcmFtIHBvc1kgUG9zaXRpb24gb2YgdGhlIG1lbnUgYWxvbmcgdGhlIHkgYXhpcy5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgc2V0UG9zaXRpb25DbGFzc2VzKHBvc1g6IE1lbnVQb3NpdGlvblggPSB0aGlzLnhQb3NpdGlvbiwgcG9zWTogTWVudVBvc2l0aW9uWSA9IHRoaXMueVBvc2l0aW9uKSB7XG4gICAgdGhpcy5fY2xhc3NMaXN0ID0ge1xuICAgICAgLi4udGhpcy5fY2xhc3NMaXN0LFxuICAgICAgWydtYXQtbWVudS1iZWZvcmUnXTogcG9zWCA9PT0gJ2JlZm9yZScsXG4gICAgICBbJ21hdC1tZW51LWFmdGVyJ106IHBvc1ggPT09ICdhZnRlcicsXG4gICAgICBbJ21hdC1tZW51LWFib3ZlJ106IHBvc1kgPT09ICdhYm92ZScsXG4gICAgICBbJ21hdC1tZW51LWJlbG93J106IHBvc1kgPT09ICdiZWxvdycsXG4gICAgfTtcblxuICAgIC8vIEBicmVha2luZy1jaGFuZ2UgMTUuMC4wIFJlbW92ZSBudWxsIGNoZWNrIGZvciBgX2NoYW5nZURldGVjdG9yUmVmYC5cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj8ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogU3RhcnRzIHRoZSBlbnRlciBhbmltYXRpb24uICovXG4gIF9zdGFydEFuaW1hdGlvbigpIHtcbiAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wIENvbWJpbmUgd2l0aCBfcmVzZXRBbmltYXRpb24uXG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gIH1cblxuICAvKiogUmVzZXRzIHRoZSBwYW5lbCBhbmltYXRpb24gdG8gaXRzIGluaXRpYWwgc3RhdGUuICovXG4gIF9yZXNldEFuaW1hdGlvbigpIHtcbiAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wIENvbWJpbmUgd2l0aCBfc3RhcnRBbmltYXRpb24uXG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICd2b2lkJztcbiAgfVxuXG4gIC8qKiBDYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgcGFuZWwgYW5pbWF0aW9uIGNvbXBsZXRlcy4gKi9cbiAgX29uQW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICB0aGlzLl9hbmltYXRpb25Eb25lLm5leHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzQW5pbWF0aW5nID0gZmFsc2U7XG4gIH1cblxuICBfb25BbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICB0aGlzLl9pc0FuaW1hdGluZyA9IHRydWU7XG5cbiAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgZWxlbWVudCB0byB0aGUgdG9wIGFzIHNvb24gYXMgdGhlIGFuaW1hdGlvbiBzdGFydHMuIFRoaXMgaXMgbmVjZXNzYXJ5LFxuICAgIC8vIGJlY2F1c2Ugd2UgbW92ZSBmb2N1cyB0byB0aGUgZmlyc3QgaXRlbSB3aGlsZSBpdCdzIHN0aWxsIGJlaW5nIGFuaW1hdGVkLCB3aGljaCBjYW4gdGhyb3dcbiAgICAvLyB0aGUgYnJvd3NlciBvZmYgd2hlbiBpdCBkZXRlcm1pbmVzIHRoZSBzY3JvbGwgcG9zaXRpb24uIEFsdGVybmF0aXZlbHkgd2UgY2FuIG1vdmUgZm9jdXNcbiAgICAvLyB3aGVuIHRoZSBhbmltYXRpb24gaXMgZG9uZSwgaG93ZXZlciBtb3ZpbmcgZm9jdXMgYXN5bmNocm9ub3VzbHkgd2lsbCBpbnRlcnJ1cHQgc2NyZWVuXG4gICAgLy8gcmVhZGVycyB3aGljaCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcmVhZGluZyBvdXQgdGhlIG1lbnUgYWxyZWFkeS4gV2UgdGFrZSB0aGUgYGVsZW1lbnRgXG4gICAgLy8gZnJvbSB0aGUgYGV2ZW50YCBzaW5jZSB3ZSBjYW4ndCB1c2UgYSBgVmlld0NoaWxkYCB0byBhY2Nlc3MgdGhlIHBhbmUuXG4gICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlcicgJiYgdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXggPT09IDApIHtcbiAgICAgIGV2ZW50LmVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHN0cmVhbSB0aGF0IHdpbGwga2VlcCB0cmFjayBvZiBhbnkgbmV3bHktYWRkZWQgbWVudSBpdGVtcyBhbmQgd2lsbCB1cGRhdGUgdGhlIGxpc3RcbiAgICogb2YgZGlyZWN0IGRlc2NlbmRhbnRzLiBXZSBjb2xsZWN0IHRoZSBkZXNjZW5kYW50cyB0aGlzIHdheSwgYmVjYXVzZSBgX2FsbEl0ZW1zYCBjYW4gaW5jbHVkZVxuICAgKiBpdGVtcyB0aGF0IGFyZSBwYXJ0IG9mIGNoaWxkIG1lbnVzLCBhbmQgdXNpbmcgYSBjdXN0b20gd2F5IG9mIHJlZ2lzdGVyaW5nIGl0ZW1zIGlzIHVucmVsaWFibGVcbiAgICogd2hlbiBpdCBjb21lcyB0byBtYWludGFpbmluZyB0aGUgaXRlbSBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCkge1xuICAgIHRoaXMuX2FsbEl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLl9hbGxJdGVtcykpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtczogUXVlcnlMaXN0PE1hdE1lbnVJdGVtPikgPT4ge1xuICAgICAgICB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMucmVzZXQoaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5fcGFyZW50TWVudSA9PT0gdGhpcykpO1xuICAgICAgICB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMubm90aWZ5T25DaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtYXQtbWRjLW1lbnUtcGFuZWwgbWF0LW1kYy1lbGV2YXRpb24tc3BlY2lmaWNcIlxuICAgIFtpZF09XCJwYW5lbElkXCJcbiAgICBbY2xhc3NdPVwiX2NsYXNzTGlzdFwiXG4gICAgKGtleWRvd24pPVwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cImNsb3NlZC5lbWl0KCdjbGljaycpXCJcbiAgICBbQHRyYW5zZm9ybU1lbnVdPVwiX3BhbmVsQW5pbWF0aW9uU3RhdGVcIlxuICAgIChAdHJhbnNmb3JtTWVudS5zdGFydCk9XCJfb25BbmltYXRpb25TdGFydCgkZXZlbnQpXCJcbiAgICAoQHRyYW5zZm9ybU1lbnUuZG9uZSk9XCJfb25BbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIHJvbGU9XCJtZW51XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnkgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnkgfHwgbnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLW1lbnUtY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudV9wdWJsaWNfaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbWVudS9tZW51X3B1YmxpY19pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,63 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { CommonModule } from '@angular/common';
9
- import { NgModule } from '@angular/core';
10
- import { MatCommonModule, MatRippleModule } from '@angular/material/core';
11
- import { OverlayModule } from '@angular/cdk/overlay';
12
- import { CdkScrollableModule } from '@angular/cdk/scrolling';
13
- import { MatMenu } from './menu';
14
- import { MatMenuItem } from './menu-item';
15
- import { MatMenuContent } from './menu-content';
16
- import { MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER, MatMenuTrigger } from './menu-trigger';
17
- import * as i0 from "@angular/core";
18
- export class MatMenuModule {
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatMenuModule, imports: [CommonModule,
21
- MatRippleModule,
22
- MatCommonModule,
23
- OverlayModule,
24
- MatMenu,
25
- MatMenuItem,
26
- MatMenuContent,
27
- MatMenuTrigger], exports: [CdkScrollableModule,
28
- MatMenu,
29
- MatCommonModule,
30
- MatMenuItem,
31
- MatMenuContent,
32
- MatMenuTrigger] }); }
33
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [CommonModule,
34
- MatRippleModule,
35
- MatCommonModule,
36
- OverlayModule, CdkScrollableModule,
37
- MatCommonModule] }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatMenuModule, decorators: [{
40
- type: NgModule,
41
- args: [{
42
- imports: [
43
- CommonModule,
44
- MatRippleModule,
45
- MatCommonModule,
46
- OverlayModule,
47
- MatMenu,
48
- MatMenuItem,
49
- MatMenuContent,
50
- MatMenuTrigger,
51
- ],
52
- exports: [
53
- CdkScrollableModule,
54
- MatMenu,
55
- MatCommonModule,
56
- MatMenuItem,
57
- MatMenuContent,
58
- MatMenuTrigger,
59
- ],
60
- providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],
61
- }]
62
- }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL21lbnUvbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLHlDQUF5QyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQXVCekYsTUFBTSxPQUFPLGFBQWE7cUhBQWIsYUFBYTtzSEFBYixhQUFhLFlBbkJ0QixZQUFZO1lBQ1osZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2IsT0FBTztZQUNQLFdBQVc7WUFDWCxjQUFjO1lBQ2QsY0FBYyxhQUdkLG1CQUFtQjtZQUNuQixPQUFPO1lBQ1AsZUFBZTtZQUNmLFdBQVc7WUFDWCxjQUFjO1lBQ2QsY0FBYztzSEFJTCxhQUFhLGFBRmIsQ0FBQyx5Q0FBeUMsQ0FBQyxZQWpCcEQsWUFBWTtZQUNaLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYSxFQU9iLG1CQUFtQjtZQUVuQixlQUFlOztrR0FPTixhQUFhO2tCQXJCekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsY0FBYztxQkFDZjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQztpQkFDdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0Q29tbW9uTW9kdWxlLCBNYXRSaXBwbGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtPdmVybGF5TW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0Nka1Njcm9sbGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtNYXRNZW51fSBmcm9tICcuL21lbnUnO1xuaW1wb3J0IHtNYXRNZW51SXRlbX0gZnJvbSAnLi9tZW51LWl0ZW0nO1xuaW1wb3J0IHtNYXRNZW51Q29udGVudH0gZnJvbSAnLi9tZW51LWNvbnRlbnQnO1xuaW1wb3J0IHtNQVRfTUVOVV9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiwgTWF0TWVudVRyaWdnZXJ9IGZyb20gJy4vbWVudS10cmlnZ2VyJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgTWF0Q29tbW9uTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgTWF0TWVudSxcbiAgICBNYXRNZW51SXRlbSxcbiAgICBNYXRNZW51Q29udGVudCxcbiAgICBNYXRNZW51VHJpZ2dlcixcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENka1Njcm9sbGFibGVNb2R1bGUsXG4gICAgTWF0TWVudSxcbiAgICBNYXRDb21tb25Nb2R1bGUsXG4gICAgTWF0TWVudUl0ZW0sXG4gICAgTWF0TWVudUNvbnRlbnQsXG4gICAgTWF0TWVudVRyaWdnZXIsXG4gIF0sXG4gIHByb3ZpZGVyczogW01BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TWVudU1vZHVsZSB7fVxuIl19
@@ -1,16 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { MatMenu, MAT_MENU_DEFAULT_OPTIONS } from './menu';
9
- export * from './menu-item';
10
- export * from './menu-content';
11
- export { MatMenuTrigger, MAT_MENU_SCROLL_STRATEGY, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER, MENU_PANEL_TOP_PADDING, } from './menu-trigger';
12
- export * from './module';
13
- export * from './menu-animations';
14
- export * from './menu-positions';
15
- export * from './menu-panel';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9tZW51L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUMsTUFBTSxRQUFRLENBQUM7QUFDakcsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUN4Qix5Q0FBeUMsRUFDekMsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7TWF0TWVudSwgTUFUX01FTlVfREVGQVVMVF9PUFRJT05TLCBNYXRNZW51RGVmYXVsdE9wdGlvbnMsIE1lbnVDbG9zZVJlYXNvbn0gZnJvbSAnLi9tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1jb250ZW50JztcbmV4cG9ydCB7XG4gIE1hdE1lbnVUcmlnZ2VyLFxuICBNQVRfTUVOVV9TQ1JPTExfU1RSQVRFR1ksXG4gIE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSLFxuICBNRU5VX1BBTkVMX1RPUF9QQURESU5HLFxufSBmcm9tICcuL21lbnUtdHJpZ2dlcic7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtcG9zaXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1wYW5lbCc7XG4iXX0=
@@ -1,9 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export * from './public-api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbWVudS90ZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,9 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export {};
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1oYXJuZXNzLWZpbHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbWVudS90ZXN0aW5nL21lbnUtaGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0Jhc2VIYXJuZXNzRmlsdGVyc30gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKiogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBNYXRNZW51SGFybmVzc2AgaW5zdGFuY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51SGFybmVzc0ZpbHRlcnMgZXh0ZW5kcyBCYXNlSGFybmVzc0ZpbHRlcnMge1xuICAvKiogT25seSBmaW5kIGluc3RhbmNlcyB3aG9zZSB0cmlnZ2VyIHRleHQgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gIHRyaWdnZXJUZXh0Pzogc3RyaW5nIHwgUmVnRXhwO1xufVxuXG4vKiogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBNYXRNZW51SXRlbUhhcm5lc3NgIGluc3RhbmNlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW1IYXJuZXNzRmlsdGVycyBleHRlbmRzIEJhc2VIYXJuZXNzRmlsdGVycyB7XG4gIC8qKiBPbmx5IGZpbmQgaW5zdGFuY2VzIHdob3NlIHRleHQgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gIHRleHQ/OiBzdHJpbmcgfCBSZWdFeHA7XG4gIC8qKiBPbmx5IGZpbmQgaW5zdGFuY2VzIHRoYXQgaGF2ZSBhIHN1Yi1tZW51LiAqL1xuICBoYXNTdWJtZW51PzogYm9vbGVhbjtcbn1cbiJdfQ==