@angular/material 9.2.0 → 9.2.4

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 (365) hide show
  1. package/_theming.scss +19 -4
  2. package/autocomplete/index.metadata.json +1 -1
  3. package/autocomplete/testing/autocomplete-harness.d.ts +4 -1
  4. package/badge/index.metadata.json +1 -1
  5. package/bottom-sheet/bottom-sheet.d.ts +2 -1
  6. package/bundles/material-autocomplete-testing.umd.js +55 -8
  7. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  8. package/bundles/material-autocomplete-testing.umd.min.js +4 -5
  9. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.js +28 -27
  11. package/bundles/material-autocomplete.umd.js.map +1 -1
  12. package/bundles/material-autocomplete.umd.min.js +5 -5
  13. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  14. package/bundles/material-badge.umd.js +1 -1
  15. package/bundles/material-badge.umd.js.map +1 -1
  16. package/bundles/material-badge.umd.min.js +1 -1
  17. package/bundles/material-badge.umd.min.js.map +1 -1
  18. package/bundles/material-bottom-sheet.umd.js +3 -2
  19. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  20. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  21. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  22. package/bundles/material-button-toggle.umd.js +16 -6
  23. package/bundles/material-button-toggle.umd.js.map +1 -1
  24. package/bundles/material-button-toggle.umd.min.js +3 -3
  25. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  26. package/bundles/material-chips.umd.js +19 -3
  27. package/bundles/material-chips.umd.js.map +1 -1
  28. package/bundles/material-chips.umd.min.js +4 -4
  29. package/bundles/material-chips.umd.min.js.map +1 -1
  30. package/bundles/material-core.umd.js +95 -71
  31. package/bundles/material-core.umd.js.map +1 -1
  32. package/bundles/material-core.umd.min.js +9 -9
  33. package/bundles/material-core.umd.min.js.map +1 -1
  34. package/bundles/material-datepicker.umd.js +23 -10
  35. package/bundles/material-datepicker.umd.js.map +1 -1
  36. package/bundles/material-datepicker.umd.min.js +7 -7
  37. package/bundles/material-datepicker.umd.min.js.map +1 -1
  38. package/bundles/material-dialog.umd.js +46 -27
  39. package/bundles/material-dialog.umd.js.map +1 -1
  40. package/bundles/material-dialog.umd.min.js +6 -6
  41. package/bundles/material-dialog.umd.min.js.map +1 -1
  42. package/bundles/material-expansion.umd.js +3 -3
  43. package/bundles/material-expansion.umd.js.map +1 -1
  44. package/bundles/material-expansion.umd.min.js +1 -1
  45. package/bundles/material-expansion.umd.min.js.map +1 -1
  46. package/bundles/material-form-field.umd.js +6 -4
  47. package/bundles/material-form-field.umd.js.map +1 -1
  48. package/bundles/material-form-field.umd.min.js +3 -3
  49. package/bundles/material-form-field.umd.min.js.map +1 -1
  50. package/bundles/material-icon.umd.js +9 -5
  51. package/bundles/material-icon.umd.js.map +1 -1
  52. package/bundles/material-icon.umd.min.js +3 -3
  53. package/bundles/material-icon.umd.min.js.map +1 -1
  54. package/bundles/material-input.umd.js +18 -14
  55. package/bundles/material-input.umd.js.map +1 -1
  56. package/bundles/material-input.umd.min.js +1 -1
  57. package/bundles/material-input.umd.min.js.map +1 -1
  58. package/bundles/material-list.umd.js +4 -4
  59. package/bundles/material-list.umd.js.map +1 -1
  60. package/bundles/material-list.umd.min.js +2 -2
  61. package/bundles/material-list.umd.min.js.map +1 -1
  62. package/bundles/material-menu.umd.js +5 -5
  63. package/bundles/material-menu.umd.js.map +1 -1
  64. package/bundles/material-menu.umd.min.js +6 -6
  65. package/bundles/material-menu.umd.min.js.map +1 -1
  66. package/bundles/material-radio.umd.js +62 -47
  67. package/bundles/material-radio.umd.js.map +1 -1
  68. package/bundles/material-radio.umd.min.js +10 -2
  69. package/bundles/material-radio.umd.min.js.map +1 -1
  70. package/bundles/material-select-testing.umd.js +45 -10
  71. package/bundles/material-select-testing.umd.js.map +1 -1
  72. package/bundles/material-select-testing.umd.min.js +2 -3
  73. package/bundles/material-select-testing.umd.min.js.map +1 -1
  74. package/bundles/material-select.umd.js +23 -14
  75. package/bundles/material-select.umd.js.map +1 -1
  76. package/bundles/material-select.umd.min.js +3 -3
  77. package/bundles/material-select.umd.min.js.map +1 -1
  78. package/bundles/material-sidenav.umd.js +2 -1
  79. package/bundles/material-sidenav.umd.js.map +1 -1
  80. package/bundles/material-sidenav.umd.min.js +2 -2
  81. package/bundles/material-sidenav.umd.min.js.map +1 -1
  82. package/bundles/material-slider.umd.js +14 -12
  83. package/bundles/material-slider.umd.js.map +1 -1
  84. package/bundles/material-slider.umd.min.js +1 -1
  85. package/bundles/material-slider.umd.min.js.map +1 -1
  86. package/bundles/material-table.umd.js +1 -1
  87. package/bundles/material-table.umd.js.map +1 -1
  88. package/bundles/material-table.umd.min.js +1 -1
  89. package/bundles/material-table.umd.min.js.map +1 -1
  90. package/bundles/material-tabs.umd.js +9 -6
  91. package/bundles/material-tabs.umd.js.map +1 -1
  92. package/bundles/material-tabs.umd.min.js +1 -1
  93. package/bundles/material-tabs.umd.min.js.map +1 -1
  94. package/bundles/material-tooltip.umd.js +5 -5
  95. package/bundles/material-tooltip.umd.js.map +1 -1
  96. package/bundles/material-tooltip.umd.min.js +3 -3
  97. package/bundles/material-tooltip.umd.min.js.map +1 -1
  98. package/bundles/material-tree.umd.js +1 -1
  99. package/bundles/material-tree.umd.js.map +1 -1
  100. package/bundles/material-tree.umd.min.js +1 -1
  101. package/bundles/material-tree.umd.min.js.map +1 -1
  102. package/button-toggle/index.metadata.json +1 -1
  103. package/chips/chip.d.ts +10 -3
  104. package/chips/index.metadata.json +1 -1
  105. package/core/index.metadata.json +1 -1
  106. package/core/ripple/ripple-renderer.d.ts +10 -3
  107. package/core/ripple/ripple.d.ts +2 -1
  108. package/datepicker/datepicker-input.d.ts +5 -2
  109. package/datepicker/index.metadata.json +1 -1
  110. package/dialog/dialog-container.d.ts +9 -2
  111. package/dialog/dialog-ref.d.ts +5 -0
  112. package/dialog/index.metadata.json +1 -1
  113. package/esm2015/autocomplete/autocomplete-module.js +3 -1
  114. package/esm2015/autocomplete/autocomplete-trigger.js +25 -24
  115. package/esm2015/autocomplete/testing/autocomplete-harness.js +18 -7
  116. package/esm2015/badge/badge-module.js +2 -2
  117. package/esm2015/bottom-sheet/bottom-sheet.js +5 -3
  118. package/esm2015/button-toggle/button-toggle.js +18 -7
  119. package/esm2015/chips/chip-list.js +5 -2
  120. package/esm2015/chips/chip.js +34 -4
  121. package/esm2015/core/common-behaviors/common-module.js +1 -1
  122. package/esm2015/core/ripple/ripple-renderer.js +140 -119
  123. package/esm2015/core/ripple/ripple.js +10 -7
  124. package/esm2015/core/version.js +1 -1
  125. package/esm2015/datepicker/calendar-body.js +3 -3
  126. package/esm2015/datepicker/calendar.js +3 -3
  127. package/esm2015/datepicker/datepicker-input.js +17 -2
  128. package/esm2015/datepicker/datepicker-module.js +3 -1
  129. package/esm2015/datepicker/datepicker.js +8 -2
  130. package/esm2015/dialog/dialog-container.js +37 -17
  131. package/esm2015/dialog/dialog-ref.js +24 -6
  132. package/esm2015/dialog/dialog.js +1 -12
  133. package/esm2015/expansion/expansion-panel-header.js +3 -3
  134. package/esm2015/expansion/expansion-panel.js +1 -1
  135. package/esm2015/form-field/form-field-module.js +5 -2
  136. package/esm2015/icon/icon.js +15 -2
  137. package/esm2015/input/input.js +26 -23
  138. package/esm2015/list/selection-list.js +8 -6
  139. package/esm2015/menu/menu-module.js +3 -2
  140. package/esm2015/radio/public-api.js +2 -2
  141. package/esm2015/radio/radio.js +70 -59
  142. package/esm2015/select/select-module.js +10 -2
  143. package/esm2015/select/select.js +12 -10
  144. package/esm2015/select/testing/select-harness.js +11 -6
  145. package/esm2015/sidenav/sidenav-module.js +4 -3
  146. package/esm2015/slider/slider.js +17 -15
  147. package/esm2015/snack-bar/snack-bar.js +1 -1
  148. package/esm2015/table/table-module.js +2 -2
  149. package/esm2015/tabs/paginated-tab-header.js +7 -4
  150. package/esm2015/tabs/tab-header.js +1 -1
  151. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +3 -3
  152. package/esm2015/tooltip/tooltip-module.js +3 -2
  153. package/esm2015/tree/tree-module.js +2 -2
  154. package/esm5/autocomplete/autocomplete-module.js +3 -1
  155. package/esm5/autocomplete/autocomplete-trigger.js +24 -24
  156. package/esm5/autocomplete/testing/autocomplete-harness.js +56 -9
  157. package/esm5/badge/badge-module.js +2 -2
  158. package/esm5/bottom-sheet/bottom-sheet.js +4 -3
  159. package/esm5/button-toggle/button-toggle.js +17 -7
  160. package/esm5/chips/chip-list.js +5 -2
  161. package/esm5/chips/chip.js +17 -4
  162. package/esm5/core/common-behaviors/common-module.js +1 -1
  163. package/esm5/core/ripple/ripple-renderer.js +91 -65
  164. package/esm5/core/ripple/ripple.js +4 -6
  165. package/esm5/core/version.js +1 -1
  166. package/esm5/datepicker/calendar-body.js +3 -3
  167. package/esm5/datepicker/calendar.js +3 -3
  168. package/esm5/datepicker/datepicker-input.js +8 -2
  169. package/esm5/datepicker/datepicker-module.js +3 -1
  170. package/esm5/datepicker/datepicker.js +8 -2
  171. package/esm5/dialog/dialog-container.js +29 -15
  172. package/esm5/dialog/dialog-ref.js +19 -6
  173. package/esm5/dialog/dialog.js +1 -9
  174. package/esm5/expansion/expansion-panel-header.js +3 -3
  175. package/esm5/expansion/expansion-panel.js +1 -1
  176. package/esm5/form-field/form-field-module.js +5 -2
  177. package/esm5/icon/icon.js +7 -2
  178. package/esm5/input/input.js +20 -16
  179. package/esm5/list/selection-list.js +5 -5
  180. package/esm5/menu/menu-module.js +3 -2
  181. package/esm5/radio/radio.js +63 -48
  182. package/esm5/select/select-module.js +10 -2
  183. package/esm5/select/select.js +12 -10
  184. package/esm5/select/testing/select-harness.js +46 -11
  185. package/esm5/sidenav/sidenav-module.js +4 -3
  186. package/esm5/slider/slider.js +15 -13
  187. package/esm5/table/table-module.js +2 -2
  188. package/esm5/tabs/paginated-tab-header.js +7 -4
  189. package/esm5/tabs/tab-header.js +1 -1
  190. package/esm5/tabs/tab-nav-bar/tab-nav-bar.js +3 -3
  191. package/esm5/tooltip/tooltip-module.js +3 -2
  192. package/esm5/tree/tree-module.js +2 -2
  193. package/expansion/index.metadata.json +1 -1
  194. package/fesm2015/autocomplete/testing.js +17 -6
  195. package/fesm2015/autocomplete/testing.js.map +1 -1
  196. package/fesm2015/autocomplete.js +26 -24
  197. package/fesm2015/autocomplete.js.map +1 -1
  198. package/fesm2015/badge.js +1 -1
  199. package/fesm2015/badge.js.map +1 -1
  200. package/fesm2015/bottom-sheet.js +4 -2
  201. package/fesm2015/bottom-sheet.js.map +1 -1
  202. package/fesm2015/button-toggle.js +17 -6
  203. package/fesm2015/button-toggle.js.map +1 -1
  204. package/fesm2015/chips.js +37 -4
  205. package/fesm2015/chips.js.map +1 -1
  206. package/fesm2015/core.js +150 -126
  207. package/fesm2015/core.js.map +1 -1
  208. package/fesm2015/datepicker.js +29 -6
  209. package/fesm2015/datepicker.js.map +1 -1
  210. package/fesm2015/dialog.js +59 -32
  211. package/fesm2015/dialog.js.map +1 -1
  212. package/fesm2015/expansion.js +3 -3
  213. package/fesm2015/expansion.js.map +1 -1
  214. package/fesm2015/form-field.js +4 -2
  215. package/fesm2015/form-field.js.map +1 -1
  216. package/fesm2015/icon.js +14 -2
  217. package/fesm2015/icon.js.map +1 -1
  218. package/fesm2015/input.js +25 -22
  219. package/fesm2015/input.js.map +1 -1
  220. package/fesm2015/list.js +7 -5
  221. package/fesm2015/list.js.map +1 -1
  222. package/fesm2015/menu.js +2 -1
  223. package/fesm2015/menu.js.map +1 -1
  224. package/fesm2015/radio.js +71 -60
  225. package/fesm2015/radio.js.map +1 -1
  226. package/fesm2015/select/testing.js +10 -5
  227. package/fesm2015/select/testing.js.map +1 -1
  228. package/fesm2015/select.js +20 -11
  229. package/fesm2015/select.js.map +1 -1
  230. package/fesm2015/sidenav.js +3 -2
  231. package/fesm2015/sidenav.js.map +1 -1
  232. package/fesm2015/slider.js +16 -14
  233. package/fesm2015/slider.js.map +1 -1
  234. package/fesm2015/table.js +1 -1
  235. package/fesm2015/table.js.map +1 -1
  236. package/fesm2015/tabs.js +9 -6
  237. package/fesm2015/tabs.js.map +1 -1
  238. package/fesm2015/tooltip.js +2 -2
  239. package/fesm2015/tooltip.js.map +1 -1
  240. package/fesm2015/tree.js +1 -1
  241. package/fesm2015/tree.js.map +1 -1
  242. package/fesm5/autocomplete/testing.js +55 -8
  243. package/fesm5/autocomplete/testing.js.map +1 -1
  244. package/fesm5/autocomplete.js +25 -24
  245. package/fesm5/autocomplete.js.map +1 -1
  246. package/fesm5/badge.js +1 -1
  247. package/fesm5/badge.js.map +1 -1
  248. package/fesm5/bottom-sheet.js +3 -2
  249. package/fesm5/bottom-sheet.js.map +1 -1
  250. package/fesm5/button-toggle.js +16 -6
  251. package/fesm5/button-toggle.js.map +1 -1
  252. package/fesm5/chips.js +20 -4
  253. package/fesm5/chips.js.map +1 -1
  254. package/fesm5/core.js +95 -71
  255. package/fesm5/core.js.map +1 -1
  256. package/fesm5/datepicker.js +20 -6
  257. package/fesm5/datepicker.js.map +1 -1
  258. package/fesm5/dialog.js +46 -27
  259. package/fesm5/dialog.js.map +1 -1
  260. package/fesm5/expansion.js +3 -3
  261. package/fesm5/expansion.js.map +1 -1
  262. package/fesm5/form-field.js +4 -2
  263. package/fesm5/form-field.js.map +1 -1
  264. package/fesm5/icon.js +6 -2
  265. package/fesm5/icon.js.map +1 -1
  266. package/fesm5/input.js +19 -15
  267. package/fesm5/input.js.map +1 -1
  268. package/fesm5/list.js +4 -4
  269. package/fesm5/list.js.map +1 -1
  270. package/fesm5/menu.js +2 -1
  271. package/fesm5/menu.js.map +1 -1
  272. package/fesm5/radio.js +63 -49
  273. package/fesm5/radio.js.map +1 -1
  274. package/fesm5/select/testing.js +45 -10
  275. package/fesm5/select/testing.js.map +1 -1
  276. package/fesm5/select.js +20 -11
  277. package/fesm5/select.js.map +1 -1
  278. package/fesm5/sidenav.js +3 -2
  279. package/fesm5/sidenav.js.map +1 -1
  280. package/fesm5/slider.js +14 -12
  281. package/fesm5/slider.js.map +1 -1
  282. package/fesm5/table.js +1 -1
  283. package/fesm5/table.js.map +1 -1
  284. package/fesm5/tabs.js +9 -6
  285. package/fesm5/tabs.js.map +1 -1
  286. package/fesm5/tooltip.js +2 -2
  287. package/fesm5/tooltip.js.map +1 -1
  288. package/fesm5/tree.js +1 -1
  289. package/fesm5/tree.js.map +1 -1
  290. package/form-field/index.metadata.json +1 -1
  291. package/icon/icon.d.ts +2 -0
  292. package/icon/index.metadata.json +1 -1
  293. package/input/index.metadata.json +1 -1
  294. package/input/input.d.ts +4 -4
  295. package/list/index.metadata.json +1 -1
  296. package/menu/index.metadata.json +1 -1
  297. package/package.json +2 -2
  298. package/prebuilt-themes/deeppurple-amber.css +1 -1
  299. package/prebuilt-themes/indigo-pink.css +1 -1
  300. package/prebuilt-themes/pink-bluegrey.css +1 -1
  301. package/prebuilt-themes/purple-green.css +1 -1
  302. package/radio/index.metadata.json +1 -1
  303. package/radio/radio.d.ts +8 -2
  304. package/schematics/collection.json +0 -7
  305. package/schematics/ng-add/index.js +1 -1
  306. package/schematics/ng-update/index.js +23 -23
  307. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/find-hammer-script-tags.d.ts +1 -1
  308. package/schematics/ng-update/migrations/hammer-gestures-v9/find-hammer-script-tags.js +51 -0
  309. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/find-main-module.d.ts +1 -1
  310. package/schematics/ng-update/migrations/hammer-gestures-v9/find-main-module.js +41 -0
  311. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/gesture-config.template +0 -0
  312. package/schematics/ng-update/{upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.d.ts → migrations/hammer-gestures-v9/hammer-gestures-migration.d.ts} +6 -6
  313. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +784 -0
  314. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/hammer-template-check.d.ts +1 -1
  315. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-template-check.js +65 -0
  316. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/import-manager.d.ts +4 -4
  317. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +379 -0
  318. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/remove-array-element.d.ts +1 -1
  319. package/schematics/ng-update/migrations/hammer-gestures-v9/remove-array-element.js +75 -0
  320. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/remove-element-from-html.d.ts +1 -1
  321. package/schematics/ng-update/migrations/hammer-gestures-v9/remove-element-from-html.js +37 -0
  322. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.d.ts +19 -0
  323. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.js +57 -0
  324. package/schematics/ng-update/{upgrade-rules/misc-checks/misc-class-names-rule.d.ts → migrations/misc-checks/misc-class-names.d.ts} +5 -5
  325. package/schematics/ng-update/migrations/misc-checks/misc-class-names.js +52 -0
  326. package/schematics/ng-update/{upgrade-rules/misc-checks/misc-imports-rule.d.ts → migrations/misc-checks/misc-imports.d.ts} +5 -5
  327. package/schematics/ng-update/migrations/misc-checks/misc-imports.js +63 -0
  328. package/schematics/ng-update/{upgrade-rules/misc-checks/misc-property-names-rule.d.ts → migrations/misc-checks/misc-property-names.d.ts} +5 -5
  329. package/schematics/ng-update/migrations/misc-checks/misc-property-names.js +56 -0
  330. package/schematics/ng-update/migrations/misc-checks/misc-template.d.ts +17 -0
  331. package/schematics/ng-update/migrations/misc-checks/misc-template.js +69 -0
  332. package/schematics/ng-update/{upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.d.ts → migrations/misc-ripples-v7/ripple-speed-factor-migration.d.ts} +5 -5
  333. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +147 -0
  334. package/schematics/ng-update/{upgrade-rules → migrations}/misc-ripples-v7/ripple-speed-factor.d.ts +1 -1
  335. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor.js +39 -0
  336. package/schematics/ng-update/{upgrade-rules → migrations}/package-imports-v8/material-symbols.json +0 -0
  337. package/schematics/ng-update/{upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts → migrations/package-imports-v8/secondary-entry-points-migration.d.ts} +5 -5
  338. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +177 -0
  339. package/schematics/ng-update/upgrade-data.d.ts +2 -2
  340. package/schematics/ng-update/upgrade-data.js +1 -1
  341. package/select/index.metadata.json +1 -1
  342. package/select/testing/select-harness.d.ts +2 -1
  343. package/sidenav/index.metadata.json +1 -1
  344. package/table/index.metadata.json +1 -1
  345. package/tabs/_tabs-common.scss +5 -3
  346. package/tabs/index.metadata.json +1 -1
  347. package/tooltip/index.metadata.json +1 -1
  348. package/tree/index.metadata.json +1 -1
  349. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/find-hammer-script-tags.js +0 -51
  350. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/find-main-module.js +0 -41
  351. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.js +0 -781
  352. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-template-check.js +0 -65
  353. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/import-manager.js +0 -379
  354. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-array-element.js +0 -75
  355. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-element-from-html.js +0 -37
  356. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +0 -19
  357. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js +0 -57
  358. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js +0 -52
  359. package/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.js +0 -63
  360. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js +0 -56
  361. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +0 -17
  362. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js +0 -69
  363. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.js +0 -147
  364. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor.js +0 -39
  365. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.js +0 -177
