@angular/material 9.2.1 → 9.2.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 (275) hide show
  1. package/autocomplete/index.metadata.json +1 -1
  2. package/autocomplete/testing/autocomplete-harness.d.ts +4 -1
  3. package/badge/index.metadata.json +1 -1
  4. package/bundles/material-autocomplete-testing.umd.js +55 -8
  5. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  6. package/bundles/material-autocomplete-testing.umd.min.js +4 -5
  7. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  8. package/bundles/material-autocomplete.umd.js +5 -4
  9. package/bundles/material-autocomplete.umd.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.min.js +2 -2
  11. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/material-badge.umd.js +1 -1
  13. package/bundles/material-badge.umd.js.map +1 -1
  14. package/bundles/material-badge.umd.min.js +1 -1
  15. package/bundles/material-badge.umd.min.js.map +1 -1
  16. package/bundles/material-button-toggle.umd.js +15 -5
  17. package/bundles/material-button-toggle.umd.js.map +1 -1
  18. package/bundles/material-button-toggle.umd.min.js +3 -3
  19. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  20. package/bundles/material-chips.umd.js +3 -0
  21. package/bundles/material-chips.umd.js.map +1 -1
  22. package/bundles/material-chips.umd.min.js +1 -1
  23. package/bundles/material-chips.umd.min.js.map +1 -1
  24. package/bundles/material-core.umd.js +2 -2
  25. package/bundles/material-core.umd.js.map +1 -1
  26. package/bundles/material-core.umd.min.js +1 -1
  27. package/bundles/material-core.umd.min.js.map +1 -1
  28. package/bundles/material-datepicker.umd.js +12 -5
  29. package/bundles/material-datepicker.umd.js.map +1 -1
  30. package/bundles/material-datepicker.umd.min.js +7 -7
  31. package/bundles/material-datepicker.umd.min.js.map +1 -1
  32. package/bundles/material-dialog.umd.js +10 -5
  33. package/bundles/material-dialog.umd.js.map +1 -1
  34. package/bundles/material-dialog.umd.min.js +1 -1
  35. package/bundles/material-dialog.umd.min.js.map +1 -1
  36. package/bundles/material-input.umd.js +14 -4
  37. package/bundles/material-input.umd.js.map +1 -1
  38. package/bundles/material-input.umd.min.js +1 -1
  39. package/bundles/material-input.umd.min.js.map +1 -1
  40. package/bundles/material-list.umd.js +4 -3
  41. package/bundles/material-list.umd.js.map +1 -1
  42. package/bundles/material-list.umd.min.js +2 -2
  43. package/bundles/material-list.umd.min.js.map +1 -1
  44. package/bundles/material-menu.umd.js +5 -5
  45. package/bundles/material-menu.umd.js.map +1 -1
  46. package/bundles/material-menu.umd.min.js +6 -6
  47. package/bundles/material-menu.umd.min.js.map +1 -1
  48. package/bundles/material-radio.umd.js +62 -47
  49. package/bundles/material-radio.umd.js.map +1 -1
  50. package/bundles/material-radio.umd.min.js +10 -2
  51. package/bundles/material-radio.umd.min.js.map +1 -1
  52. package/bundles/material-select-testing.umd.js +45 -10
  53. package/bundles/material-select-testing.umd.js.map +1 -1
  54. package/bundles/material-select-testing.umd.min.js +2 -3
  55. package/bundles/material-select-testing.umd.min.js.map +1 -1
  56. package/bundles/material-select.umd.js +23 -14
  57. package/bundles/material-select.umd.js.map +1 -1
  58. package/bundles/material-select.umd.min.js +3 -3
  59. package/bundles/material-select.umd.min.js.map +1 -1
  60. package/bundles/material-sidenav.umd.js +2 -1
  61. package/bundles/material-sidenav.umd.js.map +1 -1
  62. package/bundles/material-sidenav.umd.min.js +2 -2
  63. package/bundles/material-sidenav.umd.min.js.map +1 -1
  64. package/bundles/material-table.umd.js +1 -1
  65. package/bundles/material-table.umd.js.map +1 -1
  66. package/bundles/material-table.umd.min.js +1 -1
  67. package/bundles/material-table.umd.min.js.map +1 -1
  68. package/bundles/material-tabs.umd.js +4 -3
  69. package/bundles/material-tabs.umd.js.map +1 -1
  70. package/bundles/material-tabs.umd.min.js +4 -4
  71. package/bundles/material-tabs.umd.min.js.map +1 -1
  72. package/bundles/material-tooltip.umd.js +5 -5
  73. package/bundles/material-tooltip.umd.js.map +1 -1
  74. package/bundles/material-tooltip.umd.min.js +3 -3
  75. package/bundles/material-tooltip.umd.min.js.map +1 -1
  76. package/bundles/material-tree.umd.js +1 -1
  77. package/bundles/material-tree.umd.js.map +1 -1
  78. package/bundles/material-tree.umd.min.js +1 -1
  79. package/bundles/material-tree.umd.min.js.map +1 -1
  80. package/core/index.metadata.json +1 -1
  81. package/datepicker/index.metadata.json +1 -1
  82. package/dialog/dialog-ref.d.ts +5 -0
  83. package/dialog/index.metadata.json +1 -1
  84. package/esm2015/autocomplete/autocomplete-module.js +3 -1
  85. package/esm2015/autocomplete/testing/autocomplete-harness.js +18 -7
  86. package/esm2015/badge/badge-module.js +2 -2
  87. package/esm2015/button-toggle/button-toggle.js +17 -6
  88. package/esm2015/chips/chip-list.js +4 -1
  89. package/esm2015/core/common-behaviors/common-module.js +1 -1
  90. package/esm2015/core/version.js +1 -1
  91. package/esm2015/datepicker/datepicker-module.js +3 -1
  92. package/esm2015/datepicker/datepicker.js +8 -2
  93. package/esm2015/dialog/dialog-ref.js +13 -6
  94. package/esm2015/input/input.js +16 -6
  95. package/esm2015/list/selection-list.js +8 -5
  96. package/esm2015/menu/menu-module.js +3 -2
  97. package/esm2015/radio/public-api.js +2 -2
  98. package/esm2015/radio/radio.js +70 -59
  99. package/esm2015/select/select-module.js +10 -2
  100. package/esm2015/select/select.js +12 -10
  101. package/esm2015/select/testing/select-harness.js +11 -6
  102. package/esm2015/sidenav/sidenav-module.js +4 -3
  103. package/esm2015/table/table-module.js +2 -2
  104. package/esm2015/tabs/paginated-tab-header.js +3 -2
  105. package/esm2015/tabs/tab-header.js +1 -1
  106. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +1 -1
  107. package/esm2015/tooltip/tooltip-module.js +3 -2
  108. package/esm2015/tree/tree-module.js +2 -2
  109. package/esm5/autocomplete/autocomplete-module.js +3 -1
  110. package/esm5/autocomplete/testing/autocomplete-harness.js +56 -9
  111. package/esm5/badge/badge-module.js +2 -2
  112. package/esm5/button-toggle/button-toggle.js +16 -6
  113. package/esm5/chips/chip-list.js +4 -1
  114. package/esm5/core/common-behaviors/common-module.js +1 -1
  115. package/esm5/core/version.js +1 -1
  116. package/esm5/datepicker/datepicker-module.js +3 -1
  117. package/esm5/datepicker/datepicker.js +8 -2
  118. package/esm5/dialog/dialog-ref.js +11 -6
  119. package/esm5/input/input.js +16 -6
  120. package/esm5/list/selection-list.js +5 -4
  121. package/esm5/menu/menu-module.js +3 -2
  122. package/esm5/radio/radio.js +63 -48
  123. package/esm5/select/select-module.js +10 -2
  124. package/esm5/select/select.js +12 -10
  125. package/esm5/select/testing/select-harness.js +46 -11
  126. package/esm5/sidenav/sidenav-module.js +4 -3
  127. package/esm5/table/table-module.js +2 -2
  128. package/esm5/tabs/paginated-tab-header.js +3 -2
  129. package/esm5/tabs/tab-header.js +1 -1
  130. package/esm5/tabs/tab-nav-bar/tab-nav-bar.js +1 -1
  131. package/esm5/tooltip/tooltip-module.js +3 -2
  132. package/esm5/tree/tree-module.js +2 -2
  133. package/fesm2015/autocomplete/testing.js +17 -6
  134. package/fesm2015/autocomplete/testing.js.map +1 -1
  135. package/fesm2015/autocomplete.js +2 -1
  136. package/fesm2015/autocomplete.js.map +1 -1
  137. package/fesm2015/badge.js +1 -1
  138. package/fesm2015/badge.js.map +1 -1
  139. package/fesm2015/button-toggle.js +16 -5
  140. package/fesm2015/button-toggle.js.map +1 -1
  141. package/fesm2015/chips.js +3 -0
  142. package/fesm2015/chips.js.map +1 -1
  143. package/fesm2015/core.js +2 -2
  144. package/fesm2015/core.js.map +1 -1
  145. package/fesm2015/datepicker.js +9 -1
  146. package/fesm2015/datepicker.js.map +1 -1
  147. package/fesm2015/dialog.js +12 -5
  148. package/fesm2015/dialog.js.map +1 -1
  149. package/fesm2015/input.js +15 -5
  150. package/fesm2015/input.js.map +1 -1
  151. package/fesm2015/list.js +7 -4
  152. package/fesm2015/list.js.map +1 -1
  153. package/fesm2015/menu.js +2 -1
  154. package/fesm2015/menu.js.map +1 -1
  155. package/fesm2015/radio.js +71 -60
  156. package/fesm2015/radio.js.map +1 -1
  157. package/fesm2015/select/testing.js +10 -5
  158. package/fesm2015/select/testing.js.map +1 -1
  159. package/fesm2015/select.js +20 -11
  160. package/fesm2015/select.js.map +1 -1
  161. package/fesm2015/sidenav.js +3 -2
  162. package/fesm2015/sidenav.js.map +1 -1
  163. package/fesm2015/table.js +1 -1
  164. package/fesm2015/table.js.map +1 -1
  165. package/fesm2015/tabs.js +4 -3
  166. package/fesm2015/tabs.js.map +1 -1
  167. package/fesm2015/tooltip.js +2 -2
  168. package/fesm2015/tooltip.js.map +1 -1
  169. package/fesm2015/tree.js +1 -1
  170. package/fesm2015/tree.js.map +1 -1
  171. package/fesm5/autocomplete/testing.js +55 -8
  172. package/fesm5/autocomplete/testing.js.map +1 -1
  173. package/fesm5/autocomplete.js +2 -1
  174. package/fesm5/autocomplete.js.map +1 -1
  175. package/fesm5/badge.js +1 -1
  176. package/fesm5/badge.js.map +1 -1
  177. package/fesm5/button-toggle.js +15 -5
  178. package/fesm5/button-toggle.js.map +1 -1
  179. package/fesm5/chips.js +3 -0
  180. package/fesm5/chips.js.map +1 -1
  181. package/fesm5/core.js +2 -2
  182. package/fesm5/core.js.map +1 -1
  183. package/fesm5/datepicker.js +9 -1
  184. package/fesm5/datepicker.js.map +1 -1
  185. package/fesm5/dialog.js +10 -5
  186. package/fesm5/dialog.js.map +1 -1
  187. package/fesm5/input.js +15 -5
  188. package/fesm5/input.js.map +1 -1
  189. package/fesm5/list.js +4 -3
  190. package/fesm5/list.js.map +1 -1
  191. package/fesm5/menu.js +2 -1
  192. package/fesm5/menu.js.map +1 -1
  193. package/fesm5/radio.js +63 -49
  194. package/fesm5/radio.js.map +1 -1
  195. package/fesm5/select/testing.js +45 -10
  196. package/fesm5/select/testing.js.map +1 -1
  197. package/fesm5/select.js +20 -11
  198. package/fesm5/select.js.map +1 -1
  199. package/fesm5/sidenav.js +3 -2
  200. package/fesm5/sidenav.js.map +1 -1
  201. package/fesm5/table.js +1 -1
  202. package/fesm5/table.js.map +1 -1
  203. package/fesm5/tabs.js +4 -3
  204. package/fesm5/tabs.js.map +1 -1
  205. package/fesm5/tooltip.js +2 -2
  206. package/fesm5/tooltip.js.map +1 -1
  207. package/fesm5/tree.js +1 -1
  208. package/fesm5/tree.js.map +1 -1
  209. package/input/index.metadata.json +1 -1
  210. package/menu/index.metadata.json +1 -1
  211. package/package.json +2 -2
  212. package/radio/index.metadata.json +1 -1
  213. package/radio/radio.d.ts +8 -2
  214. package/schematics/collection.json +0 -7
  215. package/schematics/ng-add/index.js +1 -1
  216. package/schematics/ng-update/index.js +23 -23
  217. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/find-hammer-script-tags.d.ts +1 -1
  218. package/schematics/ng-update/migrations/hammer-gestures-v9/find-hammer-script-tags.js +51 -0
  219. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/find-main-module.d.ts +1 -1
  220. package/schematics/ng-update/migrations/hammer-gestures-v9/find-main-module.js +41 -0
  221. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/gesture-config.template +0 -0
  222. 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
  223. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +784 -0
  224. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/hammer-template-check.d.ts +1 -1
  225. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-template-check.js +65 -0
  226. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/import-manager.d.ts +4 -4
  227. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +379 -0
  228. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/remove-array-element.d.ts +1 -1
  229. package/schematics/ng-update/migrations/hammer-gestures-v9/remove-array-element.js +75 -0
  230. package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/remove-element-from-html.d.ts +1 -1
  231. package/schematics/ng-update/migrations/hammer-gestures-v9/remove-element-from-html.js +37 -0
  232. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.d.ts +19 -0
  233. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.js +57 -0
  234. package/schematics/ng-update/{upgrade-rules/misc-checks/misc-class-names-rule.d.ts → migrations/misc-checks/misc-class-names.d.ts} +5 -5
  235. package/schematics/ng-update/migrations/misc-checks/misc-class-names.js +52 -0
  236. package/schematics/ng-update/{upgrade-rules/misc-checks/misc-imports-rule.d.ts → migrations/misc-checks/misc-imports.d.ts} +5 -5
  237. package/schematics/ng-update/migrations/misc-checks/misc-imports.js +63 -0
  238. package/schematics/ng-update/{upgrade-rules/misc-checks/misc-property-names-rule.d.ts → migrations/misc-checks/misc-property-names.d.ts} +5 -5
  239. package/schematics/ng-update/migrations/misc-checks/misc-property-names.js +56 -0
  240. package/schematics/ng-update/migrations/misc-checks/misc-template.d.ts +17 -0
  241. package/schematics/ng-update/migrations/misc-checks/misc-template.js +69 -0
  242. 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
  243. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +147 -0
  244. package/schematics/ng-update/{upgrade-rules → migrations}/misc-ripples-v7/ripple-speed-factor.d.ts +1 -1
  245. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor.js +39 -0
  246. package/schematics/ng-update/{upgrade-rules → migrations}/package-imports-v8/material-symbols.json +0 -0
  247. 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
  248. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +177 -0
  249. package/schematics/ng-update/upgrade-data.d.ts +2 -2
  250. package/schematics/ng-update/upgrade-data.js +1 -1
  251. package/select/index.metadata.json +1 -1
  252. package/select/testing/select-harness.d.ts +2 -1
  253. package/sidenav/index.metadata.json +1 -1
  254. package/table/index.metadata.json +1 -1
  255. package/tabs/_tabs-common.scss +5 -3
  256. package/tabs/index.metadata.json +1 -1
  257. package/tooltip/index.metadata.json +1 -1
  258. package/tree/index.metadata.json +1 -1
  259. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/find-hammer-script-tags.js +0 -51
  260. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/find-main-module.js +0 -41
  261. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.js +0 -781
  262. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-template-check.js +0 -65
  263. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/import-manager.js +0 -379
  264. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-array-element.js +0 -75
  265. package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-element-from-html.js +0 -37
  266. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +0 -19
  267. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js +0 -57
  268. package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js +0 -52
  269. package/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.js +0 -63
  270. package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js +0 -56
  271. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +0 -17
  272. package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js +0 -69
  273. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.js +0 -147
  274. package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor.js +0 -39
  275. package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.js +0 -177
