@angular/material 19.0.0-next.1 → 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 (595) hide show
  1. package/_index.scss +3 -4
  2. package/button/_button-base.scss +2 -2
  3. package/button/index.d.ts +2 -10
  4. package/checkbox/index.d.ts +0 -7
  5. package/chips/index.d.ts +1 -10
  6. package/core/_core.scss +1 -7
  7. package/core/focus-indicators/_private.scss +20 -81
  8. package/core/index.d.ts +8 -10
  9. package/core/style/_elevation.scss +1 -1
  10. package/core/theming/_palettes.scss +132 -45
  11. package/core/tokens/_m3-system.scss +93 -20
  12. package/core/tokens/m3/mat/_sidenav.scss +0 -1
  13. package/fesm2022/button.mjs +16 -27
  14. package/fesm2022/button.mjs.map +1 -1
  15. package/fesm2022/checkbox.mjs +2 -5
  16. package/fesm2022/checkbox.mjs.map +1 -1
  17. package/fesm2022/chips.mjs +8 -19
  18. package/fesm2022/chips.mjs.map +1 -1
  19. package/fesm2022/core.mjs +62 -38
  20. package/fesm2022/core.mjs.map +1 -1
  21. package/fesm2022/form-field.mjs +2 -2
  22. package/fesm2022/form-field.mjs.map +1 -1
  23. package/fesm2022/list.mjs +14 -14
  24. package/fesm2022/list.mjs.map +1 -1
  25. package/fesm2022/menu.mjs +2 -2
  26. package/fesm2022/menu.mjs.map +1 -1
  27. package/fesm2022/radio.mjs +2 -2
  28. package/fesm2022/radio.mjs.map +1 -1
  29. package/fesm2022/sidenav.mjs +4 -4
  30. package/fesm2022/sidenav.mjs.map +1 -1
  31. package/fesm2022/slide-toggle.mjs +2 -2
  32. package/fesm2022/slide-toggle.mjs.map +1 -1
  33. package/fesm2022/slider.mjs +4 -4
  34. package/fesm2022/slider.mjs.map +1 -1
  35. package/fesm2022/table.mjs +2 -2
  36. package/fesm2022/table.mjs.map +1 -1
  37. package/fesm2022/tabs.mjs +6 -6
  38. package/fesm2022/tabs.mjs.map +1 -1
  39. package/fesm2022/tooltip.mjs +16 -4
  40. package/fesm2022/tooltip.mjs.map +1 -1
  41. package/package.json +2 -146
  42. package/prebuilt-themes/azure-blue.css +1 -1
  43. package/prebuilt-themes/cyan-orange.css +1 -1
  44. package/prebuilt-themes/deeppurple-amber.css +1 -1
  45. package/prebuilt-themes/indigo-pink.css +1 -1
  46. package/prebuilt-themes/magenta-violet.css +1 -1
  47. package/prebuilt-themes/pink-bluegrey.css +1 -1
  48. package/prebuilt-themes/purple-green.css +1 -1
  49. package/prebuilt-themes/rose-red.css +1 -1
  50. package/schematics/ng-add/index.js +1 -1
  51. package/schematics/ng-add/index.mjs +1 -1
  52. package/schematics/ng-generate/m3-theme/index_bundled.js +2 -2
  53. package/schematics/ng-update/index_bundled.js +27 -27
  54. package/tabs/_tabs-common.scss +1 -1
  55. package/core/focus-indicators/_focus-indicators-theme.scss +0 -11
  56. package/core/focus-indicators/_focus-indicators.scss +0 -6
  57. package/esm2022/autocomplete/animations.mjs +0 -24
  58. package/esm2022/autocomplete/autocomplete-origin.mjs +0 -31
  59. package/esm2022/autocomplete/autocomplete-trigger.mjs +0 -902
  60. package/esm2022/autocomplete/autocomplete.mjs +0 -238
  61. package/esm2022/autocomplete/autocomplete_public_index.mjs +0 -5
  62. package/esm2022/autocomplete/index.mjs +0 -9
  63. package/esm2022/autocomplete/module.mjs +0 -61
  64. package/esm2022/autocomplete/public-api.mjs +0 -14
  65. package/esm2022/autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
  66. package/esm2022/autocomplete/testing/autocomplete-harness.mjs +0 -105
  67. package/esm2022/autocomplete/testing/index.mjs +0 -9
  68. package/esm2022/autocomplete/testing/public-api.mjs +0 -10
  69. package/esm2022/badge/badge-module.mjs +0 -27
  70. package/esm2022/badge/badge.mjs +0 -288
  71. package/esm2022/badge/badge_public_index.mjs +0 -5
  72. package/esm2022/badge/index.mjs +0 -9
  73. package/esm2022/badge/public-api.mjs +0 -10
  74. package/esm2022/badge/testing/badge-harness-filters.mjs +0 -9
  75. package/esm2022/badge/testing/badge-harness.mjs +0 -71
  76. package/esm2022/badge/testing/index.mjs +0 -9
  77. package/esm2022/badge/testing/public-api.mjs +0 -10
  78. package/esm2022/bottom-sheet/bottom-sheet-animations.mjs +0 -26
  79. package/esm2022/bottom-sheet/bottom-sheet-config.mjs +0 -48
  80. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +0 -85
  81. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +0 -28
  82. package/esm2022/bottom-sheet/bottom-sheet-ref.mjs +0 -104
  83. package/esm2022/bottom-sheet/bottom-sheet.mjs +0 -115
  84. package/esm2022/bottom-sheet/bottom-sheet_public_index.mjs +0 -5
  85. package/esm2022/bottom-sheet/index.mjs +0 -9
  86. package/esm2022/bottom-sheet/public-api.mjs +0 -14
  87. package/esm2022/bottom-sheet/testing/bottom-sheet-harness-filters.mjs +0 -9
  88. package/esm2022/bottom-sheet/testing/bottom-sheet-harness.mjs +0 -35
  89. package/esm2022/bottom-sheet/testing/index.mjs +0 -9
  90. package/esm2022/bottom-sheet/testing/public-api.mjs +0 -10
  91. package/esm2022/button/button-base.mjs +0 -230
  92. package/esm2022/button/button.mjs +0 -67
  93. package/esm2022/button/button_public_index.mjs +0 -5
  94. package/esm2022/button/fab.mjs +0 -166
  95. package/esm2022/button/icon-button.mjs +0 -56
  96. package/esm2022/button/index.mjs +0 -9
  97. package/esm2022/button/module.mjs +0 -65
  98. package/esm2022/button/public-api.mjs +0 -13
  99. package/esm2022/button/testing/button-harness-filters.mjs +0 -9
  100. package/esm2022/button/testing/button-harness.mjs +0 -80
  101. package/esm2022/button/testing/index.mjs +0 -9
  102. package/esm2022/button/testing/public-api.mjs +0 -10
  103. package/esm2022/button-toggle/button-toggle-module.mjs +0 -24
  104. package/esm2022/button-toggle/button-toggle.mjs +0 -651
  105. package/esm2022/button-toggle/button-toggle_public_index.mjs +0 -5
  106. package/esm2022/button-toggle/index.mjs +0 -9
  107. package/esm2022/button-toggle/public-api.mjs +0 -10
  108. package/esm2022/button-toggle/testing/button-toggle-group-harness-filters.mjs +0 -9
  109. package/esm2022/button-toggle/testing/button-toggle-group-harness.mjs +0 -47
  110. package/esm2022/button-toggle/testing/button-toggle-harness-filters.mjs +0 -9
  111. package/esm2022/button-toggle/testing/button-toggle-harness.mjs +0 -105
  112. package/esm2022/button-toggle/testing/index.mjs +0 -9
  113. package/esm2022/button-toggle/testing/public-api.mjs +0 -12
  114. package/esm2022/card/card.mjs +0 -273
  115. package/esm2022/card/card_public_index.mjs +0 -5
  116. package/esm2022/card/index.mjs +0 -9
  117. package/esm2022/card/module.mjs +0 -67
  118. package/esm2022/card/public-api.mjs +0 -10
  119. package/esm2022/card/testing/card-harness-filters.mjs +0 -9
  120. package/esm2022/card/testing/card-harness.mjs +0 -50
  121. package/esm2022/card/testing/index.mjs +0 -9
  122. package/esm2022/card/testing/public-api.mjs +0 -10
  123. package/esm2022/checkbox/checkbox-config.mjs +0 -22
  124. package/esm2022/checkbox/checkbox-required-validator.mjs +0 -41
  125. package/esm2022/checkbox/checkbox.mjs +0 -443
  126. package/esm2022/checkbox/checkbox_public_index.mjs +0 -5
  127. package/esm2022/checkbox/index.mjs +0 -9
  128. package/esm2022/checkbox/module.mjs +0 -41
  129. package/esm2022/checkbox/public-api.mjs +0 -12
  130. package/esm2022/checkbox/testing/checkbox-harness-filters.mjs +0 -9
  131. package/esm2022/checkbox/testing/checkbox-harness.mjs +0 -138
  132. package/esm2022/checkbox/testing/index.mjs +0 -9
  133. package/esm2022/checkbox/testing/public-api.mjs +0 -9
  134. package/esm2022/chips/chip-action.mjs +0 -113
  135. package/esm2022/chips/chip-edit-input.mjs +0 -61
  136. package/esm2022/chips/chip-grid.mjs +0 -420
  137. package/esm2022/chips/chip-icons.mjs +0 -107
  138. package/esm2022/chips/chip-input.mjs +0 -192
  139. package/esm2022/chips/chip-listbox.mjs +0 -369
  140. package/esm2022/chips/chip-option.mjs +0 -190
  141. package/esm2022/chips/chip-row.mjs +0 -173
  142. package/esm2022/chips/chip-set.mjs +0 -283
  143. package/esm2022/chips/chip-text-control.mjs +0 -9
  144. package/esm2022/chips/chip.mjs +0 -322
  145. package/esm2022/chips/chips_public_index.mjs +0 -5
  146. package/esm2022/chips/index.mjs +0 -9
  147. package/esm2022/chips/module.mjs +0 -85
  148. package/esm2022/chips/public-api.mjs +0 -20
  149. package/esm2022/chips/testing/chip-avatar-harness.mjs +0 -22
  150. package/esm2022/chips/testing/chip-edit-input-harness.mjs +0 -33
  151. package/esm2022/chips/testing/chip-grid-harness.mjs +0 -45
  152. package/esm2022/chips/testing/chip-harness-filters.mjs +0 -9
  153. package/esm2022/chips/testing/chip-harness.mjs +0 -62
  154. package/esm2022/chips/testing/chip-input-harness.mjs +0 -85
  155. package/esm2022/chips/testing/chip-listbox-harness.mjs +0 -61
  156. package/esm2022/chips/testing/chip-option-harness.mjs +0 -45
  157. package/esm2022/chips/testing/chip-remove-harness.mjs +0 -26
  158. package/esm2022/chips/testing/chip-row-harness.mjs +0 -40
  159. package/esm2022/chips/testing/chip-set-harness.mjs +0 -26
  160. package/esm2022/chips/testing/index.mjs +0 -9
  161. package/esm2022/chips/testing/public-api.mjs +0 -19
  162. package/esm2022/chips/tokens.mjs +0 -39
  163. package/esm2022/core/animation/animation.mjs +0 -21
  164. package/esm2022/core/common-behaviors/color.mjs +0 -33
  165. package/esm2022/core/common-behaviors/common-module.mjs +0 -127
  166. package/esm2022/core/common-behaviors/constructor.mjs +0 -9
  167. package/esm2022/core/common-behaviors/disable-ripple.mjs +0 -24
  168. package/esm2022/core/common-behaviors/disabled.mjs +0 -23
  169. package/esm2022/core/common-behaviors/error-state.mjs +0 -66
  170. package/esm2022/core/common-behaviors/index.mjs +0 -15
  171. package/esm2022/core/common-behaviors/initialized.mjs +0 -62
  172. package/esm2022/core/common-behaviors/tabindex.mjs +0 -25
  173. package/esm2022/core/core_public_index.mjs +0 -5
  174. package/esm2022/core/datetime/date-adapter.mjs +0 -109
  175. package/esm2022/core/datetime/date-formats.mjs +0 -10
  176. package/esm2022/core/datetime/index.mjs +0 -46
  177. package/esm2022/core/datetime/native-date-adapter.mjs +0 -221
  178. package/esm2022/core/datetime/native-date-formats.mjs +0 -19
  179. package/esm2022/core/error/error-options.mjs +0 -33
  180. package/esm2022/core/index.mjs +0 -9
  181. package/esm2022/core/internal-form-field/internal-form-field.mjs +0 -29
  182. package/esm2022/core/line/line.mjs +0 -64
  183. package/esm2022/core/option/index.mjs +0 -30
  184. package/esm2022/core/option/optgroup.mjs +0 -71
  185. package/esm2022/core/option/option-parent.mjs +0 -13
  186. package/esm2022/core/option/option.mjs +0 -283
  187. package/esm2022/core/private/index.mjs +0 -9
  188. package/esm2022/core/private/ripple-loader.mjs +0 -160
  189. package/esm2022/core/public-api.mjs +0 -19
  190. package/esm2022/core/ripple/index.mjs +0 -27
  191. package/esm2022/core/ripple/ripple-event-manager.mjs +0 -69
  192. package/esm2022/core/ripple/ripple-ref.mjs +0 -39
  193. package/esm2022/core/ripple/ripple-renderer.mjs +0 -354
  194. package/esm2022/core/ripple/ripple.mjs +0 -156
  195. package/esm2022/core/selection/index.mjs +0 -10
  196. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +0 -24
  197. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -62
  198. package/esm2022/core/testing/index.mjs +0 -9
  199. package/esm2022/core/testing/optgroup-harness-filters.mjs +0 -9
  200. package/esm2022/core/testing/optgroup-harness.mjs +0 -43
  201. package/esm2022/core/testing/option-harness-filters.mjs +0 -9
  202. package/esm2022/core/testing/option-harness.mjs +0 -53
  203. package/esm2022/core/testing/public-api.mjs +0 -12
  204. package/esm2022/core/version.mjs +0 -11
  205. package/esm2022/datepicker/aria-accessible-name.mjs +0 -159
  206. package/esm2022/datepicker/calendar-body.mjs +0 -509
  207. package/esm2022/datepicker/calendar.mjs +0 -426
  208. package/esm2022/datepicker/date-range-input-parts.mjs +0 -372
  209. package/esm2022/datepicker/date-range-input.mjs +0 -369
  210. package/esm2022/datepicker/date-range-picker.mjs +0 -51
  211. package/esm2022/datepicker/date-range-selection-strategy.mjs +0 -97
  212. package/esm2022/datepicker/date-selection-model.mjs +0 -188
  213. package/esm2022/datepicker/datepicker-actions.mjs +0 -91
  214. package/esm2022/datepicker/datepicker-animations.mjs +0 -35
  215. package/esm2022/datepicker/datepicker-base.mjs +0 -609
  216. package/esm2022/datepicker/datepicker-errors.mjs +0 -14
  217. package/esm2022/datepicker/datepicker-input-base.mjs +0 -311
  218. package/esm2022/datepicker/datepicker-input.mjs +0 -200
  219. package/esm2022/datepicker/datepicker-intl.mjs +0 -69
  220. package/esm2022/datepicker/datepicker-module.mjs +0 -138
  221. package/esm2022/datepicker/datepicker-toggle.mjs +0 -113
  222. package/esm2022/datepicker/datepicker.mjs +0 -38
  223. package/esm2022/datepicker/datepicker_public_index.mjs +0 -5
  224. package/esm2022/datepicker/index.mjs +0 -9
  225. package/esm2022/datepicker/month-view.mjs +0 -460
  226. package/esm2022/datepicker/multi-year-view.mjs +0 -330
  227. package/esm2022/datepicker/public-api.mjs +0 -27
  228. package/esm2022/datepicker/testing/calendar-cell-harness.mjs +0 -138
  229. package/esm2022/datepicker/testing/calendar-harness.mjs +0 -83
  230. package/esm2022/datepicker/testing/date-range-input-harness.mjs +0 -98
  231. package/esm2022/datepicker/testing/datepicker-harness-filters.mjs +0 -9
  232. package/esm2022/datepicker/testing/datepicker-input-harness-base.mjs +0 -81
  233. package/esm2022/datepicker/testing/datepicker-input-harness.mjs +0 -58
  234. package/esm2022/datepicker/testing/datepicker-toggle-harness.mjs +0 -41
  235. package/esm2022/datepicker/testing/datepicker-trigger-harness-base.mjs +0 -65
  236. package/esm2022/datepicker/testing/index.mjs +0 -9
  237. package/esm2022/datepicker/testing/public-api.mjs +0 -14
  238. package/esm2022/datepicker/year-view.mjs +0 -324
  239. package/esm2022/dialog/dialog-animations.mjs +0 -38
  240. package/esm2022/dialog/dialog-config.mjs +0 -59
  241. package/esm2022/dialog/dialog-container.mjs +0 -253
  242. package/esm2022/dialog/dialog-content-directives.mjs +0 -212
  243. package/esm2022/dialog/dialog-ref.mjs +0 -177
  244. package/esm2022/dialog/dialog.mjs +0 -212
  245. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  246. package/esm2022/dialog/index.mjs +0 -9
  247. package/esm2022/dialog/module.mjs +0 -45
  248. package/esm2022/dialog/public-api.mjs +0 -15
  249. package/esm2022/dialog/testing/dialog-harness-filters.mjs +0 -9
  250. package/esm2022/dialog/testing/dialog-harness.mjs +0 -84
  251. package/esm2022/dialog/testing/dialog-opener.mjs +0 -58
  252. package/esm2022/dialog/testing/index.mjs +0 -10
  253. package/esm2022/dialog/testing/public-api.mjs +0 -10
  254. package/esm2022/divider/divider-module.mjs +0 -24
  255. package/esm2022/divider/divider.mjs +0 -48
  256. package/esm2022/divider/divider_public_index.mjs +0 -5
  257. package/esm2022/divider/index.mjs +0 -9
  258. package/esm2022/divider/public-api.mjs +0 -10
  259. package/esm2022/divider/testing/divider-harness-filters.mjs +0 -9
  260. package/esm2022/divider/testing/divider-harness.mjs +0 -22
  261. package/esm2022/divider/testing/index.mjs +0 -9
  262. package/esm2022/divider/testing/public-api.mjs +0 -10
  263. package/esm2022/expansion/accordion-base.mjs +0 -14
  264. package/esm2022/expansion/accordion.mjs +0 -96
  265. package/esm2022/expansion/expansion-animations.mjs +0 -51
  266. package/esm2022/expansion/expansion-module.mjs +0 -65
  267. package/esm2022/expansion/expansion-panel-base.mjs +0 -14
  268. package/esm2022/expansion/expansion-panel-content.mjs +0 -35
  269. package/esm2022/expansion/expansion-panel-header.mjs +0 -218
  270. package/esm2022/expansion/expansion-panel.mjs +0 -211
  271. package/esm2022/expansion/expansion_public_index.mjs +0 -5
  272. package/esm2022/expansion/index.mjs +0 -9
  273. package/esm2022/expansion/public-api.mjs +0 -16
  274. package/esm2022/expansion/testing/accordion-harness.mjs +0 -31
  275. package/esm2022/expansion/testing/expansion-harness-filters.mjs +0 -9
  276. package/esm2022/expansion/testing/expansion-harness.mjs +0 -128
  277. package/esm2022/expansion/testing/index.mjs +0 -9
  278. package/esm2022/expansion/testing/public-api.mjs +0 -11
  279. package/esm2022/form-field/directives/error.mjs +0 -48
  280. package/esm2022/form-field/directives/floating-label.mjs +0 -135
  281. package/esm2022/form-field/directives/hint.mjs +0 -40
  282. package/esm2022/form-field/directives/label.mjs +0 -22
  283. package/esm2022/form-field/directives/line-ripple.mjs +0 -60
  284. package/esm2022/form-field/directives/notched-outline.mjs +0 -66
  285. package/esm2022/form-field/directives/prefix.mjs +0 -38
  286. package/esm2022/form-field/directives/suffix.mjs +0 -38
  287. package/esm2022/form-field/form-field-animations.mjs +0 -24
  288. package/esm2022/form-field/form-field-control.mjs +0 -11
  289. package/esm2022/form-field/form-field-errors.mjs +0 -20
  290. package/esm2022/form-field/form-field.mjs +0 -620
  291. package/esm2022/form-field/form-field_public_index.mjs +0 -5
  292. package/esm2022/form-field/index.mjs +0 -9
  293. package/esm2022/form-field/module.mjs +0 -51
  294. package/esm2022/form-field/public-api.mjs +0 -18
  295. package/esm2022/form-field/testing/control/form-field-control-harness.mjs +0 -15
  296. package/esm2022/form-field/testing/control/index.mjs +0 -9
  297. package/esm2022/form-field/testing/error-harness.mjs +0 -29
  298. package/esm2022/form-field/testing/form-field-harness-filters.mjs +0 -9
  299. package/esm2022/form-field/testing/form-field-harness.mjs +0 -179
  300. package/esm2022/form-field/testing/index.mjs +0 -9
  301. package/esm2022/form-field/testing/public-api.mjs +0 -15
  302. package/esm2022/grid-list/grid-list-base.mjs +0 -14
  303. package/esm2022/grid-list/grid-list-module.mjs +0 -59
  304. package/esm2022/grid-list/grid-list.mjs +0 -146
  305. package/esm2022/grid-list/grid-list_public_index.mjs +0 -5
  306. package/esm2022/grid-list/grid-tile.mjs +0 -128
  307. package/esm2022/grid-list/index.mjs +0 -9
  308. package/esm2022/grid-list/public-api.mjs +0 -14
  309. package/esm2022/grid-list/testing/grid-list-harness-filters.mjs +0 -9
  310. package/esm2022/grid-list/testing/grid-list-harness.mjs +0 -76
  311. package/esm2022/grid-list/testing/grid-tile-harness.mjs +0 -71
  312. package/esm2022/grid-list/testing/index.mjs +0 -9
  313. package/esm2022/grid-list/testing/public-api.mjs +0 -11
  314. package/esm2022/grid-list/tile-coordinator.mjs +0 -145
  315. package/esm2022/grid-list/tile-styler.mjs +0 -231
  316. package/esm2022/icon/fake-svgs.mjs +0 -62
  317. package/esm2022/icon/icon-module.mjs +0 -24
  318. package/esm2022/icon/icon-registry.mjs +0 -592
  319. package/esm2022/icon/icon.mjs +0 -379
  320. package/esm2022/icon/icon_public_index.mjs +0 -5
  321. package/esm2022/icon/index.mjs +0 -9
  322. package/esm2022/icon/public-api.mjs +0 -11
  323. package/esm2022/icon/testing/fake-icon-registry.mjs +0 -92
  324. package/esm2022/icon/testing/icon-harness-filters.mjs +0 -14
  325. package/esm2022/icon/testing/icon-harness.mjs +0 -60
  326. package/esm2022/icon/testing/index.mjs +0 -9
  327. package/esm2022/icon/testing/public-api.mjs +0 -11
  328. package/esm2022/icon/testing/testing_public_index.mjs +0 -5
  329. package/esm2022/icon/trusted-types.mjs +0 -43
  330. package/esm2022/index.mjs +0 -14
  331. package/esm2022/input/index.mjs +0 -9
  332. package/esm2022/input/input-errors.mjs +0 -12
  333. package/esm2022/input/input-value-accessor.mjs +0 -16
  334. package/esm2022/input/input.mjs +0 -524
  335. package/esm2022/input/input_public_index.mjs +0 -5
  336. package/esm2022/input/module.mjs +0 -26
  337. package/esm2022/input/public-api.mjs +0 -14
  338. package/esm2022/input/testing/index.mjs +0 -9
  339. package/esm2022/input/testing/input-harness-filters.mjs +0 -9
  340. package/esm2022/input/testing/input-harness.mjs +0 -119
  341. package/esm2022/input/testing/native-option-harness.mjs +0 -42
  342. package/esm2022/input/testing/native-select-harness-filters.mjs +0 -9
  343. package/esm2022/input/testing/native-select-harness.mjs +0 -79
  344. package/esm2022/input/testing/public-api.mjs +0 -13
  345. package/esm2022/list/action-list.mjs +0 -31
  346. package/esm2022/list/index.mjs +0 -9
  347. package/esm2022/list/list-base.mjs +0 -284
  348. package/esm2022/list/list-item-sections.mjs +0 -144
  349. package/esm2022/list/list-module.mjs +0 -97
  350. package/esm2022/list/list-option-types.mjs +0 -16
  351. package/esm2022/list/list-option.mjs +0 -295
  352. package/esm2022/list/list.mjs +0 -103
  353. package/esm2022/list/list_public_index.mjs +0 -5
  354. package/esm2022/list/nav-list.mjs +0 -37
  355. package/esm2022/list/public-api.mjs +0 -18
  356. package/esm2022/list/selection-list.mjs +0 -391
  357. package/esm2022/list/subheader.mjs +0 -28
  358. package/esm2022/list/testing/action-list-harness.mjs +0 -59
  359. package/esm2022/list/testing/index.mjs +0 -9
  360. package/esm2022/list/testing/list-harness-base.mjs +0 -95
  361. package/esm2022/list/testing/list-harness-filters.mjs +0 -9
  362. package/esm2022/list/testing/list-harness.mjs +0 -41
  363. package/esm2022/list/testing/list-item-harness-base.mjs +0 -162
  364. package/esm2022/list/testing/nav-list-harness.mjs +0 -69
  365. package/esm2022/list/testing/public-api.mjs +0 -14
  366. package/esm2022/list/testing/selection-list-harness.mjs +0 -122
  367. package/esm2022/list/tokens.mjs +0 -11
  368. package/esm2022/menu/index.mjs +0 -9
  369. package/esm2022/menu/menu-animations.mjs +0 -61
  370. package/esm2022/menu/menu-content.mjs +0 -87
  371. package/esm2022/menu/menu-errors.mjs +0 -35
  372. package/esm2022/menu/menu-item.mjs +0 -148
  373. package/esm2022/menu/menu-panel.mjs +0 -14
  374. package/esm2022/menu/menu-positions.mjs +0 -9
  375. package/esm2022/menu/menu-trigger.mjs +0 -542
  376. package/esm2022/menu/menu.mjs +0 -405
  377. package/esm2022/menu/menu_public_index.mjs +0 -5
  378. package/esm2022/menu/module.mjs +0 -63
  379. package/esm2022/menu/public-api.mjs +0 -16
  380. package/esm2022/menu/testing/index.mjs +0 -9
  381. package/esm2022/menu/testing/menu-harness-filters.mjs +0 -9
  382. package/esm2022/menu/testing/menu-harness.mjs +0 -166
  383. package/esm2022/menu/testing/public-api.mjs +0 -10
  384. package/esm2022/paginator/index.mjs +0 -9
  385. package/esm2022/paginator/module.mjs +0 -28
  386. package/esm2022/paginator/paginator-intl.mjs +0 -62
  387. package/esm2022/paginator/paginator.mjs +0 -266
  388. package/esm2022/paginator/paginator_public_index.mjs +0 -5
  389. package/esm2022/paginator/public-api.mjs +0 -11
  390. package/esm2022/paginator/testing/index.mjs +0 -9
  391. package/esm2022/paginator/testing/paginator-harness-filters.mjs +0 -9
  392. package/esm2022/paginator/testing/paginator-harness.mjs +0 -98
  393. package/esm2022/paginator/testing/public-api.mjs +0 -10
  394. package/esm2022/progress-bar/index.mjs +0 -9
  395. package/esm2022/progress-bar/module.mjs +0 -24
  396. package/esm2022/progress-bar/progress-bar.mjs +0 -181
  397. package/esm2022/progress-bar/progress-bar_public_index.mjs +0 -5
  398. package/esm2022/progress-bar/public-api.mjs +0 -10
  399. package/esm2022/progress-bar/testing/index.mjs +0 -9
  400. package/esm2022/progress-bar/testing/progress-bar-harness-filters.mjs +0 -9
  401. package/esm2022/progress-bar/testing/progress-bar-harness.mjs +0 -33
  402. package/esm2022/progress-bar/testing/public-api.mjs +0 -10
  403. package/esm2022/progress-bar/testing/testing_public_index.mjs +0 -5
  404. package/esm2022/progress-spinner/index.mjs +0 -9
  405. package/esm2022/progress-spinner/module.mjs +0 -25
  406. package/esm2022/progress-spinner/progress-spinner.mjs +0 -166
  407. package/esm2022/progress-spinner/progress-spinner_public_index.mjs +0 -5
  408. package/esm2022/progress-spinner/public-api.mjs +0 -10
  409. package/esm2022/progress-spinner/testing/index.mjs +0 -9
  410. package/esm2022/progress-spinner/testing/progress-spinner-harness-filters.mjs +0 -9
  411. package/esm2022/progress-spinner/testing/progress-spinner-harness.mjs +0 -35
  412. package/esm2022/progress-spinner/testing/public-api.mjs +0 -10
  413. package/esm2022/progress-spinner/testing/testing_public_index.mjs +0 -5
  414. package/esm2022/radio/index.mjs +0 -9
  415. package/esm2022/radio/module.mjs +0 -25
  416. package/esm2022/radio/public-api.mjs +0 -10
  417. package/esm2022/radio/radio.mjs +0 -680
  418. package/esm2022/radio/radio_public_index.mjs +0 -5
  419. package/esm2022/radio/testing/index.mjs +0 -9
  420. package/esm2022/radio/testing/public-api.mjs +0 -10
  421. package/esm2022/radio/testing/radio-harness-filters.mjs +0 -9
  422. package/esm2022/radio/testing/radio-harness.mjs +0 -228
  423. package/esm2022/select/index.mjs +0 -9
  424. package/esm2022/select/module.mjs +0 -59
  425. package/esm2022/select/public-api.mjs +0 -15
  426. package/esm2022/select/select-animations.mjs +0 -38
  427. package/esm2022/select/select-errors.mjs +0 -35
  428. package/esm2022/select/select.mjs +0 -1160
  429. package/esm2022/select/select_public_index.mjs +0 -5
  430. package/esm2022/select/testing/index.mjs +0 -9
  431. package/esm2022/select/testing/public-api.mjs +0 -10
  432. package/esm2022/select/testing/select-harness-filters.mjs +0 -9
  433. package/esm2022/select/testing/select-harness.mjs +0 -129
  434. package/esm2022/sidenav/drawer-animations.mjs +0 -33
  435. package/esm2022/sidenav/drawer.mjs +0 -863
  436. package/esm2022/sidenav/index.mjs +0 -9
  437. package/esm2022/sidenav/public-api.mjs +0 -12
  438. package/esm2022/sidenav/sidenav-module.mjs +0 -60
  439. package/esm2022/sidenav/sidenav.mjs +0 -148
  440. package/esm2022/sidenav/sidenav_public_index.mjs +0 -5
  441. package/esm2022/sidenav/testing/drawer-container-harness.mjs +0 -36
  442. package/esm2022/sidenav/testing/drawer-content-harness.mjs +0 -23
  443. package/esm2022/sidenav/testing/drawer-harness-filters.mjs +0 -9
  444. package/esm2022/sidenav/testing/drawer-harness.mjs +0 -49
  445. package/esm2022/sidenav/testing/index.mjs +0 -9
  446. package/esm2022/sidenav/testing/public-api.mjs +0 -15
  447. package/esm2022/sidenav/testing/sidenav-container-harness.mjs +0 -36
  448. package/esm2022/sidenav/testing/sidenav-content-harness.mjs +0 -23
  449. package/esm2022/sidenav/testing/sidenav-harness.mjs +0 -28
  450. package/esm2022/slide-toggle/index.mjs +0 -9
  451. package/esm2022/slide-toggle/module.mjs +0 -41
  452. package/esm2022/slide-toggle/public-api.mjs +0 -12
  453. package/esm2022/slide-toggle/slide-toggle-config.mjs +0 -14
  454. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +0 -44
  455. package/esm2022/slide-toggle/slide-toggle.mjs +0 -273
  456. package/esm2022/slide-toggle/slide-toggle_public_index.mjs +0 -5
  457. package/esm2022/slide-toggle/testing/index.mjs +0 -9
  458. package/esm2022/slide-toggle/testing/public-api.mjs +0 -10
  459. package/esm2022/slide-toggle/testing/slide-toggle-harness-filters.mjs +0 -9
  460. package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +0 -110
  461. package/esm2022/slider/index.mjs +0 -9
  462. package/esm2022/slider/module.mjs +0 -39
  463. package/esm2022/slider/public-api.mjs +0 -13
  464. package/esm2022/slider/slider-input.mjs +0 -701
  465. package/esm2022/slider/slider-interface.mjs +0 -56
  466. package/esm2022/slider/slider-thumb.mjs +0 -231
  467. package/esm2022/slider/slider.mjs +0 -746
  468. package/esm2022/slider/slider_public_index.mjs +0 -5
  469. package/esm2022/slider/testing/index.mjs +0 -9
  470. package/esm2022/slider/testing/public-api.mjs +0 -11
  471. package/esm2022/slider/testing/slider-harness-filters.mjs +0 -7
  472. package/esm2022/slider/testing/slider-harness.mjs +0 -67
  473. package/esm2022/slider/testing/slider-thumb-harness.mjs +0 -95
  474. package/esm2022/snack-bar/index.mjs +0 -9
  475. package/esm2022/snack-bar/module.mjs +0 -47
  476. package/esm2022/snack-bar/public-api.mjs +0 -16
  477. package/esm2022/snack-bar/simple-snack-bar.mjs +0 -40
  478. package/esm2022/snack-bar/snack-bar-animations.mjs +0 -30
  479. package/esm2022/snack-bar/snack-bar-config.mjs +0 -33
  480. package/esm2022/snack-bar/snack-bar-container.mjs +0 -277
  481. package/esm2022/snack-bar/snack-bar-content.mjs +0 -55
  482. package/esm2022/snack-bar/snack-bar-ref.mjs +0 -89
  483. package/esm2022/snack-bar/snack-bar.mjs +0 -267
  484. package/esm2022/snack-bar/snack-bar_public_index.mjs +0 -5
  485. package/esm2022/snack-bar/testing/index.mjs +0 -9
  486. package/esm2022/snack-bar/testing/public-api.mjs +0 -10
  487. package/esm2022/snack-bar/testing/snack-bar-harness-filters.mjs +0 -9
  488. package/esm2022/snack-bar/testing/snack-bar-harness.mjs +0 -101
  489. package/esm2022/sort/index.mjs +0 -9
  490. package/esm2022/sort/public-api.mjs +0 -14
  491. package/esm2022/sort/sort-animations.mjs +0 -69
  492. package/esm2022/sort/sort-direction.mjs +0 -9
  493. package/esm2022/sort/sort-errors.mjs +0 -24
  494. package/esm2022/sort/sort-header-intl.mjs +0 -41
  495. package/esm2022/sort/sort-header.mjs +0 -317
  496. package/esm2022/sort/sort-module.mjs +0 -27
  497. package/esm2022/sort/sort.mjs +0 -155
  498. package/esm2022/sort/sort_public_index.mjs +0 -5
  499. package/esm2022/sort/testing/index.mjs +0 -9
  500. package/esm2022/sort/testing/public-api.mjs +0 -11
  501. package/esm2022/sort/testing/sort-harness-filters.mjs +0 -2
  502. package/esm2022/sort/testing/sort-harness.mjs +0 -36
  503. package/esm2022/sort/testing/sort-header-harness.mjs +0 -56
  504. package/esm2022/stepper/index.mjs +0 -9
  505. package/esm2022/stepper/public-api.mjs +0 -17
  506. package/esm2022/stepper/step-content.mjs +0 -27
  507. package/esm2022/stepper/step-header.mjs +0 -105
  508. package/esm2022/stepper/step-label.mjs +0 -22
  509. package/esm2022/stepper/stepper-animations.mjs +0 -47
  510. package/esm2022/stepper/stepper-button.mjs +0 -43
  511. package/esm2022/stepper/stepper-icon.mjs +0 -30
  512. package/esm2022/stepper/stepper-intl.mjs +0 -43
  513. package/esm2022/stepper/stepper-module.mjs +0 -88
  514. package/esm2022/stepper/stepper.mjs +0 -205
  515. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  516. package/esm2022/stepper/testing/index.mjs +0 -9
  517. package/esm2022/stepper/testing/public-api.mjs +0 -12
  518. package/esm2022/stepper/testing/step-harness-filters.mjs +0 -7
  519. package/esm2022/stepper/testing/step-harness.mjs +0 -90
  520. package/esm2022/stepper/testing/stepper-button-harnesses.mjs +0 -48
  521. package/esm2022/stepper/testing/stepper-harness.mjs +0 -51
  522. package/esm2022/table/cell.mjs +0 -147
  523. package/esm2022/table/index.mjs +0 -9
  524. package/esm2022/table/module.mjs +0 -93
  525. package/esm2022/table/public-api.mjs +0 -14
  526. package/esm2022/table/row.mjs +0 -163
  527. package/esm2022/table/table-data-source.mjs +0 -317
  528. package/esm2022/table/table.mjs +0 -122
  529. package/esm2022/table/table_public_index.mjs +0 -5
  530. package/esm2022/table/testing/cell-harness.mjs +0 -77
  531. package/esm2022/table/testing/index.mjs +0 -9
  532. package/esm2022/table/testing/public-api.mjs +0 -12
  533. package/esm2022/table/testing/row-harness.mjs +0 -84
  534. package/esm2022/table/testing/table-harness-filters.mjs +0 -2
  535. package/esm2022/table/testing/table-harness.mjs +0 -86
  536. package/esm2022/table/text-column.mjs +0 -60
  537. package/esm2022/tabs/index.mjs +0 -9
  538. package/esm2022/tabs/ink-bar.mjs +0 -149
  539. package/esm2022/tabs/module.mjs +0 -60
  540. package/esm2022/tabs/paginated-tab-header.mjs +0 -539
  541. package/esm2022/tabs/public-api.mjs +0 -21
  542. package/esm2022/tabs/tab-body.mjs +0 -199
  543. package/esm2022/tabs/tab-config.mjs +0 -11
  544. package/esm2022/tabs/tab-content.mjs +0 -32
  545. package/esm2022/tabs/tab-group.mjs +0 -469
  546. package/esm2022/tabs/tab-header.mjs +0 -86
  547. package/esm2022/tabs/tab-label-wrapper.mjs +0 -49
  548. package/esm2022/tabs/tab-label.mjs +0 -44
  549. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -388
  550. package/esm2022/tabs/tab.mjs +0 -128
  551. package/esm2022/tabs/tabs-animations.mjs +0 -45
  552. package/esm2022/tabs/tabs_public_index.mjs +0 -5
  553. package/esm2022/tabs/testing/index.mjs +0 -9
  554. package/esm2022/tabs/testing/public-api.mjs +0 -13
  555. package/esm2022/tabs/testing/tab-group-harness.mjs +0 -56
  556. package/esm2022/tabs/testing/tab-harness-filters.mjs +0 -2
  557. package/esm2022/tabs/testing/tab-harness.mjs +0 -66
  558. package/esm2022/tabs/testing/tab-link-harness.mjs +0 -40
  559. package/esm2022/tabs/testing/tab-nav-bar-harness.mjs +0 -66
  560. package/esm2022/tabs/testing/tab-nav-panel-harness.mjs +0 -27
  561. package/esm2022/toolbar/index.mjs +0 -9
  562. package/esm2022/toolbar/public-api.mjs +0 -10
  563. package/esm2022/toolbar/testing/index.mjs +0 -9
  564. package/esm2022/toolbar/testing/public-api.mjs +0 -10
  565. package/esm2022/toolbar/testing/toolbar-harness-filters.mjs +0 -9
  566. package/esm2022/toolbar/testing/toolbar-harness.mjs +0 -44
  567. package/esm2022/toolbar/toolbar-module.mjs +0 -24
  568. package/esm2022/toolbar/toolbar.mjs +0 -84
  569. package/esm2022/toolbar/toolbar_public_index.mjs +0 -5
  570. package/esm2022/tooltip/index.mjs +0 -9
  571. package/esm2022/tooltip/module.mjs +0 -29
  572. package/esm2022/tooltip/public-api.mjs +0 -11
  573. package/esm2022/tooltip/testing/index.mjs +0 -9
  574. package/esm2022/tooltip/testing/public-api.mjs +0 -10
  575. package/esm2022/tooltip/testing/tooltip-harness-filters.mjs +0 -9
  576. package/esm2022/tooltip/testing/tooltip-harness.mjs +0 -66
  577. package/esm2022/tooltip/tooltip-animations.mjs +0 -24
  578. package/esm2022/tooltip/tooltip.mjs +0 -920
  579. package/esm2022/tooltip/tooltip_public_index.mjs +0 -5
  580. package/esm2022/tree/data-source/flat-data-source.mjs +0 -156
  581. package/esm2022/tree/data-source/nested-data-source.mjs +0 -38
  582. package/esm2022/tree/index.mjs +0 -9
  583. package/esm2022/tree/node.mjs +0 -220
  584. package/esm2022/tree/outlet.mjs +0 -46
  585. package/esm2022/tree/padding.mjs +0 -46
  586. package/esm2022/tree/public-api.mjs +0 -16
  587. package/esm2022/tree/testing/index.mjs +0 -9
  588. package/esm2022/tree/testing/node-harness.mjs +0 -73
  589. package/esm2022/tree/testing/public-api.mjs +0 -11
  590. package/esm2022/tree/testing/tree-harness-filters.mjs +0 -9
  591. package/esm2022/tree/testing/tree-harness.mjs +0 -123
  592. package/esm2022/tree/toggle.mjs +0 -27
  593. package/esm2022/tree/tree-module.mjs +0 -50
  594. package/esm2022/tree/tree.mjs +0 -34
  595. package/esm2022/tree/tree_public_index.mjs +0 -5