@@ -0,0 +1,147 @@
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
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/material/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration", ["require", "exports", "@angular/cdk/schematics", "typescript", "@angular/material/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const schematics_1 = require("@angular/cdk/schematics");
20
+ const ts = require("typescript");
21
+ const ripple_speed_factor_1 = require("@angular/material/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor");
22
+ /** Regular expression that matches [matRippleSpeedFactor]="$NUMBER" in templates. */
23
+ const speedFactorNumberRegex = /\[matRippleSpeedFactor]="(\d+(?:\.\d+)?)"/g;
24
+ /** Regular expression that matches [matRippleSpeedFactor]="$NOT_A_NUMBER" in templates. */
25
+ const speedFactorNotParseable = /\[matRippleSpeedFactor]="(?!\d+(?:\.\d+)?")(.*)"/g;
26
+ /**
27
+ * Note that will be added whenever a speed factor expression has been converted to calculate
28
+ * the according duration. This note should encourage people to clean up their code by switching
29
+ * away from the speed factors to explicit durations.
30
+ */
31
+ const removeNote = `TODO: Cleanup duration calculation.`;
32
+ /**
33
+ * Migration that walks through every property assignment and switches the global `baseSpeedFactor`
34
+ * ripple option to the new global animation config. Also updates every class member assignment
35
+ * that refers to MatRipple#speedFactor.
36
+ */
37
+ class RippleSpeedFactorMigration extends schematics_1.Migration {
38
+ constructor() {
39
+ super(...arguments);
40
+ // Only enable this rule if the migration targets version 7 as the ripple
41
+ // speed factor has been removed in that version.
42
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V7;
43
+ }
44
+ visitNode(node) {
45
+ if (ts.isBinaryExpression(node)) {
46
+ this._visitBinaryExpression(node);
47
+ }
48
+ else if (ts.isPropertyAssignment(node)) {
49
+ this._visitPropertyAssignment(node);
50
+ }
51
+ }
52
+ visitTemplate(template) {
53
+ let match;
54
+ while ((match = speedFactorNumberRegex.exec(template.content)) !== null) {
55
+ const newEnterDuration = ripple_speed_factor_1.convertSpeedFactorToDuration(parseFloat(match[1]));
56
+ this._replaceText(template.filePath, template.start + match.index, match[0].length, `[matRippleAnimation]="{enterDuration: ${newEnterDuration}}"`);
57
+ }
58
+ while ((match = speedFactorNotParseable.exec(template.content)) !== null) {
59
+ const newDurationExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(match[1]);
60
+ this._replaceText(template.filePath, template.start + match.index, match[0].length, `[matRippleAnimation]="{enterDuration: (${newDurationExpression})}"`);
61
+ }
62
+ }
63
+ /** Switches binary expressions (e.g. myRipple.speedFactor = 0.5) to the new animation config. */
64
+ _visitBinaryExpression(expression) {
65
+ if (!ts.isPropertyAccessExpression(expression.left)) {
66
+ return;
67
+ }
68
+ // Left side expression consists of target object and property name (e.g. myInstance.val)
69
+ const leftExpression = expression.left;
70
+ const targetTypeNode = this.typeChecker.getTypeAtLocation(leftExpression.expression);
71
+ if (!targetTypeNode.symbol) {
72
+ return;
73
+ }
74
+ const targetTypeName = targetTypeNode.symbol.getName();
75
+ const propertyName = leftExpression.name.getText();
76
+ const filePath = leftExpression.getSourceFile().fileName;
77
+ if (targetTypeName === 'MatRipple' && propertyName === 'speedFactor') {
78
+ if (ts.isNumericLiteral(expression.right)) {
79
+ const numericValue = parseFloat(expression.right.text);
80
+ const newEnterDurationValue = ripple_speed_factor_1.convertSpeedFactorToDuration(numericValue);
81
+ // Replace the `speedFactor` property name with `animation`.
82
+ this._replaceText(filePath, leftExpression.name.getStart(), leftExpression.name.getWidth(), 'animation');
83
+ // Replace the value assignment with the new animation config.
84
+ this._replaceText(filePath, expression.right.getStart(), expression.right.getWidth(), `{enterDuration: ${newEnterDurationValue}}`);
85
+ }
86
+ else {
87
+ // Handle the right expression differently if the previous speed factor value can't
88
+ // be resolved statically. In that case, we just create a TypeScript expression that
89
+ // calculates the explicit duration based on the non-static speed factor expression.
90
+ const newExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(expression.right.getText());
91
+ // Replace the `speedFactor` property name with `animation`.
92
+ this._replaceText(filePath, leftExpression.name.getStart(), leftExpression.name.getWidth(), 'animation');
93
+ // Replace the value assignment with the new animation config and remove TODO.
94
+ this._replaceText(filePath, expression.right.getStart(), expression.right.getWidth(), `/** ${removeNote} */ {enterDuration: ${newExpression}}`);
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * Switches the global option `baseSpeedFactor` to the new animation config. For this
100
+ * we assume that the `baseSpeedFactor` is not used in combination with individual
101
+ * speed factors.
102
+ */
103
+ _visitPropertyAssignment(assignment) {
104
+ // For switching the `baseSpeedFactor` global option we expect the property assignment
105
+ // to be inside of a normal object literal. Custom ripple global options cannot be
106
+ // witched automatically.
107
+ if (!ts.isObjectLiteralExpression(assignment.parent)) {
108
+ return;
109
+ }
110
+ // The assignment consists of a name (key) and initializer (value).
111
+ if (assignment.name.getText() !== 'baseSpeedFactor') {
112
+ return;
113
+ }
114
+ // We could technically lazily check for the MAT_RIPPLE_GLOBAL_OPTIONS injection token to
115
+ // be present, but it's not right to assume that everyone sets the ripple global options
116
+ // immediately in the provider object (e.g. it can happen that someone just imports the
117
+ // config from a separate file).
118
+ const { initializer, name } = assignment;
119
+ const filePath = assignment.getSourceFile().fileName;
120
+ if (ts.isNumericLiteral(initializer)) {
121
+ const numericValue = parseFloat(initializer.text);
122
+ const newEnterDurationValue = ripple_speed_factor_1.convertSpeedFactorToDuration(numericValue);
123
+ // Replace the `baseSpeedFactor` property name with `animation`.
124
+ this._replaceText(filePath, name.getStart(), name.getWidth(), 'animation');
125
+ // Replace the value assignment initializer with the new animation config.
126
+ this._replaceText(filePath, initializer.getStart(), initializer.getWidth(), `{enterDuration: ${newEnterDurationValue}}`);
127
+ }
128
+ else {
129
+ // Handle the right expression differently if the previous speed factor value can't
130
+ // be resolved statically. In that case, we just create a TypeScript expression that
131
+ // calculates the explicit duration based on the non-static speed factor expression.
132
+ const newExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(initializer.getText());
133
+ // Replace the `baseSpeedFactor` property name with `animation`.
134
+ this._replaceText(filePath, name.getStart(), name.getWidth(), 'animation');
135
+ // Replace the value assignment with the new animation config and remove TODO.
136
+ this._replaceText(filePath, initializer.getStart(), initializer.getWidth(), `/** ${removeNote} */ {enterDuration: ${newExpression}}`);
137
+ }
138
+ }
139
+ _replaceText(filePath, start, width, newText) {
140
+ const recorder = this.fileSystem.edit(filePath);
141
+ recorder.remove(start, width);
142
+ recorder.insertRight(start, newText);
143
+ }
144
+ }
145
+ exports.RippleSpeedFactorMigration = RippleSpeedFactorMigration;
146
+ });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLXNwZWVkLWZhY3Rvci1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9taXNjLXJpcHBsZXMtdjcvcmlwcGxlLXNwZWVkLWZhY3Rvci1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCx3REFBbUY7SUFDbkYsaUNBQWlDO0lBQ2pDLCtIQUcrQjtJQUUvQixxRkFBcUY7SUFDckYsTUFBTSxzQkFBc0IsR0FBRyw0Q0FBNEMsQ0FBQztJQUU1RSwyRkFBMkY7SUFDM0YsTUFBTSx1QkFBdUIsR0FBRyxtREFBbUQsQ0FBQztJQUVwRjs7OztPQUlHO0lBQ0gsTUFBTSxVQUFVLEdBQUcscUNBQXFDLENBQUM7SUFFekQ7Ozs7T0FJRztJQUNILE1BQWEsMEJBQTJCLFNBQVEsc0JBQWU7UUFBL0Q7O1lBRUUseUVBQXlFO1lBQ3pFLGlEQUFpRDtZQUNqRCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsQ0FBQztRQXVJcEQsQ0FBQztRQXJJQyxTQUFTLENBQUMsSUFBYTtZQUNyQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO2lCQUFNLElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDO1FBRUQsYUFBYSxDQUFDLFFBQTBCO1lBQ3RDLElBQUksS0FBNEIsQ0FBQztZQUVqQyxPQUFPLENBQUMsS0FBSyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFR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M0UsMEVBQTBFO2dCQUMxRSxJQUFJLENBQUMsWUFBWSxDQUNiLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUN4RCxtQkFBbUIscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO2FBQ2xEO2lCQUFNO2dCQUNMLG1GQUFtRjtnQkFDbkYsb0ZBQW9GO2dCQUNwRixvRkFBb0Y7Z0JBQ3BGLE1BQU0sYUFBYSxHQUFHLHdEQUFrQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUVoRixnRUFBZ0U7Z0JBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRTNFLDhFQUE4RTtnQkFDOUUsSUFBSSxDQUFDLFlBQVksQ0FDYixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFDeEQsT0FBTyxVQUFVLHVCQUF1QixhQUFhLEdBQUcsQ0FBQyxDQUFDO2FBQy9EO1FBQ0gsQ0FBQztRQUVPLFlBQVksQ0FBQyxRQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsT0FBZTtZQUNsRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QixRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO0tBQ0Y7SUEzSUQsZ0VBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TWlncmF0aW9uLCBSZXNvbHZlZFJlc291cmNlLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7XG4gIGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24sXG4gIGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24sXG59IGZyb20gJy4vcmlwcGxlLXNwZWVkLWZhY3Rvcic7XG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIFttYXRSaXBwbGVTcGVlZEZhY3Rvcl09XCIkTlVNQkVSXCIgaW4gdGVtcGxhdGVzLiAqL1xuY29uc3Qgc3BlZWRGYWN0b3JOdW1iZXJSZWdleCA9IC9cXFttYXRSaXBwbGVTcGVlZEZhY3Rvcl09XCIoXFxkKyg/OlxcLlxcZCspPylcIi9nO1xuXG4vKiogUmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBbbWF0UmlwcGxlU3BlZWRGYWN0b3JdPVwiJE5PVF9BX05VTUJFUlwiIGluIHRlbXBsYXRlcy4gKi9cbmNvbnN0IHNwZWVkRmFjdG9yTm90UGFyc2VhYmxlID0gL1xcW21hdFJpcHBsZVNwZWVkRmFjdG9yXT1cIig/IVxcZCsoPzpcXC5cXGQrKT9cIikoLiopXCIvZztcblxuLyoqXG4gKiBOb3RlIHRoYXQgd2lsbCBiZSBhZGRlZCB3aGVuZXZlciBhIHNwZWVkIGZhY3RvciBleHByZXNzaW9uIGhhcyBiZWVuIGNvbnZlcnRlZCB0byBjYWxjdWxhdGVcbiAqIHRoZSBhY2NvcmRpbmcgZHVyYXRpb24uIFRoaXMgbm90ZSBzaG91bGQgZW5jb3VyYWdlIHBlb3BsZSB0byBjbGVhbiB1cCB0aGVpciBjb2RlIGJ5IHN3aXRjaGluZ1xuICogYXdheSBmcm9tIHRoZSBzcGVlZCBmYWN0b3JzIHRvIGV4cGxpY2l0IGR1cmF0aW9ucy5cbiAqL1xuY29uc3QgcmVtb3ZlTm90ZSA9IGBUT0RPOiBDbGVhbnVwIGR1cmF0aW9uIGNhbGN1bGF0aW9uLmA7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgd2Fsa3MgdGhyb3VnaCBldmVyeSBwcm9wZXJ0eSBhc3NpZ25tZW50IGFuZCBzd2l0Y2hlcyB0aGUgZ2xvYmFsIGBiYXNlU3BlZWRGYWN0b3JgXG4gKiByaXBwbGUgb3B0aW9uIHRvIHRoZSBuZXcgZ2xvYmFsIGFuaW1hdGlvbiBjb25maWcuIEFsc28gdXBkYXRlcyBldmVyeSBjbGFzcyBtZW1iZXIgYXNzaWdubWVudFxuICogdGhhdCByZWZlcnMgdG8gTWF0UmlwcGxlI3NwZWVkRmFjdG9yLlxuICovXG5leHBvcnQgY2xhc3MgUmlwcGxlU3BlZWRGYWN0b3JNaWdyYXRpb24gZXh0ZW5kcyBNaWdyYXRpb248bnVsbD4ge1xuXG4gIC8vIE9ubHkgZW5hYmxlIHRoaXMgcnVsZSBpZiB0aGUgbWlncmF0aW9uIHRhcmdldHMgdmVyc2lvbiA3IGFzIHRoZSByaXBwbGVcbiAgLy8gc3BlZWQgZmFjdG9yIGhhcyBiZWVuIHJlbW92ZWQgaW4gdGhhdCB2ZXJzaW9uLlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY3O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzQmluYXJ5RXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGUpO1xuICAgIH0gZWxzZSBpZiAodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0UHJvcGVydHlBc3NpZ25tZW50KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VGVtcGxhdGUodGVtcGxhdGU6IFJlc29sdmVkUmVzb3VyY2UpOiB2b2lkIHtcbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXl8bnVsbDtcblxuICAgIHdoaWxlICgobWF0Y2ggPSBzcGVlZEZhY3Rvck51bWJlclJlZ2V4LmV4ZWModGVtcGxhdGUuY29udGVudCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBuZXdFbnRlckR1cmF0aW9uID0gY29udmVydFNwZWVkRmFjdG9yVG9EdXJhdGlvbihwYXJzZUZsb2F0KG1hdGNoWzFdKSk7XG5cbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgIHRlbXBsYXRlLmZpbGVQYXRoLCB0ZW1wbGF0ZS5zdGFydCArIG1hdGNoLmluZGV4ISwgbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgICAgIGBbbWF0UmlwcGxlQW5pbWF0aW9uXT1cIntlbnRlckR1cmF0aW9uOiAke25ld0VudGVyRHVyYXRpb259fVwiYCk7XG4gICAgfVxuXG4gICAgd2hpbGUgKChtYXRjaCA9IHNwZWVkRmFjdG9yTm90UGFyc2VhYmxlLmV4ZWModGVtcGxhdGUuY29udGVudCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBuZXdEdXJhdGlvbkV4cHJlc3Npb24gPSBjcmVhdGVTcGVlZEZhY3RvckNvbnZlcnRFeHByZXNzaW9uKG1hdGNoWzFdKTtcbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgIHRlbXBsYXRlLmZpbGVQYXRoLCB0ZW1wbGF0ZS5zdGFydCArIG1hdGNoLmluZGV4ISwgbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgICAgIGBbbWF0UmlwcGxlQW5pbWF0aW9uXT1cIntlbnRlckR1cmF0aW9uOiAoJHtuZXdEdXJhdGlvbkV4cHJlc3Npb259KX1cImApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTd2l0Y2hlcyBiaW5hcnkgZXhwcmVzc2lvbnMgKGUuZy4gbXlSaXBwbGUuc3BlZWRGYWN0b3IgPSAwLjUpIHRvIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZy4gKi9cbiAgcHJpdmF0ZSBfdmlzaXRCaW5hcnlFeHByZXNzaW9uKGV4cHJlc3Npb246IHRzLkJpbmFyeUV4cHJlc3Npb24pIHtcbiAgICBpZiAoIXRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGV4cHJlc3Npb24ubGVmdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZWZ0IHNpZGUgZXhwcmVzc2lvbiBjb25zaXN0cyBvZiB0YXJnZXQgb2JqZWN0IGFuZCBwcm9wZXJ0eSBuYW1lIChlLmcuIG15SW5zdGFuY2UudmFsKVxuICAgIGNvbnN0IGxlZnRFeHByZXNzaW9uID0gZXhwcmVzc2lvbi5sZWZ0IGFzIHRzLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjtcbiAgICBjb25zdCB0YXJnZXRUeXBlTm9kZSA9IHRoaXMudHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24obGVmdEV4cHJlc3Npb24uZXhwcmVzc2lvbik7XG5cbiAgICBpZiAoIXRhcmdldFR5cGVOb2RlLnN5bWJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFR5cGVOYW1lID0gdGFyZ2V0VHlwZU5vZGUuc3ltYm9sLmdldE5hbWUoKTtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBsZWZ0RXhwcmVzc2lvbi5uYW1lLmdldFRleHQoKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGxlZnRFeHByZXNzaW9uLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcblxuICAgIGlmICh0YXJnZXRUeXBlTmFtZSA9PT0gJ01hdFJpcHBsZScgJiYgcHJvcGVydHlOYW1lID09PSAnc3BlZWRGYWN0b3InKSB7XG4gICAgICBpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChleHByZXNzaW9uLnJpZ2h0KSkge1xuICAgICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KGV4cHJlc3Npb24ucmlnaHQudGV4dCk7XG4gICAgICAgIGNvbnN0IG5ld0VudGVyRHVyYXRpb25WYWx1ZSA9IGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24obnVtZXJpY1ZhbHVlKTtcblxuICAgICAgICAvLyBSZXBsYWNlIHRoZSBgc3BlZWRGYWN0b3JgIHByb3BlcnR5IG5hbWUgd2l0aCBgYW5pbWF0aW9uYC5cbiAgICAgICAgdGhpcy5fcmVwbGFjZVRleHQoXG4gICAgICAgICAgICBmaWxlUGF0aCwgbGVmdEV4cHJlc3Npb24ubmFtZS5nZXRTdGFydCgpLCBsZWZ0RXhwcmVzc2lvbi5uYW1lLmdldFdpZHRoKCksICdhbmltYXRpb24nKTtcblxuICAgICAgICAvLyBSZXBsYWNlIHRoZSB2YWx1ZSBhc3NpZ25tZW50IHdpdGggdGhlIG5ldyBhbmltYXRpb24gY29uZmlnLlxuICAgICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICAgIGZpbGVQYXRoLCBleHByZXNzaW9uLnJpZ2h0LmdldFN0YXJ0KCksIGV4cHJlc3Npb24ucmlnaHQuZ2V0V2lkdGgoKSxcbiAgICAgICAgICAgIGB7ZW50ZXJEdXJhdGlvbjogJHtuZXdFbnRlckR1cmF0aW9uVmFsdWV9fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSGFuZGxlIHRoZSByaWdodCBleHByZXNzaW9uIGRpZmZlcmVudGx5IGlmIHRoZSBwcmV2aW91cyBzcGVlZCBmYWN0b3IgdmFsdWUgY2FuJ3RcbiAgICAgICAgLy8gYmUgcmVzb2x2ZWQgc3RhdGljYWxseS4gSW4gdGhhdCBjYXNlLCB3ZSBqdXN0IGNyZWF0ZSBhIFR5cGVTY3JpcHQgZXhwcmVzc2lvbiB0aGF0XG4gICAgICAgIC8vIGNhbGN1bGF0ZXMgdGhlIGV4cGxpY2l0IGR1cmF0aW9uIGJhc2VkIG9uIHRoZSBub24tc3RhdGljIHNwZWVkIGZhY3RvciBleHByZXNzaW9uLlxuICAgICAgICBjb25zdCBuZXdFeHByZXNzaW9uID0gY3JlYXRlU3BlZWRGYWN0b3JDb252ZXJ0RXhwcmVzc2lvbihleHByZXNzaW9uLnJpZ2h0LmdldFRleHQoKSk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgYHNwZWVkRmFjdG9yYCBwcm9wZXJ0eSBuYW1lIHdpdGggYGFuaW1hdGlvbmAuXG4gICAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgICAgZmlsZVBhdGgsIGxlZnRFeHByZXNzaW9uLm5hbWUuZ2V0U3RhcnQoKSwgbGVmdEV4cHJlc3Npb24ubmFtZS5nZXRXaWR0aCgpLCAnYW5pbWF0aW9uJyk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgYXNzaWdubWVudCB3aXRoIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZyBhbmQgcmVtb3ZlIFRPRE8uXG4gICAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgICAgZmlsZVBhdGgsIGV4cHJlc3Npb24ucmlnaHQuZ2V0U3RhcnQoKSwgZXhwcmVzc2lvbi5yaWdodC5nZXRXaWR0aCgpLFxuICAgICAgICAgICAgYC8qKiAke3JlbW92ZU5vdGV9ICovIHtlbnRlckR1cmF0aW9uOiAke25ld0V4cHJlc3Npb259fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0aGUgZ2xvYmFsIG9wdGlvbiBgYmFzZVNwZWVkRmFjdG9yYCB0byB0aGUgbmV3IGFuaW1hdGlvbiBjb25maWcuIEZvciB0aGlzXG4gICAqIHdlIGFzc3VtZSB0aGF0IHRoZSBgYmFzZVNwZWVkRmFjdG9yYCBpcyBub3QgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGluZGl2aWR1YWxcbiAgICogc3BlZWQgZmFjdG9ycy5cbiAgICovXG4gIHByaXZhdGUgX3Zpc2l0UHJvcGVydHlBc3NpZ25tZW50KGFzc2lnbm1lbnQ6IHRzLlByb3BlcnR5QXNzaWdubWVudCkge1xuICAgIC8vIEZvciBzd2l0Y2hpbmcgdGhlIGBiYXNlU3BlZWRGYWN0b3JgIGdsb2JhbCBvcHRpb24gd2UgZXhwZWN0IHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50XG4gICAgLy8gdG8gYmUgaW5zaWRlIG9mIGEgbm9ybWFsIG9iamVjdCBsaXRlcmFsLiBDdXN0b20gcmlwcGxlIGdsb2JhbCBvcHRpb25zIGNhbm5vdCBiZVxuICAgIC8vIHdpdGNoZWQgYXV0b21hdGljYWxseS5cbiAgICBpZiAoIXRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oYXNzaWdubWVudC5wYXJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhlIGFzc2lnbm1lbnQgY29uc2lzdHMgb2YgYSBuYW1lIChrZXkpIGFuZCBpbml0aWFsaXplciAodmFsdWUpLlxuICAgIGlmIChhc3NpZ25tZW50Lm5hbWUuZ2V0VGV4dCgpICE9PSAnYmFzZVNwZWVkRmFjdG9yJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIGNvdWxkIHRlY2huaWNhbGx5IGxhemlseSBjaGVjayBmb3IgdGhlIE1BVF9SSVBQTEVfR0xPQkFMX09QVElPTlMgaW5qZWN0aW9uIHRva2VuIHRvXG4gICAgLy8gYmUgcHJlc2VudCwgYnV0IGl0J3Mgbm90IHJpZ2h0IHRvIGFzc3VtZSB0aGF0IGV2ZXJ5b25lIHNldHMgdGhlIHJpcHBsZSBnbG9iYWwgb3B0aW9uc1xuICAgIC8vIGltbWVkaWF0ZWx5IGluIHRoZSBwcm92aWRlciBvYmplY3QgKGUuZy4gaXQgY2FuIGhhcHBlbiB0aGF0IHNvbWVvbmUganVzdCBpbXBvcnRzIHRoZVxuICAgIC8vIGNvbmZpZyBmcm9tIGEgc2VwYXJhdGUgZmlsZSkuXG5cbiAgICBjb25zdCB7aW5pdGlhbGl6ZXIsIG5hbWV9ID0gYXNzaWdubWVudDtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGFzc2lnbm1lbnQuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lO1xuXG4gICAgaWYgKHRzLmlzTnVtZXJpY0xpdGVyYWwoaW5pdGlhbGl6ZXIpKSB7XG4gICAgICBjb25zdCBudW1lcmljVmFsdWUgPSBwYXJzZUZsb2F0KGluaXRpYWxpemVyLnRleHQpO1xuICAgICAgY29uc3QgbmV3RW50ZXJEdXJhdGlvblZhbHVlID0gY29udmVydFNwZWVkRmFjdG9yVG9EdXJhdGlvbihudW1lcmljVmFsdWUpO1xuXG4gICAgICAvLyBSZXBsYWNlIHRoZSBgYmFzZVNwZWVkRmFjdG9yYCBwcm9wZXJ0eSBuYW1lIHdpdGggYGFuaW1hdGlvbmAuXG4gICAgICB0aGlzLl9yZXBsYWNlVGV4dChmaWxlUGF0aCwgbmFtZS5nZXRTdGFydCgpLCBuYW1lLmdldFdpZHRoKCksICdhbmltYXRpb24nKTtcbiAgICAgIC8vIFJlcGxhY2UgdGhlIHZhbHVlIGFzc2lnbm1lbnQgaW5pdGlhbGl6ZXIgd2l0aCB0aGUgbmV3IGFuaW1hdGlvbiBjb25maWcuXG4gICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICBmaWxlUGF0aCwgaW5pdGlhbGl6ZXIuZ2V0U3RhcnQoKSwgaW5pdGlhbGl6ZXIuZ2V0V2lkdGgoKSxcbiAgICAgICAgICBge2VudGVyRHVyYXRpb246ICR7bmV3RW50ZXJEdXJhdGlvblZhbHVlfX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIHRoZSByaWdodCBleHByZXNzaW9uIGRpZmZlcmVudGx5IGlmIHRoZSBwcmV2aW91cyBzcGVlZCBmYWN0b3IgdmFsdWUgY2FuJ3RcbiAgICAgIC8vIGJlIHJlc29sdmVkIHN0YXRpY2FsbHkuIEluIHRoYXQgY2FzZSwgd2UganVzdCBjcmVhdGUgYSBUeXBlU2NyaXB0IGV4cHJlc3Npb24gdGhhdFxuICAgICAgLy8gY2FsY3VsYXRlcyB0aGUgZXhwbGljaXQgZHVyYXRpb24gYmFzZWQgb24gdGhlIG5vbi1zdGF0aWMgc3BlZWQgZmFjdG9yIGV4cHJlc3Npb24uXG4gICAgICBjb25zdCBuZXdFeHByZXNzaW9uID0gY3JlYXRlU3BlZWRGYWN0b3JDb252ZXJ0RXhwcmVzc2lvbihpbml0aWFsaXplci5nZXRUZXh0KCkpO1xuXG4gICAgICAvLyBSZXBsYWNlIHRoZSBgYmFzZVNwZWVkRmFjdG9yYCBwcm9wZXJ0eSBuYW1lIHdpdGggYGFuaW1hdGlvbmAuXG4gICAgICB0aGlzLl9yZXBsYWNlVGV4dChmaWxlUGF0aCwgbmFtZS5nZXRTdGFydCgpLCBuYW1lLmdldFdpZHRoKCksICdhbmltYXRpb24nKTtcblxuICAgICAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgYXNzaWdubWVudCB3aXRoIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZyBhbmQgcmVtb3ZlIFRPRE8uXG4gICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICBmaWxlUGF0aCwgaW5pdGlhbGl6ZXIuZ2V0U3RhcnQoKSwgaW5pdGlhbGl6ZXIuZ2V0V2lkdGgoKSxcbiAgICAgICAgICBgLyoqICR7cmVtb3ZlTm90ZX0gKi8ge2VudGVyRHVyYXRpb246ICR7bmV3RXhwcmVzc2lvbn19YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVwbGFjZVRleHQoZmlsZVBhdGg6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgd2lkdGg6IG51bWJlciwgbmV3VGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmZpbGVTeXN0ZW0uZWRpdChmaWxlUGF0aCk7XG4gICAgcmVjb3JkZXIucmVtb3ZlKHN0YXJ0LCB3aWR0aCk7XG4gICAgcmVjb3JkZXIuaW5zZXJ0UmlnaHQoc3RhcnQsIG5ld1RleHQpO1xuICB9XG59XG4iXX0=
@@ -5,7 +5,7 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- /// <amd-module name="@angular/material/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor" />
8
+ /// <amd-module name="@angular/material/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor" />
9
9
  /** Converts the specified speed factor into the exact static enter duration. */
10
10
  export declare function convertSpeedFactorToDuration(factor: number): number;
11
11
  /**
@@ -0,0 +1,39 @@
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
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/material/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor", ["require", "exports"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ /** Converts the specified speed factor into the exact static enter duration. */
20
+ function convertSpeedFactorToDuration(factor) {
21
+ // Based on the numeric speed factor value that only affected the `enterDuration` we can
22
+ // now calculate the exact `enterDuration`. 450ms is the enter duration without factor.
23
+ return 450 / (factor || 1);
24
+ }
25
+ exports.convertSpeedFactorToDuration = convertSpeedFactorToDuration;
26
+ /**
27
+ * Creates a runtime TypeScript expression that can be used in order to calculate the duration
28
+ * from the speed factor expression that couldn't be statically analyzed.
29
+ *
30
+ * @param speedFactorValue Speed factor expression that couldn't be statically analyzed.
31
+ */
32
+ function createSpeedFactorConvertExpression(speedFactorValue) {
33
+ // To be sure that the speed factor value expression is calculated properly, we need to add
34
+ // the according parenthesis.
35
+ return `450 / (${speedFactorValue})`;
36
+ }
37
+ exports.createSpeedFactorConvertExpression = createSpeedFactorConvertExpression;
38
+ });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLXNwZWVkLWZhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL21pc2MtcmlwcGxlcy12Ny9yaXBwbGUtc3BlZWQtZmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsZ0ZBQWdGO0lBQ2hGLFNBQWdCLDRCQUE0QixDQUFDLE1BQWM7UUFDekQsd0ZBQXdGO1FBQ3hGLHVGQUF1RjtRQUN2RixPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBSkQsb0VBSUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQWdCLGtDQUFrQyxDQUFDLGdCQUF3QjtRQUN6RSwyRkFBMkY7UUFDM0YsNkJBQTZCO1FBQzdCLE9BQU8sVUFBVSxnQkFBZ0IsR0FBRyxDQUFDO0lBQ3ZDLENBQUM7SUFKRCxnRkFJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKiogQ29udmVydHMgdGhlIHNwZWNpZmllZCBzcGVlZCBmYWN0b3IgaW50byB0aGUgZXhhY3Qgc3RhdGljIGVudGVyIGR1cmF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24oZmFjdG9yOiBudW1iZXIpIHtcbiAgLy8gQmFzZWQgb24gdGhlIG51bWVyaWMgc3BlZWQgZmFjdG9yIHZhbHVlIHRoYXQgb25seSBhZmZlY3RlZCB0aGUgYGVudGVyRHVyYXRpb25gIHdlIGNhblxuICAvLyBub3cgY2FsY3VsYXRlIHRoZSBleGFjdCBgZW50ZXJEdXJhdGlvbmAuIDQ1MG1zIGlzIHRoZSBlbnRlciBkdXJhdGlvbiB3aXRob3V0IGZhY3Rvci5cbiAgcmV0dXJuIDQ1MCAvIChmYWN0b3IgfHwgMSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bnRpbWUgVHlwZVNjcmlwdCBleHByZXNzaW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4gb3JkZXIgdG8gY2FsY3VsYXRlIHRoZSBkdXJhdGlvblxuICogZnJvbSB0aGUgc3BlZWQgZmFjdG9yIGV4cHJlc3Npb24gdGhhdCBjb3VsZG4ndCBiZSBzdGF0aWNhbGx5IGFuYWx5emVkLlxuICpcbiAqIEBwYXJhbSBzcGVlZEZhY3RvclZhbHVlIFNwZWVkIGZhY3RvciBleHByZXNzaW9uIHRoYXQgY291bGRuJ3QgYmUgc3RhdGljYWxseSBhbmFseXplZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24oc3BlZWRGYWN0b3JWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gVG8gYmUgc3VyZSB0aGF0IHRoZSBzcGVlZCBmYWN0b3IgdmFsdWUgZXhwcmVzc2lvbiBpcyBjYWxjdWxhdGVkIHByb3Blcmx5LCB3ZSBuZWVkIHRvIGFkZFxuICAvLyB0aGUgYWNjb3JkaW5nIHBhcmVudGhlc2lzLlxuICByZXR1cm4gYDQ1MCAvICgke3NwZWVkRmFjdG9yVmFsdWV9KWA7XG59XG4iXX0=
@@ -5,15 +5,15 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- /// <amd-module name="@angular/material/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule" />
9
- import { MigrationRule } from '@angular/cdk/schematics';
8
+ /// <amd-module name="@angular/material/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration" />
9
+ import { Migration } from '@angular/cdk/schematics';
10
10
  import * as ts from 'typescript';