@@ -1 +1 @@
1
- {"version":3,"file":"sidenav.js","sources":["../../../../../../src/material/sidenav/drawer-animations.ts","../../../../../../src/material/sidenav/drawer.ts","../../../../../../src/material/sidenav/sidenav.ts","../../../../../../src/material/sidenav/sidenav-module.ts","../../../../../../src/material/sidenav/public-api.ts","../../../../../../src/material/sidenav/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nexport const matDrawerAnimations: {\n readonly transformDrawer: AnimationTriggerMetadata;\n} = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void',\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n HostListener,\n HostBinding,\n} from '@angular/core';\nimport {fromEvent, merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n startWith,\n take,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Drawer and SideNav display modes. */\nexport type MatDrawerMode = 'over' | 'push' | 'side';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE =\n new InjectionToken<boolean>('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n });\n\n\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nexport const MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER');\n\n/** @docs-private */\nexport function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean {\n return false;\n}\n\n@Component({\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatDrawerContainer)) public _container: MatDrawerContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawer implements AfterContentInit, AfterContentChecked, OnDestroy {\n private _focusTrap: FocusTrap;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n private _enableAnimations = false;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' { return this._position; }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): MatDrawerMode { return this._mode; }\n set mode(value: MatDrawerMode) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n private _mode: MatDrawerMode = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean { return this._disableClose; }\n set disableClose(value: boolean) { this._disableClose = coerceBooleanProperty(value); }\n private _disableClose: boolean = false;\n\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n */\n @Input()\n get autoFocus(): boolean {\n const value = this._autoFocus;\n\n // Note that usually we disable auto focusing in `side` mode, because we don't know how the\n // sidenav is being used, but in some cases it still makes sense to do it. If the consumer\n // explicitly enabled `autoFocus`, we take it as them always wanting to enable it.\n return value == null ? this.mode !== 'side' : value;\n }\n set autoFocus(value: boolean) { this._autoFocus = coerceBooleanProperty(value); }\n private _autoFocus: boolean | undefined;\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) { this.toggle(coerceBooleanProperty(value)); }\n private _opened: boolean = false;\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null;\n\n /** Emits whenever the drawer has started animating. */\n _animationStarted = new Subject<AnimationEvent>();\n\n /** Emits whenever the drawer is done animating. */\n _animationEnd = new Subject<AnimationEvent>();\n\n /** Current state of the sidenav animation. */\n // @HostBinding is used in the class as it is expected to be extended. Since @Component decorator\n // metadata is not inherited by child classes, instead the host binding data is defined in a way\n // that can be inherited.\n // tslint:disable:no-host-decorator-in-concrete\n @HostBinding('@transform')\n _animationState: 'open-instant' | 'open' | 'void' = 'void';\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n get _openedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n get openedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n map(() => {})\n );\n }\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n get _closedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => !o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n get closedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState === 'void'),\n map(() => {})\n );\n }\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') onPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject<void>();\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n private _focusTrapFactory: FocusTrapFactory,\n private _focusMonitor: FocusMonitor,\n private _platform: Platform,\n private _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private _doc: any,\n /**\n * @deprecated `_container` parameter to be made required.\n * @breaking-change 10.0.0\n */\n @Optional() @Inject(MAT_DRAWER_CONTAINER) public _container?: MatDrawerContainer) {\n\n this.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n }\n\n this._takeFocus();\n } else {\n this._restoreFocus();\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n (fromEvent(this._elementRef.nativeElement, 'keydown') as Observable<KeyboardEvent>).pipe(\n filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }),\n takeUntil(this._destroyed)\n ).subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }));\n });\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe((event: AnimationEvent) => {\n const {fromState, toState} = event;\n\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n private _takeFocus() {\n if (!this.autoFocus || !this._focusTrap) {\n return;\n }\n\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n // still works. We need to check that `focus` is a function due to Universal.\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n */\n private _restoreFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n const activeEl = this._doc && this._doc.activeElement;\n\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n // Note that we don't check via `instanceof HTMLElement` so that we can cover SVGs as well.\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, this._openedVia);\n } else {\n this._elementRef.nativeElement.blur();\n }\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n this._openedVia = null;\n }\n\n ngAfterContentInit() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n }\n\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n\n ngOnDestroy() {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia: FocusOrigin = 'program'):\n Promise<MatDrawerToggleResult> {\n\n this._opened = isOpen;\n\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n this._openedVia = openedVia;\n } else {\n this._animationState = 'void';\n this._restoreFocus();\n }\n\n this._updateFocusTrapState();\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n get _width(): number {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n }\n\n /** Updates the enabled state of the focus trap. */\n private _updateFocusTrapState() {\n if (this._focusTrap) {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n this._focusTrap.enabled = this.opened && this.mode !== 'side';\n }\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('@transform.start', ['$event'])\n _animationStartListener(event: AnimationEvent) {\n this._animationStarted.next(event);\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('@transform.done', ['$event'])\n _animationDoneListener(event: AnimationEvent) {\n this._animationEnd.next(event);\n }\n\n static ngAcceptInputType_disableClose: BooleanInput;\n static ngAcceptInputType_autoFocus: BooleanInput;\n static ngAcceptInputType_opened: BooleanInput;\n}\n\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer\n }]\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n /** All drawers in the container. Includes drawers from inside nested containers. */\n @ContentChildren(MatDrawer, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n })\n _allDrawers: QueryList<MatDrawer>;\n\n /** Drawers that belong to this container. */\n _drawers = new QueryList<MatDrawer>();\n\n @ContentChild(MatDrawerContent) _content: MatDrawerContent;\n @ViewChild(MatDrawerContent) _userContent: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null { return this._start; }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null { return this._end; }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean { return this._autosize; }\n set autosize(value: boolean) { this._autosize = coerceBooleanProperty(value); }\n private _autosize: boolean;\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n set hasBackdrop(value: any) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null;\n private _end: MatDrawer | null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null;\n private _right: MatDrawer | null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number|null, right: number|null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number|null, right: number|null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n constructor(@Optional() private _dir: Directionality,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Inject(MAT_DRAWER_DEFAULT_AUTOSIZE) defaultAutosize = false,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n }\n\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler.change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n\n this._autosize = defaultAutosize;\n }\n\n ngAfterContentInit() {\n this._allDrawers.changes\n .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n .subscribe((drawer: QueryList<MatDrawer>) => {\n // @breaking-change 10.0.0 Remove `_container` check once container parameter is required.\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this.updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n this._doCheckSubject.pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed)\n ).subscribe(() => this.updateContentMargins());\n }\n\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n } else if (this._left.mode == 'push') {\n const width = this._left._width;\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n } else if (this._right.mode == 'push') {\n const width = this._right._width;\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(\n filter((event: AnimationEvent) => event.fromState !== event.toState),\n takeUntil(this._drawers.changes),\n )\n .subscribe((event: AnimationEvent) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(() =>\n this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n if (drawer) {\n drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n\n if (isAdd) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over');\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawer();\n }\n\n _closeModalDrawer() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer!.close());\n }\n\n _isShowingBackdrop(): boolean {\n return (this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));\n }\n\n private _canHaveBackdrop(drawer: MatDrawer): boolean {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\n }\n\n static ngAcceptInputType_autosize: BooleanInput;\n static ngAcceptInputType_hasBackdrop: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n Inject,\n Input,\n ViewEncapsulation,\n QueryList,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent, MAT_DRAWER_CONTAINER} from './drawer';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput\n} from '@angular/cdk/coercion';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\n\n\n@Component({\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContent extends MatDrawerContent {\n constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatSidenavContainer)) container: MatSidenavContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\n\n\n@Component({\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean { return this._fixedInViewport; }\n set fixedInViewport(value) { this._fixedInViewport = coerceBooleanProperty(value); }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number { return this._fixedTopGap; }\n set fixedTopGap(value) { this._fixedTopGap = coerceNumberProperty(value); }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number { return this._fixedBottomGap; }\n set fixedBottomGap(value) { this._fixedBottomGap = coerceNumberProperty(value); }\n private _fixedBottomGap = 0;\n\n static ngAcceptInputType_fixedInViewport: BooleanInput;\n static ngAcceptInputType_fixedTopGap: NumberInput;\n static ngAcceptInputType_fixedBottomGap: NumberInput;\n}\n\n\n@Component({\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer\n }]\n\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n })\n _allDrawers: QueryList<MatSidenav>;\n\n @ContentChild(MatSidenavContent) _content: MatSidenavContent;\n static ngAcceptInputType_hasBackdrop: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n ScrollingModule,\n PlatformModule,\n ],\n exports: [\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './sidenav-module';\nexport {\n throwMatDuplicatedDrawerError,\n MatDrawerToggleResult,\n MAT_DRAWER_DEFAULT_AUTOSIZE,\n MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n MatDrawerContent,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerMode,\n} from './drawer';\nexport * from './sidenav';\nexport * from './drawer-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MAT_DRAWER_CONTAINER as ɵangular_material_src_material_sidenav_sidenav_a} from './drawer';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidenav.js","sources":["../../../../../../src/material/sidenav/drawer-animations.ts","../../../../../../src/material/sidenav/drawer.ts","../../../../../../src/material/sidenav/sidenav.ts","../../../../../../src/material/sidenav/sidenav-module.ts","../../../../../../src/material/sidenav/public-api.ts","../../../../../../src/material/sidenav/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nexport const matDrawerAnimations: {\n readonly transformDrawer: AnimationTriggerMetadata;\n} = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void',\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n HostListener,\n HostBinding,\n} from '@angular/core';\nimport {fromEvent, merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n startWith,\n take,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Drawer and SideNav display modes. */\nexport type MatDrawerMode = 'over' | 'push' | 'side';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE =\n new InjectionToken<boolean>('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n });\n\n\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nexport const MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER');\n\n/** @docs-private */\nexport function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean {\n return false;\n}\n\n@Component({\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatDrawerContainer)) public _container: MatDrawerContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawer implements AfterContentInit, AfterContentChecked, OnDestroy {\n private _focusTrap: FocusTrap;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n private _enableAnimations = false;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' { return this._position; }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): MatDrawerMode { return this._mode; }\n set mode(value: MatDrawerMode) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n private _mode: MatDrawerMode = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean { return this._disableClose; }\n set disableClose(value: boolean) { this._disableClose = coerceBooleanProperty(value); }\n private _disableClose: boolean = false;\n\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n */\n @Input()\n get autoFocus(): boolean {\n const value = this._autoFocus;\n\n // Note that usually we disable auto focusing in `side` mode, because we don't know how the\n // sidenav is being used, but in some cases it still makes sense to do it. If the consumer\n // explicitly enabled `autoFocus`, we take it as them always wanting to enable it.\n return value == null ? this.mode !== 'side' : value;\n }\n set autoFocus(value: boolean) { this._autoFocus = coerceBooleanProperty(value); }\n private _autoFocus: boolean | undefined;\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) { this.toggle(coerceBooleanProperty(value)); }\n private _opened: boolean = false;\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null;\n\n /** Emits whenever the drawer has started animating. */\n _animationStarted = new Subject<AnimationEvent>();\n\n /** Emits whenever the drawer is done animating. */\n _animationEnd = new Subject<AnimationEvent>();\n\n /** Current state of the sidenav animation. */\n // @HostBinding is used in the class as it is expected to be extended. Since @Component decorator\n // metadata is not inherited by child classes, instead the host binding data is defined in a way\n // that can be inherited.\n // tslint:disable:no-host-decorator-in-concrete\n @HostBinding('@transform')\n _animationState: 'open-instant' | 'open' | 'void' = 'void';\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n get _openedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n get openedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n map(() => {})\n );\n }\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n get _closedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => !o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n get closedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState === 'void'),\n map(() => {})\n );\n }\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') onPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject<void>();\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n private _focusTrapFactory: FocusTrapFactory,\n private _focusMonitor: FocusMonitor,\n private _platform: Platform,\n private _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private _doc: any,\n /**\n * @deprecated `_container` parameter to be made required.\n * @breaking-change 10.0.0\n */\n @Optional() @Inject(MAT_DRAWER_CONTAINER) public _container?: MatDrawerContainer) {\n\n this.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n }\n\n this._takeFocus();\n } else {\n this._restoreFocus();\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n (fromEvent(this._elementRef.nativeElement, 'keydown') as Observable<KeyboardEvent>).pipe(\n filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }),\n takeUntil(this._destroyed)\n ).subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }));\n });\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe((event: AnimationEvent) => {\n const {fromState, toState} = event;\n\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n private _takeFocus() {\n if (!this.autoFocus || !this._focusTrap) {\n return;\n }\n\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n // still works. We need to check that `focus` is a function due to Universal.\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n */\n private _restoreFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n const activeEl = this._doc && this._doc.activeElement;\n\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n // Note that we don't check via `instanceof HTMLElement` so that we can cover SVGs as well.\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, this._openedVia);\n } else {\n this._elementRef.nativeElement.blur();\n }\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n this._openedVia = null;\n }\n\n ngAfterContentInit() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n }\n\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n\n ngOnDestroy() {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia: FocusOrigin = 'program'):\n Promise<MatDrawerToggleResult> {\n\n this._opened = isOpen;\n\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n this._openedVia = openedVia;\n } else {\n this._animationState = 'void';\n this._restoreFocus();\n }\n\n this._updateFocusTrapState();\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n get _width(): number {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n }\n\n /** Updates the enabled state of the focus trap. */\n private _updateFocusTrapState() {\n if (this._focusTrap) {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n this._focusTrap.enabled = this.opened && this.mode !== 'side';\n }\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('@transform.start', ['$event'])\n _animationStartListener(event: AnimationEvent) {\n this._animationStarted.next(event);\n }\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritten.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('@transform.done', ['$event'])\n _animationDoneListener(event: AnimationEvent) {\n this._animationEnd.next(event);\n }\n\n static ngAcceptInputType_disableClose: BooleanInput;\n static ngAcceptInputType_autoFocus: BooleanInput;\n static ngAcceptInputType_opened: BooleanInput;\n}\n\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer\n }]\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n /** All drawers in the container. Includes drawers from inside nested containers. */\n @ContentChildren(MatDrawer, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n })\n _allDrawers: QueryList<MatDrawer>;\n\n /** Drawers that belong to this container. */\n _drawers = new QueryList<MatDrawer>();\n\n @ContentChild(MatDrawerContent) _content: MatDrawerContent;\n @ViewChild(MatDrawerContent) _userContent: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null { return this._start; }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null { return this._end; }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean { return this._autosize; }\n set autosize(value: boolean) { this._autosize = coerceBooleanProperty(value); }\n private _autosize: boolean;\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n set hasBackdrop(value: any) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null;\n private _end: MatDrawer | null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null;\n private _right: MatDrawer | null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number|null, right: number|null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number|null, right: number|null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n constructor(@Optional() private _dir: Directionality,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Inject(MAT_DRAWER_DEFAULT_AUTOSIZE) defaultAutosize = false,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n }\n\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler.change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n\n this._autosize = defaultAutosize;\n }\n\n ngAfterContentInit() {\n this._allDrawers.changes\n .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n .subscribe((drawer: QueryList<MatDrawer>) => {\n // @breaking-change 10.0.0 Remove `_container` check once container parameter is required.\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this.updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n this._doCheckSubject.pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed)\n ).subscribe(() => this.updateContentMargins());\n }\n\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n } else if (this._left.mode == 'push') {\n const width = this._left._width;\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n } else if (this._right.mode == 'push') {\n const width = this._right._width;\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(\n filter((event: AnimationEvent) => event.fromState !== event.toState),\n takeUntil(this._drawers.changes),\n )\n .subscribe((event: AnimationEvent) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(() =>\n this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n if (drawer) {\n drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n\n if (isAdd) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over');\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawer();\n }\n\n _closeModalDrawer() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer!.close());\n }\n\n _isShowingBackdrop(): boolean {\n return (this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));\n }\n\n private _canHaveBackdrop(drawer: MatDrawer): boolean {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\n }\n\n static ngAcceptInputType_autosize: BooleanInput;\n static ngAcceptInputType_hasBackdrop: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n Inject,\n Input,\n ViewEncapsulation,\n QueryList,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent, MAT_DRAWER_CONTAINER} from './drawer';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput\n} from '@angular/cdk/coercion';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\n\n\n@Component({\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContent extends MatDrawerContent {\n constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatSidenavContainer)) container: MatSidenavContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\n\n\n@Component({\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean { return this._fixedInViewport; }\n set fixedInViewport(value) { this._fixedInViewport = coerceBooleanProperty(value); }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number { return this._fixedTopGap; }\n set fixedTopGap(value) { this._fixedTopGap = coerceNumberProperty(value); }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number { return this._fixedBottomGap; }\n set fixedBottomGap(value) { this._fixedBottomGap = coerceNumberProperty(value); }\n private _fixedBottomGap = 0;\n\n static ngAcceptInputType_fixedInViewport: BooleanInput;\n static ngAcceptInputType_fixedTopGap: NumberInput;\n static ngAcceptInputType_fixedBottomGap: NumberInput;\n}\n\n\n@Component({\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer\n }]\n\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n })\n _allDrawers: QueryList<MatSidenav>;\n\n @ContentChild(MatSidenavContent) _content: MatSidenavContent;\n static ngAcceptInputType_hasBackdrop: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n PlatformModule,\n CdkScrollableModule,\n ],\n exports: [\n CdkScrollableModule,\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './sidenav-module';\nexport {\n throwMatDuplicatedDrawerError,\n MatDrawerToggleResult,\n MAT_DRAWER_DEFAULT_AUTOSIZE,\n MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n MatDrawerContent,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerMode,\n} from './drawer';\nexport * from './sidenav';\nexport * from './drawer-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MAT_DRAWER_CONTAINER as ɵangular_material_src_material_sidenav_sidenav_a} from './drawer';"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;AAOA,AASA;;;;AAIA,IAAa,mBAAmB,GAE5B;;IAEF,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE;;;;;QAKpC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;YAChC,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;;YAElB,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QACH,UAAU,CAAC,sBAAsB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,UAAU,CAAC,qCAAqC,EAC5C,OAAO,CAAC,wCAAwC,CAAC,CAAC;KACvD,CAAC;CACH;;ACYD;;;;AAIA,SAAgB,6BAA6B,CAAC,QAAgB;IAC5D,MAAM,KAAK,CAAC,mDAAgD,QAAQ,QAAI,CAAC,CAAC;CAC3E;;AAUD,IAAa,2BAA2B,GACpC,IAAI,cAAc,CAAU,6BAA6B,EAAE;IACzD,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,mCAAmC;CAC7C,CAAC,CAAC;;;;;AAOP,IAAa,oBAAoB,GAAG,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;;AAG/E,SAAgB,mCAAmC;IACjD,OAAO,KAAK,CAAC;CACd;AAED;IAWsC,oCAAa;IACjD,0BACY,kBAAqC,EACQ,UAA8B,EACnF,UAAmC,EACnC,gBAAkC,EAClC,MAAc;QALlB,YAME,kBAAM,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,SAC5C;QANW,wBAAkB,GAAlB,kBAAkB,CAAmB;QACQ,gBAAU,GAAV,UAAU,CAAoB;;KAKtF;IAED,6CAAkB,GAAlB;QAAA,iBAIC;QAHC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC;YAC9C,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACJ;;gBAzBF,SAAS,SAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAC9B,QAAQ,EAAE,2BAA2B;oBACrC,IAAI,EAAE;wBACJ,OAAO,EAAE,oBAAoB;wBAC7B,wBAAwB,EAAE,iCAAiC;wBAC3D,yBAAyB,EAAE,kCAAkC;qBAC9D;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;;;gBA/EC,iBAAiB;gBAmFoD,kBAAkB,uBAAlF,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,kBAAkB,GAAA,CAAC;gBA9EhD,UAAU;gBAXW,gBAAgB;gBAiBrC,MAAM;;IAoFR,uBAAC;CAAA,CAfqC,aAAa,GAelD;AAGD;;;AAGA;IAkJE,mBAAoB,WAAoC,EACpC,iBAAmC,EACnC,aAA2B,EAC3B,SAAmB,EACnB,OAAe,EACe,IAAS;;;;;IAKE,UAA+B;QAV5F,iBAsDC;QAtDmB,gBAAW,GAAX,WAAW,CAAyB;QACpC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,kBAAa,GAAb,aAAa,CAAc;QAC3B,cAAS,GAAT,SAAS,CAAU;QACnB,YAAO,GAAP,OAAO,CAAQ;QACe,SAAI,GAAJ,IAAI,CAAK;QAKE,eAAU,GAAV,UAAU,CAAqB;QAvIpF,yCAAoC,GAAuB,IAAI,CAAC;;QAGhE,sBAAiB,GAAG,KAAK,CAAC;QAa1B,cAAS,GAAoB,OAAO,CAAC;QAUrC,UAAK,GAAkB,MAAM,CAAC;QAM9B,kBAAa,GAAY,KAAK,CAAC;QA0B/B,YAAO,GAAY,KAAK,CAAC;;QAMjC,sBAAiB,GAAG,IAAI,OAAO,EAAkB,CAAC;;QAGlD,kBAAa,GAAG,IAAI,OAAO,EAAkB,CAAC;;;;;;QAQ9C,oBAAe,GAAqC,MAAM,CAAC;;QAGxC,iBAAY;;QAE3B,IAAI,YAAY,eAAuB,IAAI,CAAC,CAAC;;QAiChC,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;;;QAIvB,sBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;QAMnF,iBAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;QAc1C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,MAAe;YAC1C,IAAI,MAAM,EAAE;gBACV,IAAI,KAAI,CAAC,IAAI,EAAE;oBACb,KAAI,CAAC,oCAAoC,GAAG,KAAI,CAAC,IAAI,CAAC,aAA4B,CAAC;iBACpF;gBAED,KAAI,CAAC,UAAU,EAAE,CAAC;aACnB;iBAAM;gBACL,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF,CAAC,CAAC;;;;;;QAOH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC1B,SAAS,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAA+B,CAAC,IAAI,CACpF,MAAM,CAAC,UAAA,KAAK;gBACV,OAAO,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,KAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACjF,CAAC,EACF,SAAS,CAAC,KAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAClC,KAAI,CAAC,KAAK,EAAE,CAAC;gBACb,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B,CAAC,GAAA,CAAC,CAAC;SACP,CAAC,CAAC;;;QAIH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAC,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;SAC/D,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,KAAqB;YAC3B,IAAA,2BAAS,EAAE,uBAAO,CAAU;YAEnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,MAAM;iBACrD,OAAO,KAAK,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC3D,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;aACtC;SACF,CAAC,CAAC;KACJ;IA7KD,sBACI,+BAAQ;;aADZ,cACkC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;aAC1D,UAAa,KAAsB;;YAEjC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;YAC1C,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;aAC/B;SACF;;;OARyD;IAY1D,sBACI,2BAAI;;aADR,cAC4B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;aAChD,UAAS,KAAoB;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;;;OAL+C;IAShD,sBACI,mCAAY;;aADhB,cAC8B,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE;aAC1D,UAAiB,KAAc,IAAI,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;OAD7B;IAS1D,sBACI,gCAAS;;;;;;aADb;YAEE,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;;;;YAK9B,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC;SACrD;aACD,UAAc,KAAc,IAAI,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;OADhF;IAQD,sBACI,6BAAM;;;;;aADV,cACwB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;aAC9C,UAAW,KAAc,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;;;OAD3B;IA2B9C,sBACI,oCAAa;;aADjB;YAEE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,GAAA,CAAC,EAAE,GAAG,CAAC,eAAQ,CAAC,CAAC,CAAC;SAC9D;;;OAAA;IAGD,sBACI,kCAAW;;aADf;YAEE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAChC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAA,CAAC,EACzE,GAAG,CAAC,eAAQ,CAAC,CACd,CAAC;SACH;;;OAAA;IAGD,sBACI,oCAAa;;aADjB;YAEE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAA,CAAC,EAAE,GAAG,CAAC,eAAQ,CAAC,CAAC,CAAC;SAC/D;;;OAAA;IAGD,sBACI,kCAAW;;aADf;YAEE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAChC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,GAAA,CAAC,EAC9D,GAAG,CAAC,eAAQ,CAAC,CACd,CAAC;SACH;;;OAAA;;;;;IA2EO,8BAAU,GAAlB;QAAA,iBAYC;QAXC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACvC,OAAO;SACR;QAED,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC,IAAI,CAAC,UAAA,aAAa;;;YAG/D,IAAI,CAAC,aAAa,IAAI,OAAO,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE;gBAChF,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACxC;SACF,CAAC,CAAC;KACJ;;;;;IAMO,iCAAa,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO;SACR;QAED,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAEtD,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;;YAEjE,IAAI,IAAI,CAAC,oCAAoC,EAAE;gBAC7C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aACzF;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aACvC;SACF;QAED,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;IAED,sCAAkB,GAAlB;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,yCAAqB,GAArB;;;;;QAKE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;KACF;IAED,+BAAW,GAAX;QACE,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;;;;;IAOD,wBAAI,GAAJ,UAAK,SAAuB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACrC;;IAGD,yBAAK,GAAL;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;;;IAQD,0BAAM,GAAN,UAAO,MAA8B,EAAE,SAAkC;QAAzE,iBAkBC;QAlBM,uBAAA,EAAA,UAAmB,IAAI,CAAC,MAAM;QAAE,0BAAA,EAAA,qBAAkC;QAGvE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,cAAc,CAAC;YACxE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAwB,UAAA,OAAO;YAC/C,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,GAAA,CAAC,CAAC;SACrF,CAAC,CAAC;KACJ;IAED,sBAAI,6BAAM;aAAV;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/F;;;OAAA;;IAGO,yCAAqB,GAA7B;QACE,IAAI,IAAI,CAAC,UAAU,EAAE;;YAEnB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC/D;KACF;;;;;;IAQD,2CAAuB,GADvB,UACwB,KAAqB;QAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;;;;;;IAQD,0CAAsB,GADtB,UACuB,KAAqB;QAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;gBArVF,SAAS,SAAC;oBACT,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,WAAW;oBACrB,mGAA0B;oBAC1B,UAAU,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC;oBACjD,IAAI,EAAE;wBACJ,OAAO,EAAE,YAAY;;wBAErB,cAAc,EAAE,MAAM;wBACtB,wBAAwB,EAAE,oBAAoB;wBAC9C,yBAAyB,EAAE,iBAAiB;wBAC5C,yBAAyB,EAAE,iBAAiB;wBAC5C,yBAAyB,EAAE,iBAAiB;wBAC5C,2BAA2B,EAAE,QAAQ;wBACrC,UAAU,EAAE,IAAI;qBACjB;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;;;gBAlHC,UAAU;gBAhBkC,gBAAgB;gBAAtD,YAAY;gBAIZ,QAAQ;gBAkBd,MAAM;gDAiPO,QAAQ,YAAI,MAAM,SAAC,QAAQ;gBAKkC,kBAAkB,uBAA/E,QAAQ,YAAI,MAAM,SAAC,oBAAoB;;;2BAjInD,KAAK;uBAaL,KAAK;+BAUL,KAAK;4BAUL,KAAK;yBAgBL,KAAK;kCAmBL,WAAW,SAAC,YAAY;+BAIxB,MAAM;gCAKN,MAAM,SAAC,QAAQ;8BAMf,MAAM;gCASN,MAAM,SAAC,QAAQ;8BAMf,MAAM;oCAaN,MAAM,SAAC,iBAAiB;0CA8LxB,YAAY,SAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;yCAU3C,YAAY,SAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;IAQ7C,gBAAC;CA1VD,IA0VC;AAGD;;;;;;AAMA;IAwGE,4BAAgC,IAAoB,EAChC,QAAiC,EACjC,OAAe,EACf,kBAAqC,EAC7C,aAA4B,EACS,eAAuB,EACT,cAAuB;QANtF,iBAwBC;QAnBW,gCAAA,EAAA,uBAA4D;QALxC,SAAI,GAAJ,IAAI,CAAgB;QAChC,aAAQ,GAAR,QAAQ,CAAyB;QACjC,YAAO,GAAP,OAAO,CAAQ;QACf,uBAAkB,GAAlB,kBAAkB,CAAmB;QAGM,mBAAc,GAAd,cAAc,CAAS;;QApFtF,aAAQ,GAAG,IAAI,SAAS,EAAa,CAAC;;QA2CnB,kBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;;QAgB/D,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAGjC,oBAAe,GAAG,IAAI,OAAO,EAAQ,CAAC;;;;;;QAOvD,oBAAe,GAA4C,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;QAE5E,0BAAqB,GAAG,IAAI,OAAO,EAA2C,CAAC;;;QAiBtF,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrD,KAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC,CAAC;SACJ;;;QAID,aAAa,CAAC,MAAM,EAAE;aACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,oBAAoB,EAAE,GAAA,CAAC,CAAC;QAEhD,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;KAClC;IAhGD,sBAAI,qCAAK;;aAAT,cAAgC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;;OAAA;IAGrD,sBAAI,mCAAG;;aAAP,cAA8B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;;;OAAA;IAUjD,sBACI,wCAAQ;;;;;;;;;aADZ,cAC0B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;aAClD,UAAa,KAAc,IAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;OAD7B;IASlD,sBACI,2CAAW;;;;;;aADf;YAEE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;gBAClC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;aAC/F;YAED,OAAO,IAAI,CAAC,iBAAiB,CAAC;SAC/B;aACD,UAAgB,KAAU;YACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;SAC9E;;;OAHA;IAsCD,sBAAI,0CAAU;;aAAd;YACE,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC;SAC3C;;;OAAA;IA4BD,+CAAkB,GAAlB;QAAA,iBA+BC;QA9BC,IAAI,CAAC,WAAW,CAAC,OAAO;aACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC7D,SAAS,CAAC,UAAC,MAA4B;;YAEtC,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,KAAI,GAAA,CAAC,CAAC,CAAC;YACzF,KAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;SACjC,CAAC,CAAC;QAEL,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,KAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,MAAiB;gBACtC,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAChC,KAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAClC,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;aAC/B,CAAC,CAAC;YAEH,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,MAAM;gBACrB,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,MAAM,CAAC;gBAC/B,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,IAAI,CAAC,EAAE;gBACjC,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B;YAED,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,YAAY,CAAC,EAAE,CAAC;QAChB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,oBAAoB,EAAE,GAAA,CAAC,CAAC;KAChD;IAED,wCAAW,GAAX;QACE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;IAGD,iCAAI,GAAJ;QACE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;KAChD;;IAGD,kCAAK,GAAL;QACE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,KAAK,EAAE,GAAA,CAAC,CAAC;KACjD;;;;;IAMD,iDAAoB,GAApB;QAAA,iBA4CC;;;;;;;QArCC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE;gBAC7B,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC3B;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE;gBACpC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAChC,IAAI,IAAI,KAAK,CAAC;gBACd,KAAK,IAAI,KAAK,CAAC;aAChB;SACF;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE;gBAC9B,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;aAC7B;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE;gBACrC,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,KAAK,IAAI,KAAK,CAAC;gBACf,IAAI,IAAI,KAAK,CAAC;aACf;SACF;;;;;QAMD,IAAI,GAAG,IAAI,IAAI,IAAK,CAAC;QACrB,KAAK,GAAG,KAAK,IAAI,IAAK,CAAC;QAEvB,IAAI,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;YAC9E,IAAI,CAAC,eAAe,GAAG,EAAC,IAAI,MAAA,EAAE,KAAK,OAAA,EAAC,CAAC;;;YAIrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAM,OAAA,KAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAI,CAAC,eAAe,CAAC,GAAA,CAAC,CAAC;SAC/E;KACF;IAED,sCAAS,GAAT;QAAA,iBAMC;;QAJC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;;YAEtC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,cAAM,OAAA,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;SACnE;KACF;;;;;;IAOO,+CAAkB,GAA1B,UAA2B,MAAiB;QAA5C,iBAoBC;QAnBC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAC3B,MAAM,CAAC,UAAC,KAAqB,IAAK,OAAA,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,GAAA,CAAC,EACpE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACjC;aACA,SAAS,CAAC,UAAC,KAAqB;;;YAG/B,IAAI,KAAK,CAAC,OAAO,KAAK,cAAc,IAAI,KAAI,CAAC,cAAc,KAAK,gBAAgB,EAAE;gBAChF,KAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;aACpE;YAED,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjE,OAAA,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC;aAAA,CAAC,CAAC;SAC7C;KACF;;;;;IAMO,iDAAoB,GAA5B,UAA6B,MAAiB;QAA9C,iBAWC;QAVC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;;;QAGD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,KAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnE,KAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;;IAGO,6CAAgB,GAAxB,UAAyB,MAAiB;QAA1C,iBAQC;QAPC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC/E,SAAS,CAAC;gBACT,KAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC,CAAC,CAAC;SACN;KACF;;IAGO,+CAAkB,GAA1B,UAA2B,KAAc;QACvC,IAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;QACxD,IAAM,SAAS,GAAG,+BAA+B,CAAC;QAElD,IAAI,KAAK,EAAE;YACT,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SAC1B;aAAM;YACL,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC7B;KACF;;IAGO,6CAAgB,GAAxB;QAAA,iBA4BC;QA3BC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;QAG/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,MAAM;YAC1B,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAE;gBAC5B,IAAI,KAAI,CAAC,IAAI,IAAI,IAAI,EAAE;oBACrB,6BAA6B,CAAC,KAAK,CAAC,CAAC;iBACtC;gBACD,KAAI,CAAC,IAAI,GAAG,MAAM,CAAC;aACpB;iBAAM;gBACL,IAAI,KAAI,CAAC,MAAM,IAAI,IAAI,EAAE;oBACvB,6BAA6B,CAAC,OAAO,CAAC,CAAC;iBACxC;gBACD,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;aACtB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;QAGhC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;SACzB;KACF;;IAGO,sCAAS,GAAjB;QACE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM;aAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;KACpE;IAED,+CAAkB,GAAlB;QACE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,8CAAiB,GAAjB;QAAA,iBAKC;;QAHC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;aACrB,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAA,CAAC;aACjF,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,MAAO,CAAC,KAAK,EAAE,GAAA,CAAC,CAAC;KACvC;IAED,+CAAkB,GAAlB;QACE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;aACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5E;IAEO,6CAAgB,GAAxB,UAAyB,MAAiB;QACxC,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAC3D;IAEO,0CAAa,GAArB,UAAsB,MAAwB;QAC5C,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;KACxC;;gBA9WF,SAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE,oBAAoB;oBAC9B,oXAAoC;oBAEpC,IAAI,EAAE;wBACJ,OAAO,EAAE,sBAAsB;wBAC/B,gDAAgD,EAAE,mBAAmB;qBACtE;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,oBAAoB;4BAC7B,WAAW,EAAE,kBAAkB;yBAChC,CAAC;;iBACH;;;;gBAjeO,cAAc,uBA0jBP,QAAQ;gBA3iBrB,UAAU;gBAMV,MAAM;gBAXN,iBAAiB;gBANsB,aAAa;gDA2jBvC,MAAM,SAAC,2BAA2B;6CAClC,QAAQ,YAAI,MAAM,SAAC,qBAAqB;;;8BA5FpD,eAAe,SAAC,SAAS,EAAE;;;wBAG1B,WAAW,EAAE,IAAI;qBAClB;2BAMA,YAAY,SAAC,gBAAgB;+BAC7B,SAAS,SAAC,gBAAgB;2BAgB1B,KAAK;8BAUL,KAAK;gCAcL,MAAM;;IA6ST,yBAAC;CAlXD;;AC3dA;;;;;;;;IA4CuC,qCAAgB;IACrD,2BACI,iBAAoC,EACW,SAA8B,EAC7E,UAAmC,EACnC,gBAAkC,EAClC,MAAc;eAChB,kBAAM,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC;KAC1E;;gBAnBF,SAAS,SAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,QAAQ,EAAE,2BAA2B;oBACrC,IAAI,EAAE;wBACJ,OAAO,EAAE,wCAAwC;wBACjD,wBAAwB,EAAE,iCAAiC;wBAC3D,yBAAyB,EAAE,kCAAkC;qBAC9D;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;;;gBAjCC,iBAAiB;gBAqC6C,mBAAmB,uBAA5E,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,mBAAmB,GAAA,CAAC;gBA5BjD,UAAU;gBAWJ,gBAAgB;gBAVtB,MAAM;;IAiCR,wBAAC;CAAA,CATsC,gBAAgB,GAStD;;IAyB+B,8BAAS;IAtBzC;QAAA,qEAkDC;QAvBS,sBAAgB,GAAG,KAAK,CAAC;QASzB,kBAAY,GAAG,CAAC,CAAC;QASjB,qBAAe,GAAG,CAAC,CAAC;;KAK7B;IA1BC,sBACI,uCAAe;;aADnB,cACiC,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE;aAChE,UAAoB,KAAK,IAAI,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;OADpB;IAQhE,sBACI,mCAAW;;;;;aADf,cAC4B,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;aACvD,UAAgB,KAAK,IAAI,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;;;OADpB;IAQvD,sBACI,sCAAc;;;;;aADlB,cAC+B,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE;aAC7D,UAAmB,KAAK,IAAI,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;;;OADpB;;gBA3C9D,SAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,QAAQ,EAAE,YAAY;oBACtB,mGAA0B;oBAC1B,UAAU,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC;oBACjD,IAAI,EAAE;wBACJ,OAAO,EAAE,wBAAwB;wBACjC,UAAU,EAAE,IAAI;;wBAEhB,cAAc,EAAE,MAAM;wBACtB,wBAAwB,EAAE,oBAAoB;wBAC9C,yBAAyB,EAAE,iBAAiB;wBAC5C,yBAAyB,EAAE,iBAAiB;wBAC5C,yBAAyB,EAAE,iBAAiB;wBAC5C,2BAA2B,EAAE,QAAQ;wBACrC,2BAA2B,EAAE,iBAAiB;wBAC9C,gBAAgB,EAAE,sCAAsC;wBACxD,mBAAmB,EAAE,yCAAyC;qBAC/D;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC;;;kCAGE,KAAK;8BASL,KAAK;iCASL,KAAK;;IAQR,iBAAC;CAAA,CA5B+B,SAAS,GA4BxC;;IAoBwC,uCAAkB;IAjB3D;;KA2BC;;gBA3BA,SAAS,SAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,QAAQ,EAAE,qBAAqB;oBAC/B,sYAAqC;oBAErC,IAAI,EAAE;wBACJ,OAAO,EAAE,4CAA4C;wBACrD,gDAAgD,EAAE,mBAAmB;qBACtE;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,oBAAoB;4BAC7B,WAAW,EAAE,mBAAmB;yBACjC,CAAC;;iBAEH;;;8BAEE,eAAe,SAAC,UAAU,EAAE;;;wBAG3B,WAAW,EAAE,IAAI;qBAClB;2BAGA,YAAY,SAAC,iBAAiB;;IAEjC,0BAAC;CAAA,CAVwC,kBAAkB;;AC9H3D;;;;;;;AAOA;IASA;KA0BgC;;gBA1B/B,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,mBAAmB;qBACpB;oBACD,OAAO,EAAE;wBACP,mBAAmB;wBACnB,eAAe;wBACf,SAAS;wBACT,kBAAkB;wBAClB,gBAAgB;wBAChB,UAAU;wBACV,mBAAmB;wBACnB,iBAAiB;qBAClB;oBACD,YAAY,EAAE;wBACZ,SAAS;wBACT,kBAAkB;wBAClB,gBAAgB;wBAChB,UAAU;wBACV,mBAAmB;wBACnB,iBAAiB;qBAClB;iBACF;;IAC8B,uBAAC;CA1BhC;;AChBA;;;;;;GAMG;;ACNH;;GAEG;;;;"}
package/fesm5/table.js CHANGED
@@ -411,7 +411,7 @@ var MatTableModule = /** @class */ (function () {
411
411
  CdkTableModule,
412
412
  MatCommonModule,
413
413
  ],
414
- exports: EXPORTED_DECLARATIONS,
414
+ exports: [MatCommonModule, EXPORTED_DECLARATIONS],
415
415
  declarations: EXPORTED_DECLARATIONS,
416
416
  },] }
417
417
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../../../../src/material/table/table.ts","../../../../../../src/material/table/cell.ts","../../../../../../src/material/table/row.ts","../../../../../../src/material/table/text-column.ts","../../../../../../src/material/table/table-module.ts","../../../../../../src/material/table/table-data-source.ts","../../../../../../src/material/table/public-api.ts","../../../../../../src/material/table/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE_TEMPLATE, CdkTable, CDK_TABLE} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n providers: [\n {provide: CdkTable, useExisting: MatTable},\n {provide: CDK_TABLE, useExisting: MatTable}\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n inputs: ['sticky'],\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n static ngAcceptInputType_sticky: BooleanInput;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n CDK_ROW_TEMPLATE,\n CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {\n static ngAcceptInputType_sticky: BooleanInput;\n}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {\n static ngAcceptInputType_sticky: BooleanInput;\n}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {\n}\n\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow {\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow {\n}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {MatTextColumn} from './text-column';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [\n CdkTableModule,\n MatCommonModule,\n ],\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription,\n Subject,\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge(this._sort.sortChange, this._sort.initialized) as Observable<Sort|void> :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized\n ) as Observable<PageEvent|void> :\n observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter])\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange])\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange])\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) { return; }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './table-module';\nexport * from './cell';\nexport * from './table';\nexport * from './row';\nexport * from './table-data-source';\nexport * from './text-column';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../../../../src/material/table/table.ts","../../../../../../src/material/table/cell.ts","../../../../../../src/material/table/row.ts","../../../../../../src/material/table/text-column.ts","../../../../../../src/material/table/table-module.ts","../../../../../../src/material/table/table-data-source.ts","../../../../../../src/material/table/public-api.ts","../../../../../../src/material/table/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CDK_TABLE_TEMPLATE, CdkTable, CDK_TABLE} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n template: CDK_TABLE_TEMPLATE,\n styleUrls: ['table.css'],\n host: {\n 'class': 'mat-table',\n },\n providers: [\n {provide: CdkTable, useExisting: MatTable},\n {provide: CDK_TABLE, useExisting: MatTable}\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected stickyCssClass = 'mat-table-sticky';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {Directive, ElementRef, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef, CdkFooterCell, CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}]\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}]\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}]\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n inputs: ['sticky'],\n providers: [\n {provide: CdkColumnDef, useExisting: MatColumnDef},\n {provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef}\n ],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef') name: string;\n\n static ngAcceptInputType_sticky: BooleanInput;\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n})\nexport class MatCell extends CdkCell {\n constructor(columnDef: CdkColumnDef,\n elementRef: ElementRef<HTMLElement>) {\n super(columnDef, elementRef);\n elementRef.nativeElement.classList.add(`mat-column-${columnDef.cssClassFriendlyName}`);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {\n CDK_ROW_TEMPLATE,\n CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef\n} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {\n static ngAcceptInputType_sticky: BooleanInput;\n}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {\n static ngAcceptInputType_sticky: BooleanInput;\n}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {\n}\n\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n})\nexport class MatHeaderRow extends CdkHeaderRow {\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n})\nexport class MatFooterRow extends CdkFooterRow {\n}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n})\nexport class MatRow extends CdkRow {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatTable} from './table';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef\n} from './row';\nimport {MatTextColumn} from './text-column';\nimport {MatCommonModule} from '@angular/material/core';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [\n CdkTableModule,\n MatCommonModule,\n ],\n exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n declarations: EXPORTED_DECLARATIONS,\n})\nexport class MatTableModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {DataSource} from '@angular/cdk/table';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subscription,\n Subject,\n} from 'rxjs';\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\nimport {MatSort, Sort} from '@angular/material/sort';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nexport class MatTableDataSource<T> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription = Subscription.EMPTY;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() { return this._data.value; }\n set data(data: T[]) { this._data.next(data); }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string { return this._filter.value; }\n set filter(filter: string) { this._filter.next(filter); }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null { return this._sort; }\n set sort(sort: MatSort|null) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n private _sort: MatSort|null;\n\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): MatPaginator | null { return this._paginator; }\n set paginator(paginator: MatPaginator|null) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n private _paginator: MatPaginator|null;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: ((data: T, sortHeaderId: string) => string|number) =\n (data: T, sortHeaderId: string): string|number => {\n const value = (data as {[key: string]: any})[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n }\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: ((data: T[], sort: MatSort) => T[]) = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') { return data; }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n }\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: ((data: T, filter: string) => boolean) = (data: T, filter: string): boolean => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data).reduce((currentTerm: string, key: string) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + (data as {[key: string]: any})[key] + '◬';\n }, '').toLowerCase();\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n\n return dataStr.indexOf(transformedFilter) != -1;\n }\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort|null|void> = this._sort ?\n merge(this._sort.sortChange, this._sort.initialized) as Observable<Sort|void> :\n observableOf(null);\n const pageChange: Observable<PageEvent|null|void> = this._paginator ?\n merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized\n ) as Observable<PageEvent|void> :\n observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter])\n .pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange])\n .pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange])\n .pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n !this.filter ? data : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) { this._updatePaginator(this.filteredData.length); }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) { return data; }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) { return data; }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) { return; }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() { return this._renderData; }\n\n /**\n * Used by the MatTable. Called when it is destroyed. No-op.\n * @docs-private\n */\n disconnect() { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './table-module';\nexport * from './cell';\nexport * from './table';\nexport * from './row';\nexport * from './table-data-source';\nexport * from './text-column';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
package/fesm5/tabs.js CHANGED
@@ -1048,7 +1048,8 @@ var MatPaginatedTabHeader = /** @class */ (function () {
1048
1048
  // On dir change or window resize, realign the ink bar and update the orientation of
1049
1049
  // the key manager if the direction has changed.
1050
1050
  merge(dirChange, resize, this._items.changes).pipe(takeUntil(this._destroyed)).subscribe(function () {
1051
- realign();
1051
+ // We need to defer this to give the browser some time to recalculate the element dimensions.
1052
+ Promise.resolve().then(realign);
1052
1053
  _this._keyManager.withHorizontalOrientation(_this._getLayoutDirection());
1053
1054
  });
1054
1055
  // If there is a change in the focus key manager we need to emit the `indexFocused`
@@ -1495,7 +1496,7 @@ var MatTabHeader = /** @class */ (function (_super) {
1495
1496
  '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',
1496
1497
  '[class.mat-tab-header-rtl]': "_getLayoutDirection() == 'rtl'",
1497
1498
  },
1498
- styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:\"\";height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center] .mat-tab-labels{justify-content:center}[mat-align-tabs=end] .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}._mat-animation-noopable.mat-tab-list{transition:none;animation:none}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\n"]
1499
+ styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:\"\";height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}._mat-animation-noopable.mat-tab-list{transition:none;animation:none}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\n"]
1499
1500
  }] }
1500
1501
  ];
1501
1502
  /** @nocollapse */
@@ -1639,7 +1640,7 @@ var MatTabNav = /** @class */ (function (_super) {
1639
1640
  encapsulation: ViewEncapsulation.None,
1640
1641
  // tslint:disable-next-line:validate-decorators
1641
1642
  changeDetection: ChangeDetectionStrategy.Default,
1642
- styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:\"\";height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-links{display:flex}[mat-align-tabs=center] .mat-tab-links{justify-content:center}[mat-align-tabs=end] .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-link:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\n"]
1643
+ styles: [".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:\"\";height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-links{display:flex}[mat-align-tabs=center]>.mat-tab-link-container .mat-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-tab-link-container .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-link:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\n"]
1643
1644
  }] }
1644
1645
  ];
1645
1646
  /** @nocollapse */