@angular/material 18.2.0-next.0 → 18.2.0-next.1

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 (286) hide show
  1. package/button/_icon-button-theme.scss +18 -9
  2. package/core/theming/_color-api-backwards-compatibility.scss +2 -0
  3. package/core/tokens/_token-utils.scss +33 -23
  4. package/core/tokens/m2/mat/_form-field.scss +2 -3
  5. package/core/tokens/m2/mat/_optgroup.scss +0 -9
  6. package/core/tokens/m2/mat/_option.scss +0 -9
  7. package/core/tokens/m2/mat/_paginator.scss +1 -2
  8. package/core/tokens/m2/mdc/_circular-progress.scss +2 -2
  9. package/core/tokens/m2/mdc/_slider.scss +3 -6
  10. package/core/tokens/m2/mdc/_switch.scss +12 -8
  11. package/core/tokens/m3/mat/_icon-button.scss +31 -2
  12. package/core/tokens/m3/mdc/_icon-button.scss +21 -2
  13. package/core/tokens/m3/mdc/_slider.scss +9 -2
  14. package/core/tokens/m3/mdc/_switch.scss +13 -2
  15. package/esm2022/autocomplete/autocomplete-origin.mjs +4 -4
  16. package/esm2022/autocomplete/autocomplete-trigger.mjs +4 -4
  17. package/esm2022/autocomplete/autocomplete.mjs +4 -4
  18. package/esm2022/autocomplete/module.mjs +5 -5
  19. package/esm2022/badge/badge-module.mjs +5 -5
  20. package/esm2022/badge/badge.mjs +7 -7
  21. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +4 -4
  22. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +5 -5
  23. package/esm2022/bottom-sheet/bottom-sheet.mjs +4 -4
  24. package/esm2022/button/button-base.mjs +7 -7
  25. package/esm2022/button/button.mjs +7 -7
  26. package/esm2022/button/fab.mjs +17 -17
  27. package/esm2022/button/icon-button.mjs +7 -7
  28. package/esm2022/button/module.mjs +5 -5
  29. package/esm2022/button-toggle/button-toggle-module.mjs +5 -5
  30. package/esm2022/button-toggle/button-toggle.mjs +7 -7
  31. package/esm2022/card/card.mjs +43 -43
  32. package/esm2022/card/module.mjs +5 -5
  33. package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
  34. package/esm2022/checkbox/checkbox.mjs +4 -4
  35. package/esm2022/checkbox/module.mjs +9 -9
  36. package/esm2022/chips/chip-action.mjs +4 -4
  37. package/esm2022/chips/chip-edit-input.mjs +4 -4
  38. package/esm2022/chips/chip-grid.mjs +5 -5
  39. package/esm2022/chips/chip-icons.mjs +10 -10
  40. package/esm2022/chips/chip-input.mjs +4 -4
  41. package/esm2022/chips/chip-listbox.mjs +4 -4
  42. package/esm2022/chips/chip-option.mjs +4 -4
  43. package/esm2022/chips/chip-row.mjs +4 -4
  44. package/esm2022/chips/chip-set.mjs +4 -4
  45. package/esm2022/chips/chip.mjs +4 -4
  46. package/esm2022/chips/module.mjs +5 -5
  47. package/esm2022/core/common-behaviors/common-module.mjs +5 -5
  48. package/esm2022/core/datetime/index.mjs +9 -9
  49. package/esm2022/core/datetime/native-date-adapter.mjs +4 -4
  50. package/esm2022/core/error/error-options.mjs +7 -7
  51. package/esm2022/core/internal-form-field/internal-form-field.mjs +4 -4
  52. package/esm2022/core/line/line.mjs +8 -8
  53. package/esm2022/core/option/index.mjs +5 -5
  54. package/esm2022/core/option/optgroup.mjs +4 -4
  55. package/esm2022/core/option/option.mjs +4 -4
  56. package/esm2022/core/private/ripple-loader.mjs +4 -4
  57. package/esm2022/core/ripple/index.mjs +5 -5
  58. package/esm2022/core/ripple/ripple.mjs +4 -4
  59. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +5 -5
  60. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  61. package/esm2022/core/version.mjs +1 -1
  62. package/esm2022/datepicker/calendar-body.mjs +4 -4
  63. package/esm2022/datepicker/calendar.mjs +7 -7
  64. package/esm2022/datepicker/date-range-input-parts.mjs +10 -10
  65. package/esm2022/datepicker/date-range-input.mjs +4 -4
  66. package/esm2022/datepicker/date-range-picker.mjs +4 -4
  67. package/esm2022/datepicker/date-range-selection-strategy.mjs +4 -4
  68. package/esm2022/datepicker/date-selection-model.mjs +10 -10
  69. package/esm2022/datepicker/datepicker-actions.mjs +10 -10
  70. package/esm2022/datepicker/datepicker-base.mjs +7 -7
  71. package/esm2022/datepicker/datepicker-input-base.mjs +4 -4
  72. package/esm2022/datepicker/datepicker-input.mjs +4 -4
  73. package/esm2022/datepicker/datepicker-intl.mjs +4 -4
  74. package/esm2022/datepicker/datepicker-module.mjs +5 -5
  75. package/esm2022/datepicker/datepicker-toggle.mjs +7 -7
  76. package/esm2022/datepicker/datepicker.mjs +4 -4
  77. package/esm2022/datepicker/month-view.mjs +4 -4
  78. package/esm2022/datepicker/multi-year-view.mjs +4 -4
  79. package/esm2022/datepicker/year-view.mjs +4 -4
  80. package/esm2022/dialog/dialog-container.mjs +4 -4
  81. package/esm2022/dialog/dialog-content-directives.mjs +16 -16
  82. package/esm2022/dialog/dialog.mjs +4 -4
  83. package/esm2022/dialog/module.mjs +5 -5
  84. package/esm2022/divider/divider-module.mjs +5 -5
  85. package/esm2022/divider/divider.mjs +4 -4
  86. package/esm2022/expansion/accordion.mjs +4 -4
  87. package/esm2022/expansion/expansion-module.mjs +5 -5
  88. package/esm2022/expansion/expansion-panel-content.mjs +4 -4
  89. package/esm2022/expansion/expansion-panel-header.mjs +11 -11
  90. package/esm2022/expansion/expansion-panel.mjs +7 -7
  91. package/esm2022/form-field/directives/error.mjs +4 -4
  92. package/esm2022/form-field/directives/floating-label.mjs +4 -4
  93. package/esm2022/form-field/directives/hint.mjs +4 -4
  94. package/esm2022/form-field/directives/label.mjs +4 -4
  95. package/esm2022/form-field/directives/line-ripple.mjs +4 -4
  96. package/esm2022/form-field/directives/notched-outline.mjs +5 -5
  97. package/esm2022/form-field/directives/prefix.mjs +4 -4
  98. package/esm2022/form-field/directives/suffix.mjs +4 -4
  99. package/esm2022/form-field/form-field-control.mjs +4 -4
  100. package/esm2022/form-field/form-field.mjs +6 -6
  101. package/esm2022/form-field/module.mjs +5 -5
  102. package/esm2022/grid-list/grid-list-module.mjs +5 -5
  103. package/esm2022/grid-list/grid-list.mjs +4 -4
  104. package/esm2022/grid-list/grid-tile.mjs +16 -16
  105. package/esm2022/icon/icon-module.mjs +5 -5
  106. package/esm2022/icon/icon-registry.mjs +4 -4
  107. package/esm2022/icon/icon.mjs +4 -4
  108. package/esm2022/icon/testing/fake-icon-registry.mjs +8 -8
  109. package/esm2022/input/input.mjs +4 -4
  110. package/esm2022/input/module.mjs +5 -5
  111. package/esm2022/list/action-list.mjs +4 -4
  112. package/esm2022/list/list-base.mjs +7 -7
  113. package/esm2022/list/list-item-sections.mjs +19 -19
  114. package/esm2022/list/list-module.mjs +5 -5
  115. package/esm2022/list/list-option.mjs +4 -4
  116. package/esm2022/list/list.mjs +7 -7
  117. package/esm2022/list/nav-list.mjs +4 -4
  118. package/esm2022/list/selection-list.mjs +4 -4
  119. package/esm2022/list/subheader.mjs +4 -4
  120. package/esm2022/menu/menu-content.mjs +4 -4
  121. package/esm2022/menu/menu-item.mjs +4 -4
  122. package/esm2022/menu/menu-trigger.mjs +4 -4
  123. package/esm2022/menu/menu.mjs +4 -4
  124. package/esm2022/menu/module.mjs +5 -5
  125. package/esm2022/paginator/module.mjs +5 -5
  126. package/esm2022/paginator/paginator-intl.mjs +4 -4
  127. package/esm2022/paginator/paginator.mjs +4 -4
  128. package/esm2022/progress-bar/module.mjs +5 -5
  129. package/esm2022/progress-bar/progress-bar.mjs +4 -4
  130. package/esm2022/progress-spinner/module.mjs +5 -5
  131. package/esm2022/progress-spinner/progress-spinner.mjs +5 -5
  132. package/esm2022/radio/module.mjs +5 -5
  133. package/esm2022/radio/radio.mjs +7 -7
  134. package/esm2022/select/module.mjs +5 -5
  135. package/esm2022/select/select.mjs +7 -7
  136. package/esm2022/sidenav/drawer.mjs +10 -10
  137. package/esm2022/sidenav/sidenav-module.mjs +5 -5
  138. package/esm2022/sidenav/sidenav.mjs +10 -10
  139. package/esm2022/slide-toggle/module.mjs +9 -9
  140. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +4 -4
  141. package/esm2022/slide-toggle/slide-toggle.mjs +6 -6
  142. package/esm2022/slider/module.mjs +5 -5
  143. package/esm2022/slider/slider-input.mjs +7 -7
  144. package/esm2022/slider/slider-thumb.mjs +4 -4
  145. package/esm2022/slider/slider.mjs +5 -5
  146. package/esm2022/snack-bar/module.mjs +5 -5
  147. package/esm2022/snack-bar/simple-snack-bar.mjs +4 -4
  148. package/esm2022/snack-bar/snack-bar-container.mjs +4 -4
  149. package/esm2022/snack-bar/snack-bar-content.mjs +10 -10
  150. package/esm2022/snack-bar/snack-bar.mjs +4 -4
  151. package/esm2022/sort/sort-header-intl.mjs +4 -4
  152. package/esm2022/sort/sort-header.mjs +4 -4
  153. package/esm2022/sort/sort-module.mjs +5 -5
  154. package/esm2022/sort/sort.mjs +4 -4
  155. package/esm2022/stepper/step-content.mjs +4 -4
  156. package/esm2022/stepper/step-header.mjs +4 -4
  157. package/esm2022/stepper/step-label.mjs +4 -4
  158. package/esm2022/stepper/stepper-button.mjs +7 -7
  159. package/esm2022/stepper/stepper-icon.mjs +4 -4
  160. package/esm2022/stepper/stepper-intl.mjs +4 -4
  161. package/esm2022/stepper/stepper-module.mjs +5 -5
  162. package/esm2022/stepper/stepper.mjs +7 -7
  163. package/esm2022/table/cell.mjs +22 -22
  164. package/esm2022/table/module.mjs +5 -5
  165. package/esm2022/table/row.mjs +22 -22
  166. package/esm2022/table/table.mjs +7 -7
  167. package/esm2022/table/text-column.mjs +4 -4
  168. package/esm2022/tabs/ink-bar.mjs +4 -4
  169. package/esm2022/tabs/module.mjs +5 -5
  170. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  171. package/esm2022/tabs/tab-body.mjs +7 -7
  172. package/esm2022/tabs/tab-content.mjs +4 -4
  173. package/esm2022/tabs/tab-group.mjs +4 -4
  174. package/esm2022/tabs/tab-header.mjs +5 -5
  175. package/esm2022/tabs/tab-label-wrapper.mjs +4 -4
  176. package/esm2022/tabs/tab-label.mjs +4 -4
  177. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +11 -11
  178. package/esm2022/tabs/tab.mjs +4 -4
  179. package/esm2022/toolbar/toolbar-module.mjs +5 -5
  180. package/esm2022/toolbar/toolbar.mjs +7 -7
  181. package/esm2022/tooltip/module.mjs +5 -5
  182. package/esm2022/tooltip/tooltip.mjs +7 -7
  183. package/esm2022/tree/data-source/flat-data-source.mjs +9 -1
  184. package/esm2022/tree/node.mjs +106 -26
  185. package/esm2022/tree/outlet.mjs +4 -4
  186. package/esm2022/tree/padding.mjs +4 -4
  187. package/esm2022/tree/testing/node-harness.mjs +5 -1
  188. package/esm2022/tree/toggle.mjs +4 -4
  189. package/esm2022/tree/tree-module.mjs +5 -5
  190. package/esm2022/tree/tree.mjs +4 -5
  191. package/fesm2022/autocomplete.mjs +13 -13
  192. package/fesm2022/autocomplete.mjs.map +1 -1
  193. package/fesm2022/badge.mjs +10 -10
  194. package/fesm2022/badge.mjs.map +1 -1
  195. package/fesm2022/bottom-sheet.mjs +10 -10
  196. package/fesm2022/bottom-sheet.mjs.map +1 -1
  197. package/fesm2022/button-toggle.mjs +10 -10
  198. package/fesm2022/button-toggle.mjs.map +1 -1
  199. package/fesm2022/button.mjs +38 -38
  200. package/fesm2022/button.mjs.map +1 -1
  201. package/fesm2022/card.mjs +46 -46
  202. package/fesm2022/card.mjs.map +1 -1
  203. package/fesm2022/checkbox.mjs +14 -14
  204. package/fesm2022/checkbox.mjs.map +1 -1
  205. package/fesm2022/chips.mjs +41 -41
  206. package/fesm2022/chips.mjs.map +1 -1
  207. package/fesm2022/core.mjs +59 -59
  208. package/fesm2022/core.mjs.map +1 -1
  209. package/fesm2022/datepicker.mjs +82 -82
  210. package/fesm2022/datepicker.mjs.map +1 -1
  211. package/fesm2022/dialog.mjs +25 -25
  212. package/fesm2022/dialog.mjs.map +1 -1
  213. package/fesm2022/divider.mjs +7 -7
  214. package/fesm2022/divider.mjs.map +1 -1
  215. package/fesm2022/expansion.mjs +26 -26
  216. package/fesm2022/expansion.mjs.map +1 -1
  217. package/fesm2022/form-field.mjs +37 -37
  218. package/fesm2022/form-field.mjs.map +1 -1
  219. package/fesm2022/grid-list.mjs +22 -22
  220. package/fesm2022/grid-list.mjs.map +1 -1
  221. package/fesm2022/icon/testing.mjs +7 -7
  222. package/fesm2022/icon/testing.mjs.map +1 -1
  223. package/fesm2022/icon.mjs +10 -10
  224. package/fesm2022/icon.mjs.map +1 -1
  225. package/fesm2022/input.mjs +7 -7
  226. package/fesm2022/input.mjs.map +1 -1
  227. package/fesm2022/list.mjs +49 -49
  228. package/fesm2022/list.mjs.map +1 -1
  229. package/fesm2022/menu.mjs +16 -16
  230. package/fesm2022/menu.mjs.map +1 -1
  231. package/fesm2022/paginator.mjs +10 -10
  232. package/fesm2022/paginator.mjs.map +1 -1
  233. package/fesm2022/progress-bar.mjs +7 -7
  234. package/fesm2022/progress-bar.mjs.map +1 -1
  235. package/fesm2022/progress-spinner.mjs +8 -8
  236. package/fesm2022/progress-spinner.mjs.map +1 -1
  237. package/fesm2022/radio.mjs +10 -10
  238. package/fesm2022/radio.mjs.map +1 -1
  239. package/fesm2022/select.mjs +10 -10
  240. package/fesm2022/select.mjs.map +1 -1
  241. package/fesm2022/sidenav.mjs +22 -22
  242. package/fesm2022/sidenav.mjs.map +1 -1
  243. package/fesm2022/slide-toggle.mjs +16 -16
  244. package/fesm2022/slide-toggle.mjs.map +1 -1
  245. package/fesm2022/slider.mjs +17 -17
  246. package/fesm2022/slider.mjs.map +1 -1
  247. package/fesm2022/snack-bar.mjs +22 -22
  248. package/fesm2022/snack-bar.mjs.map +1 -1
  249. package/fesm2022/sort.mjs +13 -13
  250. package/fesm2022/sort.mjs.map +1 -1
  251. package/fesm2022/stepper.mjs +31 -31
  252. package/fesm2022/stepper.mjs.map +1 -1
  253. package/fesm2022/table.mjs +55 -55
  254. package/fesm2022/table.mjs.map +1 -1
  255. package/fesm2022/tabs.mjs +45 -45
  256. package/fesm2022/tabs.mjs.map +1 -1
  257. package/fesm2022/toolbar.mjs +10 -10
  258. package/fesm2022/toolbar.mjs.map +1 -1
  259. package/fesm2022/tooltip.mjs +10 -10
  260. package/fesm2022/tooltip.mjs.map +1 -1
  261. package/fesm2022/tree/testing.mjs +4 -0
  262. package/fesm2022/tree/testing.mjs.map +1 -1
  263. package/fesm2022/tree.mjs +130 -43
  264. package/fesm2022/tree.mjs.map +1 -1
  265. package/form-field/_form-field-subscript.scss +1 -3
  266. package/form-field/_form-field-theme.scss +20 -20
  267. package/form-field/_mdc-text-field-density-overrides.scss +2 -2
  268. package/form-field/_mdc-text-field-structure-overrides.scss +2 -13
  269. package/form-field/_mdc-text-field-structure.scss +610 -0
  270. package/package.json +2 -2
  271. package/prebuilt-themes/azure-blue.css +1 -1
  272. package/prebuilt-themes/cyan-orange.css +1 -1
  273. package/prebuilt-themes/deeppurple-amber.css +1 -1
  274. package/prebuilt-themes/indigo-pink.css +1 -1
  275. package/prebuilt-themes/magenta-violet.css +1 -1
  276. package/prebuilt-themes/pink-bluegrey.css +1 -1
  277. package/prebuilt-themes/purple-green.css +1 -1
  278. package/prebuilt-themes/rose-red.css +1 -1
  279. package/progress-spinner/_progress-spinner-theme.scss +11 -14
  280. package/schematics/ng-add/index.js +1 -1
  281. package/schematics/ng-add/index.mjs +1 -1
  282. package/slide-toggle/_slide-toggle-theme.scss +21 -26
  283. package/slider/_slider-theme.scss +24 -41
  284. package/tabs/_tabs-common.scss +14 -0
  285. package/tree/index.d.ts +60 -11
  286. package/tree/testing/index.d.ts +2 -0