11
11
  /**
12
- * A migration rule that updates imports which refer to the primary Angular Material
12
+ * Migration that updates imports which refer to the primary Angular Material
13
13
  * entry-point to use the appropriate secondary entry points (e.g. @angular/material/button).
14
14
  */
15
- export declare class SecondaryEntryPointsRule extends MigrationRule<null> {
15
+ export declare class SecondaryEntryPointsMigration extends Migration<null> {
16
16
  printer: ts.Printer;
17
- ruleEnabled: boolean;
17
+ enabled: boolean;
18
18
  visitNode(declaration: ts.Node): void;
19
19
  }
@@ -0,0 +1,177 @@
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
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/material/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration", ["require", "exports", "@angular/cdk/schematics", "typescript", "@angular/material/schematics/ng-update/typescript/module-specifiers"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const schematics_1 = require("@angular/cdk/schematics");
20
+ const ts = require("typescript");
21
+ const module_specifiers_1 = require("@angular/material/schematics/ng-update/typescript/module-specifiers");
22
+ const ONLY_SUBPACKAGE_FAILURE_STR = `Importing from "@angular/material" is deprecated. ` +
23
+ `Instead import from the entry-point the symbol belongs to.`;
24
+ const NO_IMPORT_NAMED_SYMBOLS_FAILURE_STR = `Imports from Angular Material should import ` +
25
+ `specific symbols rather than importing the entire library.`;
26
+ /**
27
+ * Regex for testing file paths against to determine if the file is from the
28
+ * Angular Material library.
29
+ */
30
+ const ANGULAR_MATERIAL_FILEPATH_REGEX = new RegExp(`${module_specifiers_1.materialModuleSpecifier}/(.*?)/`);
31
+ /**
32
+ * Mapping of Material symbol names to their module names. Used as a fallback if
33
+ * we didn't manage to resolve the module name of a symbol using the type checker.
34
+ */
35
+ const ENTRY_POINT_MAPPINGS = require('./material-symbols.json');
36
+ /**
37
+ * Migration that updates imports which refer to the primary Angular Material
38
+ * entry-point to use the appropriate secondary entry points (e.g. @angular/material/button).
39
+ */
40
+ class SecondaryEntryPointsMigration extends schematics_1.Migration {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.printer = ts.createPrinter();
44
+ // Only enable this rule if the migration targets version 8. The primary
45
+ // entry-point of Material has been marked as deprecated in version 8.
46
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V8 || this.targetVersion === schematics_1.TargetVersion.V9;
47
+ }
48
+ visitNode(declaration) {
49
+ // Only look at import declarations.
50
+ if (!ts.isImportDeclaration(declaration) ||
51
+ !ts.isStringLiteralLike(declaration.moduleSpecifier)) {
52
+ return;
53
+ }
54
+ const importLocation = declaration.moduleSpecifier.text;
55
+ // If the import module is not @angular/material, skip the check.
56
+ if (importLocation !== module_specifiers_1.materialModuleSpecifier) {
57
+ return;
58
+ }
59
+ // If no import clause is found, or nothing is named as a binding in the
60
+ // import, add failure saying to import symbols in clause.
61
+ if (!declaration.importClause || !declaration.importClause.namedBindings) {
62
+ this.createFailureAtNode(declaration, NO_IMPORT_NAMED_SYMBOLS_FAILURE_STR);
63
+ return;
64
+ }
65
+ // All named bindings in import clauses must be named symbols, otherwise add
66
+ // failure saying to import symbols in clause.
67
+ if (!ts.isNamedImports(declaration.importClause.namedBindings)) {
68
+ this.createFailureAtNode(declaration, NO_IMPORT_NAMED_SYMBOLS_FAILURE_STR);
69
+ return;
70
+ }
71
+ // If no symbols are in the named bindings then add failure saying to
72
+ // import symbols in clause.
73
+ if (!declaration.importClause.namedBindings.elements.length) {
74
+ this.createFailureAtNode(declaration, NO_IMPORT_NAMED_SYMBOLS_FAILURE_STR);
75
+ return;
76
+ }
77
+ // Whether the existing import declaration is using a single quote module specifier.
78
+ const singleQuoteImport = declaration.moduleSpecifier.getText()[0] === `'`;
79
+ // Map which consists of secondary entry-points and import specifiers which are used
80
+ // within the current import declaration.
81
+ const importMap = new Map();
82
+ // Determine the subpackage each symbol in the namedBinding comes from.
83
+ for (const element of declaration.importClause.namedBindings.elements) {
84
+ const elementName = element.propertyName ? element.propertyName : element.name;
85
+ // Try to resolve the module name via the type checker, and if it fails, fall back to
86
+ // resolving it from our list of symbol to entry point mappings. Using the type checker is
87
+ // more accurate and doesn't require us to keep a list of symbols, but it won't work if
88
+ // the symbols don't exist anymore (e.g. after we remove the top-level @angular/material).
89
+ const moduleName = resolveModuleName(elementName, this.typeChecker) ||
90
+ ENTRY_POINT_MAPPINGS[elementName.text] || null;
91
+ if (!moduleName) {
92
+ this.createFailureAtNode(element, `"${element.getText()}" was not found in the Material library.`);
93
+ return;
94
+ }
95
+ // The module name where the symbol is defined e.g. card, dialog. The
96
+ // first capture group is contains the module name.
97
+ if (importMap.has(moduleName)) {
98
+ importMap.get(moduleName).push(element);
99
+ }
100
+ else {
101
+ importMap.set(moduleName, [element]);
102
+ }
103
+ }
104
+ // Transforms the import declaration into multiple import declarations that import
105
+ // the given symbols from the individual secondary entry-points. For example:
106
+ // import {MatCardModule, MatCardTitle} from '@angular/material/card';
107
+ // import {MatRadioModule} from '@angular/material/radio';
108
+ const newImportStatements = Array.from(importMap.entries())
109
+ .sort()
110
+ .map(([name, elements]) => {
111
+ const newImport = ts.createImportDeclaration(undefined, undefined, ts.createImportClause(undefined, ts.createNamedImports(elements)), createStringLiteral(`${module_specifiers_1.materialModuleSpecifier}/${name}`, singleQuoteImport));
112
+ return this.printer.printNode(ts.EmitHint.Unspecified, newImport, declaration.getSourceFile());
113
+ })
114
+ .join('\n');
115
+ // Without any import statements that were generated, we can assume that this was an empty
116
+ // import declaration. We still want to add a failure in order to make developers aware that
117
+ // importing from "@angular/material" is deprecated.
118
+ if (!newImportStatements) {
119
+ this.createFailureAtNode(declaration.moduleSpecifier, ONLY_SUBPACKAGE_FAILURE_STR);
120
+ return;
121
+ }
122
+ const recorder = this.fileSystem.edit(declaration.moduleSpecifier.getSourceFile().fileName);
123
+ // Perform the replacement that switches the primary entry-point import to
124
+ // the individual secondary entry-point imports.
125
+ recorder.remove(declaration.getStart(), declaration.getWidth());
126
+ recorder.insertRight(declaration.getStart(), newImportStatements);
127
+ }
128
+ }
129
+ exports.SecondaryEntryPointsMigration = SecondaryEntryPointsMigration;
130
+ /**
131
+ * Creates a string literal from the specified text.
132
+ * @param text Text of the string literal.
133
+ * @param singleQuotes Whether single quotes should be used when printing the literal node.
134
+ */
135
+ function createStringLiteral(text, singleQuotes) {
136
+ const literal = ts.createStringLiteral(text);
137
+ // See: https://github.com/microsoft/TypeScript/blob/master/src/compiler/utilities.ts#L584-L590
138
+ literal['singleQuote'] = singleQuotes;
139
+ return literal;
140
+ }
141
+ /** Gets the symbol that contains the value declaration of the given node. */
142
+ function getDeclarationSymbolOfNode(node, checker) {
143
+ const symbol = checker.getSymbolAtLocation(node);
144
+ // Symbols can be aliases of the declaration symbol. e.g. in named import specifiers.
145
+ // We need to resolve the aliased symbol back to the declaration symbol.
146
+ // tslint:disable-next-line:no-bitwise
147
+ if (symbol && (symbol.flags & ts.SymbolFlags.Alias) !== 0) {
148
+ return checker.getAliasedSymbol(symbol);
149
+ }
150
+ return symbol;
151
+ }
152
+ /** Tries to resolve the name of the Material module that a node is imported from. */
153
+ function resolveModuleName(node, typeChecker) {
154
+ // Get the symbol for the named binding element. Note that we cannot determine the
155
+ // value declaration based on the type of the element as types are not necessarily
156
+ // specific to a given secondary entry-point (e.g. exports with the type of "string")
157
+ // would resolve to the module types provided by TypeScript itself.
158
+ const symbol = getDeclarationSymbolOfNode(node, typeChecker);
159
+ // If the symbol can't be found, or no declaration could be found within
160
+ // the symbol, add failure to report that the given symbol can't be found.
161
+ if (!symbol ||
162
+ !(symbol.valueDeclaration || (symbol.declarations && symbol.declarations.length !== 0))) {
163
+ return null;
164
+ }
165
+ // The filename for the source file of the node that contains the
166
+ // first declaration of the symbol. All symbol declarations must be
167
+ // part of a defining node, so parent can be asserted to be defined.
168
+ const resolvedNode = symbol.valueDeclaration || symbol.declarations[0];
169
+ const sourceFile = resolvedNode.getSourceFile().fileName;
170
+ // File the module the symbol belongs to from a regex match of the
171
+ // filename. This will always match since only "@angular/material"
172
+ // elements are analyzed.
173
+ const matches = sourceFile.match(ANGULAR_MATERIAL_FILEPATH_REGEX);
174
+ return matches ? matches[1] : null;
175
+ }
176
+ });
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kYXJ5LWVudHJ5LXBvaW50cy1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9wYWNrYWdlLWltcG9ydHMtdjgvc2Vjb25kYXJ5LWVudHJ5LXBvaW50cy1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7SUFFSCx3REFBaUU7SUFDakUsaUNBQWlDO0lBQ2pDLDJHQUF3RjtJQUV4RixNQUFNLDJCQUEyQixHQUFHLG9EQUFvRDtRQUNwRiw0REFBNEQsQ0FBQztJQUVqRSxNQUFNLG1DQUFtQyxHQUFHLDhDQUE4QztRQUN0Riw0REFBNEQsQ0FBQztJQUVqRTs7O09BR0c7SUFDSCxNQUFNLCtCQUErQixHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsMkNBQXVCLFNBQVMsQ0FBQyxDQUFDO0lBRXhGOzs7T0FHRztJQUNILE1BQU0sb0JBQW9CLEdBQTZCLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRTFGOzs7T0FHRztJQUNILE1BQWEsNkJBQThCLFNBQVEsc0JBQWU7UUFBbEU7O1lBQ0UsWUFBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUU3Qix3RUFBd0U7WUFDeEUsc0VBQXNFO1lBQ3RFLFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxFQUFFLENBQUM7UUFxRy9GLENBQUM7UUFuR0MsU0FBUyxDQUFDLFdBQW9CO1lBQzVCLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxF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Q3pCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNsRSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge01pZ3JhdGlvbiwgVGFyZ2V0VmVyc2lvbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3NjaGVtYXRpY3MnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge21hdGVyaWFsTW9kdWxlU3BlY2lmaWVyfSBmcm9tICcuLi8uLi8uLi9uZy11cGRhdGUvdHlwZXNjcmlwdC9tb2R1bGUtc3BlY2lmaWVycyc7XG5cbmNvbnN0IE9OTFlfU1VCUEFDS0FHRV9GQUlMVVJFX1NUUiA9IGBJbXBvcnRpbmcgZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCIgaXMgZGVwcmVjYXRlZC4gYCArXG4gICAgYEluc3RlYWQgaW1wb3J0IGZyb20gdGhlIGVudHJ5LXBvaW50IHRoZSBzeW1ib2wgYmVsb25ncyB0by5gO1xuXG5jb25zdCBOT19JTVBPUlRfTkFNRURfU1lNQk9MU19GQUlMVVJFX1NUUiA9IGBJbXBvcnRzIGZyb20gQW5ndWxhciBNYXRlcmlhbCBzaG91bGQgaW1wb3J0IGAgK1xuICAgIGBzcGVjaWZpYyBzeW1ib2xzIHJhdGhlciB0aGFuIGltcG9ydGluZyB0aGUgZW50aXJlIGxpYnJhcnkuYDtcblxuLyoqXG4gKiBSZWdleCBmb3IgdGVzdGluZyBmaWxlIHBhdGhzIGFnYWluc3QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGZyb20gdGhlXG4gKiBBbmd1bGFyIE1hdGVyaWFsIGxpYnJhcnkuXG4gKi9cbmNvbnN0IEFOR1VMQVJfTUFURVJJQUxfRklMRVBBVEhfUkVHRVggPSBuZXcgUmVnRXhwKGAke21hdGVyaWFsTW9kdWxlU3BlY2lmaWVyfS8oLio/KS9gKTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIE1hdGVyaWFsIHN5bWJvbCBuYW1lcyB0byB0aGVpciBtb2R1bGUgbmFtZXMuIFVzZWQgYXMgYSBmYWxsYmFjayBpZlxuICogd2UgZGlkbid0IG1hbmFnZSB0byByZXNvbHZlIHRoZSBtb2R1bGUgbmFtZSBvZiBhIHN5bWJvbCB1c2luZyB0aGUgdHlwZSBjaGVja2VyLlxuICovXG5jb25zdCBFTlRSWV9QT0lOVF9NQVBQSU5HUzoge1tuYW1lOiBzdHJpbmddOiBzdHJpbmd9ID0gcmVxdWlyZSgnLi9tYXRlcmlhbC1zeW1ib2xzLmpzb24nKTtcblxuLyoqXG4gKiBNaWdyYXRpb24gdGhhdCB1cGRhdGVzIGltcG9ydHMgd2hpY2ggcmVmZXIgdG8gdGhlIHByaW1hcnkgQW5ndWxhciBNYXRlcmlhbFxuICogZW50cnktcG9pbnQgdG8gdXNlIHRoZSBhcHByb3ByaWF0ZSBzZWNvbmRhcnkgZW50cnkgcG9pbnRzIChlLmcuIEBhbmd1bGFyL21hdGVyaWFsL2J1dHRvbikuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNvbmRhcnlFbnRyeVBvaW50c01pZ3JhdGlvbiBleHRlbmRzIE1pZ3JhdGlvbjxudWxsPiB7XG4gIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG5cbiAgLy8gT25seSBlbmFibGUgdGhpcyBydWxlIGlmIHRoZSBtaWdyYXRpb24gdGFyZ2V0cyB2ZXJzaW9uIDguIFRoZSBwcmltYXJ5XG4gIC8vIGVudHJ5LXBvaW50IG9mIE1hdGVyaWFsIGhhcyBiZWVuIG1hcmtlZCBhcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC5cbiAgZW5hYmxlZCA9IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WOCB8fCB0aGlzLnRhcmdldFZlcnNpb24gPT09IFRhcmdldFZlcnNpb24uVjk7XG5cbiAgdmlzaXROb2RlKGRlY2xhcmF0aW9uOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgLy8gT25seSBsb29rIGF0IGltcG9ydCBkZWNsYXJhdGlvbnMuXG4gICAgaWYgKCF0cy5pc0ltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKSB8fFxuICAgICAgICAhdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0TG9jYXRpb24gPSBkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIudGV4dDtcbiAgICAvLyBJZiB0aGUgaW1wb3J0IG1vZHVsZSBpcyBub3QgQGFuZ3VsYXIvbWF0ZXJpYWwsIHNraXAgdGhlIGNoZWNrLlxuICAgIGlmIChpbXBvcnRMb2NhdGlvbiAhPT0gbWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBpbXBvcnQgY2xhdXNlIGlzIGZvdW5kLCBvciBub3RoaW5nIGlzIG5hbWVkIGFzIGEgYmluZGluZyBpbiB0aGVcbiAgICAvLyBpbXBvcnQsIGFkZCBmYWlsdXJlIHNheWluZyB0byBpbXBvcnQgc3ltYm9scyBpbiBjbGF1c2UuXG4gICAgaWYgKCFkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UgfHwgIWRlY2xhcmF0aW9uLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoZGVjbGFyYXRpb24sIE5PX0lNUE9SVF9OQU1FRF9TWU1CT0xTX0ZBSUxVUkVfU1RSKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBbGwgbmFtZWQgYmluZGluZ3MgaW4gaW1wb3J0IGNsYXVzZXMgbXVzdCBiZSBuYW1lZCBzeW1ib2xzLCBvdGhlcndpc2UgYWRkXG4gICAgLy8gZmFpbHVyZSBzYXlpbmcgdG8gaW1wb3J0IHN5bWJvbHMgaW4gY2xhdXNlLlxuICAgIGlmICghdHMuaXNOYW1lZEltcG9ydHMoZGVjbGFyYXRpb24uaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoZGVjbGFyYXRpb24sIE5PX0lNUE9SVF9OQU1FRF9TWU1CT0xTX0ZBSUxVUkVfU1RSKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBzeW1ib2xzIGFyZSBpbiB0aGUgbmFtZWQgYmluZGluZ3MgdGhlbiBhZGQgZmFpbHVyZSBzYXlpbmcgdG9cbiAgICAvLyBpbXBvcnQgc3ltYm9scyBpbiBjbGF1c2UuXG4gICAgaWYgKCFkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShkZWNsYXJhdGlvbiwgTk9fSU1QT1JUX05BTUVEX1NZTUJPTFNfRkFJTFVSRV9TVFIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdoZXRoZXIgdGhlIGV4aXN0aW5nIGltcG9ydCBkZWNsYXJhdGlvbiBpcyB1c2luZyBhIHNpbmdsZSBxdW90ZSBtb2R1bGUgc3BlY2lmaWVyLlxuICAgIGNvbnN0IHNpbmdsZVF1b3RlSW1wb3J0ID0gZGVjbGFyYXRpb24ubW9kdWxlU3BlY2lmaWVyLmdldFRleHQoKVswXSA9PT0gYCdgO1xuXG4gICAgLy8gTWFwIHdoaWNoIGNvbnNpc3RzIG9mIHNlY29uZGFyeSBlbnRyeS1wb2ludHMgYW5kIGltcG9ydCBzcGVjaWZpZXJzIHdoaWNoIGFyZSB1c2VkXG4gICAgLy8gd2l0aGluIHRoZSBjdXJyZW50IGltcG9ydCBkZWNsYXJhdGlvbi5cbiAgICBjb25zdCBpbXBvcnRNYXAgPSBuZXcgTWFwPHN0cmluZywgdHMuSW1wb3J0U3BlY2lmaWVyW10+KCk7XG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIHN1YnBhY2thZ2UgZWFjaCBzeW1ib2wgaW4gdGhlIG5hbWVkQmluZGluZyBjb21lcyBmcm9tLlxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5lbGVtZW50cykge1xuICAgICAgY29uc3QgZWxlbWVudE5hbWUgPSBlbGVtZW50LnByb3BlcnR5TmFtZSA/IGVsZW1lbnQucHJvcGVydHlOYW1lIDogZWxlbWVudC5uYW1lO1xuXG4gICAgICAvLyBUcnkgdG8gcmVzb2x2ZSB0aGUgbW9kdWxlIG5hbWUgdmlhIHRoZSB0eXBlIGNoZWNrZXIsIGFuZCBpZiBpdCBmYWlscywgZmFsbCBiYWNrIHRvXG4gICAgICAvLyByZXNvbHZpbmcgaXQgZnJvbSBvdXIgbGlzdCBvZiBzeW1ib2wgdG8gZW50cnkgcG9pbnQgbWFwcGluZ3MuIFVzaW5nIHRoZSB0eXBlIGNoZWNrZXIgaXNcbiAgICAgIC8vIG1vcmUgYWNjdXJhdGUgYW5kIGRvZXNuJ3QgcmVxdWlyZSB1cyB0byBrZWVwIGEgbGlzdCBvZiBzeW1ib2xzLCBidXQgaXQgd29uJ3Qgd29yayBpZlxuICAgICAgLy8gdGhlIHN5bWJvbHMgZG9uJ3QgZXhpc3QgYW55bW9yZSAoZS5nLiBhZnRlciB3ZSByZW1vdmUgdGhlIHRvcC1sZXZlbCBAYW5ndWxhci9tYXRlcmlhbCkuXG4gICAgICBjb25zdCBtb2R1bGVOYW1lID0gcmVzb2x2ZU1vZHVsZU5hbWUoZWxlbWVudE5hbWUsIHRoaXMudHlwZUNoZWNrZXIpIHx8XG4gICAgICAgICAgRU5UUllfUE9JTlRfTUFQUElOR1NbZWxlbWVudE5hbWUudGV4dF0gfHwgbnVsbDtcblxuICAgICAgaWYgKCFtb2R1bGVOYW1lKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICBlbGVtZW50LCBgXCIke2VsZW1lbnQuZ2V0VGV4dCgpfVwiIHdhcyBub3QgZm91bmQgaW4gdGhlIE1hdGVyaWFsIGxpYnJhcnkuYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgICAvLyBUaGUgbW9kdWxlIG5hbWUgd2hlcmUgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGUuZy4gY2FyZCwgZGlhbG9nLiBUaGVcbiAgICAgICAgLy8gZmlyc3QgY2FwdHVyZSBncm91cCBpcyBjb250YWlucyB0aGUgbW9kdWxlIG5hbWUuXG4gICAgICAgIGlmIChpbXBvcnRNYXAuaGFzKG1vZHVsZU5hbWUpKSB7XG4gICAgICAgICAgaW1wb3J0TWFwLmdldChtb2R1bGVOYW1lKSEucHVzaChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbXBvcnRNYXAuc2V0KG1vZHVsZU5hbWUsIFtlbGVtZW50XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm1zIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24gaW50byBtdWx0aXBsZSBpbXBvcnQgZGVjbGFyYXRpb25zIHRoYXQgaW1wb3J0XG4gICAgLy8gdGhlIGdpdmVuIHN5bWJvbHMgZnJvbSB0aGUgaW5kaXZpZHVhbCBzZWNvbmRhcnkgZW50cnktcG9pbnRzLiBGb3IgZXhhbXBsZTpcbiAgICAvLyBpbXBvcnQge01hdENhcmRNb2R1bGUsIE1hdENhcmRUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG4gICAgLy8gaW1wb3J0IHtNYXRSYWRpb01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuICAgIGNvbnN0IG5ld0ltcG9ydFN0YXRlbWVudHMgPVxuICAgICAgICBBcnJheS5mcm9tKGltcG9ydE1hcC5lbnRyaWVzKCkpXG4gICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAubWFwKChbbmFtZSwgZWxlbWVudHNdKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0ltcG9ydCA9IHRzLmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB0cy5jcmVhdGVJbXBvcnRDbGF1c2UodW5kZWZpbmVkLCB0cy5jcmVhdGVOYW1lZEltcG9ydHMoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZVN0cmluZ0xpdGVyYWwoYCR7bWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXJ9LyR7bmFtZX1gLCBzaW5nbGVRdW90ZUltcG9ydCkpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcmludGVyLnByaW50Tm9kZShcbiAgICAgICAgICAgICAgICAgIHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBuZXdJbXBvcnQsIGRlY2xhcmF0aW9uLmdldFNvdXJjZUZpbGUoKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgLy8gV2l0aG91dCBhbnkgaW1wb3J0IHN0YXRlbWVudHMgdGhhdCB3ZXJlIGdlbmVyYXRlZCwgd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgd2FzIGFuIGVtcHR5XG4gICAgLy8gaW1wb3J0IGRlY2xhcmF0aW9uLiBXZSBzdGlsbCB3YW50IHRvIGFkZCBhIGZhaWx1cmUgaW4gb3JkZXIgdG8gbWFrZSBkZXZlbG9wZXJzIGF3YXJlIHRoYXRcbiAgICAvLyBpbXBvcnRpbmcgZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCIgaXMgZGVwcmVjYXRlZC5cbiAgICBpZiAoIW5ld0ltcG9ydFN0YXRlbWVudHMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIsIE9OTFlfU1VCUEFDS0FHRV9GQUlMVVJFX1NUUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmZpbGVTeXN0ZW0uZWRpdChkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lKTtcblxuICAgIC8vIFBlcmZvcm0gdGhlIHJlcGxhY2VtZW50IHRoYXQgc3dpdGNoZXMgdGhlIHByaW1hcnkgZW50cnktcG9pbnQgaW1wb3J0IHRvXG4gICAgLy8gdGhlIGluZGl2aWR1YWwgc2Vjb25kYXJ5IGVudHJ5LXBvaW50IGltcG9ydHMuXG4gICAgcmVjb3JkZXIucmVtb3ZlKGRlY2xhcmF0aW9uLmdldFN0YXJ0KCksIGRlY2xhcmF0aW9uLmdldFdpZHRoKCkpO1xuICAgIHJlY29yZGVyLmluc2VydFJpZ2h0KGRlY2xhcmF0aW9uLmdldFN0YXJ0KCksIG5ld0ltcG9ydFN0YXRlbWVudHMpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cmluZyBsaXRlcmFsIGZyb20gdGhlIHNwZWNpZmllZCB0ZXh0LlxuICogQHBhcmFtIHRleHQgVGV4dCBvZiB0aGUgc3RyaW5nIGxpdGVyYWwuXG4gKiBAcGFyYW0gc2luZ2xlUXVvdGVzIFdoZXRoZXIgc2luZ2xlIHF1b3RlcyBzaG91bGQgYmUgdXNlZCB3aGVuIHByaW50aW5nIHRoZSBsaXRlcmFsIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN0cmluZ0xpdGVyYWwodGV4dDogc3RyaW5nLCBzaW5nbGVRdW90ZXM6IGJvb2xlYW4pOiB0cy5TdHJpbmdMaXRlcmFsIHtcbiAgY29uc3QgbGl0ZXJhbCA9IHRzLmNyZWF0ZVN0cmluZ0xpdGVyYWwodGV4dCk7XG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFzdGVyL3NyYy9jb21waWxlci91dGlsaXRpZXMudHMjTDU4NC1MNTkwXG4gIGxpdGVyYWxbJ3NpbmdsZVF1b3RlJ10gPSBzaW5nbGVRdW90ZXM7XG4gIHJldHVybiBsaXRlcmFsO1xufVxuXG4vKiogR2V0cyB0aGUgc3ltYm9sIHRoYXQgY29udGFpbnMgdGhlIHZhbHVlIGRlY2xhcmF0aW9uIG9mIHRoZSBnaXZlbiBub2RlLiAqL1xuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25TeW1ib2xPZk5vZGUobm9kZTogdHMuTm9kZSwgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiB0cy5TeW1ib2x8dW5kZWZpbmVkIHtcbiAgY29uc3Qgc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xuXG4gIC8vIFN5bWJvbHMgY2FuIGJlIGFsaWFzZXMgb2YgdGhlIGRlY2xhcmF0aW9uIHN5bWJvbC4gZS5nLiBpbiBuYW1lZCBpbXBvcnQgc3BlY2lmaWVycy5cbiAgLy8gV2UgbmVlZCB0byByZXNvbHZlIHRoZSBhbGlhc2VkIHN5bWJvbCBiYWNrIHRvIHRoZSBkZWNsYXJhdGlvbiBzeW1ib2wuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gIGlmIChzeW1ib2wgJiYgKHN5bWJvbC5mbGFncyAmIHRzLlN5bWJvbEZsYWdzLkFsaWFzKSAhPT0gMCkge1xuICAgIHJldHVybiBjaGVja2VyLmdldEFsaWFzZWRTeW1ib2woc3ltYm9sKTtcbiAgfVxuICByZXR1cm4gc3ltYm9sO1xufVxuXG5cbi8qKiBUcmllcyB0byByZXNvbHZlIHRoZSBuYW1lIG9mIHRoZSBNYXRlcmlhbCBtb2R1bGUgdGhhdCBhIG5vZGUgaXMgaW1wb3J0ZWQgZnJvbS4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNb2R1bGVOYW1lKG5vZGU6IHRzLklkZW50aWZpZXIsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcikge1xuICAvLyBHZXQgdGhlIHN5bWJvbCBmb3IgdGhlIG5hbWVkIGJpbmRpbmcgZWxlbWVudC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlXG4gIC8vIHZhbHVlIGRlY2xhcmF0aW9uIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50IGFzIHR5cGVzIGFyZSBub3QgbmVjZXNzYXJpbHlcbiAgLy8gc3BlY2lmaWMgdG8gYSBnaXZlbiBzZWNvbmRhcnkgZW50cnktcG9pbnQgKGUuZy4gZXhwb3J0cyB3aXRoIHRoZSB0eXBlIG9mIFwic3RyaW5nXCIpXG4gIC8vIHdvdWxkIHJlc29sdmUgdG8gdGhlIG1vZHVsZSB0eXBlcyBwcm92aWRlZCBieSBUeXBlU2NyaXB0IGl0c2VsZi5cbiAgY29uc3Qgc3ltYm9sID0gZ2V0RGVjbGFyYXRpb25TeW1ib2xPZk5vZGUobm9kZSwgdHlwZUNoZWNrZXIpO1xuXG4gIC8vIElmIHRoZSBzeW1ib2wgY2FuJ3QgYmUgZm91bmQsIG9yIG5vIGRlY2xhcmF0aW9uIGNvdWxkIGJlIGZvdW5kIHdpdGhpblxuICAvLyB0aGUgc3ltYm9sLCBhZGQgZmFpbHVyZSB0byByZXBvcnQgdGhhdCB0aGUgZ2l2ZW4gc3ltYm9sIGNhbid0IGJlIGZvdW5kLlxuICBpZiAoIXN5bWJvbCB8fFxuICAgICAgIShzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiB8fCAoc3ltYm9sLmRlY2xhcmF0aW9ucyAmJiBzeW1ib2wuZGVjbGFyYXRpb25zLmxlbmd0aCAhPT0gMCkpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBUaGUgZmlsZW5hbWUgZm9yIHRoZSBzb3VyY2UgZmlsZSBvZiB0aGUgbm9kZSB0aGF0IGNvbnRhaW5zIHRoZVxuICAvLyBmaXJzdCBkZWNsYXJhdGlvbiBvZiB0aGUgc3ltYm9sLiBBbGwgc3ltYm9sIGRlY2xhcmF0aW9ucyBtdXN0IGJlXG4gIC8vIHBhcnQgb2YgYSBkZWZpbmluZyBub2RlLCBzbyBwYXJlbnQgY2FuIGJlIGFzc2VydGVkIHRvIGJlIGRlZmluZWQuXG4gIGNvbnN0IHJlc29sdmVkTm9kZSA9IHN5bWJvbC52YWx1ZURlY2xhcmF0aW9uIHx8IHN5bWJvbC5kZWNsYXJhdGlvbnNbMF07XG4gIGNvbnN0IHNvdXJjZUZpbGUgPSByZXNvbHZlZE5vZGUuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lO1xuXG4gIC8vIEZpbGUgdGhlIG1vZHVsZSB0aGUgc3ltYm9sIGJlbG9uZ3MgdG8gZnJvbSBhIHJlZ2V4IG1hdGNoIG9mIHRoZVxuICAvLyBmaWxlbmFtZS4gVGhpcyB3aWxsIGFsd2F5cyBtYXRjaCBzaW5jZSBvbmx5IFwiQGFuZ3VsYXIvbWF0ZXJpYWxcIlxuICAvLyBlbGVtZW50cyBhcmUgYW5hbHl6ZWQuXG4gIGNvbnN0IG1hdGNoZXMgPSBzb3VyY2VGaWxlLm1hdGNoKEFOR1VMQVJfTUFURVJJQUxfRklMRVBBVEhfUkVHRVgpO1xuICByZXR1cm4gbWF0Y2hlcyA/IG1hdGNoZXNbMV0gOiBudWxsO1xufVxuIl19
@@ -6,6 +6,6 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  /// <amd-module name="@angular/material/schematics/ng-update/upgrade-data" />
9
- import { RuleUpgradeData } from '@angular/cdk/schematics';
9
+ import { UpgradeData } from '@angular/cdk/schematics';
10
10
  /** Upgrade data that will be used for the Angular Material ng-update schematic. */