@@ -1,163 +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 { CdkFooterRow, CdkFooterRowDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef, CdkNoDataRow, CdkCellOutlet, } from '@angular/cdk/table';
9
- import { ChangeDetectionStrategy, Component, Directive, ViewEncapsulation, booleanAttribute, } from '@angular/core';
10
- import * as i0 from "@angular/core";
11
- // We can't reuse `CDK_ROW_TEMPLATE` because it's incompatible with local compilation mode.
12
- const ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;
13
- /**
14
- * Header row definition for the mat-table.
15
- * Captures the header row's template and other header properties such as the columns to display.
16
- */
17
- export class MatHeaderRowDef extends CdkHeaderRowDef {
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatHeaderRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0-next.2", type: MatHeaderRowDef, isStandalone: true, selector: "[matHeaderRowDef]", inputs: { columns: ["matHeaderRowDef", "columns"], sticky: ["matHeaderRowDefSticky", "sticky", booleanAttribute] }, providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }], usesInheritance: true, ngImport: i0 }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatHeaderRowDef, decorators: [{
22
- type: Directive,
23
- args: [{
24
- selector: '[matHeaderRowDef]',
25
- providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],
26
- inputs: [
27
- { name: 'columns', alias: 'matHeaderRowDef' },
28
- { name: 'sticky', alias: 'matHeaderRowDefSticky', transform: booleanAttribute },
29
- ],
30
- standalone: true,
31
- }]
32
- }] });
33
- /**
34
- * Footer row definition for the mat-table.
35
- * Captures the footer row's template and other footer properties such as the columns to display.
36
- */
37
- export class MatFooterRowDef extends CdkFooterRowDef {
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatFooterRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
39
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0-next.2", type: MatFooterRowDef, isStandalone: true, selector: "[matFooterRowDef]", inputs: { columns: ["matFooterRowDef", "columns"], sticky: ["matFooterRowDefSticky", "sticky", booleanAttribute] }, providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }], usesInheritance: true, ngImport: i0 }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatFooterRowDef, decorators: [{
42
- type: Directive,
43
- args: [{
44
- selector: '[matFooterRowDef]',
45
- providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],
46
- inputs: [
47
- { name: 'columns', alias: 'matFooterRowDef' },
48
- { name: 'sticky', alias: 'matFooterRowDefSticky', transform: booleanAttribute },
49
- ],
50
- standalone: true,
51
- }]
52
- }] });
53
- /**
54
- * Data row definition for the mat-table.
55
- * Captures the data row's template and other properties such as the columns to display and
56
- * a when predicate that describes when this row should be used.
57
- */
58
- export class MatRowDef extends CdkRowDef {
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
60
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0-next.2", type: MatRowDef, isStandalone: true, selector: "[matRowDef]", inputs: { columns: ["matRowDefColumns", "columns"], when: ["matRowDefWhen", "when"] }, providers: [{ provide: CdkRowDef, useExisting: MatRowDef }], usesInheritance: true, ngImport: i0 }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatRowDef, decorators: [{
63
- type: Directive,
64
- args: [{
65
- selector: '[matRowDef]',
66
- providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],
67
- inputs: [
68
- { name: 'columns', alias: 'matRowDefColumns' },
69
- { name: 'when', alias: 'matRowDefWhen' },
70
- ],
71
- standalone: true,
72
- }]
73
- }] });
74
- /** Header template container that contains the cell outlet. Adds the right class and role. */
75
- export class MatHeaderRow extends CdkHeaderRow {
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatHeaderRow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0-next.2", type: MatHeaderRow, isStandalone: true, selector: "mat-header-row, tr[mat-header-row]", host: { attributes: { "role": "row" }, classAttribute: "mat-mdc-header-row mdc-data-table__header-row" }, providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }], exportAs: ["matHeaderRow"], usesInheritance: true, ngImport: i0, template: "<ng-container cdkCellOutlet></ng-container>", isInline: true, dependencies: [{ kind: "directive", type: CdkCellOutlet, selector: "[cdkCellOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
78
- }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatHeaderRow, decorators: [{
80
- type: Component,
81
- args: [{
82
- selector: 'mat-header-row, tr[mat-header-row]',
83
- template: ROW_TEMPLATE,
84
- host: {
85
- 'class': 'mat-mdc-header-row mdc-data-table__header-row',
86
- 'role': 'row',
87
- },
88
- // See note on CdkTable for explanation on why this uses the default change detection strategy.
89
- // tslint:disable-next-line:validate-decorators
90
- changeDetection: ChangeDetectionStrategy.Default,
91
- encapsulation: ViewEncapsulation.None,
92
- exportAs: 'matHeaderRow',
93
- providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],
94
- standalone: true,
95
- imports: [CdkCellOutlet],
96
- }]
97
- }] });
98
- /** Footer template container that contains the cell outlet. Adds the right class and role. */
99
- export class MatFooterRow extends CdkFooterRow {
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatFooterRow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0-next.2", type: MatFooterRow, isStandalone: true, selector: "mat-footer-row, tr[mat-footer-row]", host: { attributes: { "role": "row" }, classAttribute: "mat-mdc-footer-row mdc-data-table__row" }, providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }], exportAs: ["matFooterRow"], usesInheritance: true, ngImport: i0, template: "<ng-container cdkCellOutlet></ng-container>", isInline: true, dependencies: [{ kind: "directive", type: CdkCellOutlet, selector: "[cdkCellOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
102
- }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatFooterRow, decorators: [{
104
- type: Component,
105
- args: [{
106
- selector: 'mat-footer-row, tr[mat-footer-row]',
107
- template: ROW_TEMPLATE,
108
- host: {
109
- 'class': 'mat-mdc-footer-row mdc-data-table__row',
110
- 'role': 'row',
111
- },
112
- // See note on CdkTable for explanation on why this uses the default change detection strategy.
113
- // tslint:disable-next-line:validate-decorators
114
- changeDetection: ChangeDetectionStrategy.Default,
115
- encapsulation: ViewEncapsulation.None,
116
- exportAs: 'matFooterRow',
117
- providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],
118
- standalone: true,
119
- imports: [CdkCellOutlet],
120
- }]
121
- }] });
122
- /** Data row template container that contains the cell outlet. Adds the right class and role. */
123
- export class MatRow extends CdkRow {
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatRow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0-next.2", type: MatRow, isStandalone: true, selector: "mat-row, tr[mat-row]", host: { attributes: { "role": "row" }, classAttribute: "mat-mdc-row mdc-data-table__row" }, providers: [{ provide: CdkRow, useExisting: MatRow }], exportAs: ["matRow"], usesInheritance: true, ngImport: i0, template: "<ng-container cdkCellOutlet></ng-container>", isInline: true, dependencies: [{ kind: "directive", type: CdkCellOutlet, selector: "[cdkCellOutlet]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
126
- }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatRow, decorators: [{
128
- type: Component,
129
- args: [{
130
- selector: 'mat-row, tr[mat-row]',
131
- template: ROW_TEMPLATE,
132
- host: {
133
- 'class': 'mat-mdc-row mdc-data-table__row',
134
- 'role': 'row',
135
- },
136
- // See note on CdkTable for explanation on why this uses the default change detection strategy.
137
- // tslint:disable-next-line:validate-decorators
138
- changeDetection: ChangeDetectionStrategy.Default,
139
- encapsulation: ViewEncapsulation.None,
140
- exportAs: 'matRow',
141
- providers: [{ provide: CdkRow, useExisting: MatRow }],
142
- standalone: true,
143
- imports: [CdkCellOutlet],
144
- }]
145
- }] });
146
- /** Row that can be used to display a message when no data is shown in the table. */
147
- export class MatNoDataRow extends CdkNoDataRow {
148
- constructor() {
149
- super(...arguments);
150
- this._contentClassName = 'mat-mdc-no-data-row';
151
- }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatNoDataRow, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0-next.2", type: MatNoDataRow, isStandalone: true, selector: "ng-template[matNoDataRow]", providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }], usesInheritance: true, ngImport: i0 }); }
154
- }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatNoDataRow, decorators: [{
156
- type: Directive,
157
- args: [{
158
- selector: 'ng-template[matNoDataRow]',
159
- providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }],
160
- standalone: true,
161
- }]
162
- }] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3RhYmxlL3Jvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osZUFBZSxFQUNmLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDOztBQUV2QiwyRkFBMkY7QUFDM0YsTUFBTSxZQUFZLEdBQUcsNkNBQTZDLENBQUM7QUFFbkU7OztHQUdHO0FBVUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtxSEFBdkMsZUFBZTt5R0FBZixlQUFlLG9KQUpvQyxnQkFBZ0IsZ0JBSG5FLENBQUMsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUMsQ0FBQzs7a0dBTzFELGVBQWU7a0JBVDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsU0FBUyxFQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsaUJBQWlCLEVBQUMsQ0FBQztvQkFDckUsTUFBTSxFQUFFO3dCQUNOLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUM7d0JBQzNDLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDO3FCQUM5RTtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBR0Q7OztHQUdHO0FBVUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtxSEFBdkMsZUFBZTt5R0FBZixl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b3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2RrRm9vdGVyUm93LFxuICBDZGtGb290ZXJSb3dEZWYsXG4gIENka0hlYWRlclJvdyxcbiAgQ2RrSGVhZGVyUm93RGVmLFxuICBDZGtSb3csXG4gIENka1Jvd0RlZixcbiAgQ2RrTm9EYXRhUm93LFxuICBDZGtDZWxsT3V0bGV0LFxufSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIFdlIGNhbid0IHJldXNlIGBDREtfUk9XX1RFTVBMQVRFYCBiZWNhdXNlIGl0J3MgaW5jb21wYXRpYmxlIHdpdGggbG9jYWwgY29tcGlsYXRpb24gbW9kZS5cbmNvbnN0IFJPV19URU1QTEFURSA9IGA8bmctY29udGFpbmVyIGNka0NlbGxPdXRsZXQ+PC9uZy1jb250YWluZXI+YDtcblxuLyoqXG4gKiBIZWFkZXIgcm93IGRlZmluaXRpb24gZm9yIHRoZSBtYXQtdGFibGUuXG4gKiBDYXB0dXJlcyB0aGUgaGVhZGVyIHJvdydzIHRlbXBsYXRlIGFuZCBvdGhlciBoZWFkZXIgcHJvcGVydGllcyBzdWNoIGFzIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRIZWFkZXJSb3dEZWZdJyxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENka0hlYWRlclJvd0RlZiwgdXNlRXhpc3Rpbmc6IE1hdEhlYWRlclJvd0RlZn1dLFxuICBpbnB1dHM6IFtcbiAgICB7bmFtZTogJ2NvbHVtbnMnLCBhbGlhczogJ21hdEhlYWRlclJvd0RlZid9LFxuICAgIHtuYW1lOiAnc3RpY2t5JywgYWxpYXM6ICdtYXRIZWFkZXJSb3dEZWZTdGlja3knLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRIZWFkZXJSb3dEZWYgZXh0ZW5kcyBDZGtIZWFkZXJSb3dEZWYge31cblxuLyoqXG4gKiBGb290ZXIgcm93IGRlZmluaXRpb24gZm9yIHRoZSBtYXQtdGFibGUuXG4gKiBDYXB0dXJlcyB0aGUgZm9vdGVyIHJvdydzIHRlbXBsYXRlIGFuZCBvdGhlciBmb290ZXIgcHJvcGVydGllcyBzdWNoIGFzIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRGb290ZXJSb3dEZWZdJyxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENka0Zvb3RlclJvd0RlZiwgdXNlRXhpc3Rpbmc6IE1hdEZvb3RlclJvd0RlZn1dLFxuICBpbnB1dHM6IFtcbiAgICB7bmFtZTogJ2NvbHVtbnMnLCBhbGlhczogJ21hdEZvb3RlclJvd0RlZid9LFxuICAgIHtuYW1lOiAnc3RpY2t5JywgYWxpYXM6ICdtYXRGb290ZXJSb3dEZWZTdGlja3knLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRGb290ZXJSb3dEZWYgZXh0ZW5kcyBDZGtGb290ZXJSb3dEZWYge31cblxuLyoqXG4gKiBEYXRhIHJvdyBkZWZpbml0aW9uIGZvciB0aGUgbWF0LXRhYmxlLlxuICogQ2FwdHVyZXMgdGhlIGRhdGEgcm93J3MgdGVtcGxhdGUgYW5kIG90aGVyIHByb3BlcnRpZXMgc3VjaCBhcyB0aGUgY29sdW1ucyB0byBkaXNwbGF5IGFuZFxuICogYSB3aGVuIHByZWRpY2F0ZSB0aGF0IGRlc2NyaWJlcyB3aGVuIHRoaXMgcm93IHNob3VsZCBiZSB1c2VkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF0Um93RGVmXScsXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBDZGtSb3dEZWYsIHVzZUV4aXN0aW5nOiBNYXRSb3dEZWZ9XSxcbiAgaW5wdXRzOiBbXG4gICAge25hbWU6ICdjb2x1bW5zJywgYWxpYXM6ICdtYXRSb3dEZWZDb2x1bW5zJ30sXG4gICAge25hbWU6ICd3aGVuJywgYWxpYXM6ICdtYXRSb3dEZWZXaGVuJ30sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE1hdFJvd0RlZjxUPiBleHRlbmRzIENka1Jvd0RlZjxUPiB7fVxuXG4vKiogSGVhZGVyIHRlbXBsYXRlIGNvbnRhaW5lciB0aGF0IGNvbnRhaW5zIHRoZSBjZWxsIG91dGxldC4gQWRkcyB0aGUgcmlnaHQgY2xhc3MgYW5kIHJvbGUuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtaGVhZGVyLXJvdywgdHJbbWF0LWhlYWRlci1yb3ddJyxcbiAgdGVtcGxhdGU6IFJPV19URU1QTEFURSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtYXQtbWRjLWhlYWRlci1yb3cgbWRjLWRhdGEtdGFibGVfX2hlYWRlci1yb3cnLFxuICAgICdyb2xlJzogJ3JvdycsXG4gIH0sXG4gIC8vIFNlZSBub3RlIG9uIENka1RhYmxlIGZvciBleHBsYW5hdGlvbiBvbiB3aHkgdGhpcyB1c2VzIHRoZSBkZWZhdWx0IGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YWxpZGF0ZS1kZWNvcmF0b3JzXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgZXhwb3J0QXM6ICdtYXRIZWFkZXJSb3cnLFxuICBwcm92aWRlcnM6IFt7cHJvdmlkZTogQ2RrSGVhZGVyUm93LCB1c2VFeGlzdGluZzogTWF0SGVhZGVyUm93fV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDZGtDZWxsT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0SGVhZGVyUm93IGV4dGVuZHMgQ2RrSGVhZGVyUm93IHt9XG5cbi8qKiBGb290ZXIgdGVtcGxhdGUgY29udGFpbmVyIHRoYXQgY29udGFpbnMgdGhlIGNlbGwgb3V0bGV0LiBBZGRzIHRoZSByaWdodCBjbGFzcyBhbmQgcm9sZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1mb290ZXItcm93LCB0clttYXQtZm9vdGVyLXJvd10nLFxuICB0ZW1wbGF0ZTogUk9XX1RFTVBMQVRFLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1tZGMtZm9vdGVyLXJvdyBtZGMtZGF0YS10YWJsZV9fcm93JyxcbiAgICAncm9sZSc6ICdyb3cnLFxuICB9LFxuICAvLyBTZWUgbm90ZSBvbiBDZGtUYWJsZSBmb3IgZXhwbGFuYXRpb24gb24gd2h5IHRoaXMgdXNlcyB0aGUgZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LlxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFsaWRhdGUtZGVjb3JhdG9yc1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGV4cG9ydEFzOiAnbWF0Rm9vdGVyUm93JyxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENka0Zvb3RlclJvdywgdXNlRXhpc3Rpbmc6IE1hdEZvb3RlclJvd31dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ2RrQ2VsbE91dGxldF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdEZvb3RlclJvdyBleHRlbmRzIENka0Zvb3RlclJvdyB7fVxuXG4vKiogRGF0YSByb3cgdGVtcGxhdGUgY29udGFpbmVyIHRoYXQgY29udGFpbnMgdGhlIGNlbGwgb3V0bGV0LiBBZGRzIHRoZSByaWdodCBjbGFzcyBhbmQgcm9sZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1yb3csIHRyW21hdC1yb3ddJyxcbiAgdGVtcGxhdGU6IFJPV19URU1QTEFURSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtYXQtbWRjLXJvdyBtZGMtZGF0YS10YWJsZV9fcm93JyxcbiAgICAncm9sZSc6ICdyb3cnLFxuICB9LFxuICAvLyBTZWUgbm90ZSBvbiBDZGtUYWJsZSBmb3IgZXhwbGFuYXRpb24gb24gd2h5IHRoaXMgdXNlcyB0aGUgZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LlxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFsaWRhdGUtZGVjb3JhdG9yc1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGV4cG9ydEFzOiAnbWF0Um93JyxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IENka1JvdywgdXNlRXhpc3Rpbmc6IE1hdFJvd31dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ2RrQ2VsbE91dGxldF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdFJvdyBleHRlbmRzIENka1JvdyB7fVxuXG4vKiogUm93IHRoYXQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBhIG1lc3NhZ2Ugd2hlbiBubyBkYXRhIGlzIHNob3duIGluIHRoZSB0YWJsZS4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW21hdE5vRGF0YVJvd10nLFxuICBwcm92aWRlcnM6IFt7cHJvdmlkZTogQ2RrTm9EYXRhUm93LCB1c2VFeGlzdGluZzogTWF0Tm9EYXRhUm93fV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE1hdE5vRGF0YVJvdyBleHRlbmRzIENka05vRGF0YVJvdyB7XG4gIG92ZXJyaWRlIF9jb250ZW50Q2xhc3NOYW1lID0gJ21hdC1tZGMtbm8tZGF0YS1yb3cnO1xufVxuIl19
@@ -1,317 +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 { BehaviorSubject, combineLatest, merge, of as observableOf, Subject, } from 'rxjs';
9
- import { DataSource } from '@angular/cdk/collections';
10
- import { _isNumberValue } from '@angular/cdk/coercion';
11
- import { map } from 'rxjs/operators';
12
- /**
13
- * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to
14
- * flaky browser support and the value not being defined in Closure's typings.
15
- */
16
- const MAX_SAFE_INTEGER = 9007199254740991;
17
- /**
18
- * Data source that accepts a client-side data array and includes native support of filtering,
19
- * sorting (using MatSort), and pagination (using MatPaginator).
20
- *
21
- * Allows for sort customization by overriding sortingDataAccessor, which defines how data
22
- * properties are accessed. Also allows for filter customization by overriding filterPredicate,
23
- * which defines how row data is converted to a string for filter matching.
24
- *
25
- * **Note:** This class is meant to be a simple data source to help you get started. As such
26
- * it isn't equipped to handle some more advanced cases like robust i18n support or server-side
27
- * interactions. If your app needs to support more advanced use cases, consider implementing your
28
- * own `DataSource`.
29
- */
30
- export class MatTableDataSource extends DataSource {
31
- /** Array of data that should be rendered by the table, where each object represents one row. */
32
- get data() {
33
- return this._data.value;
34
- }
35
- set data(data) {
36
- data = Array.isArray(data) ? data : [];
37
- this._data.next(data);
38
- // Normally the `filteredData` is updated by the re-render
39
- // subscription, but that won't happen if it's inactive.
40
- if (!this._renderChangesSubscription) {
41
- this._filterData(data);
42
- }
43
- }
44
- /**
45
- * Filter term that should be used to filter out objects from the data array. To override how
46
- * data objects match to this filter string, provide a custom function for filterPredicate.
47
- */
48
- get filter() {
49
- return this._filter.value;
50
- }
51
- set filter(filter) {
52
- this._filter.next(filter);
53
- // Normally the `filteredData` is updated by the re-render
54
- // subscription, but that won't happen if it's inactive.
55
- if (!this._renderChangesSubscription) {
56
- this._filterData(this.data);
57
- }
58
- }
59
- /**
60
- * Instance of the MatSort directive used by the table to control its sorting. Sort changes
61
- * emitted by the MatSort will trigger an update to the table's rendered data.
62
- */
63
- get sort() {
64
- return this._sort;
65
- }
66
- set sort(sort) {
67
- this._sort = sort;
68
- this._updateChangeSubscription();
69
- }
70
- /**
71
- * Instance of the paginator component used by the table to control what page of the data is
72
- * displayed. Page changes emitted by the paginator will trigger an update to the
73
- * table's rendered data.
74
- *
75
- * Note that the data source uses the paginator's properties to calculate which page of data
76
- * should be displayed. If the paginator receives its properties as template inputs,
77
- * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been
78
- * initialized before assigning it to this data source.
79
- */
80
- get paginator() {
81
- return this._paginator;
82
- }
83
- set paginator(paginator) {
84
- this._paginator = paginator;
85
- this._updateChangeSubscription();
86
- }
87
- constructor(initialData = []) {
88
- super();
89
- /** Stream emitting render data to the table (depends on ordered data changes). */
90
- this._renderData = new BehaviorSubject([]);
91
- /** Stream that emits when a new filter string is set on the data source. */
92
- this._filter = new BehaviorSubject('');
93
- /** Used to react to internal changes of the paginator that are made by the data source itself. */
94
- this._internalPageChanges = new Subject();
95
- /**
96
- * Subscription to the changes that should trigger an update to the table's rendered rows, such
97
- * as filtering, sorting, pagination, or base data changes.
98
- */
99
- this._renderChangesSubscription = null;
100
- /**
101
- * Data accessor function that is used for accessing data properties for sorting through
102
- * the default sortData function.
103
- * This default function assumes that the sort header IDs (which defaults to the column name)
104
- * matches the data's properties (e.g. column Xyz represents data['Xyz']).
105
- * May be set to a custom function for different behavior.
106
- * @param data Data object that is being accessed.
107
- * @param sortHeaderId The name of the column that represents the data.
108
- */
109
- this.sortingDataAccessor = (data, sortHeaderId) => {
110
- const value = data[sortHeaderId];
111
- if (_isNumberValue(value)) {
112
- const numberValue = Number(value);
113
- // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we
114
- // leave them as strings. For more info: https://goo.gl/y5vbSg
115
- return numberValue < MAX_SAFE_INTEGER ? numberValue : value;
116
- }
117
- return value;
118
- };
119
- /**
120
- * Gets a sorted copy of the data array based on the state of the MatSort. Called
121
- * after changes are made to the filtered data or when sort changes are emitted from MatSort.
122
- * By default, the function retrieves the active sort and its direction and compares data
123
- * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation
124
- * of data ordering.
125
- * @param data The array of data that should be sorted.
126
- * @param sort The connected MatSort that holds the current sort state.
127
- */
128
- this.sortData = (data, sort) => {
129
- const active = sort.active;
130
- const direction = sort.direction;
131
- if (!active || direction == '') {
132
- return data;
133
- }
134
- return data.sort((a, b) => {
135
- let valueA = this.sortingDataAccessor(a, active);
136
- let valueB = this.sortingDataAccessor(b, active);
137
- // If there are data in the column that can be converted to a number,
138
- // it must be ensured that the rest of the data
139
- // is of the same type so as not to order incorrectly.
140
- const valueAType = typeof valueA;
141
- const valueBType = typeof valueB;
142
- if (valueAType !== valueBType) {
143
- if (valueAType === 'number') {
144
- valueA += '';
145
- }
146
- if (valueBType === 'number') {
147
- valueB += '';
148
- }
149
- }
150
- // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if
151
- // one value exists while the other doesn't. In this case, existing value should come last.
152
- // This avoids inconsistent results when comparing values to undefined/null.
153
- // If neither value exists, return 0 (equal).
154
- let comparatorResult = 0;
155
- if (valueA != null && valueB != null) {
156
- // Check if one value is greater than the other; if equal, comparatorResult should remain 0.
157
- if (valueA > valueB) {
158
- comparatorResult = 1;
159
- }
160
- else if (valueA < valueB) {
161
- comparatorResult = -1;
162
- }
163
- }
164
- else if (valueA != null) {
165
- comparatorResult = 1;
166
- }
167
- else if (valueB != null) {
168
- comparatorResult = -1;
169
- }
170
- return comparatorResult * (direction == 'asc' ? 1 : -1);
171
- });
172
- };
173
- /**
174
- * Checks if a data object matches the data source's filter string. By default, each data object
175
- * is converted to a string of its properties and returns true if the filter has
176
- * at least one occurrence in that string. By default, the filter string has its whitespace
177
- * trimmed and the match is case-insensitive. May be overridden for a custom implementation of
178
- * filter matching.
179
- * @param data Data object used to check against the filter.
180
- * @param filter Filter string that has been set on the data source.
181
- * @returns Whether the filter matches against the data
182
- */
183
- this.filterPredicate = (data, filter) => {
184
- // Transform the data into a lowercase string of all property values.
185
- const dataStr = Object.keys(data)
186
- .reduce((currentTerm, key) => {
187
- // Use an obscure Unicode character to delimit the words in the concatenated string.
188
- // This avoids matches where the values of two columns combined will match the user's query
189
- // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something
190
- // that has a very low chance of being typed in by somebody in a text field. This one in
191
- // particular is "White up-pointing triangle with dot" from
192
- // https://en.wikipedia.org/wiki/List_of_Unicode_characters
193
- return currentTerm + data[key] + '◬';
194
- }, '')
195
- .toLowerCase();
196
- // Transform the filter by converting it to lowercase and removing whitespace.
197
- const transformedFilter = filter.trim().toLowerCase();
198
- return dataStr.indexOf(transformedFilter) != -1;
199
- };
200
- this._data = new BehaviorSubject(initialData);
201
- this._updateChangeSubscription();
202
- }
203
- /**
204
- * Subscribe to changes that should trigger an update to the table's rendered rows. When the
205
- * changes occur, process the current state of the filter, sort, and pagination along with
206
- * the provided base data and send it to the table for rendering.
207
- */
208
- _updateChangeSubscription() {
209
- // Sorting and/or pagination should be watched if sort and/or paginator are provided.
210
- // The events should emit whenever the component emits a change or initializes, or if no
211
- // component is provided, a stream with just a null event should be provided.
212
- // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the
213
- // pipeline can progress to the next step. Note that the value from these streams are not used,
214
- // they purely act as a signal to progress in the pipeline.
215
- const sortChange = this._sort
216
- ? merge(this._sort.sortChange, this._sort.initialized)
217
- : observableOf(null);
218
- const pageChange = this._paginator
219
- ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized)
220
- : observableOf(null);
221
- const dataStream = this._data;
222
- // Watch for base data or filter changes to provide a filtered set of data.
223
- const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data)));
224
- // Watch for filtered data or sort changes to provide an ordered set of data.
225
- const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data)));
226
- // Watch for ordered data or page changes to provide a paged set of data.
227
- const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data)));
228
- // Watched for paged data changes and send the result to the table to render.
229
- this._renderChangesSubscription?.unsubscribe();
230
- this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));
231
- }
232
- /**
233
- * Returns a filtered data array where each filter object contains the filter string within
234
- * the result of the filterPredicate function. If no filter is set, returns the data array
235
- * as provided.
236
- */
237
- _filterData(data) {
238
- // If there is a filter string, filter out data that does not contain it.
239
- // Each data object is converted to a string using the function defined by filterPredicate.
240
- // May be overridden for customization.
241
- this.filteredData =
242
- this.filter == null || this.filter === ''
243
- ? data
244
- : data.filter(obj => this.filterPredicate(obj, this.filter));
245
- if (this.paginator) {
246
- this._updatePaginator(this.filteredData.length);
247
- }
248
- return this.filteredData;
249
- }
250
- /**
251
- * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the
252
- * data array as provided. Uses the default data accessor for data lookup, unless a
253
- * sortDataAccessor function is defined.
254
- */
255
- _orderData(data) {
256
- // If there is no active sort or direction, return the data without trying to sort.
257
- if (!this.sort) {
258
- return data;
259
- }
260
- return this.sortData(data.slice(), this.sort);
261
- }
262
- /**
263
- * Returns a paged slice of the provided data array according to the provided paginator's page
264
- * index and length. If there is no paginator provided, returns the data array as provided.
265
- */
266
- _pageData(data) {
267
- if (!this.paginator) {
268
- return data;
269
- }
270
- const startIndex = this.paginator.pageIndex * this.paginator.pageSize;
271
- return data.slice(startIndex, startIndex + this.paginator.pageSize);
272
- }
273
- /**
274
- * Updates the paginator to reflect the length of the filtered data, and makes sure that the page
275
- * index does not exceed the paginator's last page. Values are changed in a resolved promise to
276
- * guard against making property changes within a round of change detection.
277
- */
278
- _updatePaginator(filteredDataLength) {
279
- Promise.resolve().then(() => {
280
- const paginator = this.paginator;
281
- if (!paginator) {
282
- return;
283
- }
284
- paginator.length = filteredDataLength;
285
- // If the page index is set beyond the page, reduce it to the last page.
286
- if (paginator.pageIndex > 0) {
287
- const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;
288
- const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);
289
- if (newPageIndex !== paginator.pageIndex) {
290
- paginator.pageIndex = newPageIndex;
291
- // Since the paginator only emits after user-generated changes,
292
- // we need our own stream so we know to should re-render the data.
293
- this._internalPageChanges.next();
294
- }
295
- }
296
- });
297
- }
298
- /**
299
- * Used by the MatTable. Called when it connects to the data source.
300
- * @docs-private
301
- */
302
- connect() {
303
- if (!this._renderChangesSubscription) {
304
- this._updateChangeSubscription();
305
- }
306
- return this._renderData;
307
- }
308
- /**
309
- * Used by the MatTable. Called when it disconnects from the data source.
310
- * @docs-private
311
- */
312
- disconnect() {
313
- this._renderChangesSubscription?.unsubscribe();
314
- this._renderChangesSubscription = null;
315
- }
316
- }
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvdGFibGUvdGFibGUtZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsS0FBSyxFQUVMLEVBQUUsSUFBSSxZQUFZLEVBQ2xCLE9BQU8sR0FFUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DOzs7R0FHRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFFMUM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLGtCQUE2RCxTQUFRLFVBQWE7SUEyQjdGLGdHQUFnRztJQUNoRyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFTO1FBQ2hCLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QiwwREFBMEQ7UUFDMUQsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxNQUFNO1FBQ1Is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O0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIG9mIGFzIG9ic2VydmFibGVPZixcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGF0YVNvdXJjZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7TWF0U29ydCwgU29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge19pc051bWJlclZhbHVlfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLiBNb3ZlZCBvdXQgaW50byBhIHZhcmlhYmxlIGhlcmUgZHVlIHRvXG4gKiBmbGFreSBicm93c2VyIHN1cHBvcnQgYW5kIHRoZSB2YWx1ZSBub3QgYmVpbmcgZGVmaW5lZCBpbiBDbG9zdXJlJ3MgdHlwaW5ncy5cbiAqL1xuY29uc3QgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogRGF0YSBzb3VyY2UgdGhhdCBhY2NlcHRzIGEgY2xpZW50LXNpZGUgZGF0YSBhcnJheSBhbmQgaW5jbHVkZXMgbmF0aXZlIHN1cHBvcnQgb2YgZmlsdGVyaW5nLFxuICogc29ydGluZyAodXNpbmcgTWF0U29ydCksIGFuZCBwYWdpbmF0aW9uICh1c2luZyBNYXRQYWdpbmF0b3IpLlxuICpcbiAqIEFsbG93cyBmb3Igc29ydCBjdXN0b21pemF0aW9uIGJ5IG92ZXJyaWRpbmcgc29ydGluZ0RhdGFBY2Nlc3Nvciwgd2hpY2ggZGVmaW5lcyBob3cgZGF0YVxuICogcHJvcGVydGllcyBhcmUgYWNjZXNzZWQuIEFsc28gYWxsb3dzIGZvciBmaWx0ZXIgY3VzdG9taXphdGlvbiBieSBvdmVycmlkaW5nIGZpbHRlclByZWRpY2F0ZSxcbiAqIHdoaWNoIGRlZmluZXMgaG93IHJvdyBkYXRhIGlzIGNvbnZlcnRlZCB0byBhIHN0cmluZyBmb3IgZmlsdGVyIG1hdGNoaW5nLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGNsYXNzIGlzIG1lYW50IHRvIGJlIGEgc2ltcGxlIGRhdGEgc291cmNlIHRvIGhlbHAgeW91IGdldCBzdGFydGVkLiBBcyBzdWNoXG4gKiBpdCBpc24ndCBlcXVpcHBlZCB0byBoYW5kbGUgc29tZSBtb3JlIGFkdmFuY2VkIGNhc2VzIGxpa2Ugcm9idXN0IGkxOG4gc3VwcG9ydCBvciBzZXJ2ZXItc2lkZVxuICogaW50ZXJhY3Rpb25zLiBJZiB5b3VyIGFwcCBuZWVkcyB0byBzdXBwb3J0IG1vcmUgYWR2YW5jZWQgdXNlIGNhc2VzLCBjb25zaWRlciBpbXBsZW1lbnRpbmcgeW91clxuICogb3duIGBEYXRhU291cmNlYC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdFRhYmxlRGF0YVNvdXJjZTxULCBQIGV4dGVuZHMgTWF0UGFnaW5hdG9yID0gTWF0UGFnaW5hdG9yPiBleHRlbmRzIERhdGFTb3VyY2U8VD4ge1xuICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBhIG5ldyBkYXRhIGFycmF5IGlzIHNldCBvbiB0aGUgZGF0YSBzb3VyY2UuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGE6IEJlaGF2aW9yU3ViamVjdDxUW10+O1xuXG4gIC8qKiBTdHJlYW0gZW1pdHRpbmcgcmVuZGVyIGRhdGEgdG8gdGhlIHRhYmxlIChkZXBlbmRzIG9uIG9yZGVyZWQgZGF0YSBjaGFuZ2VzKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyRGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG5cbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYSBuZXcgZmlsdGVyIHN0cmluZyBpcyBzZXQgb24gdGhlIGRhdGEgc291cmNlLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIC8qKiBVc2VkIHRvIHJlYWN0IHRvIGludGVybmFsIGNoYW5nZXMgb2YgdGhlIHBhZ2luYXRvciB0aGF0IGFyZSBtYWRlIGJ5IHRoZSBkYXRhIHNvdXJjZSBpdHNlbGYuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGVybmFsUGFnZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIGNoYW5nZXMgdGhhdCBzaG91bGQgdHJpZ2dlciBhbiB1cGRhdGUgdG8gdGhlIHRhYmxlJ3MgcmVuZGVyZWQgcm93cywgc3VjaFxuICAgKiBhcyBmaWx0ZXJpbmcsIHNvcnRpbmcsIHBhZ2luYXRpb24sIG9yIGJhc2UgZGF0YSBjaGFuZ2VzLlxuICAgKi9cbiAgX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsdGVyZWQgc2V0IG9mIGRhdGEgdGhhdCBoYXMgYmVlbiBtYXRjaGVkIGJ5IHRoZSBmaWx0ZXIgc3RyaW5nLCBvciBhbGwgdGhlIGRhdGEgaWYgdGhlcmVcbiAgICogaXMgbm8gZmlsdGVyLiBVc2VmdWwgZm9yIGtub3dpbmcgdGhlIHNldCBvZiBkYXRhIHRoZSB0YWJsZSByZXByZXNlbnRzLlxuICAgKiBGb3IgZXhhbXBsZSwgYSAnc2VsZWN0QWxsKCknIGZ1bmN0aW9uIHdvdWxkIGxpa2VseSB3YW50IHRvIHNlbGVjdCB0aGUgc2V0IG9mIGZpbHRlcmVkIGRhdGFcbiAgICogc2hvd24gdG8gdGhlIHVzZXIgcmF0aGVyIHRoYW4gYWxsIHRoZSBkYXRhLlxuICAgKi9cbiAgZmlsdGVyZWREYXRhOiBUW107XG5cbiAgLyoqIEFycmF5IG9mIGRhdGEgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgYnkgdGhlIHRhYmxlLCB3aGVyZSBlYWNoIG9iamVjdCByZXByZXNlbnRzIG9uZSByb3cuICovXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLnZhbHVlO1xuICB9XG5cbiAgc2V0IGRhdGEoZGF0YTogVFtdKSB7XG4gICAgZGF0YSA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW107XG4gICAgdGhpcy5fZGF0YS5uZXh0KGRhdGEpO1xuICAgIC8vIE5vcm1hbGx5IHRoZSBgZmlsdGVyZWREYXRhYCBpcyB1cGRhdGVkIGJ5IHRoZSByZS1yZW5kZXJcbiAgICAvLyBzdWJzY3JpcHRpb24sIGJ1dCB0aGF0IHdvbid0IGhhcHBlbiBpZiBpdCdzIGluYWN0aXZlLlxuICAgIGlmICghdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fZmlsdGVyRGF0YShkYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIHRlcm0gdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmaWx0ZXIgb3V0IG9iamVjdHMgZnJvbSB0aGUgZGF0YSBhcnJheS4gVG8gb3ZlcnJpZGUgaG93XG4gICAqIGRhdGEgb2JqZWN0cyBtYXRjaCB0byB0aGlzIGZpbHRlciBzdHJpbmcsIHByb3ZpZGUgYSBjdXN0b20gZnVuY3Rpb24gZm9yIGZpbHRlclByZWRpY2F0ZS5cbiAgICovXG4gIGdldCBmaWx0ZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyLnZhbHVlO1xuICB9XG5cbiAgc2V0IGZpbHRlcihmaWx0ZXI6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbHRlci5uZXh0KGZpbHRlcik7XG4gICAgLy8gTm9ybWFsbHkgdGhlIGBmaWx0ZXJlZERhdGFgIGlzIHVwZGF0ZWQgYnkgdGhlIHJlLXJlbmRlclxuICAgIC8vIHN1YnNjcmlwdGlvbiwgYnV0IHRoYXQgd29uJ3QgaGFwcGVuIGlmIGl0J3MgaW5hY3RpdmUuXG4gICAgaWYgKCF0aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9maWx0ZXJEYXRhKHRoaXMuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIG9mIHRoZSBNYXRTb3J0IGRpcmVjdGl2ZSB1c2VkIGJ5IHRoZSB0YWJsZSB0byBjb250cm9sIGl0cyBzb3J0aW5nLiBTb3J0IGNoYW5nZXNcbiAgICogZW1pdHRlZCBieSB0aGUgTWF0U29ydCB3aWxsIHRyaWdnZXIgYW4gdXBkYXRlIHRvIHRoZSB0YWJsZSdzIHJlbmRlcmVkIGRhdGEuXG4gICAqL1xuICBnZXQgc29ydCgpOiBNYXRTb3J0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQ7XG4gIH1cblxuICBzZXQgc29ydChzb3J0OiBNYXRTb3J0IHwgbnVsbCkge1xuICAgIHRoaXMuX3NvcnQgPSBzb3J0O1xuICAgIHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc29ydDogTWF0U29ydCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEluc3RhbmNlIG9mIHRoZSBwYWdpbmF0b3IgY29tcG9uZW50IHVzZWQgYnkgdGhlIHRhYmxlIHRvIGNvbnRyb2wgd2hhdCBwYWdlIG9mIHRoZSBkYXRhIGlzXG4gICAqIGRpc3BsYXllZC4gUGFnZSBjaGFuZ2VzIGVtaXR0ZWQgYnkgdGhlIHBhZ2luYXRvciB3aWxsIHRyaWdnZXIgYW4gdXBkYXRlIHRvIHRoZVxuICAgKiB0YWJsZSdzIHJlbmRlcmVkIGRhdGEuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgZGF0YSBzb3VyY2UgdXNlcyB0aGUgcGFnaW5hdG9yJ3MgcHJvcGVydGllcyB0byBjYWxjdWxhdGUgd2hpY2ggcGFnZSBvZiBkYXRhXG4gICAqIHNob3VsZCBiZSBkaXNwbGF5ZWQuIElmIHRoZSBwYWdpbmF0b3IgcmVjZWl2ZXMgaXRzIHByb3BlcnRpZXMgYXMgdGVtcGxhdGUgaW5wdXRzLFxuICAgKiBlLmcuIGBbcGFnZUxlbmd0aF09MTAwYCBvciBgW3BhZ2VJbmRleF09MWAsIHRoZW4gYmUgc3VyZSB0aGF0IHRoZSBwYWdpbmF0b3IncyB2aWV3IGhhcyBiZWVuXG4gICAqIGluaXRpYWxpemVkIGJlZm9yZSBhc3NpZ25pbmcgaXQgdG8gdGhpcyBkYXRhIHNvdXJjZS5cbiAgICovXG4gIGdldCBwYWdpbmF0b3IoKTogUCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wYWdpbmF0b3I7XG4gIH1cblxuICBzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogUCB8IG51bGwpIHtcbiAgICB0aGlzLl9wYWdpbmF0b3IgPSBwYWdpbmF0b3I7XG4gICAgdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIF9wYWdpbmF0b3I6IFAgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBEYXRhIGFjY2Vzc29yIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCBmb3IgYWNjZXNzaW5nIGRhdGEgcHJvcGVydGllcyBmb3Igc29ydGluZyB0aHJvdWdoXG4gICAqIHRoZSBkZWZhdWx0IHNvcnREYXRhIGZ1bmN0aW9uLlxuICAgKiBUaGlzIGRlZmF1bHQgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBzb3J0IGhlYWRlciBJRHMgKHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBjb2x1bW4gbmFtZSlcbiAgICogbWF0Y2hlcyB0aGUgZGF0YSdzIHByb3BlcnRpZXMgKGUuZy4gY29sdW1uIFh5eiByZXByZXNlbnRzIGRhdGFbJ1h5eiddKS5cbiAgICogTWF5IGJlIHNldCB0byBhIGN1c3RvbSBmdW5jdGlvbiBmb3IgZGlmZmVyZW50IGJlaGF2aW9yLlxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIG9iamVjdCB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkLlxuICAgKiBAcGFyYW0gc29ydEhlYWRlcklkIFRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gdGhhdCByZXByZXNlbnRzIHRoZSBkYXRhLlxuICAgKi9cbiAgc29ydGluZ0RhdGFBY2Nlc3NvcjogKGRhdGE6IFQsIHNvcnRIZWFkZXJJZDogc3RyaW5nKSA9PiBzdHJpbmcgfCBudW1iZXIgPSAoXG4gICAgZGF0YTogVCxcbiAgICBzb3J0SGVhZGVySWQ6IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgbnVtYmVyID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IChkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgYW55Pilbc29ydEhlYWRlcklkXTtcblxuICAgIGlmIChfaXNOdW1iZXJWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IG51bWJlclZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgLy8gTnVtYmVycyBiZXlvbmQgYE1BWF9TQUZFX0lOVEVHRVJgIGNhbid0IGJlIGNvbXBhcmVkIHJlbGlhYmx5IHNvIHdlXG4gICAgICAvLyBsZWF2ZSB0aGVtIGFzIHN0cmluZ3MuIEZvciBtb3JlIGluZm86IGh0dHBzOi8vZ29vLmdsL3k1dmJTZ1xuICAgICAgcmV0dXJuIG51bWJlclZhbHVlIDwgTUFYX1NBRkVfSU5URUdFUiA/IG51bWJlclZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgc29ydGVkIGNvcHkgb2YgdGhlIGRhdGEgYXJyYXkgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZSBNYXRTb3J0LiBDYWxsZWRcbiAgICogYWZ0ZXIgY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgZmlsdGVyZWQgZGF0YSBvciB3aGVuIHNvcnQgY2hhbmdlcyBhcmUgZW1pdHRlZCBmcm9tIE1hdFNvcnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIGFjdGl2ZSBzb3J0IGFuZCBpdHMgZGlyZWN0aW9uIGFuZCBjb21wYXJlcyBkYXRhXG4gICAqIGJ5IHJldHJpZXZpbmcgZGF0YSB1c2luZyB0aGUgc29ydGluZ0RhdGFBY2Nlc3Nvci4gTWF5IGJlIG92ZXJyaWRkZW4gZm9yIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uXG4gICAqIG9mIGRhdGEgb3JkZXJpbmcuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBhcnJheSBvZiBkYXRhIHRoYXQgc2hvdWxkIGJlIHNvcnRlZC5cbiAgICogQHBhcmFtIHNvcnQgVGhlIGNvbm5lY3RlZCBNYXRTb3J0IHRoYXQgaG9sZHMgdGhlIGN1cnJlbnQgc29ydCBzdGF0ZS5cbiAgICovXG4gIHNvcnREYXRhOiAoZGF0YTogVFtdLCBzb3J0OiBNYXRTb3J0KSA9PiBUW10gPSAoZGF0YTogVFtdLCBzb3J0OiBNYXRTb3J0KTogVFtdID0+IHtcbiAgICBjb25zdCBhY3RpdmUgPSBzb3J0LmFjdGl2ZTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBzb3J0LmRpcmVjdGlvbjtcbiAgICBpZiAoIWFjdGl2ZSB8fCBkaXJlY3Rpb24gPT0gJycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGxldCB2YWx1ZUEgPSB0aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IoYSwgYWN0aXZlKTtcbiAgICAgIGxldCB2YWx1ZUIgPSB0aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IoYiwgYWN0aXZlKTtcblxuICAgICAgLy8gSWYgdGhlcmUgYXJlIGRhdGEgaW4gdGhlIGNvbHVtbiB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSBudW1iZXIsXG4gICAgICAvLyBpdCBtdXN0IGJlIGVuc3VyZWQgdGhhdCB0aGUgcmVzdCBvZiB0aGUgZGF0YVxuICAgICAgLy8gaXMgb2YgdGhlIHNhbWUgdHlwZSBzbyBhcyBub3QgdG8gb3JkZXIgaW5jb3JyZWN0bHkuXG4gICAgICBjb25zdCB2YWx1ZUFUeXBlID0gdHlwZW9mIHZhbHVlQTtcbiAgICAgIGNvbnN0IHZhbHVlQlR5cGUgPSB0eXBlb2YgdmFsdWVCO1xuXG4gICAgICBpZiAodmFsdWVBVHlwZSAhPT0gdmFsdWVCVHlwZSkge1xuICAgICAgICBpZiAodmFsdWVBVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB2YWx1ZUEgKz0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlQlR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdmFsdWVCICs9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGJvdGggdmFsdWVBIGFuZCB2YWx1ZUIgZXhpc3QgKHRydXRoeSksIHRoZW4gY29tcGFyZSB0aGUgdHdvLiBPdGhlcndpc2UsIGNoZWNrIGlmXG4gICAgICAvLyBvbmUgdmFsdWUgZXhpc3RzIHdoaWxlIHRoZSBvdGhlciBkb2Vzbid0LiBJbiB0aGlzIGNhc2UsIGV4aXN0aW5nIHZhbHVlIHNob3VsZCBjb21lIGxhc3QuXG4gICAgICAvLyBUaGlzIGF2b2lkcyBpbmNvbnNpc3RlbnQgcmVzdWx0cyB3aGVuIGNvbXBhcmluZyB2YWx1ZXMgdG8gdW5kZWZpbmVkL251bGwuXG4gICAgICAvLyBJZiBuZWl0aGVyIHZhbHVlIGV4aXN0cywgcmV0dXJuIDAgKGVxdWFsKS5cbiAgICAgIGxldCBjb21wYXJhdG9yUmVzdWx0ID0gMDtcbiAgICAgIGlmICh2YWx1ZUEgIT0gbnVsbCAmJiB2YWx1ZUIgIT0gbnVsbCkge1xuICAgICAgICAvLyBDaGVjayBpZiBvbmUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBvdGhlcjsgaWYgZXF1YWwsIGNvbXBhcmF0b3JSZXN1bHQgc2hvdWxkIHJlbWFpbiAwLlxuICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSB7XG4gICAgICAgICAgY29tcGFyYXRvclJlc3VsdCA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVBIDwgdmFsdWVCKSB7XG4gICAgICAgICAgY29tcGFyYXRvclJlc3VsdCA9IC0xO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlQSAhPSBudWxsKSB7XG4gICAgICAgIGNvbXBhcmF0b3JSZXN1bHQgPSAxO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZUIgIT0gbnVsbCkge1xuICAgICAgICBjb21wYXJhdG9yUmVzdWx0ID0gLTE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21wYXJhdG9yUmVzdWx0ICogKGRpcmVjdGlvbiA9PSAnYXNjJyA/IDEgOiAtMSk7XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGRhdGEgb2JqZWN0IG1hdGNoZXMgdGhlIGRhdGEgc291cmNlJ3MgZmlsdGVyIHN0cmluZy4gQnkgZGVmYXVsdCwgZWFjaCBkYXRhIG9iamVjdFxuICAgKiBpcyBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgb2YgaXRzIHByb3BlcnRpZXMgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsdGVyIGhhc1xuICAgKiBhdCBsZWFzdCBvbmUgb2NjdXJyZW5jZSBpbiB0aGF0IHN0cmluZy4gQnkgZGVmYXVsdCwgdGhlIGZpbHRlciBzdHJpbmcgaGFzIGl0cyB3aGl0ZXNwYWNlXG4gICAqIHRyaW1tZWQgYW5kIHRoZSBtYXRjaCBpcyBjYXNlLWluc2Vuc2l0aXZlLiBNYXkgYmUgb3ZlcnJpZGRlbiBmb3IgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gb2ZcbiAgICogZmlsdGVyIG1hdGNoaW5nLlxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIG9iamVjdCB1c2VkIHRvIGNoZWNrIGFnYWluc3QgdGhlIGZpbHRlci5cbiAgICogQHBhcmFtIGZpbHRlciBGaWx0ZXIgc3RyaW5nIHRoYXQgaGFzIGJlZW4gc2V0IG9uIHRoZSBkYXRhIHNvdXJjZS5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZmlsdGVyIG1hdGNoZXMgYWdhaW5zdCB0aGUgZGF0YVxuICAgKi9cbiAgZmlsdGVyUHJlZGljYXRlOiAoZGF0YTogVCwgZmlsdGVyOiBzdHJpbmcpID0+IGJvb2xlYW4gPSAoZGF0YTogVCwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICAvLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byBhIGxvd2VyY2FzZSBzdHJpbmcgb2YgYWxsIHByb3BlcnR5IHZhbHVlcy5cbiAgICBjb25zdCBkYXRhU3RyID0gT2JqZWN0LmtleXMoZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pXG4gICAgICAucmVkdWNlKChjdXJyZW50VGVybTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBVc2UgYW4gb2JzY3VyZSBVbmljb2RlIGNoYXJhY3RlciB0byBkZWxpbWl0IHRoZSB3b3JkcyBpbiB0aGUgY29uY2F0ZW5hdGVkIHN0cmluZy5cbiAgICAgICAgLy8gVGhpcyBhdm9pZHMgbWF0Y2hlcyB3aGVyZSB0aGUgdmFsdWVzIG9mIHR3byBjb2x1bW5zIGNvbWJpbmVkIHdpbGwgbWF0Y2ggdGhlIHVzZXIncyBxdWVyeVxuICAgICAgICAvLyAoZS5nLiBgRmx1dGVgIGFuZCBgU3RvcGAgd2lsbCBtYXRjaCBgVGVzdGApLiBUaGUgY2hhcmFjdGVyIGlzIGludGVuZGVkIHRvIGJlIHNvbWV0aGluZ1xuICAgICAgICAvLyB0aGF0IGhhcyBhIHZlcnkgbG93IGNoYW5jZSBvZiBiZWluZyB0eXBlZCBpbiBieSBzb21lYm9keSBpbiBhIHRleHQgZmllbGQuIFRoaXMgb25lIGluXG4gICAgICAgIC8vIHBhcnRpY3VsYXIgaXMgXCJXaGl0ZSB1cC1wb2ludGluZyB0cmlhbmdsZSB3aXRoIGRvdFwiIGZyb21cbiAgICAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9Vbmljb2RlX2NoYXJhY3RlcnNcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUZXJtICsgKGRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldICsgJ+KXrCc7XG4gICAgICB9LCAnJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBmaWx0ZXIgYnkgY29udmVydGluZyBpdCB0byBsb3dlcmNhc2UgYW5kIHJlbW92aW5nIHdoaXRlc3BhY2UuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRGaWx0ZXIgPSBmaWx0ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gZGF0YVN0ci5pbmRleE9mKHRyYW5zZm9ybWVkRmlsdGVyKSAhPSAtMTtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihpbml0aWFsRGF0YTogVFtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oaW5pdGlhbERhdGEpO1xuICAgIHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBjaGFuZ2VzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYW4gdXBkYXRlIHRvIHRoZSB0YWJsZSdzIHJlbmRlcmVkIHJvd3MuIFdoZW4gdGhlXG4gICAqIGNoYW5nZXMgb2NjdXIsIHByb2Nlc3MgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGZpbHRlciwgc29ydCwgYW5kIHBhZ2luYXRpb24gYWxvbmcgd2l0aFxuICAgKiB0aGUgcHJvdmlkZWQgYmFzZSBkYXRhIGFuZCBzZW5kIGl0IHRvIHRoZSB0YWJsZSBmb3IgcmVuZGVyaW5nLlxuICAgKi9cbiAgX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpIHtcbiAgICAvLyBTb3J0aW5nIGFuZC9vciBwYWdpbmF0aW9uIHNob3VsZCBiZSB3YXRjaGVkIGlmIHNvcnQgYW5kL29yIHBhZ2luYXRvciBhcmUgcHJvdmlkZWQuXG4gICAgLy8gVGhlIGV2ZW50cyBzaG91bGQgZW1pdCB3aGVuZXZlciB0aGUgY29tcG9uZW50IGVtaXRzIGEgY2hhbmdlIG9yIGluaXRpYWxpemVzLCBvciBpZiBub1xuICAgIC8vIGNvbXBvbmVudCBpcyBwcm92aWRlZCwgYSBzdHJlYW0gd2l0aCBqdXN0IGEgbnVsbCBldmVudCBzaG91bGQgYmUgcHJvdmlkZWQuXG4gICAgLy8gVGhlIGBzb3J0Q2hhbmdlYCBhbmQgYHBhZ2VDaGFuZ2VgIGFjdHMgYXMgYSBzaWduYWwgdG8gdGhlIGNvbWJpbmVMYXRlc3RzIGJlbG93IHNvIHRoYXQgdGhlXG4gICAgLy8gcGlwZWxpbmUgY2FuIHByb2dyZXNzIHRvIHRoZSBuZXh0IHN0ZXAuIE5vdGUgdGhhdCB0aGUgdmFsdWUgZnJvbSB0aGVzZSBzdHJlYW1zIGFyZSBub3QgdXNlZCxcbiAgICAvLyB0aGV5IHB1cmVseSBhY3QgYXMgYSBzaWduYWwgdG8gcHJvZ3Jlc3MgaW4gdGhlIHBpcGVsaW5lLlxuICAgIGNvbnN0IHNvcnRDaGFuZ2U6IE9ic2VydmFibGU8U29ydCB8IG51bGwgfCB2b2lkPiA9IHRoaXMuX3NvcnRcbiAgICAgID8gKG1lcmdlKHRoaXMuX3NvcnQuc29ydENoYW5nZSwgdGhpcy5fc29ydC5pbml0aWFsaXplZCkgYXMgT2JzZXJ2YWJsZTxTb3J0IHwgdm9pZD4pXG4gICAgICA6IG9ic2VydmFibGVPZihudWxsKTtcbiAgICBjb25zdCBwYWdlQ2hhbmdlOiBPYnNlcnZhYmxlPFBhZ2VFdmVudCB8IG51bGwgfCB2b2lkPiA9IHRoaXMuX3BhZ2luYXRvclxuICAgICAgPyAobWVyZ2UoXG4gICAgICAgICAgdGhpcy5fcGFnaW5hdG9yLnBhZ2UsXG4gICAgICAgICAgdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcyxcbiAgICAgICAgICB0aGlzLl9wYWdpbmF0b3IuaW5pdGlhbGl6ZWQsXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxQYWdlRXZlbnQgfCB2b2lkPilcbiAgICAgIDogb2JzZXJ2YWJsZU9mKG51bGwpO1xuICAgIGNvbnN0IGRhdGFTdHJlYW0gPSB0aGlzLl9kYXRhO1xuICAgIC8vIFdhdGNoIGZvciBiYXNlIGRhdGEgb3IgZmlsdGVyIGNoYW5nZXMgdG8gcHJvdmlkZSBhIGZpbHRlcmVkIHNldCBvZiBkYXRhLlxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IGNvbWJpbmVMYXRlc3QoW2RhdGFTdHJlYW0sIHRoaXMuX2ZpbHRlcl0pLnBpcGUoXG4gICAgICBtYXAoKFtkYXRhXSkgPT4gdGhpcy5fZmlsdGVyRGF0YShkYXRhKSksXG4gICAgKTtcbiAgICAvLyBXYXRjaCBmb3IgZmlsdGVyZWQgZGF0YSBvciBzb3J0IGNoYW5nZXMgdG8gcHJvdmlkZSBhbiBvcmRlcmVkIHNldCBvZiBkYXRhLlxuICAgIGNvbnN0IG9yZGVyZWREYXRhID0gY29tYmluZUxhdGVzdChbZmlsdGVyZWREYXRhLCBzb3J0Q2hhbmdlXSkucGlwZShcbiAgICAgIG1hcCgoW2RhdGFdKSA9PiB0aGlzLl9vcmRlckRhdGEoZGF0YSkpLFxuICAgICk7XG4gICAgLy8gV2F0Y2ggZm9yIG9yZGVyZWQgZGF0YSBvciBwYWdlIGNoYW5nZXMgdG8gcHJvdmlkZSBhIHBhZ2VkIHNldCBvZiBkYXRhLlxuICAgIGNvbnN0IHBhZ2luYXRlZERhdGEgPSBjb21iaW5lTGF0ZXN0KFtvcmRlcmVkRGF0YSwgcGFnZUNoYW5nZV0pLnBpcGUoXG4gICAgICBtYXAoKFtkYXRhXSkgPT4gdGhpcy5fcGFnZURhdGEoZGF0YSkpLFxuICAgICk7XG4gICAgLy8gV2F0Y2hlZCBmb3IgcGFnZWQgZGF0YSBjaGFuZ2VzIGFuZCBzZW5kIHRoZSByZXN1bHQgdG8gdGhlIHRhYmxlIHRvIHJlbmRlci5cbiAgICB0aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb24gPSBwYWdpbmF0ZWREYXRhLnN1YnNjcmliZShkYXRhID0+IHRoaXMuX3JlbmRlckRhdGEubmV4dChkYXRhKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGZpbHRlcmVkIGRhdGEgYXJyYXkgd2hlcmUgZWFjaCBmaWx0ZXIgb2JqZWN0IGNvbnRhaW5zIHRoZSBmaWx0ZXIgc3RyaW5nIHdpdGhpblxuICAgKiB0aGUgcmVzdWx0IG9mIHRoZSBmaWx0ZXJQcmVkaWNhdGUgZnVuY3Rpb24uIElmIG5vIGZpbHRlciBpcyBzZXQsIHJldHVybnMgdGhlIGRhdGEgYXJyYXlcbiAgICogYXMgcHJvdmlkZWQuXG4gICAqL1xuICBfZmlsdGVyRGF0YShkYXRhOiBUW10pIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBhIGZpbHRlciBzdHJpbmcsIGZpbHRlciBvdXQgZGF0YSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gaXQuXG4gICAgLy8gRWFjaCBkYXRhIG9iamVjdCBpcyBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIGZ1bmN0aW9uIGRlZmluZWQgYnkgZmlsdGVyUHJlZGljYXRlLlxuICAgIC8vIE1heSBiZSBvdmVycmlkZGVuIGZvciBjdXN0b21pemF0aW9uLlxuICAgIHRoaXMuZmlsdGVyZWREYXRhID1cbiAgICAgIHRoaXMuZmlsdGVyID09IG51bGwgfHwgdGhpcy5maWx0ZXIgPT09ICcnXG4gICAgICAgID8gZGF0YVxuICAgICAgICA6IGRhdGEuZmlsdGVyKG9iaiA9PiB0aGlzLmZpbHRlclByZWRpY2F0ZShvYmosIHRoaXMuZmlsdGVyKSk7XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVBhZ2luYXRvcih0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc29ydGVkIGNvcHkgb2YgdGhlIGRhdGEgaWYgTWF0U29ydCBoYXMgYSBzb3J0IGFwcGxpZWQsIG90aGVyd2lzZSBqdXN0IHJldHVybnMgdGhlXG4gICAqIGRhdGEgYXJyYXkgYXMgcHJvdmlkZWQuIFVzZXMgdGhlIGRlZmF1bHQgZGF0YSBhY2Nlc3NvciBmb3IgZGF0YSBsb29rdXAsIHVubGVzcyBhXG4gICAqIHNvcnREYXRhQWNjZXNzb3IgZnVuY3Rpb24gaXMgZGVmaW5lZC5cbiAgICovXG4gIF9vcmRlckRhdGEoZGF0YTogVFtdKTogVFtdIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBubyBhY3RpdmUgc29ydCBvciBkaXJlY3Rpb24sIHJldHVybiB0aGUgZGF0YSB3aXRob3V0IHRyeWluZyB0byBzb3J0LlxuICAgIGlmICghdGhpcy5zb3J0KSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zb3J0RGF0YShkYXRhLnNsaWNlKCksIHRoaXMuc29ydCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHBhZ2VkIHNsaWNlIG9mIHRoZSBwcm92aWRlZCBkYXRhIGFycmF5IGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgcGFnaW5hdG9yJ3MgcGFnZVxuICAgKiBpbmRleCBhbmQgbGVuZ3RoLiBJZiB0aGVyZSBpcyBubyBwYWdpbmF0b3IgcHJvdmlkZWQsIHJldHVybnMgdGhlIGRhdGEgYXJyYXkgYXMgcHJvdmlkZWQuXG4gICAqL1xuICBfcGFnZURhdGEoZGF0YTogVFtdKTogVFtdIHtcbiAgICBpZiAoIXRoaXMucGFnaW5hdG9yKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ICogdGhpcy5wYWdpbmF0b3IucGFnZVNpemU7XG4gICAgcmV0dXJuIGRhdGEuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwYWdpbmF0b3IgdG8gcmVmbGVjdCB0aGUgbGVuZ3RoIG9mIHRoZSBmaWx0ZXJlZCBkYXRhLCBhbmQgbWFrZXMgc3VyZSB0aGF0IHRoZSBwYWdlXG4gICAqIGluZGV4IGRvZXMgbm90IGV4Y2VlZCB0aGUgcGFnaW5hdG9yJ3MgbGFzdCBwYWdlLiBWYWx1ZXMgYXJlIGNoYW5nZWQgaW4gYSByZXNvbHZlZCBwcm9taXNlIHRvXG4gICAqIGd1YXJkIGFnYWluc3QgbWFraW5nIHByb3BlcnR5IGNoYW5nZXMgd2l0aGluIGEgcm91bmQgb2YgY2hhbmdlIGRldGVjdGlvbi5cbiAgICovXG4gIF91cGRhdGVQYWdpbmF0b3IoZmlsdGVyZWREYXRhTGVuZ3RoOiBudW1iZXIpIHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuXG4gICAgICBpZiAoIXBhZ2luYXRvcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHBhZ2luYXRvci5sZW5ndGggPSBmaWx0ZXJlZERhdGFMZW5ndGg7XG5cbiAgICAgIC8vIElmIHRoZSBwYWdlIGluZGV4IGlzIHNldCBiZXlvbmQgdGhlIHBhZ2UsIHJlZHVjZSBpdCB0byB0aGUgbGFzdCBwYWdlLlxuICAgICAgaWYgKHBhZ2luYXRvci5wYWdlSW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlSW5kZXggPSBNYXRoLmNlaWwocGFnaW5hdG9yLmxlbmd0aCAvIHBhZ2luYXRvci5wYWdlU2l6ZSkgLSAxIHx8IDA7XG4gICAgICAgIGNvbnN0IG5ld1BhZ2VJbmRleCA9IE1hdGgubWluKHBhZ2luYXRvci5wYWdlSW5kZXgsIGxhc3RQYWdlSW5kZXgpO1xuXG4gICAgICAgIGlmIChuZXdQYWdlSW5kZXggIT09IHBhZ2luYXRvci5wYWdlSW5kZXgpIHtcbiAgICAgICAgICBwYWdpbmF0b3IucGFnZUluZGV4ID0gbmV3UGFnZUluZGV4O1xuXG4gICAgICAgICAgLy8gU2luY2UgdGhlIHBhZ2luYXRvciBvbmx5IGVtaXRzIGFmdGVyIHVzZXItZ2VuZXJhdGVkIGNoYW5nZXMsXG4gICAgICAgICAgLy8gd2UgbmVlZCBvdXIgb3duIHN0cmVhbSBzbyB3ZSBrbm93IHRvIHNob3VsZCByZS1yZW5kZXIgdGhlIGRhdGEuXG4gICAgICAgICAgdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IHRoZSBNYXRUYWJsZS4gQ2FsbGVkIHdoZW4gaXQgY29ubmVjdHMgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBjb25uZWN0KCkge1xuICAgIGlmICghdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlckRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSB0aGUgTWF0VGFibGUuIENhbGxlZCB3aGVuIGl0IGRpc2Nvbm5lY3RzIGZyb20gdGhlIGRhdGEgc291cmNlLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cbn1cbiJdfQ==