@@ -37,9 +37,13 @@
37
37
  @include token-utils.create-token-values(tokens-mat-icon-button.$prefix, $mat-tokens);
38
38
  }
39
39
 
40
- @mixin color($theme) {
40
+ /// Outputs color theme styles for the mat-icon-button.
41
+ /// @param {Map} $theme The theme to generate color styles for.
42
+ /// @param {ArgList} Additional optional arguments (only supported for M3 themes):
43
+ /// $color-variant: The color variant to use for the button: primary, secondary, tertiary, or error.
44
+ @mixin color($theme, $options...) {
41
45
  @if inspection.get-theme-version($theme) == 1 {
42
- @include _theme-from-tokens(inspection.get-theme-tokens($theme, color));
46
+ @include _theme-from-tokens(inspection.get-theme-tokens($theme, color), $options...);
43
47
  }
44
48
  @else {
45
49
  @include sass-utils.current-selector-or-root() {
@@ -122,10 +126,14 @@
122
126
  );
123
127
  }
124
128
 
125
- @mixin theme($theme) {
129
+ /// Outputs all (base, color, typography, and density) theme styles for the mat-icon-button.
130
+ /// @param {Map} $theme The theme to generate styles for.
131
+ /// @param {ArgList} Additional optional arguments (only supported for M3 themes):
132
+ /// $color-variant: The color variant to use for the button: primary, secondary, tertiary, or error.
133
+ @mixin theme($theme, $options...) {
126
134
  @include theming.private-check-duplicate-theme-styles($theme, 'mat-icon-button') {
127
135
  @if inspection.get-theme-version($theme) == 1 {
128
- @include _theme-from-tokens(inspection.get-theme-tokens($theme));
136
+ @include _theme-from-tokens(inspection.get-theme-tokens($theme), $options...);
129
137
  }
130
138
  @else {
131
139
  @include base($theme);
@@ -142,13 +150,14 @@
142
150
  }
143
151
  }
144
152
 
145
- @mixin _theme-from-tokens($tokens) {
153
+ @mixin _theme-from-tokens($tokens, $options...) {
146
154
  @include validation.selector-defined(
147
155
  'Calls to Angular Material theme mixins with an M3 theme must be wrapped in a selector');
148
156
  @if ($tokens != ()) {
149
- @include token-utils.create-token-values(
150
- tokens-mdc-icon-button.$prefix, map.get($tokens, tokens-mdc-icon-button.$prefix));
151
- @include token-utils.create-token-values(
152
- tokens-mat-icon-button.$prefix, map.get($tokens, tokens-mat-icon-button.$prefix));
157
+ $mdc-tokens: token-utils.get-tokens-for($tokens, tokens-mdc-icon-button.$prefix, $options...);
158
+ $mat-tokens: token-utils.get-tokens-for($tokens, tokens-mat-icon-button.$prefix, $options...);
159
+
160
+ @include token-utils.create-token-values(tokens-mdc-icon-button.$prefix, $mdc-tokens);
161
+ @include token-utils.create-token-values(tokens-mat-icon-button.$prefix, $mat-tokens);
153
162
  }
154
163
  }
@@ -1,6 +1,7 @@
1
1
  @use '../../badge/badge-theme';
2
2
  @use '../../button/button-theme';
3
3
  @use '../../button/fab-theme';
4
+ @use '../../button/icon-button-theme';
4
5
  @use '../../checkbox/checkbox-theme';
5
6
  @use '../../chips/chips-theme';
6
7
  @use '../../datepicker/datepicker-theme';
@@ -80,6 +81,7 @@ $_overrides-only: true;
80
81
 
81
82
  &.mat-mdc-button-base {
82
83
  @include button-theme.color($theme, $primary-options...);
84
+ @include icon-button-theme.color($theme, $primary-options...);
83
85
  }
84
86
 
85
87
  &.mat-mdc-standard-chip {
@@ -1,9 +1,7 @@
1
1
  @use 'sass:list';
2
2
  @use 'sass:map';
3
3
  @use 'sass:meta';
4
- @use '@material/theme/custom-properties' as mdc-custom-properties;
5
- @use '@material/theme/theme' as mdc-theme;
6
- @use '@material/theme/keys' as mdc-keys;
4
+ @use 'sass:string';
7
5
  @use '@material/tokens/v0_161' as mdc-tokens;
8
6
  @use '../style/elevation';
9
7
  @use '../style/sass-utils';
@@ -57,27 +55,33 @@ $placeholder-density-config: 0;
57
55
  $_tokens: null;
58
56
  $_component-prefix: null;
59
57
 
60
- @mixin _configure-token-prefix($first, $rest...) {
61
- $_component-prefix: '' !global;
62
- @each $item in $rest {
63
- $_component-prefix:
64
- if($_component-prefix == '', $item, '#{$_component-prefix}-#{$item}') !global;
65
- }
66
- @include mdc-custom-properties.configure($varname-prefix: $first) {
67
- @content;
68
- }
69
- $_component-prefix: null !global;
70
- }
71
-
72
58
  // Sets the token prefix and map to use when creating token slots.
73
59
  @mixin use-tokens($prefix, $tokens) {
60
+ $_component-prefix: $prefix !global;
74
61
  $_tokens: $tokens !global;
75
- @include _configure-token-prefix($prefix...) {
76
- @content;
77
- }
62
+
63
+ @content;
64
+
65
+ $_component-prefix: null !global;
78
66
  $_tokens: null !global;
79
67
  }
80
68
 
69
+ // Combines a prefix and a string to generate a CSS variable name for a token.
70
+ @function _get-css-variable($prefix, $name) {
71
+ @if $prefix == null or $name == null {
72
+ @error 'Must specify both prefix and name when generating token';
73
+ }
74
+
75
+ $string-prefix: '';
76
+
77
+ // Prefixes are lists so we need to combine them.
78
+ @each $part in $prefix {
79
+ $string-prefix: if($string-prefix == '', $part, '#{$string-prefix}-#{$part}');
80
+ }
81
+
82
+ @return string.unquote('--#{$string-prefix}-#{$name}');
83
+ }
84
+
81
85
  // Emits a slot for the given token, provided that it has a non-null value in the token map passed
82
86
  // to `use-tokens`.
83
87
  @mixin create-token-slot($property, $token, $emit-fallback: false) {
@@ -97,8 +101,9 @@ $_component-prefix: null;
97
101
  $fallback: $emit-fallback;
98
102
  }
99
103
 
100
- $value: mdc-custom-properties.create('#{$_component-prefix}-#{$token}', $fallback: $fallback);
101
- @include mdc-theme.property($property, $value);
104
+ $var-name: _get-css-variable($_component-prefix, $token);
105
+ $var-reference: if($fallback == null, var(#{$var-name}), var(#{$var-name}, #{$fallback}));
106
+ #{$property}: #{$var-reference};
102
107
  }
103
108
  }
104
109
 
@@ -112,7 +117,7 @@ $_component-prefix: null;
112
117
  @error 'Token #{$token} does not exist. Configured tokens are: #{map.keys($_tokens)}';
113
118
  }
114
119
 
115
- @return mdc-custom-properties.create-varname('#{$_component-prefix}-#{$token}');
120
+ @return _get-css-variable($_component-prefix, $token);
116
121
  }
117
122
 
118
123
  // TODO(crisbeto): should be able to replace the usages of `get-token-variable` with this.
@@ -137,9 +142,14 @@ $_component-prefix: null;
137
142
  }
138
143
  }
139
144
 
145
+ // Outputs a map of tokens under a specific prefix.
140
146
  @mixin create-token-values($prefix, $tokens) {
141
- @include _configure-token-prefix($prefix...) {
142
- @include mdc-keys.declare-custom-properties($tokens, $_component-prefix);
147
+ @if $tokens != null {
148
+ @each $key, $value in $tokens {
149
+ @if $value != null {
150
+ #{_get-css-variable($prefix, $key)}: #{$value};
151
+ }
152
+ }
143
153
  }
144
154
  }
145
155
 
@@ -1,6 +1,5 @@
1
1
  @use 'sass:math';
2
2
  @use 'sass:map';
3
- @use '@material/textfield' as mdc-textfield;
4
3
  @use '../../token-utils';
5
4
  @use '../../../style/sass-utils';
6
5
  @use '../../../theming/theming';
@@ -114,14 +113,14 @@ $prefix: (mat, form-field);
114
113
  -5: 36px,
115
114
  );
116
115
  $height: map.get($size-scale, $density-scale);
117
- $hide-label: $height < mdc-textfield.$minimum-height-for-filled-label;
116
+ $hide-label: $height < 52px;
118
117
 
119
118
  // We computed the desired height of the form-field using the density configuration. The
120
119
  // spec only describes vertical spacing/alignment in non-dense mode. This means that we
121
120
  // cannot update the spacing to explicit numbers based on the density scale. Instead, we
122
121
  // determine the height reduction and equally subtract it from the default `top` and `bottom`
123
122
  // padding that is provided by the Material Design specification.
124
- $vertical-deduction: math.div(mdc-textfield.$height - $height, 2);
123
+ $vertical-deduction: math.div(56px - $height, 2);
125
124
 
126
125
  // Note: these calculations are trivial enough that we could do them at runtime with `calc`
127
126
  // and the value of the `height` token. The problem is that because we need to hide the label
@@ -1,7 +1,6 @@
1
1
  @use '../../token-utils';
2
2
  @use '../../../theming/inspection';
3
3
  @use '../../../style/sass-utils';
4
- @use '../../../mdc-helpers/mdc-helpers';
5
4
 
6
5
  // The prefix used to generate the fully qualified name for tokens in this file.
7
6
  $prefix: (mat, optgroup);
@@ -21,14 +20,6 @@ $prefix: (mat, optgroup);
21
20
 
22
21
  // Tokens that can be configured through Angular Material's typography theming API.
23
22
  @function get-typography-tokens($theme) {
24
- // TODO(crisbeto): The earlier implementation of the option used MDC's APIs to create the
25
- // typography tokens. As a result, we unintentionally allowed `null` typography configs to be
26
- // passed in. Since there a lot of apps that now depend on this pattern, we need this temporary
27
- // fallback.
28
- @if ($theme == null) {
29
- $theme: mdc-helpers.private-fallback-typography-from-mdc();
30
- }
31
-
32
23
  @return (
33
24
  label-text-font: inspection.get-theme-typography($theme, body-1, font-family),
34
25
  label-text-line-height: inspection.get-theme-typography($theme, body-1, line-height),
@@ -1,7 +1,6 @@
1
1
  @use '../../token-utils';
2
2
  @use '../../../theming/inspection';
3
3
  @use '../../../style/sass-utils';
4
- @use '../../../mdc-helpers/mdc-helpers';
5
4
 
6
5
  // The prefix used to generate the fully qualified name for tokens in this file.
7
6
  $prefix: (mat, option);
@@ -29,14 +28,6 @@ $prefix: (mat, option);
29
28
 
30
29
  // Tokens that can be configured through Angular Material's typography theming API.
31
30
  @function get-typography-tokens($theme) {
32
- // TODO(crisbeto): The earlier implementation of the option used MDC's APIs to create the
33
- // typography tokens. As a result, we unintentionally allowed `null` typography configs to be
34
- // passed in. Since there a lot of apps that now depend on this pattern, we need this temporary
35
- // fallback.
36
- @if ($theme == null) {
37
- $theme: mdc-helpers.private-fallback-typography-from-mdc();
38
- }
39
-
40
31
  @return (
41
32
  label-text-font: inspection.get-theme-typography($theme, body-1, font-family),
42
33
  label-text-line-height: inspection.get-theme-typography($theme, body-1, line-height),
@@ -1,6 +1,5 @@
1
1
  @use 'sass:math';
2
2
  @use 'sass:map';
3
- @use '@material/textfield' as mdc-textfield;
4
3
  @use '../../token-utils';
5
4
  @use '../../../theming/theming';
6
5
  @use '../../../theming/inspection';
@@ -66,7 +65,7 @@ $prefix: (mat, paginator);
66
65
  // cannot update the spacing to explicit numbers based on the density scale. Instead, we
67
66
  // determine the height reduction and equally subtract it from the default `top` and `bottom`
68
67
  // padding that is provided by the Material Design specification.
69
- $form-field-vertical-deduction: math.div(mdc-textfield.$height - $form-field-height, 2);
68
+ $form-field-vertical-deduction: math.div(56px - $form-field-height, 2);
70
69
  $form-field-vertical-padding: 16px - $form-field-vertical-deduction;
71
70
 
72
71
  @return (
@@ -32,10 +32,10 @@ $prefix: (mdc, circular-progress);
32
32
  }
33
33
 
34
34
  // Tokens that can be configured through Angular Material's color theming API.
35
- @function get-color-tokens($theme) {
35
+ @function get-color-tokens($theme, $palette-name: primary) {
36
36
  @return (
37
37
  // The color of the progress spinner's active indicator.
38
- active-indicator-color: inspection.get-theme-color($theme, primary)
38
+ active-indicator-color: inspection.get-theme-color($theme, $palette-name)
39
39
  );
40
40
  }
41
41
 
@@ -39,6 +39,8 @@ $prefix: (mdc, slider);
39
39
  with-tick-marks-container-size: 2px,
40
40
  // Opacity of inactive container with tick marks.
41
41
  with-tick-marks-inactive-container-opacity: 0.6,
42
+ // Elevation for the handle.
43
+ handle-elevation: elevation.get-box-shadow(1),
42
44
  // =============================================================================================
43
45
  // = TOKENS NOT USED IN ANGULAR MATERIAL =
44
46
  // =============================================================================================
@@ -49,6 +51,7 @@ $prefix: (mdc, slider);
49
51
  focus-state-layer-opacity: null,
50
52
  hover-state-layer-opacity: null,
51
53
  pressed-state-layer-opacity: null,
54
+ handle-shadow-color: null,
52
55
  // MDC does not seem to use these tokens.
53
56
  hover-state-layer-color: null,
54
57
  pressed-handle-color: null,
@@ -81,12 +84,6 @@ $prefix: (mdc, slider);
81
84
  with-overlap-handle-outline-color: #fff,
82
85
  // Color of container with tick marks when disabled.
83
86
  with-tick-marks-disabled-container-color: $on-surface,
84
- // (Part of the color tokens because it needs to be combined with the
85
- // shadow color to generate the box-shadow.)
86
- // Elevation level for handle.
87
- handle-elevation: 1,
88
- // Color of handle shadow.
89
- handle-shadow-color: if($elevation != null, $elevation, elevation.$color),
90
87
  )
91
88
  );
92
89
  }
@@ -53,12 +53,16 @@ $prefix: (mdc, switch);
53
53
  unselected-hover-state-layer-opacity: 0.04,
54
54
  // Opacity of ripple when unselected and pressed.
55
55
  unselected-pressed-state-layer-opacity: 0.1,
56
+
57
+ // Unused tokens
58
+ handle-elevation: null,
59
+ handle-shadow-color: null,
60
+ disabled-handle-elevation: null,
56
61
  );
57
62
  }
58
63
 
59
64
  // Tokens that can be configured through Angular Material's color theming API.
60
65
  @function get-color-tokens($theme) {
61
- $elevation: inspection.get-theme-color($theme, foreground, elevation);
62
66
  $is-dark: inspection.get-theme-type($theme) == dark;
63
67
  $on-surface: if($is-dark, #f5f5f5, #424242);
64
68
  $hairline: if($is-dark, #616161, #e0e0e0);
@@ -85,14 +89,10 @@ $prefix: (mdc, switch);
85
89
  disabled-unselected-icon-color: $icon-color,
86
90
  // Color of track when disabled.
87
91
  disabled-unselected-track-color: $on-surface,
92
+ // TODO(crisbeto): `handle-surface-color` was hardcoded to `var(--mdc-surface-color, #fff)`
93
+ // which made it basically hardcoded to #fff. Should it be based on the theme?
88
94
  // Color of slide-toggle handle's surface.
89
- handle-surface-color: surface,
90
- // Elevation level for handle.
91
- handle-elevation: 1,
92
- // Color of handle's shadow
93
- handle-shadow-color: if($elevation != null, $elevation, elevation.$color),
94
- // Elevation level for handle when disabled.
95
- disabled-handle-elevation: 0,
95
+ handle-surface-color: #fff,
96
96
  // Color of icon (ex. checkmark) when selected
97
97
  selected-icon-color: $icon-color,
98
98
  // Color of handle when unselected and focused.
@@ -119,6 +119,10 @@ $prefix: (mdc, switch);
119
119
  unselected-pressed-track-color: $hairline,
120
120
  // Color of track when selected.
121
121
  unselected-track-color: $hairline,
122
+ // Elevation level for handle.
123
+ handle-elevation-shadow: elevation.get-box-shadow(1),
124
+ // Elevation level for handle when disabled.
125
+ disabled-handle-elevation-shadow: elevation.get-box-shadow(0),
122
126
  )
123
127
  );
124
128
  }
@@ -11,7 +11,7 @@ $prefix: (mat, icon-button);
11
11
  /// @param {Map} $token-slots Possible token slots
12
12
  /// @return {Map} A set of custom tokens for the mat-icon-button
13
13
  @function get-tokens($systems, $exclude-hardcoded, $token-slots) {
14
- $tokens: (
14
+ $tokens: ((
15
15
  state-layer-color: map.get($systems, md-sys-color, on-surface-variant),
16
16
  disabled-state-layer-color: map.get($systems, md-sys-color, on-surface-variant),
17
17
  ripple-color: sass-utils.safe-color-change(
@@ -21,7 +21,36 @@ $prefix: (mat, icon-button);
21
21
  hover-state-layer-opacity: map.get($systems, md-sys-state, hover-state-layer-opacity),
22
22
  focus-state-layer-opacity: map.get($systems, md-sys-state, focus-state-layer-opacity),
23
23
  pressed-state-layer-opacity: map.get($systems, md-sys-state, pressed-state-layer-opacity),
24
- );
24
+ ), (
25
+ primary: (
26
+ state-layer-color: map.get($systems, md-sys-color, primary),
27
+ ripple-color: sass-utils.safe-color-change(
28
+ map.get($systems, md-sys-color, primary),
29
+ $alpha: map.get($systems, md-sys-state, pressed-state-layer-opacity)
30
+ ),
31
+ ),
32
+ secondary: (
33
+ state-layer-color: map.get($systems, md-sys-color, secondary),
34
+ ripple-color: sass-utils.safe-color-change(
35
+ map.get($systems, md-sys-color, secondary),
36
+ $alpha: map.get($systems, md-sys-state, pressed-state-layer-opacity)
37
+ ),
38
+ ),
39
+ tertiary: (
40
+ state-layer-color: map.get($systems, md-sys-color, tertiary),
41
+ ripple-color: sass-utils.safe-color-change(
42
+ map.get($systems, md-sys-color, tertiary),
43
+ $alpha: map.get($systems, md-sys-state, pressed-state-layer-opacity)
44
+ ),
45
+ ),
46
+ error: (
47
+ state-layer-color: map.get($systems, md-sys-color, error),
48
+ ripple-color: sass-utils.safe-color-change(
49
+ map.get($systems, md-sys-color, error),
50
+ $alpha: map.get($systems, md-sys-state, pressed-state-layer-opacity)
51
+ ),
52
+ )
53
+ ));
25
54
 
26
55
  @return token-utils.namespace-tokens($prefix, $tokens, $token-slots);
27
56
  }
@@ -1,3 +1,5 @@
1
+ @use 'sass:map';
2
+ @use 'sass:meta';
1
3
  @use '../../token-utils';
2
4
 
3
5
  // The prefix used to generate the fully qualified name for tokens in this file.
@@ -9,9 +11,26 @@ $prefix: (mdc, icon-button);
9
11
  /// @param {Map} $token-slots Possible token slots
10
12
  /// @return {Map} A set of tokens for the MDC icon-button
11
13
  @function get-tokens($systems, $exclude-hardcoded, $token-slots) {
12
- $mdc-tokens: token-utils.get-mdc-tokens('icon-button', $systems, $exclude-hardcoded);
14
+ $tokens: token-utils.get-mdc-tokens('icon-button', $systems, $exclude-hardcoded);
15
+ $variant-tokens: (
16
+ primary: (
17
+ icon-color: map.get($systems, md-sys-color, primary)
18
+ ),
19
+ secondary: (
20
+ icon-color: map.get($systems, md-sys-color, secondary)
21
+ ),
22
+ tertiary: (
23
+ icon-color: map.get($systems, md-sys-color, tertiary)
24
+ ),
25
+ error: (
26
+ icon-color: map.get($systems, md-sys-color, error)
27
+ )
28
+ );
13
29
 
14
- @return token-utils.namespace-tokens($prefix, _fix-tokens($mdc-tokens), $token-slots);
30
+ @return token-utils.namespace-tokens($prefix, (
31
+ _fix-tokens($tokens),
32
+ token-utils.map-values($variant-tokens, meta.get-function(_fix-tokens))
33
+ ), $token-slots);
15
34
  }
16
35
 
17
36
  /// Fixes inconsistent values in the icon button tokens so that they can produce valid styles.
@@ -1,4 +1,5 @@
1
1
  @use 'sass:map';
2
+ @use '../../../style/elevation';
2
3
  @use '../../token-utils';
3
4
 
4
5
  // The prefix used to generate the fully qualified name for tokens in this file.
@@ -10,7 +11,13 @@ $prefix: (mdc, slider);
10
11
  /// @param {Map} $token-slots Possible token slots
11
12
  /// @return {Map} A set of tokens for the MDC slider
12
13
  @function get-tokens($systems, $exclude-hardcoded, $token-slots) {
13
- $mdc-tokens: token-utils.get-mdc-tokens('slider', $systems, $exclude-hardcoded);
14
+ $tokens: token-utils.get-mdc-tokens('slider', $systems, $exclude-hardcoded);
15
+ $handle-elevation: map.get($tokens, 'handle-elevation');
16
+
17
+ @if ($handle-elevation != null) {
18
+ $tokens: map.set($tokens, 'handle-elevation', elevation.get-box-shadow($handle-elevation));
19
+ }
20
+
14
21
  $variant-tokens: (
15
22
  primary: (), // Default, no overrides needed
16
23
  secondary: (
@@ -57,5 +64,5 @@ $prefix: (mdc, slider);
57
64
  ),
58
65
  );
59
66
 
60
- @return token-utils.namespace-tokens($prefix, ($mdc-tokens, $variant-tokens), $token-slots);
67
+ @return token-utils.namespace-tokens($prefix, ($tokens, $variant-tokens), $token-slots);
61
68
  }
@@ -1,4 +1,5 @@
1
1
  @use 'sass:map';
2
+ @use '../../../style/elevation';
2
3
  @use '../../token-utils';
3
4
 
4
5
  // The prefix used to generate the fully qualified name for tokens in this file.
@@ -10,7 +11,17 @@ $prefix: (mdc, switch);
10
11
  /// @param {Map} $token-slots Possible token slots
11
12
  /// @return {Map} A set of tokens for the MDC switch
12
13
  @function get-tokens($systems, $exclude-hardcoded, $token-slots) {
13
- $mdc-tokens: token-utils.get-mdc-tokens('switch', $systems, $exclude-hardcoded);
14
+ $tokens: token-utils.get-mdc-tokens('switch', $systems, $exclude-hardcoded);
15
+ $elevation-tokens: (handle-elevation, disabled-handle-elevation);
16
+
17
+ @each $token in $elevation-tokens {
18
+ $elevation: map.get($tokens, $token);
19
+
20
+ @if ($elevation != null) {
21
+ $tokens: map.set($tokens, $token + '-shadow', elevation.get-box-shadow($elevation));
22
+ }
23
+ }
24
+
14
25
  $variant-tokens: (
15
26
  primary: (), // Default, no overrides needed
16
27
  secondary: (
@@ -66,5 +77,5 @@ $prefix: (mdc, switch);
66
77
  ),
67
78
  );
68
79
 
69
- @return token-utils.namespace-tokens($prefix, ($mdc-tokens, $variant-tokens), $token-slots);
80
+ @return token-utils.namespace-tokens($prefix, ($tokens, $variant-tokens), $token-slots);
70
81
  }
@@ -17,10 +17,10 @@ export class MatAutocompleteOrigin {
17
17
  elementRef) {
18
18
  this.elementRef = elementRef;
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MatAutocompleteOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
21
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: MatAutocompleteOrigin, isStandalone: true, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"], ngImport: i0 }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MatAutocompleteOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: MatAutocompleteOrigin, isStandalone: true, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"], ngImport: i0 }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{
24
24
  type: Directive,
25
25
  args: [{
26
26
  selector: '[matAutocompleteOrigin]',
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3",
28
28
  standalone: true,
29
29
  }]
30
30
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLW9yaWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLW9yaWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFcEQ7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQztJQUNFLGtFQUFrRTtJQUMzRCxVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtJQUN6QyxDQUFDO3FIQUpPLHFCQUFxQjt5R0FBckIscUJBQXFCOztrR0FBckIscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0byBtYWtlIGl0IHVzYWJsZVxuICogYXMgYSBjb25uZWN0aW9uIHBvaW50IGZvciBhbiBhdXRvY29tcGxldGUgcGFuZWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRBdXRvY29tcGxldGVPcmlnaW5dJyxcbiAgZXhwb3J0QXM6ICdtYXRBdXRvY29tcGxldGVPcmlnaW4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRBdXRvY29tcGxldGVPcmlnaW4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgYXBwbGllZC4gKi9cbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICkge31cbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLW9yaWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLW9yaWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFcEQ7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQztJQUNFLGtFQUFrRTtJQUMzRCxVQUFtQztRQUFuQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtJQUN6QyxDQUFDOzhHQUpPLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0byBtYWtlIGl0IHVzYWJsZVxuICogYXMgYSBjb25uZWN0aW9uIHBvaW50IGZvciBhbiBhdXRvY29tcGxldGUgcGFuZWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRBdXRvY29tcGxldGVPcmlnaW5dJyxcbiAgZXhwb3J0QXM6ICdtYXRBdXRvY29tcGxldGVPcmlnaW4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRBdXRvY29tcGxldGVPcmlnaW4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgYXBwbGllZC4gKi9cbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICkge31cbn1cbiJdfQ==