11
- export declare const materialUpgradeData: RuleUpgradeData;
11
+ export declare const materialUpgradeData: UpgradeData;
@@ -30,4 +30,4 @@
30
30
  propertyNames: data_1.propertyNames,
31
31
  };
32
32
  });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILDRFQVVnQjtJQUVoQixtRkFBbUY7SUFDdEUsUUFBQSxtQkFBbUIsR0FBb0I7UUFDbEQsa0JBQWtCLEVBQWxCLHlCQUFrQjtRQUNsQixVQUFVLEVBQVYsaUJBQVU7UUFDVixpQkFBaUIsRUFBakIsd0JBQWlCO1FBQ2pCLFlBQVksRUFBWixtQkFBWTtRQUNaLGdCQUFnQixFQUFoQix1QkFBZ0I7UUFDaEIsVUFBVSxFQUFWLGlCQUFVO1FBQ1YsZ0JBQWdCLEVBQWhCLHVCQUFnQjtRQUNoQixXQUFXLEVBQVgsa0JBQVc7UUFDWCxhQUFhLEVBQWIsb0JBQWE7S0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UnVsZVVwZ3JhZGVEYXRhfSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQge1xuICBhdHRyaWJ1dGVTZWxlY3RvcnMsXG4gIGNsYXNzTmFtZXMsXG4gIGNvbnN0cnVjdG9yQ2hlY2tzLFxuICBjc3NTZWxlY3RvcnMsXG4gIGVsZW1lbnRTZWxlY3RvcnMsXG4gIGlucHV0TmFtZXMsXG4gIG1ldGhvZENhbGxDaGVja3MsXG4gIG91dHB1dE5hbWVzLFxuICBwcm9wZXJ0eU5hbWVzLFxufSBmcm9tICcuL2RhdGEnO1xuXG4vKiogVXBncmFkZSBkYXRhIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgQW5ndWxhciBNYXRlcmlhbCBuZy11cGRhdGUgc2NoZW1hdGljLiAqL1xuZXhwb3J0IGNvbnN0IG1hdGVyaWFsVXBncmFkZURhdGE6IFJ1bGVVcGdyYWRlRGF0YSA9IHtcbiAgYXR0cmlidXRlU2VsZWN0b3JzLFxuICBjbGFzc05hbWVzLFxuICBjb25zdHJ1Y3RvckNoZWNrcyxcbiAgY3NzU2VsZWN0b3JzLFxuICBlbGVtZW50U2VsZWN0b3JzLFxuICBpbnB1dE5hbWVzLFxuICBtZXRob2RDYWxsQ2hlY2tzLFxuICBvdXRwdXROYW1lcyxcbiAgcHJvcGVydHlOYW1lcyxcbn07XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILDRFQVVnQjtJQUVoQixtRkFBbUY7SUFDdEUsUUFBQSxtQkFBbUIsR0FBZ0I7UUFDOUMsa0JBQWtCLEVBQWxCLHlCQUFrQjtRQUNsQixVQUFVLEVBQVYsaUJBQVU7UUFDVixpQkFBaUIsRUFBakIsd0JBQWlCO1FBQ2pCLFlBQVksRUFBWixtQkFBWTtRQUNaLGdCQUFnQixFQUFoQix1QkFBZ0I7UUFDaEIsVUFBVSxFQUFWLGlCQUFVO1FBQ1YsZ0JBQWdCLEVBQWhCLHVCQUFnQjtRQUNoQixXQUFXLEVBQVgsa0JBQVc7UUFDWCxhQUFhLEVBQWIsb0JBQWE7S0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7VXBncmFkZURhdGF9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY2hlbWF0aWNzJztcbmltcG9ydCB7XG4gIGF0dHJpYnV0ZVNlbGVjdG9ycyxcbiAgY2xhc3NOYW1lcyxcbiAgY29uc3RydWN0b3JDaGVja3MsXG4gIGNzc1NlbGVjdG9ycyxcbiAgZWxlbWVudFNlbGVjdG9ycyxcbiAgaW5wdXROYW1lcyxcbiAgbWV0aG9kQ2FsbENoZWNrcyxcbiAgb3V0cHV0TmFtZXMsXG4gIHByb3BlcnR5TmFtZXMsXG59IGZyb20gJy4vZGF0YSc7XG5cbi8qKiBVcGdyYWRlIGRhdGEgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBBbmd1bGFyIE1hdGVyaWFsIG5nLXVwZGF0ZSBzY2hlbWF0aWMuICovXG5leHBvcnQgY29uc3QgbWF0ZXJpYWxVcGdyYWRlRGF0YTogVXBncmFkZURhdGEgPSB7XG4gIGF0dHJpYnV0ZVNlbGVjdG9ycyxcbiAgY2xhc3NOYW1lcyxcbiAgY29uc3RydWN0b3JDaGVja3MsXG4gIGNzc1NlbGVjdG9ycyxcbiAgZWxlbWVudFNlbGVjdG9ycyxcbiAgaW5wdXROYW1lcyxcbiAgbWV0aG9kQ2FsbENoZWNrcyxcbiAgb3V0cHV0TmFtZXMsXG4gIHByb3BlcnR5TmFtZXMsXG59O1xuIl19